Merge "Changed notifyOnPageChange() to use onTransactionIdle()."
authorBrion VIBBER <brion@wikimedia.org>
Wed, 3 Oct 2012 18:25:50 +0000 (18:25 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 3 Oct 2012 18:25:50 +0000 (18:25 +0000)
346 files changed:
.gitignore
CREDITS
HISTORY
RELEASE-NOTES-1.20
RELEASE-NOTES-1.21 [new file with mode: 0644]
bin/svnstat [deleted file]
bin/ulimit-tvf.sh [deleted file]
bin/ulimit.sh [deleted file]
docs/hooks.txt
docs/uidesign/design.html
includes/Article.php
includes/BacklinkCache.php
includes/Cdb.php
includes/ChangeTags.php
includes/ChangesList.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Export.php
includes/ExternalStore.php
includes/FileDeleteForm.php
includes/Licenses.php
includes/Linker.php
includes/Message.php
includes/OutputPage.php
includes/Pager.php
includes/Preferences.php
includes/RecentChange.php
includes/Sanitizer.php
includes/Setup.php
includes/SiteStats.php
includes/Skin.php
includes/SkinTemplate.php
includes/SpecialPageFactory.php
includes/Timestamp.php
includes/Title.php
includes/User.php
includes/WebResponse.php
includes/WebStart.php
includes/Wiki.php
includes/actions/InfoAction.php
includes/api/ApiBase.php
includes/api/ApiMain.php
includes/api/ApiOpenSearch.php
includes/api/ApiQuery.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/db/Database.php
includes/db/LoadBalancer.php
includes/filebackend/FileBackend.php
includes/filerepo/FileRepo.php
includes/filerepo/file/LocalFile.php
includes/installer/Ibm_db2Updater.php
includes/installer/MysqlUpdater.php
includes/installer/OracleUpdater.php
includes/installer/SqliteUpdater.php
includes/job/DoubleRedirectJob.php
includes/job/Job.php
includes/libs/GenericArrayObject.php
includes/parser/Parser.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/search/SearchEngine.php
includes/specials/SpecialAncientpages.php
includes/specials/SpecialBrokenRedirects.php
includes/specials/SpecialDoubleRedirects.php
includes/specials/SpecialFileDuplicateSearch.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialListredirects.php
includes/specials/SpecialListusers.php
includes/specials/SpecialLonelypages.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMostcategories.php
includes/specials/SpecialMostimages.php
includes/specials/SpecialMostinterwikis.php
includes/specials/SpecialMostlinked.php
includes/specials/SpecialMostlinkedcategories.php
includes/specials/SpecialPopularpages.php
includes/specials/SpecialUncategorizedpages.php
includes/specials/SpecialUnusedcategories.php
includes/specials/SpecialUnusedtemplates.php
includes/specials/SpecialUnwatchedpages.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWantedpages.php
includes/templates/Userlogin.php
includes/upload/UploadFromUrl.php
includes/upload/UploadStash.php
languages/Language.php
languages/LanguageConverter.php
languages/Names.php
languages/classes/LanguageIu.php
languages/classes/LanguageKu.php
languages/classes/LanguageShi.php
languages/classes/LanguageSr.php
languages/classes/LanguageUz.php
languages/data/plurals-mediawiki.xml
languages/messages/MessagesAce.php
languages/messages/MessagesAf.php
languages/messages/MessagesAln.php
languages/messages/MessagesAm.php
languages/messages/MessagesAn.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesAry.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAz.php
languages/messages/MessagesBa.php
languages/messages/MessagesBar.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBpy.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCeb.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCps.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesDtp.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFrr.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHil.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHt.php
languages/messages/MessagesHu.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIg.php
languages/messages/MessagesIlo.php
languages/messages/MessagesInh.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJam.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKm.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLg.php
languages/messages/MessagesLi.php
languages/messages/MessagesLt.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesLzz.php
languages/messages/MessagesMai.php
languages/messages/MessagesMap_bms.php
languages/messages/MessagesMg.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPcd.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnb.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesQug.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSa.php
languages/messages/MessagesSah.php
languages/messages/MessagesScn.php
languages/messages/MessagesSh.php
languages/messages/MessagesShi.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSo.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesStq.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTcy.php
languages/messages/MessagesTe.php
languages/messages/MessagesTh.php
languages/messages/MessagesTk.php
languages/messages/MessagesTl.php
languages/messages/MessagesTly.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUk.php
languages/messages/MessagesUr.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVro.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesWuu.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/utils/CLDRPluralRuleEvaluator.php
maintenance/Doxyfile
maintenance/Maintenance.php
maintenance/archives/patch-drop-ss_admins.sql [new file with mode: 0644]
maintenance/archives/patch-img_sha1.sql
maintenance/archives/patch-rc_moved.sql [new file with mode: 0644]
maintenance/archives/upgradeLogging.php
maintenance/cleanupUploadStash.php
maintenance/fileOpPerfTest.php
maintenance/fixDoubleRedirects.php
maintenance/generateSitemap.php
maintenance/importDump.php
maintenance/importImages.php
maintenance/jsparse.php
maintenance/language/generateCollationData.php
maintenance/language/generateNormalizerData.php
maintenance/language/messages.inc
maintenance/minify.php
maintenance/mwdocgen.php
maintenance/preprocessorFuzzTest.php
maintenance/purgeParserCache.php
maintenance/rebuildrecentchanges.php
maintenance/sqlite/archives/patch-drop-ss_admins.sql [new file with mode: 0644]
maintenance/sqlite/archives/patch-rc_moved.sql [new file with mode: 0644]
maintenance/storage/checkStorage.php
maintenance/storage/fixBug20757.php
maintenance/storage/recompressTracked.php
maintenance/storage/trackBlobs.php
maintenance/tables.sql
maintenance/term/MWTerm.php
maintenance/updateCollation.php
maintenance/updateSearchIndex.php
mw-config/index.php
mw-config/index.php5
mw-config/overrides.php
profileinfo.php
resources/Resources.php
resources/jquery/jquery.byteLimit.js
resources/jquery/jquery.jStorage.js
resources/jquery/jquery.suggestions.css
resources/jquery/jquery.suggestions.js
resources/mediawiki.action/mediawiki.action.edit.preview.js [new file with mode: 0644]
resources/mediawiki/mediawiki.Title.js
resources/mediawiki/mediawiki.feedback.js
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.searchSuggest.js [new file with mode: 0644]
serialized/serialize.php
skins/common/mwsuggest.js [deleted file]
skins/common/preview.js [deleted file]
skins/vector/screen.css
tests/TestsAutoLoader.php
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/GlobalFunctions/wfExpandUrlTest.php
tests/phpunit/includes/HtmlTest.php
tests/phpunit/includes/LinksUpdateTest.php
tests/phpunit/includes/SanitizerTest.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/XmlTest.php
tests/phpunit/includes/api/ApiOptionsTest.php
tests/phpunit/includes/api/ApiTest.php
tests/phpunit/includes/api/ApiTestCase.php
tests/phpunit/includes/db/DatabaseTest.php
tests/qunit/data/styleTest.css.php
tests/qunit/suites/resources/jquery/jquery.byteLimit.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
tests/testHelpers.inc

index ff3ced3..0be75c5 100644 (file)
@@ -32,8 +32,11 @@ StartProfiler.php
 # Operating systems
 ## Mac OS X
 .DS_Store
+## Windows
+Thumbs.db
 
 # Misc
+.buildpath
 .classpath
 .idea
 .metadata*
diff --git a/CREDITS b/CREDITS
index 5ceccc5..68c945c 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -1,4 +1,4 @@
-MediaWiki 1.20 is a collaborative project released under the
+MediaWiki 1.21 is a collaborative project released under the
 GNU General Public License v2. We would like to recognize the
 following names for their contribution to the product.
 
diff --git a/HISTORY b/HISTORY
index 408ae38..ab56b37 100644 (file)
--- a/HISTORY
+++ b/HISTORY
-Change notes from older releases. For current info see RELEASE-NOTES-1.20.
+Change notes from older releases. For current info see RELEASE-NOTES-1.21.
+
+== MediaWiki 1.19 ==
+
+== MediaWiki 1.19.2 ==
+
+This is a security release of the MediaWiki 1.19 branch
+
+=== Changes since 1.19.1 ===
+* (bug 39700) File: link to non-existing file can inject html
+* (bug 39823) Hidden block text leaking to admins
+* (bug 39184) LDAP password leakage
+* (bug 39180) Disallow framing of api results
+* (bug 37587) Enforce language codes to be html safe
+* (bug 39824) Check global blocks on account creation
+
+== MediaWiki 1.19 ==
+
+MediaWiki 1.19 is a large release that contains many new features and bug
+fixes. This is a summary of the major changes of interest to users.
+You can consult the RELEASE-NOTES-1.19 file for the full list of changes in
+this version.
+
+Our thanks go to everyone who helped to improve MediaWiki by testing the beta
+release and submitting bug reports.
+
+=== Changes since 1.19.1 ===
+* (bug 38406) Properly quote table names in DatabaseBase::tableName()
+* (bug 38249) Parser will throw an exception instead of outputting gibberish if
+  PCRE is compiled without support for unicode properties.
+
+=== Changes since 1.19.0 ===
+* (bug 36568) Fixed "Illegal string offset 'LIMIT'" warnings in updater
+* (bug 36938) Correctly escape uselang attribute to prevent xss
+* Expanded Blacklist for SVG Files
+
+=== Changes since 1.19 beta 2 ===
+* Special:Watchlist no longer sets links to feed when the user is anonymous.
+* (bug 35961) Hash comparison should always be strict.
+* Fix broken email confirmation expiration caused by MWCryptRand changes.
+* (bug 35671) PHP Notice: Undefined index: gettoken in includes/api/ApiMain.php
+  on line 598.
+* (bug 36042) 'show' causes a fatal in blocks API.
+
+=== Changes since 1.19 beta 1 ===
+* (bug 35014) Including a special page no longer sets the page's title to the
+  included page
+* (bug 35019) Edit summaries are no longer transformed in notification e-mails
+* (bug 35152) Help message for e-mail is shown again in user preferences
+* (bug 34887) $3 and $4 parameters are now substituted correctly in message
+  "movepage-moved"
+* (bug 34841) Edit links are no longer displayed when display old page versions
+* (bug 34889) User name should be normalized on Special:Contributions
+* (bug 35051) If heading has a trailing space after == then its name is not
+  preloaded into edit summary on section edit
+* (bug 31417) New ID mw-content-text around the actual page text, without categories,
+  contentSub, ... The same div often also contains the class mw-content-ltr/rtl.
+* (bug 35303) Proxy and DNS blacklist blocking works again
+* (bug 22555) Remove or skip strip markers from tag hooks like &lt;nowiki&gt; in
+  core parser functions which operate on strings, such as padleft.
+* (bug 18295) Don't expose strip markers when a tag appears inside a link
+  inside a heading.
+* (bug 34212) ApiBlock/ApiUnblock allow action to take place without a token
+  parameter present.
+* (bug 34907) Fixed exposure of tokens through load.php that could have facilitated
+  CSRF attacks.
+* (bug 35317) CSRF in Special:Upload.
+
+=== Configuration changes in 1.19 ===
+* Removed SkinTemplateSetupPageCss hook; use BeforePageDisplay instead.
+* (bug 27132) movefile right granted by default to registered users.
+* Default cookie lifetime ($wgCookieExpiration) is increased to 180 days.
+* (bug 31204) Removed old user.user_options.
+* $wgMaxImageArea now applies to jpeg files if they are not scaled with
+  ImageMagick.
+* Introduced $wgQueryPageDefaultLimit (defaults to 50) for the number of
+  items to show by default on query pages (special pages such as Whatlinkshere).
+* (bug 32470) Increase the length of ug_group.
+* (bug 32239) Removed $wgEnableTooltipsAndAccesskeys.
+* Removed $wgVectorShowVariantName.
+* Removed $wgExtensionAliasesFiles. Use $wgExtensionMessagesFiles.
+* Removed $wgResourceLoaderInlinePrivateModules , now always enabled.
+
+=== New features in 1.19 ===
+* (bug 19838) Add ability to get all interwiki prefixes also if the interwiki
+  cache is used.
+* $wgDnsBlacklistUrls now accepts an array with url and key as the
+  elements to work with DNSBLs that require keys, such as
+  Project Honeypot.
+* (bug 30022) Add support for custom loadScript sources to ResourceLoader.
+* (bug 19052) Unicode space separator characters (Zs) now terminates external
+  links and images links.
+* (bug 30160) Add public method to mw.loader to get module names from registry.
+* (bug 15558) Parameters to special pages included in wikitext can now be passed
+  as with templates.
+* Installer now issues a warning if mod_security is present.
+* (bug 29455) Add support for a filter callback function in jQuery byteLimit
+  plugin.
+* Added two new GetLocalURL hooks to better serve extensions working on a
+  limited type of titles.
+* Added a --no-updates flag to importDump.php that skips updating the links
+  tables.
+* Most presentational html attributes like valign are now converted to inline
+  css style rules. These attributes were removed from html5 and so we clean
+  them up when $wgHtml5 is enabled. This can be disabled using
+  $wgCleanupPresentationalAttributes.
+* Magic words (time and number-formatting ones, plus DIRECTIONMARK, but not
+  NAMESPACE) now depend on the page content language instead of the site
+  language. In theory this sets the right magic words in system messages,
+  although they are not used there.
+* (bug 30451) Add page_props to RefreshLinks::deleteLinksFromNonexistent.
+* (bug 30450) Clear page_props table on page deletion.
+* Hook added to check for exempt from account creation throttle.
+* (bug 30344) Add configuration variable for setting custom priorities when
+  generating sitemaps.
+* (bug 96170) Add array support for space-separated list attributes (like
+  'class') in the Html helper class.
+* (bug 26470) Add checkered background image on hover on files pages.
+* (bug 30774) mediawiki.html: Add support for numbers and booleans in the
+  attribute values and element contents.
+* Conversion script between Tifinagh and Latin for the Tachelhit language.
+* (bug 16755) Add options 'noreplace' and 'noerror' to {{DEFAULTSORT:...}}
+  to stop it from replace an already existing default sort, and suppress error.
+* (bug 18578) Rewrote revision delete related messages to allow better
+  localisation.
+* (bug 30364) LanguageConverter now depends on the page content language
+  instead of the wiki content language.
+* Jump links will now be usable in CSS-capable browsers instead of only
+  in outdated text browsers.
+* New common*.css files usable by skins instead of having to copy piles
+  of generic styles from MonoBook or Vector's css.
+* Some deprecated presentational html attributes will now be automatically
+  converted to css.
+* (bug 31297) Add support for namespaces in Special:RecentChanges subpage filter
+  syntax.
+* The default user signature now contains a talk link in addition to the user link.
+* (bug 25306) Add link of old page title to MediaWiki:Delete_and_move_reason.
+* Added hook BitmapHandlerCheckImageArea.
+* (bug 30062) Add $wgDBprefix option to cli installer.
+* getUserPermissionsErrors and getUserPermissionsErrorsExpensive hooks are now
+  also called when checking for 'read' permission.
+* Introduce $wgEnableSearchContributorsByIP which controls whether searching
+  for an IP address redirects to the contributions list for that IP.
+* (bug 8859) Database::update should take array of tables too.
+* (bug 19698) Add "Inverse namespaces" option to Special:Contributions.
+* (bug 24037) Add byte length of revision to Special:Contributions.
+* (bug 1672) Added $wgDisableUploadScriptChecks to allow uploading of files
+  containing HTML or JS. DISABLING THESE CHECKS IS VERY DANGEROUS.
+* New path mappings can be added using the WebRequestPathInfoRouter hook
+  and adding paths to the PathRouter.
+* (bug 32666) Special:ActiveUsers now allows a subpage to be used as value for the
+  "target" query parameter (eg. Special:ActiveUsers/Username).
+* New JavaScript variable wgPageContentLanguage.
+* Added new debugging toolbar, enabled with $wgDebugToolbar.
+* Differences in the history page now uses slightly better colors for people
+  perceiving colors differently.
+* (bug 32879) Upgrade jQuery to 1.7.1.
+* jQuery UI upgraded to 1.8.17.
+* Extensions can use the 'Language::getMessagesFileName' hook to define new
+  languages using messages files outside of core.
+* (bug 32512) Add 'Associated namespace' checkbox to Special:Contributions.
+* Added $wgSend404Code, true by default, which can be set to false to send a
+  200 status code instead of 404 for nonexistent articles.
+* (bug 33447) Link to the broken image tracking category from Special:Wantedfiles.
+* (bug 27724) Add timestamp to job queue.
+* (bug 30339) Implement SpecialPage for running javascript tests. Disabled by default, due to
+  tests potentially being harmful, not to be run on a production wiki.
+  Enable by setting $wgEnableJavaScriptTest to true.
+* Extensions can use the RequestContextCreateSkin hook to override what skin is
+  loaded in some contexts.
+* (bug 33456) Show $wgQueryCacheLimit on cached query pages.
+* (bug 10574) Add an option to allow all pages to be exported by Special:Export.
+* mediawiki.js Message object constructor is now publicly available as mw.Message.
+* (bug 29309) Allow CSS class per tooltip (tipsy).
+* (bug 33565) Add accesskey/tooltip to submit buttons on Special:EditWatchlist.
+* (bug 17959) Inline rendering/thumbnailing for Gimp XCF images.
+* (bug 27775) Namespace has it's own XML tag in the XML dump file.
+* (bug 30513) Redirect tag is now resolved in XML dump file.
+* sha1 xml tag added to XML dump file.
+* (bug 33646) Badtitle error page now emits a 400 HTTP status.
+* Special:MovePage now has a dropdown menu for namespaces.
+* (bug 34420) Special:Version now shows git HEAD sha1 when available.
+* (bug 33952) Refactor mw.toolbar to allow dynamic additions at any time.
+
+=== Bug fixes in 1.19 ===
+* $wgUploadNavigationUrl should be used for file redlinks if.
+  $wgUploadMissingFileUrl is not set. The first was used for this
+  until the second was introduced in 1.17.
+* BREAKING CHANGE:  Style rules for wikitable are now more specific and prevent
+  inheritance to nested tables which caused various issues (bug 30485 and bug
+  33434). If your wiki has overriden rules for ".wikitable", please revise them and
+  adjust where neccecary. For comparison, use the "table.wikitable" section in
+  skins/common/shared.css as base.
+* $wgUploadNavigationUrl is now used for file redlinks if
+  $wgUploadMissingFileUrl is not set. The former was used for this until the
+  second was introduced in 1.17.
+* (bug 27894) Move 'editondblclick' event listener down from body to
+  div#bodyContent.
+* (bug 30172) The check for posix_isatty() in maintenance scripts did not detect
+  when the function exists but is disabled. Introduced
+  Maintenance::posix_isatty().
+* (bug 30264) Changed installer-generated LocalSettings.php to use
+  require_once() instead require() for included extensions.
+* Do not convert text in the user interface language to another script.
+* (bug 26283) Previewing user JS/CSS pages didn't load other user JS/CSS pages.
+* (bug 26486) ResourceLoader modules with paths to nonexistent files cause PHP
+  warnings/notices to be thrown.
+* (bug 30335) Fix for HTMLForms using GET that were breaking when non-friendly
+  URLs are used.
+* (bug 28649) Preventing half truncated multi-byte unicode characters when
+  truncating log comments.
+* Show --batch-size option in help of maintenance scripts that support it.
+* (bug 4381) Magic quotes cleaning was not comprehensive, key strings were not
+  unescaped.
+* (bug 23057) Importers no longer can 'edit' or 'create' a fully-protected page by
+  importing a new revision into it.
+* Allow moving the associated talk pages of subpages even if the base page
+  has no subpage.
+* Per page edit-notices now work in namespaces without subpages enabled.
+* (bug 31081) $wgEnotifUseJobQ is no longer unconditionally enqueueing jobs.
+* (bug 30202) File names are now restricted on upload to 240 bytes, because of
+  restrictions on some of the database fields.
+* Timezones are now recognised in user preferences when offset is different
+  due to DST.
+* (bug 31692) "summary" parameter now also works when undoing revisions.
+* (bug 18823) "move succeeded" text displayed bluelinks even when redirect was
+  suppressed.
+* (bug 19186) Special:UserLogin's title on Special:SpecialPages now says
+  "create account" when the user cannot create an account.
+* (bug 31818) 'usercreated' message now supports GENDER.
+* (bug 32022) Our phpunit.php script can now be executed from another directory.
+* (bug 26020) Setting $wgEmailConfirmToEdit to true no longer removes diffs.
+  from recent changes feeds.
+* (bug 30232) add current time to message wlnote on Special:Watchlist.
+* (bug 29110) $wgFeedDiffCutoff did not affect new pages.
+* (bug 32168) Add wfRemoveDotSegments for use in wfExpandUrl.
+* (bug 32358) Do not display "No higher resolution available" for dimensionless
+  files (like audio files).
+* (bug 32168) Add wfAssembleUrl for use in wfExpandUrl.
+* (bug 32168) fixed - wfExpandUrl expands dot segments now.
+* (bug 31535) Upload comments now truncated properly, and don't have brackets.
+* (bug 32086) Special:PermanentLink now show an error message when no subpage
+  was specified.
+* (bug 30368) Special:Newpages now shows the new page name for moved pages.
+* (bug 1697) The way to search blocked usernames in block log should be clearer.
+* (bug 29747) eAccelerator shared memory caching has been removed since it is
+  now disabled by default and is buggy. APC, XCache and WinCache are not affected.
+* Installer now refuses to install if php was not compiled with Ctype support.
+* (bug 29475) Remove "trackback" feature entirely from core.
+* (bug 32665) Special:BlockList prefills the username in the input field if
+  using the Special:BlockList/username URL.
+* (bug 27721) Make JavaScript variables wgSeparatorTransformTable and
+  wgDigitTransformTable depend on page content language so the sort script
+  sorts correctly more often.
+* (bug 32230) Expose wgRedirectedFrom in JavaScript.
+* (bug 31212) History tab not collapsed when the screen is narrow.
+* (bug 15521) Use new section summary when the action of adding a new section
+  also happens to create the page.
+* (bug 32960) Remove EmailAuthenticationTimestamp from database when a
+  email address is removed.
+* (bug 32414) Empty page get a empty bytes attribute in Export/Dump.
+* (bug 33101) Viewing a User or User talk of username resembling IP ending
+  with .xxx causes Internal error.
+* Warning about undefined index in certain situations when $wgLogRestrictions
+  causes the first log type requested to be removed but not the others.
+* Use separate message ('prefixindex-namespace') for title of
+  Special:PrefixIndex rather then re-using Special:AllPages's allinnamespace.
+* (bug 33156) Special:Block now allows you to confirm you want to block yourself
+  when using non-normalized username.
+* (bug 33246) News icon shown for news:// URLs but not for news: URLs.
+* (bug 33305) Make mw.util.addCSS resistant to IE's @font-face bug by setting
+  cssText after DOM insertion.
+* (bug 30711) When adding a new section to a page with section=new, the text is
+  now always added to the current version of the page.
+* (bug 31719) Fix uploads of SVGs exported by Adobe Illustrator by expanding
+  XML entities correctly.
+* (bug 30914) Embeddable ResourceLoader modules (user.options, user.tokens)
+  should be loaded in <head> for proper dependency resolution.
+* (bug 32702) Removed method Skin::makeGlobalVariablesScript() has been readded
+  for backward compatibility.
+* (bug 31469) Make sure tracking category messages expand variables like
+  {{NAMESPACE}} relative to correct title.
+* (bug 33454) ISO-8601 week-based year number (format character 'o') is now
+  calculated correctly with respect to timezone.
+* (bug 32219) InstantCommons now fetches content from Wikimedia Commons using
+  HTTPS when the local wiki is served over HTTPS.
+* (bug 33525) clearTagHooks doesn't clear function hooks.
+* (bug 33523) Function tag hooks don't appear on Special:Version.
+* Files with IPTC blocks we can't read no longer prevent extraction of exif
+  or other metadata.
+* (bug 33587) Remove action "historysubmit" from history pages.
+* (bug 25800) mw.config wgAction should contain the actually performed action instead
+  of whatever the query value contains.
+* (bug 4438) Add CSS hook for current WikiPage action.
+* (bug 33703) Common border-bottom color for <abbr> should inherit default (text) color.
+* (bug 33819) Display file sizes in appropriate units.
+* (bug 32948) {{REVISIONID}} and related variables are no longer blank after doing
+  a null edit.
+* (bug 33880) $wgUsersNotifiedOnAllChanges should not send e-mail to user who made
+  the edit.
+* (bug 33902) Decoding %2B with mw.Uri.decode results in ' ' instead of +.
+* (bug 33762) QueryPage-based special pages no longer misses *-summary message.
+* Other sizes links are no longer generated for wikis without a 404 thumbnail handler.
+* (bug 29454) Enforce byteLimit for page title input on Special:MovePage.
+* (bug 34114) CSSMin::remap() doesn't respect its $embed parameter.
+* Special:Contributions/newbies now shows the contributions for the user "newbies".
+  New user contributions are obtained using the form or using ?contribs=newbie in URL.
+* It is now possible to delete images that have no corresponding description pages.
+* (bug 33165) GlobalFunctions.php line 1312: Call to a member function
+  getText() on a non-object.
+* (bug 31676) Group dynamically inserted CSS into a single <style> tag, to work
+  around a bug where not all styles were applied in Internet Explorer.
+* (bug 28936, bug 5280) Broken or invalid titles can't be removed from watchlist.
+* (bug 34600) Older skins using useHeadElement=false were broken in 1.18.
+* (bug 34604) [mw.config] wgActionPaths should be an object instead of a numeral
+  array.* (bug 12262) Indents and lists are now aligned
+* (bug 29753) mw.util.tooltipAccessKeyPrefix should be alt-shift for Chrome
+   on Windows
+* (bug 25095) Special:Categories should also include the first relevant item
+   when "from" is filled.
+* (bug 34972) An error occurred while changing your watchlist settings for
+  [[Special:WhatLinksHere/Example]]
+
+=== API changes in 1.19 ===
+* Made action=edit less likely to return "unknownerror", by returning the actual error
+  message (which may have come from a hook call or similar).
+* (bug 19838) siprop=interwikimap can now use the interwiki cache.
+* (bug 29748) Add API search prefix support.
+* (bug 29684) Set forgotten parameter types in ApiQueryIWLinks.
+* (bug 29685) do not output NULL parentid with list=deletedrevs&drprop=parentid.
+* siprop=interwikimap and siprop=languages can use silanguagecode to have
+  a best effort language name translation. Use CLDR extension for best result.
+* (bug 30230) action=expandtemplates should not silently override invalid title
+  inputs.
+* (bug 18634) Create API to fetch MediaWiki's language fallback tree structure.
+* (bug 26885) Allow show/hide of account blocks, temporary blocks and single IP
+  address blocks for list=blocks.
+* (bug 30591) Add support to only return keys in ApiAllMessages.
+* The API now respects $wgShowHostnames and won't share the hostname in
+  severedby if it's set to false.
+* wlexcludeuser parameter added to ApiFeedWatchlist.
+* (bug 7304) Links on redirect pages no longer cause the redirect page to show
+  up as a redirect to the linked page on Special:Whatlinkshere.
+* (bug 32609) API: Move captchaid/captchaword of action=edit from core
+  to Captcha extension(s).
+* Added 'APIGetDescription' hook.
+* (bug 32688) Paraminfo for parameter "generator" of the query module shows too
+  many types.
+* (bug 32415) Empty page get no size attribute in API output.
+* (bug 31759) Undefined property notice in querypages API.
+* (bug 32495) API should allow purge by pageids.
+* (bug 33147) API examples should explain what they do.
+* (bug 33482) Api incorrectly calls ApiBase::parseMultiValue if allowed
+  values is given as an array.
+* (bug 32948) {{REVISIONID}} and related variables are no longer blank after
+  calling action=purge&forcelinkupdate.
+* (bug 34377) action=watch now parses messages using the correct title instead
+  of "API".
+* (bug 35036) WikiLove messages were not automatically updated in JavaScript
+  after having been changed on-wiki due to a bug in core
+
+=== Languages updated in 1.19 ===
+
+MediaWiki supports over 350 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Bugzilla reports.
+
+* Canadian English (en-ca) (new).
+* Norwegian (bokmål) (nb) (renamed from no).
+* Uighur (Latin) (ug-latn) was incorrectly marked as right-to-left language.
+* (bug 30217) Make pt-br a fallback of pt.
+* (bug 31193) Set fallback language of Assamese from Bengali to English.
+* Update date format for dsb and hsb: month names need the genitive.
+* (bug 28643) Serbian variant conversion improvements (Nikola Smolenski).
+* (bug 29405, bug 30809) Lower diacritics are invisible in titles in Indic
+  languages Assamese, Bengali, Hindi, Malyalam and Odiya.
+* (bug 32826) Titles in indic languages are partially cut.
+* (bug 33367) Gendered namespaces for Czech.
+* (bug 33014) Language::formatSize()/formatBitrate() should be able to deal
+  with larger numbers (tera-yotta).
+
+=== Other changes in 1.19 ===
+* BREAKING CHANGE: Legacy global array 'ta' and global function 'akeytt' have
+  been removed from wikibits.js.
+* jquery.mwPrototypes module was renamed to jquery.mwExtension.
+* The maintenance script populateSha1.php was renamed to the more concise
+  populateImageSha1.php.
+* The Client-IP header is no longer checked for when trying to resolve a client's
+  real IP address.
+* (bug 22096) Although IE5.x and below was already unsupported officially, stylesheets
+  existing exclusively for IE5.0 and IE5.5 have now been removed (which were in skins
+  'chick' and 'monobook').
+* The constructor for CategoryView has changed, the second parameter is now a
+  Context source and is required.
+* The Title::escape{Local,Full,Canonical}URL methods are deprecated, please use
+  proper html building methods to escape the normal get{...}URL methods instead.
+* The $variant arguments in the Title::get{Local,Full,Link,Canonical}URL methods
+  have been replaced with a secondary query argument.
+* The $variant argument in the hooks for the Title::get{Local,Full,Link,Canonical}URL
+  methods have been removed, the variant is now part of the $query argument.
+* Removed Title::isValidCssJsSubpage(), deprecated since 1.17 in favor of
+  using Title::isCssJsSubpage() or checking Title::isWrongCaseCssJsPage().
+* Support for the deprecated hook MagicWordMagicWords was removed.
+* The Xml::namespaceSelector method has been deprecated, please use
+  Html::namespaceSelector instead (note that the parameters have changed also).
+* (bug 33746) Preload popular ResourceLoader modules (mediawiki.util) as stop-gap
+  for scripts missing dependencies.
+  New configuration variable $wgPreloadJavaScriptMwUtil has been introduced for this
+  (set to false by default for new installations). Set to true if your wiki has a large
+  amount of user/site scripts that are lacking dependency information. In the short to
+  medium term these user/site scripts should be fixed by adding the used modules to the
+  dependencies in the module registry and/or wrapping them in a callback to mw.loader.using.
 
 == MediaWiki 1.18 ==
+
+== MediaWiki 1.18.5 ==
+2012-08-30
+
+This is a security release of the MediaWiki 1.18 branch
+
+=== Changes since 1.18.4 ===
+* (bug 39700) File: link to non-existing file can inject html
+* (bug 39823) Hidden block text leaking to admins
+* (bug 39184) LDAP password leakage
+* (bug 39180) Disallow framing of api results
+* (bug 37587) Enforce language codes to be html safe
+* (bug 39824) Check global blocks on account creation
+
+== MediaWiki 1.18.4 ==
+2012-06-12
+
+This is a security release of the MediaWiki 1.18 branch.
+
+=== Changes since 1.18.3 ===
+* (bug 36938) Correctly escape uselang attribute to prevent xss
+* Expanded Blacklist for SVG Files
+
+== MediaWiki 1.18.3 ==
+2012-04-25
+
+This is a maintenance release of the MediaWiki 1.18 branch.
+
 === Changes since 1.18.2 ===
 * (bug 35446) Using "{{nse:}}" with an invalid namespace name no longer throws
   a PHP warning.
 * (bug 35567) The whole password reminder e-mail is now sent in the same language.
+* (bug 35961) Hash comparison should always be strict.
+* (bug 35671) PHP Notice: Undefined index: gettoken in includes/api/ApiMain.php
+  on line 598.
+* Fix broken email confirmation expiration caused by MWCryptRand changes.
 
 == MediaWiki 1.18.2 ==
 2012-03-21
@@ -793,97 +1236,219 @@ changes to languages because of Bugzilla reports.
 
 == MediaWiki 1.17 ==
 
-=== PHP 5.2 now required ==
-Since 1.17, the lowest supported version of MediaWiki is now 5.2.3. Please
-upgrade PHP if you have not done so prior to upgrading MediaWiki.
+== MediaWiki 1.17.5 ==
+2012-06-12
+
+This is a security release of the MediaWiki 1.17 branch.
+
+=== Summary of selected changes in 1.17 ===
+
+Selected changes since MediaWiki 1.16 that may be of interest:
+
+* A new installer has been introduced. It has a wizard-style interface which is
+  translated into many languages. Many shortcomings in the old installer were
+  addressed with this rewrite. Note that it is no longer required for the config
+  directory to be made writable by the webserver. Instead the generated
+  LocalSettings.php file is offered as a download, which you must then upload
+  to the wiki's base directory.
+
+* ResourceLoader, a new framework for delivering client-side resources such as
+  JavaScript and CSS, has been introduced. These resources are now delivered
+  through the new entry point script "load.php", instead of as static files
+  served directly by the web server. This allows minification, compression and
+  client-side caching to be used more effectively, which should provide a net
+  performance improvement for most users.
+
+* Category sorting has been improved.
+** Sorting is now case insensitive.
+** Sub-categories, pages and files can now be paged separately.
+** When several pages are given the same sort key, they sort by their
+   names instead of randomly.
+
+* The lowest supported version of PHP is now 5.2.3. If necessary, please
+  upgrade PHP prior to upgrading MediaWiki.
+
+=== Changes since 1.17.4 ===
+
+* (bug 36938) Correctly escape uselang attribute to prevent xss
+* Expanded Blacklist for SVG Files
+
+=== Changes since 1.17.3 ===
+
+* (bug 35961) Hash comparison should always be strict.
+* Fix broken email confirmation expiration caused by MWCryptRand changes.
+* (bug 35671) PHP Notice: Undefined index: gettoken in includes/api/ApiMain.php
+  on line 598.
+
+=== Changes since 1.17.2 ===
+
+* (bug 22555) Remove or skip strip markers from tag hooks like &lt;nowiki&gt; in
+  core parser functions which operate on strings, such as padleft.
+* (bug 34212) ApiBlock/ApiUnblock allow action to take place without a token
+  parameter present.
+* (bug 34907) Fixed exposure of tokens through load.php that could have facilitated
+  CSRF attacks.
+* (bug 35317) CSRF in Special:Upload.
 
-=== New installer in 1.17 ===
-MediaWiki 1.17 is shipping with a completely redesigned installer to fix
-a lot of outstanding bugs, cleanup the code quality, and make it easier to
-use. Notably, you can now run upgrades from the web without having to move
-LocalSettings.php. Also, configuration script directory has been renamed
-from config/ to mw-config/. The specific bugs are listed below in the
-general notes.
+=== Changes since 1.17.1 ===
+* (bug 33117) prop=revisions allows deleted text to be exposed through cache pollution.
+* (bug 32709) Private Wiki users were always taken to Special:Badtitle on login.
 
-=== New ResourceLoader in 1.17 ===
-MediaWiki 1.17 ships with a ResourceLoader which combines and minifies css and
-javascript attached to the page. They are served from the new entry point load.php
-If the page is served with the &debug=true parameter, the non-minified files
-are used instead.
+=== Changes since 1.17.0 ===
+
+* (bug 29535) Added missing Creative Commons CC0 icon.
+* (bug 29726) Fixed failure to load internationalization messages in
+  client-side scripts on WebKit-based browsers.
+* Fixed a bug in message transformation where the previous language could leak
+  into later transformations in the UI language.
+* (bug 29091) Fixed form of native name for Ossetic language (Иронау -> Ирон)
+* Fixed maintenance scripts upgrade1_5.php and rebuildImages.php, they did not
+  work at all since 1.17 beta 1.
+* (bug 29531) Fixed img_auth.php for thumbnails and other filenames with
+  multiple dots, was broken by the fix for bug 28840.
+* In the maintenance script purgeList.php, fixed a fatal error when a page
+  title is given, instead of a URL.
+* (bug 19514) Unordered list list-style-image should be IE6-compatible (8-bit).
+* Installer checked for magic_quotes_runtime instead of register_globals.
+* $wgSVGMaxSize is now applied to the smaller of width or height, making very
+  wide pano/timeline/diagram SVGs renderable at saner sizes.
+* (bug 29959) Installer fatal when cURL and allow_url_fopen is disabled and user
+  tries to subsribe to mediawiki-announce.
+* Installer checked for magic_quotes_runtime instead of register_globals
+* (bug 30131) XCache with variable caching disabled no longer used for variable
+  caching (CACHE_ACCEL)
+* (bug 30264) Changed installer-generated LocalSettings.php to use require_once()
+  instead require() for included extensions.
+* (bug 26486) ResourceLoader modules with paths to nonexistent files cause PHP
+  warnings/notices to be thrown
+* (bug 30907) Special:Unusedcategories should sort ascendingly.
+* (bug 30219) The page shown when LocalSettings.php does not exist was broken on
+  Windows servers.
+* Hardcoded NLS_NUMERIC_CHARACTERS for Oracle DB to prevent type conversion errors.
+* Fixed recentchanges FK violation on page delete and cache purge error in updater
+  for Oracle DB.
+* (bug 32276) Skins were generating output using the internal page title which
+  would allow anonymous users to determine wheter a page exists, potentially
+  leaking private data. In fact, the curid and oldid request parameters would
+  allow page titles to be enumerated even when they are not guessable.
+* (bug 32616) action=ajax requests were dispatched to the relevant internal
+  functions without any read permission checks being done. This could lead to
+  data leakage on private wikis.
+
+=== Changes since 1.17.0rc1 ===
+
+* Fixed syntax error in generated LocalSettings.php when a non-default user
+  rights profile is chosen.
+* (bug 29399) Fixed PostgreSQL installation when the DB user for installation
+  is the same as the one for web access.
+* (bug 29233) Fixed failover for DB slave servers. When a DB slave went down,
+  an error was immediately shown to the user, instead of trying another slave.
+  Was broken since 1.17 beta 1.
+* (bug 29278) Fixed PHP fatal error when attempting to add text to a page via a
+  redirect.
+* (bug 29408) Fixed uploads of files with MIME types that aren't detected by
+  MediaWiki.
+* Removed DEFAULT '' NOT NULL field definitions from Oracle DB schema because
+  using the DEFAULT value ('') in DML broke Oracle backend as it treats an
+  empty VARCHAR2 value as NULL. Indexes on Oracle do not require NOT NULL
+  fields.
+
+=== Changes since 1.17 beta 1 ===
+
+* Fixed warning about missing file "password.js".
+* When installing on MySQL, don't attempt to create a new database user if the
+  same user is used for installation and web access.
+* Fixed SQL query errors in queries with table aliases.
+* (bug 27891) Fixed the "chronology protector", broken since 1.17beta1, which
+  ensures that when database replication is used, the new version is seen by
+  the user immediately after they create or edit an article.
+* (bug 28845) Allow PostgreSQL installation using a non-root user account which
+  has role creation abilities.
+* When installing on PostgreSQL and the install account is the same as the web
+  account, check to make sure that the account has suitable privileges in the
+  mediawiki schema.
+* (bug 28172) Fixed error in PostgreSQL installation when creating the wiki
+  sysop account.
+* Fixed an issue with the Oracle installer in cases where the user is different
+  to the database name.
+* Added "unblockself" to the list of available rights.
+* In the installer, fixed the "user rights profile" option, it never worked.
+* (bug 29117) Fixed Hebrew localisation of the installer.
+* (bug 28840) Reduce the collateral damage caused by the fix for bug 28235 (XSS
+  on Internet Explorer 6 due to a file extension in the query string) by
+  reducing the number of URLs that are blocked, and by redirecting the request
+  to a safer URL where possible instead of blocking it.
+* (bug 28812) Fixed documentation of API action=parse.
+* (bug 28979) Fixed styling of <abbr> and <acronym>.
+* Fixed the error message displayed when you try to create an account by email,
+  but an email address is not given.
+* Fixed JS error due to missing dependency for jquery.suggestions.
+* Exposed $wgExtensionAssetsPath in JavaScript.
+* (bug 28738) Made ResourceLoader support environments with small URL length
+  limits. The length limit can be configured via $wgResourceLoaderMaxQueryLength,
+  and this is set automatically in the generated LocalSettings.php when the
+  php.ini variable "suhosin.get.max_value_length" is set. When a URL exceeds
+  this limit, the request is split up. Also, reduced the average length of
+  load.php URLs by using a more compact parameter format.
+* (bug 25262) Fix for minification of hardcoded data: URIs in CSS.
+* (bug 25124) Respect $wgStyleDirectory in ResourceLoader.
+* Allow installation when no HTTP client is available, don't throw an exception.
+* (bug 27465) Fix metadata extraction for SVG files using unusual namespace
+  names.
+* (bug 29174) Fix regression in upload-by-URL: uploading files larger than the
+  PHP memory limit should work again.
+* Fixed the display of comments in the new user log.
+* (bug 28237) When installing extensions using the web-based installer, create
+  any necessary database tables.
+* (bug 28983) Fixed automated installation of extensions that overwrite $path.
+* Fixed error caused by missing magic words.
+* Fixed breakage of article editing in PostgreSQL due to text search
+  configuration errors.
+* Fixed the HTTPS client used when Curl is not available. This avoids an error
+  during install about failure of the mediawiki-announce subscription.
+* (bug 28162) When installing to PostgreSQL, respect the "database port" input,
+  it was ignored.
 
 === Configuration changes in 1.17 ===
-* DatabaseFunctions.php that was needed for compatibility with pre-1.3
-  extensions has been removed.
-* $wgAllowImageTag can be set to true to whitelist the <img> tag in wikitext.
-* (bug 12797) Add $wgGalleryOptions for adjusting of default gallery display
-  options.
-* $wgAllowUserCssPrefs option allows disabling CSS-based preferences; which can
-  improve page loading speed.
+
+* $wgLogAutocreatedAccounts controls whether autocreation of accounts is logged
+  to new users log.
 * (bug 22858) $wgLocalStylePath is by default set to the same value as
   $wgStylePath but should never point to a different domain than the site is
   on, allowing skins to use .htc files which are not cross-domain friendly.
-* (bug 20193) Added $wgVectorShowVariantName global configuration variable
-  which causes Vector to render the variants drop-down menu with a label
-  showing the current variant name. This is off by default, pending further
-  research into its user experience implications.
-* XmlFunctions.php has been removed. Use the Xml or Html classes as appropriate.
-* Added $wgSQLMode for setting database SQL modes - either performance (null)
-  or other reasons (such as enabling stricter checks)
 * $wgFileStore has been deprecated. The only usage $wgFileStore['deleted'] has
   been turned into $wgDeletedDirectory.
 * $wgDeletedDirectory has been added to specify what directory to place deleted
   uploads in.
 * IBM DB2 database no longer uses the db specific $wgDBport_db2 variable but the
   normal $wgDBport.
-* The upload link for missing files can now be set separately from the
-  navigation link with $wgUploadMissingFileUrl.
 * $wgCategoryPrefixedDefaultSortkey was removed and is now always false.  This
   provides more sensible sorting behavior for categories.
 * Removed unused globals: $wgEnableSerializedMessages, $wgCheckSerialized,
-  $wgUseMemCached, $wgDisableSearchContext, $wgColorErrors,
-  $wgUseZhdaemon, $wgZhdaemonHost and $wgZhdaemonPort.
+  $wgUseMemCached, $wgDisableSearchContext, $wgColorErrors, $wgUseZhdaemon,
+  $wgZhdaemonHost and $wgZhdaemonPort.
 * (bug 24408) The include_path is not modified in the default LocalSettings.php
 * $wgVectorExtraStyles was removed, and is no longer in use.
-* $wgLoadScript was added to specify alternative locations for ResourceLoader
-  requests.
-* $wgResourceLoaderMaxage was added to specify maxage and smaxage times for
-  responses from ResourceLoader based on whether the request's URL contained a
-  version parameter or not.
-* $wgResourceLoaderDebug was added to specify the default state of debug mode;
-  this will still be overridden with the debug URL parameter a la
-  $wgLanguageCode.
-* $wgResourceLoaderInlinePrivateModules was added to specify whether private
-  modules such as user.options should be embedded in the HTML output or
-  delivered through a resource loader request, which bypasses server cache (like
-  squid) and checks the user parameter against $wgUser. The former adds more
-  data to all pages, while the latter adds a request which cannot be cached
-  server side.
-* Removed $wgUpdates for database updates; extension should use
-  DatabaseUpdater::addExtensionUpdate().
+* Removed $wgUpdates for database updates; extensions should use
+  DatabaseUpdater::addExtensionUpdate() via the LoadExtensionSchemaUpdates hook.
 * Removed $wgServerName. It doesn't need to be set anymore and is no longer
   available as input for other configuration items, either.
-* Remove $wgRemoteUploads. It was not well supported and superseded by
-  $wgUploadNavigationUrl.
-* (bug 198) $wgUpgradeKey allows unlocking the web installer for upgrades
-  without having to move LocalSettings.php
-* The FailFunction "error handling" method has now been removed
-* $wgAdditionalMailParams added to allow setting extra options to mail() calls.
-* $wgSecureLogin to optionaly login using HTTPS
-* (bug 25728) Added $wgPasswordSenderName to allow customise the name associed
-  with $wgPasswordSender
-* Sysops now have the "suppressredirect" right by default
-* (bug 22463) $wgFooterIcons added to allow configuration of the icons shown in
-  the footers of skins.
-* $wgFileCacheDepth can be used to set the depth of the subdirectory hierarchy
-  used for the file cache. Default value is 2, which matches former behavior
 * It's no longer necessary for LocalSettings.php to include DefaultSettings.php.
 * It's no longer necessary to set $wgCacheEpoch to the file modification time
   of LocalSettings.php, in LocalSettings.php itself. Instead, this is done
   automatically if $wgInvalidateCacheOnLocalSettingsChange is true (which is
   the default).
-* (bug 26253) $wgPostCommitUpdateList has been removed
+* $wgCopyrightIcon is deprecated and $wgFooterIcons['copyright']['copyright']
+  should be used instead.
+* $wgSysopUserBans is deprecated, and will be made permanently true in 1.18.
+  If you need this functionality, you should use the BlockIp hook to filter and
+  reject such blocks.
+* $wgSysopRangeBans is deprecated, you should set $wgBlockCIDRLimit to maximum
+  (32 for IPv4, 128 for IPv6), equivalent to allowing rangeblocks of only 1
+  address at a time.
 
 === New features in 1.17 ===
+
 * (bug 10183) Users can now add personal styles and scripts to all skins via
   User:<name>/common.css and /common.js (if user css/js is enabled).
 * (bug 22748) Add anchors on Special:ListGroupRights.
@@ -898,7 +1463,7 @@ are used instead.
   changes list.
 * (bug 22925) "sp-contributions-blocked-notice-anon" message now displayed when
   viewing contributions of a blocked IP address.
-* (bug 22474) {{urlencode:}} now takes an optional second paramter for type of
+* (bug 22474) {{urlencode:}} now takes an optional second parameter for type of
   escaping.
 * Special:Listfiles now supports a username parameter.
 * Special:Random carries over query string parameters.
@@ -915,16 +1480,13 @@ are used instead.
 * (bug 20976) "searchmenu-new-nocreate" message now displayed when when there
   is no title match in search and the user has no rights to create pages.
 * (bug 23429) Added new hook WatchlistEditorBuildRemoveLine.
-* (bug 22844) Added support for WinCache object caching.
-* (bug 23580) Add two new events to LivePreview so that scripts can be
-  notified about the beginning and finishing of LivePreview actions.
+* (bug 22844) Added support for WinCache object caching (for IIS).
+* (bug 23580) Add two new events to LivePreview so that scripts can be notified
+  about the beginning and finishing of LivePreview actions.
 * (bug 21278) Now the sidebar allows inclusion of wiki markup.
-* (bug 23733) Add IDs to messages used on CSS/JS pages
-* (bug 21312) RevisionMove allows moving individual revisions of a page to
-  another page. Introducing 'revisionmove' user right; disabled by default;
-  experimental feature.
+* (bug 23733) Add IDs to messages used on CSS/JS pages.
 * Show validity period of the login cookie in Special:UserLogin and
-  Special:Preferences
+  Special:Preferences.
 * Interlanguage links display the page title in their tooltip.
 * (bug 23621) New Special:ComparePages to compare (diff) two articles.
 * (bug 4597) Provide support in Special:Contributions to show only "current"
@@ -935,12 +1497,12 @@ are used instead.
 * (bug 21475) \mathtt and \textsf can now be used in <math>
 * texvc is now run via ulimit4.sh, to limit execution time.
 * SQLite now supports $wgSharedDB.
-* (bug 8507) Group file links by namespace:title on image pages
+* (bug 8507) Group file links by namespace:title on image pages.
 * Stop emitting named entities, so we can use <!DOCTYPE html> while still being
-  well-formed XML
+  well-formed XML.
 * texvc now supports \bcancel and \xcancel in addition to \cancel and \cancelto
-* Added scriptExtension setting to $wgForeignFileRepos
-* ForeignApiRepo uses scriptDirUrl if apiBase not set
+* Added scriptExtension setting to $wgForeignFileRepos.
+* ForeignApiRepo uses scriptDirUrl if apiBase not set.
 * (bug 24212) Added MediaWiki:Filepage.css which is also included on foreign
   client wikis.
 * (bug 14685) Double underscore magic word usage is now tracked in the
@@ -950,71 +1512,100 @@ are used instead.
   "mw-ipb-needreblock"
 * Non-file pages can no longer be moved to the file namespace, nor vice versa.
 * (bug 671) The <dfn>, <kbd> and <samp> elements have been whitelisted in user
-  input
-* (bug 24563) Entries on Special:WhatLinksHere now have a link to their history
-* (bug 21503) There's now a "reason" field when creating account for other users
-* (bug 24418) action=markpatrolled now requires a token
+  input.
+* (bug 21503) There's now a "reason" field when creating account for other users.
+* (bug 24418) action=markpatrolled now requires a token.
 * A variety of category sort-related fixes, including:
 ** (bug 164) In English, lowercase and uppercase letters now sort the same.
-   (This should be expanded to proper sorting for other languages before the
-   1.17 release.)
 ** (bug 1211) Subcategories, ordinary pages, and files now page separately.
 ** When several pages are given the same sort key, they sort by their names
    instead of randomly.
 * (bug 23848) Add {{ARTICLEPATH}} Magic Word.
-* JavaScript-based password complexity checker on account creation and
-  password change.
-* (bug 8140) Add dedicated CSS classes to Special:Newpages elements
-* (bug 11005) Add CSS class to empty pages in Special:Newpages
+* (bug 8140) Add dedicated CSS classes to Special:Newpages elements.
+* (bug 11005) Add CSS class to empty pages in Special:Newpages.
 * The parser cache is now shared amongst users whose different settings aren't
   used in the page.
 * Any attribute beginning with "data-" can now be used in wikitext, per HTML5.
 * (bug 24007) Diff pages now mention the number of users having edited
-  intermediate revisions
-* Added new hook GetIP
+  intermediate revisions.
+* Added new hook GetIP.
 * Special:Version now displays whether a SQLite database supports full-text
   search.
 * TS_ISO_8691_BASIC was added as a time format, which is used by ResourceLoader
-  for versioning
+  for versioning.
 * Maintenance scripts get a --memory-limit option to override defaults (which
-  is usually to set it to -1 to disable the limit)
+  is usually to set it to -1 to disable the limit).
 * (bug 25397) Allow uploading (not displaying) of WebP images, disabled
-  by default
-* (bug 23194) Special:ListFiles now has thumbnails
+  by default.
+* (bug 23194) Special:ListFiles now has thumbnails.
 * Use hreflang to specify canonical and alternate links, search engine friendly
   when a wiki has multiple variant languages.
-* (bug 19593) Specifying --server in now works for all maintenance scripts
+* (bug 19593) Specifying --server in now works for all maintenance scripts.
 * Now rebuildtextindex.php warns if SQLite doesn't support full-text search.
-* (bug 10541) Front/backend separation of installation/upgrade code
-* (bug 10596) Allow installer to enable extensions already in extensions folder
-* (bug 17394) Make installer check for latest version against MediaWiki.org
-* (bug 20627) Installer should be in languages other than English
+* (bug 10541) Front/backend separation of installation/upgrade code.
+* (bug 10596) Allow installer to enable extensions already in extensions folder.
+* (bug 20627) Installer should be in languages other than English.
 * Support for metadata in SVG files (title, description).
-* Special:Search: Add CSS classes to 'none found' and 'create link' messages
+* Special:Search: Add CSS classes to 'none found' and 'create link' messages.
 * Add CSS classes (including namespace and pagename) to the enhanced recent
-  changes/watchlist entries
+  changes/watchlist entries.
 * (bug 22463) Add hook 'SkinGetPoweredBy' to make 'powered by' icon/text
-  customizable
-* Added CSS print pagination to the print stylesheets
+  customizable.
+* Added CSS print pagination to the print stylesheets.
 * (bug 25960) Add <link rel=canonical"> for File pages of shared/foreign
   file repositories.
 * When viewing a redirect, the redirect arrow and redirection target are both
   wrapped in a div that has the class "redirectMsg" so that the redirection
-  arrow can be customized with CSS
+  arrow can be customized with CSS.
 * (bug 21911) Hard coded limit for long page warning removed. New message
   [[MediaWiki:Longpage-hint]] (empty per default) can be used instead.
   Parameters: $1 shows the formatted textsize in Byte/KB/MB, $2 is the raw
-  number of the textsize in Byte
-* (bug 3276) Give image <gallery>s fluid width
-* Added uploads link to page subtitle in Special:Contributions
-* Added Special:Myuploads special page that redirects to Special:Listfiles
+  number of the textsize in Byte.
+* (bug 3276) Give image <gallery>s fluid width.
+* Added uploads link to page subtitle in Special:Contributions.
+* Added Special:Myuploads special page that redirects to Special:Listfiles.
 * The footerlinks used in Monobook/Vector/Modern are now part of common skin
   code, SkinTemplateOutputPageBeforeExec can be used to customize the list.
 * Special wrapping setups can now define MW_CONFIG_FILE to load a config file
   other than LocalSettings.php. This is like MW_CONFIG_CALLBACK but works in
   some cases where MW_CONFIG_CALLBACK will not work.
+* (bug 26574) Added 'upload' to $wgRestrictionTypes, allowing upload protected
+  pages to be queried via the API and Special:ProtectedPages, and allowing
+  disabling upload protection by removing it from $wgRestrictionTypes.
+* The name attribute of HTMLForm fields can now be overridden by passing a
+  'name' key in the descriptor array.  Hidden field names are now treated
+  consistently with other fields and, by default, prefixed with 'wp'.
+* (bug 27402) Add support for disabling MWSuggest.
+* (bug 26563) Add bytes changed per revision for stub and full article dumps.
+* (bug 27508) Add $wgSVGMetadataCutoff to limit the maximum amount of an svg we
+  look at when finding metadata to prevent excessive resource usage.
+* (bug 198) $wgUpgradeKey allows unlocking the web installer for upgrades
+  without having to move LocalSettings.php
+* Added $wgAllowImageTag, which can be set to true to whitelist the <img> tag
+  in wikitext.
+* (bug 12797) Add $wgGalleryOptions for adjusting of default gallery display
+  options.
+* Added the $wgAllowUserCssPrefs option which allows disabling CSS-based
+  preferences; which can improve page loading speed.
+* Added $wgSQLMode for setting database SQL modes - either performance (null)
+  or other reasons (such as enabling stricter checks).
+* (bug 20193) Added $wgVectorShowVariantName global configuration variable
+  which causes Vector to render the variants drop-down menu with a label
+  showing the current variant name. This is off by default, pending further
+  research into its user experience implications.
+* The upload link for missing files can now be set separately from the
+  navigation link with $wgUploadMissingFileUrl.
+* $wgAdditionalMailParams added to allow setting extra options to mail() calls.
+* Added $wgSecureLogin to optionally login using HTTPS.
+* (bug 25728) Added $wgPasswordSenderName to make the name associated
+  with $wgPasswordSender configurable.
+* (bug 22463) $wgFooterIcons added to allow configuration of the icons shown in
+  the footers of skins.
+* $wgFileCacheDepth can be used to set the depth of the subdirectory hierarchy.
+  used for the file cache. Default value is 2, which matches former behavior.
 
 === Bug fixes in 1.17 ===
+
 * (bug 17560) Half-broken deletion moved image files to deletion archive
   without updating database.
 * (bug 22666) Submitting user block form with an invalid user name no longer
@@ -1061,7 +1652,7 @@ are used instead.
 * (bug 20049) Fixed PHP notice in search highlighter that occurs in some cases.
 * (bug 23017) Special:Disambiguations now list pages in content namespaces
   rather than only main namespace.
-* (bug 23063) $wgMaxAnimatedGifArea is checked against the total size of all
+* (bug 23063) $wgMaxAnimatedGifArea is checked against the total size of all.
   frames, and $wgMaxImageArea against the size of the first frame, rather than
   the other way around.  Both now default to 12.5 megapixels.  Also, images
   exceeding $wgMaxImageArea can still be embedded at original size.
@@ -1091,12 +1682,12 @@ are used instead.
   correct link.
 * (bug 23284) Times are now rounded correctly.
 * (bug 23375) Added ogv, oga, spx as extensions for ogg files.
-* (bug 18408) All required permissions for uploading (upload, edit, create)
+* (bug 18408) All required permissions for uploading (upload, edit, create).
   are now checked when loading Special:Upload. Toolbar link for Special:Upload
   is no longer shown if the user does not have the required permissions.
-* (Bug 23397) texvc in html mode renders \sim as &tilde; not &sim;
-* (Bug 23241) Remove License selector, because it is not used when uploading a
-  new version.
+* (bug 23397) texvc in html mode renders \sim as &tilde; not &sim;
+* (bug 23241) License selector should be disabled during upload of a new
+  version.
 * (bug 23240) Add ID to namespace selector form on Special:Watchlist.
 * The pipe | character in urls is now escaped.
 * (bug 23422) mp3 files can now be moved.
@@ -1116,145 +1707,240 @@ are used instead.
 * (bug 16573) Render \epsilon in math using images, in order to create
   consistent and correct render results.
 * (bug 22541) Support image redirects when using ForeignAPIRepo.
-* (bug 22967) Make edit summary length cut-off behave correctly for
-  multibyte characters.
-* (bug 8689) Long numeric lines no longer  kill the parser.
+* (bug 22967) Make edit summary length cut-off behave correctly for multibyte
+  characters.
+* (bug 8689) Long numeric lines no longer kill the parser.
 * (bug 23740) Article::doRedirect() now use $extraQuery parameter correctly if
-  the $noRedir parameter is set to true
+  the $noRedir parameter is set to true.
 * (bug 23688) Correct mime types for Office 2007 OpenXML documents.
-* (bug 23787) Corrected $wgDefaultSkin's comment in DefaultSettings.php
-* (bug 23797) Xml::input() now allows '0' for the value parameter
+* (bug 23787) Corrected $wgDefaultSkin's comment in DefaultSettings.php.
+* (bug 23797) Xml::input() now allows '0' for the value parameter.
 * (bug 23747) Make sure that on History pages, the RevDel button is not
-  accidently activated when hitting enter.
-* (bug 23845) Special:ListFiles now uses correct file names without underscores
-* Ask for permanent login in Special:Preferences only if $wgCookieExpiration > 0
+  accidentally activated when hitting enter.
+* (bug 23845) Special:ListFiles now uses correct file names without underscores.
+* Ask for permanent login in Special:Preferences only if $wgCookieExpiration > 0.
 * (bug 16356) Repair dumpInterwiki.inc to use proper normalization.
 * (bug 24006) deleteArchivedRevisions.php maintenance script now longer throws
-  a fatal error
+  a fatal error.
 * (bug 23465) Don't ignore the predefined destination filename on
-  Special:Upload after following a red link
+  Special:Upload after following a red link.
 * (bug 23642) Recognize mime types of MS OpenXML documents.
 * (bug 22784) Normalise underscores and spaces in autocomments.
-* (bug 19910) Headings of the form ===+\s+ are now displayed as valid headings
+* (bug 19910) Headings of the form ===+\s+ are now displayed as valid headings.
 * (bug 24022) Only check file extensions on the uploadpage when needed.
-* (bug 24076) Recognize Office 2003 files with OpenXML trailers
-* (bug 24244) Updated comments in DefaultSettings.php to reflect
+* (bug 24076) Recognize Office 2003 files with OpenXML trailers.
+* (bug 24244) Updated comments in DefaultSettings.php to reflect.
   Image: --> File: namespace rename.
 * Make wfTimestamp recognize negative unix timestamp values.
 * (bug 24401) SimpleSearch: No button/text indicating 'Search' if image is
-  disabled
-* (bug 23293) Do not show change tags when special:recentchanges(linked)
-  or special:newpages is transcluded into another page as it messes up the
-  page.
+  disabled.
+* (bug 23293) Do not show change tags when Special:RecentChanges(linked) or
+  Special:Newpages is transcluded into another page as it messes up the page.
 * (bug 24517) LocalFile::newFromKey() and OldLocalFile::newFromKey() no longer
-  throw fatal errors
+  throw fatal errors.
 * (bug 23380) Uploaded files that are larger than allowed by PHP now show a
   useful error message.
 * Uploading to a protected title will allow the user to choose a new name
-  instead of showing an error page
+  instead of showing an error page.
 * (bug 24425) Use Database::replace instead of delete/insert in
   SqlBagOStuff::set to avoid query errors about duplicate keynames.
 * (bug 15470) First letters of filenames are always capitalized by upload JS.
-* (bug 21215) NoLocalSettings.php doesn't tolerate rewrite rules
-* (bug 21052) Fix link color for stubs in NewPages
+* (bug 21215) NoLocalSettings.php doesn't tolerate rewrite rules.
+* (bug 21052) Fix link color for stubs in NewPages.
 * (bug 24714) Usage of {{#dateformat: }} in wikis without $wgUseDynamicDates no
   longer pollutes the parser cache.
 * (bug 17031) Correct which characters the parser allows in tag attributes (a
   letter, colon or underscore followed by 0 or more letters, numbers, colons,
   underscores, hyphens, and/or periods).
-* Save 200 useless queries on each category page view
-* Shell commands will now work on Linux in filesystems mounted noexec
-* (bug 24804) Corrected commafying in Polish and Ukrainian
+* Save 200 useless queries on each category page view.
+* Shell commands will now work on Linux in filesystems mounted noexec.
+* (bug 24804) Corrected commafying in Polish and Ukrainian.
 * "Difference between pages" is now displayed instead of "Difference between
-   revisions" on diffs when appropriate.
+  revisions" on diffs when appropriate.
 * (bug 23703) ForeignAPIRepo fails on findBySha1() when using a 1.14 install as
-  a repository due to missing 'name' attribute from the API list=allimages
+  a repository due to missing 'name' attribute from the API list=allimages.
 * (bug 24898) MediaWiki uses /tmp even if a vHost-specific tempdir is set, also
-  make wfTempDir() return a sane value for Windows on worst-case
+  make wfTempDir() return a sane value for Windows on worst-case.
 * (bug 24824) Support ImageMagick 6.5.6-2+ JPEG decoder size hint, to reduce
   memory usage when such an ImageMagick is used for scaling.
 * Disable multithreaded behaviour in recent ImageMagick, to avoid a deadlock
   when a resource limit such as $wgMaxShellMemory is hit.
-* (bug 24981) Allow extensions to access SpecialUpload variables again
-* (bug 20744) Wiki forgets about an uploaded file
-* (bug 17913) Don't show "older edit" when no older edit available
-* (bug 6204) TOC not properly rendered when using $wgMaxTocLevel
-* (bug 24977) The accesskey in history page now lead directly to the diff
-  instead of alterning focus between the two buttons.
-* (bug 24987) Special:ListUsers does not take external groups into account
-* (bug 20633) update.php has mixed language output
+* (bug 24981) Allow extensions to access SpecialUpload variables again.
+* (bug 20744) Wiki forgets about an uploaded file.
+* (bug 17913) Don't show "older edit" when no older edit available.
+* (bug 6204) TOC not properly rendered when using $wgMaxTocLevel.
+* (bug 24977) The accesskey in history page now lead directly to the diff.
+  instead of alternating focus between the two buttons.
+* (bug 24987) Special:ListUsers does not take external groups into account.
+* (bug 20633) update.php has mixed language output.
 * SQLite system table names are now never prefixed.
 * (bug 25292) SkinSubPageSubtitle hook now passes the Skin object as second
-  parameter
-* (bug 25167) Correctly load JS fixes for IE6 (fixing a regression in 1.16)
+  parameter.
+* (bug 25167) Correctly load JS fixes for IE6 (fixing a regression in 1.16).
 * (bug 25367) wfShellExec() is more explicit when failing due to disabled
-  passthru()
-* (bug 25462) Fix double-escaping for section edit link tooltips
+  passthru().
+* (bug 25462) Fix double-escaping for section edit link tooltips.
 * action=raw was removed for Special:Statistics. This information is still
-  available via the API
+  available via the API.
 * (bug 23934) Groups defined in $wgRevokePermissions but not in
-  $wgGroupPermissions now appear on Special:ListGroupRights
+  $wgGroupPermissions now appear on Special:ListGroupRights.
 * (bug 23923) Special:Prefixindex no longer shows results if nothing was
   requested.
-* (bug 22308) Search now finds text in default main page immediately after setup
+* (bug 22308) Search now finds text in default main page immediately after setup.
 * (bug 25697) Make sure empty lines render in diff view.
 * Use an actual minus sign in diff views, instead of a hyphen.
-* (bug 23732) Clarified "n links" message on Special:MostLinkedFiles
-* (bug 23731) Clarified "n links" message on Special:MostLinkedTemplates
+* (bug 23732) Clarified "n links" message on Special:MostLinkedFiles.
+* (bug 23731) Clarified "n links" message on Special:MostLinkedTemplates.
 * (bug 25642) A exception is now thrown instead of a fatal error when using
-  $wgSMTP without PEAR mail package
+  $wgSMTP without PEAR mail package.
 * (bug 19633) When possible, Upscale small SVGs when creating thumbnails.
-* (bug 11013) Database driver detection needs rewriting for robustness
-* (bug 13409) Installer prompts could use clarification--now has help boxes
-* (bug 16902) Installer spews warnings when exec() and dl() are not available
-* (bug 19129) Only show MyISAM/InnoDB when supported
-* (bug 17762) Only show other e-mail options when e-mail is globally enabled
-* Cache multiple sizes of InstantCommons thumbnails
+* (bug 11013) Database driver detection needs rewriting for robustness.
+* (bug 13409) Installer prompts could use clarification--now has help boxes.
+* (bug 16902) Installer spews warnings when exec() and dl() are not available.
+* (bug 19129) Only show MyISAM/InnoDB when supported.
+* (bug 17762) Only show other e-mail options when e-mail is globally enabled.
+* Cache multiple sizes of InstantCommons thumbnails.
 * (bug 25488) Disallowing anonymous users to read pages no longer throws error
-  on discussion pages with vector as default skin
-* (bug 24833) Files name in includes/diff/ are now less confusing
-* (bug 25713) SpecialPage::resolveAlias() now normalise spaces to underscores
+  on discussion pages with vector as default skin.
+* (bug 24833) Files name in includes/diff/ are now less confusing.
+* (bug 25713) SpecialPage::resolveAlias() now normalise spaces to underscores.
 * (bug 25829) Special:Mypage and Special:Mytalk now forward oldid, diff and dir
-  parameters
+  parameters.
 * (bug 25175) HTML file cache now honor $wgCacheDirectory if
-  $wgFileCacheDirectory is not set
-* (bug 13353) Diff3 version checks were too strict, did not detect working diff3
-* (bug 25843) Links to special pages using link= attribute on images are now
-  normalised like normal links to special pages
+  $wgFileCacheDirectory is not set.
+* (bug 13353) Diff3 version checks were too strict, did not detect working diff3.
+* (bug 25843) Links to special pages using link= attribute on images are now.
+  normalised like normal links to special pages.
 * (bug 21364) External links using link= attribute on images now respect
-  $wgExternalLinkTarget
+  $wgExternalLinkTarget.
 * (bug 17789) Added a note to the total views on Special:Statistics saying that
-  is doesn't count non-existing pages and special pages
-* (bug 17996) HTTP redirects are now combined when requesting a special page
+  is doesn't count non-existing pages and special pages.
+* (bug 17996) HTTP redirects are now combined when requesting a special page.
 * (bug 19944) Link on image thumbnails no longer link to "Media:" namespace in
-  some cases
+  some cases.
 * (bug 25670) wfFindFile() now checks the namespace of the given title, only
-  "File" and "Media" are allowed now
+  "File" and "Media" are allowed now.
 * (bug 25872) Rename the HttpRequest class to MWHttpRequest to avoid conflict
   with php extension that defines same class.
 * (bug 20591) There's now a different message on Special:MovePage when
   $wgFixDoubleRedirects is set to false.
 * Fixed PHP warnings when updating a broken MySQL database.
-* (bug 26023) Corrected deleteBacth.php's documentation
+* (bug 26023) Corrected deleteBacth.php's documentation.
 * (bug 25451) Improved datetime representation in 32 bit php >= 5.2.
 * Show "skin does not exist error" only when the skin is inputted in the wrong
   case.
-* (bug 26164) Potential html injection when the database server isn't available
-* (bug 26160) Upload description set by extensions are not propagated
+* (bug 26164) Potential html injection when the database server isn't available.
+* (bug 26160) Upload description set by extensions are not propagated.
 * (bug 9675) generateSitemap.php now takes an --urlpath parameter to allow
-  absolute URLs in the sitemap index (as required e.g. by Google)
+  absolute URLs in the sitemap index (as required e.g. by Google).
 * Partial workaround for bug 6220: at least make files on shared repositories
-  show up as (struck-out) bluelinks instead of redlinks on Special:WantedFiles
-* rebuildFileCache.php no longer creates inappropriate cache files for redirects
-* (bug 18372) $wgFileExtensions will now override $wgFileBlacklist
+  show up as (struck-out) bluelinks instead of redlinks on Special:WantedFiles.
+* rebuildFileCache.php no longer creates inappropriate cache files for redirects.
 * (bug 25512) Subcategory list should not include category prefix for members.
-* (bug 20244) Installer does not validate SQLite database directory for stable path
+* (bug 10871) Javascript and CSS pages in MediaWiki namespace are no longer
+  treated as wikitext on preview.
+* Page existence is now not revealed (in the colour of the tabs) to users who
+  cannot read the page in question.
+* (bug 22753) Output from update.php is more clear when things changed, entries
+  indicating nothing changed are now all prefixed by "..."
+* (bug 16019) $wgArticlePath = "/$1" no longer breaks API edit/watch actions.
+* (bug 18372) File types blacklisted by $wgFileBlacklist will no longer be shown as
+  "Permitted file types" on the upload form.
+* (bug 26540) Fixed wrong call to applyPatch in MysqlUpdater.
+* (bug 26034) Make the "View / Read" tab in content_navigation style tabs remain
+  selected when the action is "purge".
+* (bug 26733) Wrap initial table creation in transaction.
+* (bug 26208) Mark directionality of some interlanguage links.
+* (bug 26716) Provide link to instructions for external editor related preferences.
+* (bug 26961) Hide anon edits in watchlist preference now actually works.
 * (bug 1379) Installer directory conflicts with some hosts' configuration panel.
-* (bug 12070) After Installation MySQL was blocked
-* Fix XML well-formedness on a few pages when $wgHtml5 is true (the default)
-* (bug 28568) Entries in the iwlinks table are now removed on page deletion
+* (bug 27781) Installer does not warn about 5.1.x. Added a compatibility function
+  for array_key_exists().
+* Fix XML well-formedness on a few pages when $wgHtml5 is true (the default).
+* (bug 28069) MediaWiki fails streaming files when mod_deflate and ob_gzhandler
+  are also set.
+* (bug 26223) Concurrently moving an article to different titles leaks a
+  redirect revision with no page.
+* (bug 15641) Fixed permissions checks in Special:Import which allowed users
+  without the 'import' permission to import pages from configured import sources.
+* (bug 26449) Keep underlines from headings outside of tables and thumbs by
+  adding overflow:hidden to h1,h2,h3,h4,h5,h6 (also fixes editsection bunching).
+* (bug 26708) Remove background-color:white from tables in Monobook and Vector.
+* (bug 26781) {{PAGENAME}} and related parser functions escape their output better.
+* (bug 26716) Provide link to instructions for external editor related preferences
+  and add a comment to the ini control file explaining what is going on.
+* (bug 28422) Remove color:black from tables in Monobook and Vector. And add it
+  to table.wikitable instead.
+* (bug 27560) Search queries no longer fail in walloon language.
+* (bug 27700) The upload protection can now also be set for files that do not
+  exist.
+* (bug 28034) uploading file to local wiki when file exists on shared repository
+  (commons) gives spurious info in the warning message.
+* Usernames get lost when selecting different sorts on Special:listfiles.
+* (bug 28166) UploadBase assumes that 'edit' and 'upload' rights are not per
+  page restrictions.
+* (bug 28242) Make redirects generated by urls containing a local interwiki
+  prefix be a 301 instead of a 302.
+* (bug 28568) Entries in the iwlinks table are now removed on page deletion.
+* (bug 28306) Fix exposure of suppressed usernames in ForeignDBRepo.
+* (bug 28444) Fix regression: edit-on-doubleclick retains revision id again.
+* UtfNormal::cleanUp on an invalid utf-8 sequence no longer returns false if
+  intl installed.
+* (bug 26729) Category pages should return 404 if they do not exist and have no
+  members.
+* (bug 28214) When page not found, sends malformed HTTP/1.x instead of HTTP/1.1
+  in header of response.
+* (bug 27634) TOC title appears in wrong language.
+* (bug 27761) Fix regression: pages with Esperanto titles containing convertible
+  character sequences became unreachable.
+* (bug 27508) SVGMetadataExtractor takes too much resources on huge svgs.
+* (bug 27465) SVG thumbnail generation.
+* (bug 27467) preload can leave UNIQ.
+* (bug 27539) Allow attributes beginning with a digit in wiktext tag parameters.
+* (bug 27328) using relative paths in CSS imports in MediaWiki:Common.css broken
+  in 1.17.
+* (bug 27333) Fix repetitive last-seen time queries on page history.
+* (bug 26250, bug 23817) Fix wfObjectToArray() to descend into arrays; fixes
+  processing of JSON return values for ForeignAPIRepo when native json module
+  not present.
+* (bug 25675) Fix search suggestions for Special: pages with spaces.
+* (bug 25571) Xml::encodeJsVar now passes floats natively instead of converting
+  to strings.
+* (bug 27338) Gallery in 1.17 breaks for audio/video + ogghandler.
+* (bug 27302) Don't append the current timestamp for user/site modules when no
+  user/site JS/CSS is present.
+* (bug 27016) dumpTextPass.php now consider the "output" parameter.
+* (bug 22606) don't send the "someone registred an account" message when setting
+  email address (i.e. old one empty) in user preferences.
+* (bug 26458) Section edit links appear on pages that user does not have right
+  to edit.
+* (bug 28611) Don't die in SqlBagOStuff::incr() if there's a race condition.
+* (bug 16886) Sister projects box moves down the extract of the first result
+  in IE 7.
+* (bug 17398) Fixed "link" parameter in image links with "thumb" or "frame"
+  parameter.
 
 === API changes in 1.17 ===
+
+* BREAKING CHANGE: action=patrol now requires POST.
+* BREAKING CHANGE: patrol token is no longer the same as edit token.
+* BREAKING CHANGE: Session keys returned by ApiUpload are now strings instead
+  of integers.
+* BREAKING CHANGE: (bug 25303) Fix API parameter integer validation to actually
+  enforce validation on the input values in addition to giving a warning.
+  Also add flag to enforce (die) if integer out of range.
+* (bug 24650) Fix API to work with categorylinks changes.
+* action=parse now correctly returns an error for nonexistent pages.
+* (bug 27201) Special:WhatLinksHere output no longer contains duplicate IDs.
+* (bug 26560) On allusers if limit < total number of users, last user gets
+  duplicated.
+* (bug 27715) imageinfo didn't respect revdelete.
+* (bug 27479) API error when using both prop=pageprops and
+  prop=info&inprop=displaytitle.
+* (bug 27862) Useremail module didn't properly return success on success.
+* (bug 27590) prop=imageinfo now allows querying the media type.
+* (bug 27587) list=filearchive now outputs full title info.
+* (bug 27897) list=allusers and list=users list hidden users.
 * (bug 22738) Allow filtering by action type on query=logevent.
 * (bug 22764) uselang parameter for action=parse.
 * (bug 22944) API: watchlist options are inconsistent.
@@ -1272,106 +1958,106 @@ are used instead.
 * (bug 23524) Api Modules as followup to bug 14473 (Add iwlinks table to
   track inline interwiki link usage).
 * Add pltitles and tltemplates to prop=links and prop=templates respectively,
-  similar to prop=categories's clcategorie
+  similar to prop=categories's clcategorie.
 * (bug 23834) Invalid "thumbwidth" and "thumbheight" in "imageinfo" query when
-  thumbnailing larger than original image
-* (bug 23835) Need "thumbmime" result in "imageinfo" query
-* (bug 23851) Repair diff for file redirect pages
-* (bug 24009) Include implicit groups in action=query&list=users&usprop=groups
+  thumbnailing larger than original image.
+* (bug 23835) Need "thumbmime" result in "imageinfo" query.
+* (bug 23851) Repair diff for file redirect pages.
+* (bug 24009) Include implicit groups in action=query&list=users&usprop=groups.
 * (bug 24016) API: Handle parameters specified in simple string syntax
-  ( 'paramname' => 'defaultval' ) correctly when outputting help
-* (bug 24089) Logevents causes PHP Notice if leprop=title isn't supplied
-* (bug 23473) Give description of properties on all modules
+  ( 'paramname' => 'defaultval' ) correctly when outputting help.
+* (bug 24089) Logevents causes PHP Notice if leprop=title isn't supplied.
+* (bug 23473) Give description of properties on all modules.
 * (bug 24136) unknownerror when adding new section without summary, but
-  forceditsummary
-* (bug 16886) Sister projects box moves down the extract of the first result
-  in IE 7.
-* (bug 22339) Added srwhat=nearmatch to list=search to get a "go" result
+  forceditsummary.
+* (bug 22339) Added srwhat=nearmatch to list=search to get a "go" result.
 * (bug 24303) Added new &servedby parameter to all actions which adds the
   hostname that served the request to the result. It is also added
-  unconditionally on error
+  unconditionally on error.
 * (bug 24185) Titles in the Media and Special namespace are now supported for
   title normalization in action=query. Special pages have their name resolved
   to the local alias.
 * (bug 24296) Added converttitles parameter to convert titles to their
   canonical language variant.
-* (bug 17398) Fixed "link" parameter in image links with "thumb" or "frame"
-  parameter.
-* (bug 23936) Add "displaytitle" to query/info API
+* (bug 23936) Add "displaytitle" to query/info API.
 * (bug 24485) Make iwbacklinks a generator, optionally display iwprefix and
-  iwtitle
+  iwtitle.
 * (bug 24564) Fix fatal errors when using list=deletedrevs, prop=revisions or
   one of the backlinks generators with limit=max.
-* (bug 24656) API's parse module needs option to disable PP report
+* (bug 24656) API's parse module needs option to disable PP report.
 * PARAM_REQUIRED parameter flag added. If this flag is set, and the end user
   does not set the parameter, the API will automatically throw an error.
 * (bug 24665) When starttimestamp is not specified, fake it by setting it to
-  NOW, not to the timestamp of the last edit
+  NOW, not to the timestamp of the last edit.
 * (bug 24677) axto= parameters added to allcategories, allimages, alllinks,
-  allmessages, allpages, and allusers
+  allmessages, allpages, and allusers.
 * (bug 24236) Add add, remove, add-self, remove-self tags to
-  meta=siteinfo&siprop=usergroups
-* (bug 24484) Add prop=pageprops module
-* (bug 24330) Add &redirect parameter to ?action=edit
+  meta=siteinfo&siprop=usergroups.
+* (bug 24484) Add prop=pageprops module.
+* (bug 24330) Add &redirect parameter to ?action=edit.
 * (bug 24722) For list=allusers&auprop=blockinfo, only show blockedby and
   blockreason if the user is actually blocked.
-* Add format=dump and format=dumpfm, outputs results in PHP's var_dump() format
+* Add format=dump and format=dumpfm, outputs results in PHP's var_dump() format.
 * For required string parameters, if '' is provided, this is now classed as
-  missing
-* (bug 24724) list=allusers is out by 1 (shows total users - 1)
-* (bug 24166) API error when using rvprop=tags
+  missing.
+* (bug 24724) list=allusers is out by 1 (shows total users - 1).
+* (bug 24166) API error when using rvprop=tags.
 * Introduced "asynchronous download" mode for upload-by-url. Requires
   $wgAllowAsyncCopyUploads to be true.
 * sinumberingroup correctly gives size of 'user' group, and omits size of
   implicit groups rather than showing 0.
-* (bug 25248) API: paraminfo errors with certain modules
-* (bug 25303) Fix API parameter integer validation to actually enforce
-  validation on the input values in addition to giving a warning. Also add flag
-  to enforce (die) if integer out of range (breaking change!)
+* (bug 25248) API: paraminfo errors with certain modules.
 * (bug 24792) API help for action=purge sometimes wrongly stated whether a
-  POST request was needed due to cache pollution
-* Added iiprop=parsedcomment to prop=imageinfo, similar to prop=revisions
+  POST request was needed due to cache pollution.
+* Added iiprop=parsedcomment to prop=imageinfo, similar to prop=revisions.
 * Added rvparse to parse revisions. For performance reasons if this option is
   used, rvlimit is enforced to 1.
 * (bug 25748) If a action=parse request provides an oldid that is actually the
-  current revision id, try the parser cache, and save it to it if necessary
+  current revision id, try the parser cache, and save it to it if necessary.
 * (bug 25463) Export header should not be shown if no pages were requested, to
-  reduce confusion
-* (bug 25648) API discovery information has been added as RSD link in page
+  reduce confusion.
+* (bug 25648) API discovery information has been added as RSD link in page.
   <head> and by providing an API module action=rsd. Added hook
   ApiRsdServiceApis for extensions to add their own service to the services
   list.
 * The HTML of diff output markers has changed. Hyphens are now minus signs,
-  empty markers are now filled with non-breaking-space characters
-* (bug 25741) Add more data to list=search's srprop
+  empty markers are now filled with non-breaking-space characters.
+* (bug 25741) Add more data to list=search's srprop.
 * (bug 25760) counter property still reported by the API when
-  $wgDisableCounters enabled
-* (bug 25987) prop=info&inprop=watched now also works for missing pages
-* (bug 26006) prop=langlinks now allows obtaining full URL
-* (bug 26075) ApiDelete.php now calls correctly ArticleDelete hook
-* (bug 26089) add block expiration to blockinfo
+  $wgDisableCounters enabled.
+* (bug 25987) prop=info&inprop=watched now also works for missing pages.
+* (bug 26006) prop=langlinks now allows obtaining full URL.
+* (bug 26075) ApiDelete.php now calls correctly ArticleDelete hook.
+* (bug 26089) add block expiration to blockinfo.
 * (bug 26125) prop=imageinfo&iiprop=size now returns the page count if the
-  file is a multi-page file
-* (bug 10268) Added linktodiffs parameter on action=feedwatchlist
-* (bug 26219) Show API limits for multi values in description
+  file is a multi-page file.
+* (bug 10268) Added linktodiffs parameter on action=feedwatchlist.
+* (bug 26219) Show API limits for multi values in description.
+* (bug 28070) Fix watchlist RSS for databases that store timestamps in a
+  real timestamp field.
+* (bug 27722) list=filearchive now supports revdel.
 
-=== Languages updated in 1.17 ===
+=== Language support changes in 1.17 ===
 
-MediaWiki supports over 330 languages. Many localisations are updated
-regularly. Below only new and removed languages are listed, as well as
-changes to languages because of Bugzilla reports.
+MediaWiki supports over 330 languages. Many localizations are updated regularly.
+
+The following languages were added:
+
+* Moroccan Spoken Arabic (ary)
+* Banjar (bjn)
+* Kabardian (kdb)
+* Kabardian (Cyrillic) (kbd-cyrl)
+* Latgalian (ltg)
+* Minangkabau (min)
+* Dutch (informal) (nl-informal)
+* Rusyn (rue)
 
-* Moroccan Spoken Arabic (ary) (new)
-* Banjar (bjn) (new)
-* Danish (dk) (removed deprecated language code)
-* Fiji Hindi (Devangari script) (removed)
-* Kabardian (kdb) (new, dummy)
-* Kabardian (Cyrillic) (kbd-cyrl) (new)
-* Latgalian (ltg) (new)
-* Minangkabau (min) (new)
-* Dutch (informal) (nl-informal) (new)
-* Rusyn (rue) (new)
+Other significant changes to MediaWiki's language support:
 
+* Fiji Hindi (Devangari script) was removed.
+* Removed deprecated language code "dk" (Danish), use "da" instead.
+* Link trail added for sl and sh.
+* (bug 27633) Add characters to linkTrail for Portuguese (pt and pt-br).
 * (bug 23156) Commafy and search normalization updated for Belarusian
   (Taraškievica).
 * (bug 23283) Native name for Old English -> Ænglisc.
@@ -1381,6 +2067,27 @@ changes to languages because of Bugzilla reports.
 * (bug 24917) Polish as fallback for Kashubia.
 * (bug 24794) Tatar link trail updated.
 * Esperanto date format corrected.
+* (bug 28159) Change interwiki name of language kbd to Къэбэрдеибзэ /
+  Qabardjajəbza.
+* (bug 28184) Namespaces for the Latgalian Wikipedia.
+* (bug 25010) Bashkir-language interwikis: linktext change from Башҡорт
+  to Башҡортса.
+* (bug 26395) Change name of Cornish language to Kernowek.
+
+=== Other changes in 1.17 ===
+
+* DatabaseFunctions.php that was needed for compatibility with pre-1.3
+  extensions has been removed.
+* XmlFunctions.php has been removed. Use the Xml or Html classes as appropriate.
+* The FailFunction "error handling" method has now been removed
+* Sysops now have the "suppressredirect" right by default
+* Removed $wgRemoteUploads. It was not well supported and superseded by
+  $wgUploadNavigationUrl.
+* (bug 26253) $wgPostCommitUpdateList has been removed
+* The PHPUnit test suite has been removed from this release due to serious issues
+  which should be resolved by the 1.18 release.
+* Oracle DB now uses the __destruct fuction to commit/close connection as it
+  doesn't commit on close if transation is triggered in OCI.
 
 == MediaWiki 1.16 ==
 
index b28cc70..66cca2e 100644 (file)
@@ -132,11 +132,11 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 22749) Create Special:MostInterwikis.
 * Show change tags when transclude Special:Recentchanges(linked) or Special:Newpages.
 * (bug 23226) Add |class= parameter to image links in order to add class(es) to HTML img tag.
-* (bug 39431) SVG animated status is now shown in long description
+* (bug 39431) SVG animated status is now shown in long description.
 * (bug 39376) jquery.form upgraded to 3.14.
 * SVG files will now show the actual width in the SVG's specified units
   in the metadata box.
-* Added ResourceLoader module "jquery.jStorage".
+* Added ResourceLoader module "jquery.jStorage" (v0.3.0, http://jStorage.info/).
 * (bug 39273) Added AJAX support for "Show changes" (diff) in LivePreview.
 * Added ResourceLoader module "jquery.badge".
 * mw.util.$content now points to the overall content area in the skin rather than just
@@ -145,8 +145,12 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
   with auto-hide, multi-message support, and message replacement tags.
 * jquery.messageBox which appears to be unused by both core and extensions has
   been removed.
-* (bug 34939) Made link parsing insensitive ([HttP://])
+* (bug 34939) Made link parsing insensitive ([HttP://]).
 * (bug 40072) Add CSS classes to items in output of ChangesList pages.
+* Added $wgCopyUploadProxy global to define which proxy to use for copy
+  uploads.
+* (bug 40448) mediawiki.legacy.mwsuggest has been replaced with a new module,
+  mediawiki.searchSuggest, based on SimpleSeach from Extension:Vector.
 
 === Bug fixes in 1.20 ===
 * (bug 30245) Use the correct way to construct a log page title.
@@ -246,6 +250,15 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 40214) Category pages no longer use deprecated "width" HTML attribute.
 * (bug 39941) Add missing stylesheets to the installer pages
 * In HTML5 mode, allow new input element types values (such as color, range..)
+* (bug 36151) mw.Title: Don't limit extension in title parsing.
+* (bug 38158) jquery.byteLimit sometimes causes an unexpected 0 maxLength being enforced.
+* (bug 38163) jquery.byteLimit incorrectly limits input when using methods other than
+  basic per-char typing.
+* (bug 34495) patrol log now credit the user patrolling (instead of patrolled
+  user).
+* (bug 31676) ResourceLoader should work around IE stylesheet limit.
+* (bug 40498) ResourceLoader should not output an empty "@media print { }" block.
+* (bug 40500) ResourceLoader should not ignore media-type for urls in debug mode.
 
 === API changes in 1.20 ===
 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
@@ -320,6 +333,14 @@ changes to languages because of Bugzilla reports.
 * Use of __DIR__ instead of dirname( __FILE__ ).
 * OutputPage::wrapWikiMsg() no longer supports the 'options' parameter. It was
   not used and complicated migration to Message class.
+* Live preview functionality has been improved and moved into the
+ 'mediawiki.action.edit.preview' module. The old 'mediawiki.legacy.preview' module
+  has been removed.
+* (bug 40448) Removed mediawiki.legacy.mwsuggest module, and removed the
+  following that has become obsolete:
+  - globals $wgEnableMWSuggest and $wgMWSuggestTemplate.
+  - mw.config.values wgMWSuggestTemplate and wgSearchNamespaces.
+  - method SearchEngine::getMWSuggestTemplate().
 
 == Compatibility ==
 
diff --git a/RELEASE-NOTES-1.21 b/RELEASE-NOTES-1.21
new file mode 100644 (file)
index 0000000..0548946
--- /dev/null
@@ -0,0 +1,93 @@
+= MediaWiki release notes =
+
+Security reminder: MediaWiki does not require PHP's register_globals
+setting since version 1.2.0. If you have it on, turn it '''off''' if you can.
+
+== MediaWiki 1.21 ==
+
+THIS IS NOT A RELEASE YET
+
+MediaWiki 1.21 is an alpha-quality branch and is not recommended for use in
+production.
+
+=== Configuration changes in 1.21 ===
+* (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
+
+=== New features in 1.21 ===
+
+=== Bug fixes in 1.21 ===
+* (bug 40353) SpecialDoubleRedirect should support interwiki redirects.
+* (bug 40352) fixDoubleRedirects.php should support interwiki redirects.
+* (bug 9237) SpecialBrokenRedirect should not list interwiki redirects.
+* (bug 34960) Drop unused fields rc_moved_to_ns and rc_moved_to_title from recentchanges table.
+
+=== API changes in 1.21 ===
+* (bug 35693) ApiQueryImageInfo now suppresses errors when unserializing metadata.
+
+=== Languages updated in 1.21 ===
+
+MediaWiki supports over 350 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Bugzilla reports.
+
+=== Other changes in 1.21 ===
+
+== Compatibility ==
+
+MediaWiki 1.21 requires PHP 5.3.2. PHP 4 is no longer supported.
+
+MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
+support for them is somewhat less mature. There is experimental support for IBM
+DB2 and Oracle.
+
+The supported versions are:
+
+* MySQL 5.0.2 or later
+* PostgreSQL 8.3 or later
+* SQLite 3.3.7 or later
+* Oracle 9.0.1 or later
+
+== Upgrading ==
+
+1.21 has several database changes since 1.20, and will not work without schema
+updates.
+
+If upgrading from before 1.11, and you are using a wiki as a commons
+repository, make sure that it is updated as well. Otherwise, errors may arise
+due to database schema changes.
+
+If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
+new database fields are filled with data.
+
+If you are upgrading from MediaWiki 1.4.x or earlier, some major database
+changes are made, and there is a slightly higher chance that things could
+break. Don't forget to always back up your database before upgrading!
+
+See the file UPGRADE for more detailed upgrade instructions.
+
+For notes on 1.19.x and older releases, see HISTORY.
+
+== Online documentation ==
+
+Documentation for both end-users and site administrators is available on
+MediaWiki.org, and is covered under the GNU Free Documentation License (except
+for pages that explicitly state that their contents are in the public domain):
+
+       https://www.mediawiki.org/wiki/Documentation
+
+== Mailing list ==
+
+A mailing list is available for MediaWiki user support and discussion:
+
+       https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
+
+A low-traffic announcements-only list is also available:
+
+       https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
+
+It's highly recommended that you sign up for one of these lists if you're
+going to run a public MediaWiki, so you can be notified of security fixes.
+
+== IRC help ==
+
+There's usually someone online in #mediawiki on irc.freenode.net.
diff --git a/bin/svnstat b/bin/svnstat
deleted file mode 100755 (executable)
index 5a2c940..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-svn stat -v $1 | sed -n 's/^[ A-Z?\*|!]\{1,15\}[0-9]\{1,10\} \{1,15\}/r/;s/ .*//p'
diff --git a/bin/ulimit-tvf.sh b/bin/ulimit-tvf.sh
deleted file mode 100755 (executable)
index 8a1eb81..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-ulimit -t $1 -v $2 -f $3
-shift 3
-"$@"
-
diff --git a/bin/ulimit.sh b/bin/ulimit.sh
deleted file mode 100644 (file)
index 7a1925c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-ulimit -t $1
-ulimit -v $2
-shift 2
-"$@"
-
index 5207730..96757cd 100644 (file)
@@ -487,7 +487,7 @@ $summary: Edit summary/comment
 $isMinor: Whether or not the edit was marked as minor
 $isWatch: (No longer used)
 $section: (No longer used)
-$flags: Flags passed to Article::doEdit()
+$flags: Flags passed to WikiPage::doEdit()
 $revision: New Revision of the article
 
 'ArticleMergeComplete': after merging to article using Special:Mergehistory
@@ -555,7 +555,7 @@ $summary: Edit summary/comment
 $isMinor: Whether or not the edit was marked as minor
 $isWatch: (No longer used)
 $section: (No longer used)
-$flags: Flags passed to Article::doEdit()
+$flags: Flags passed to WikiPage::doEdit()
 $revision: New Revision of the article
 $status: Status object about to be returned by doEdit()
 $baseRevId: the rev ID (or false) this edit was based on
@@ -811,7 +811,7 @@ pages
 $editPage: EditPage    object
 
 'EditPage::attemptSave': called before an article is
-saved, that is before Article::doEdit() is called
+saved, that is before WikiPage::doEdit() is called
 $editpage_Obj: the current EditPage object
 
 'EditPage::importFormData': allow extensions to read additional data
index 20dab86..7062a82 100644 (file)
        <span class="comment">span.comment</span>
        <a class="feedlink">a.feedlink</a>
        <table class="wikitable">
-               <tr><th colspan="2">table.wikitable</td></tr>
+               <tr><th colspan="2">table.wikitable</th></tr>
                <tr><td>cell</td><td>cell</td></tr>
                <tr><td>cell</td><td>cell</td></tr>
        </table>
 
        <table class="mw-datatable">
-               <tr><th colspan="2">table.mw-datatable</td></tr>
+               <tr><th colspan="2">table.mw-datatable</th></tr>
                <tr><td>line with hover</td><td>line with hover</td></tr>
                <tr><td>line with hover</td><td>line with hover</td></tr>
        </table>
index 9ab4b6b..76e566b 100644 (file)
@@ -1764,8 +1764,9 @@ class Article extends Page {
                wfDeprecated( __METHOD__, '1.18' );
                if ( $noRedir ) {
                        $query = 'redirect=no';
-                       if ( $extraQuery )
+                       if ( $extraQuery ) {
                                $query .= "&$extraQuery";
+                       }
                } else {
                        $query = $extraQuery;
                }
index 05bf318..d2055dd 100644 (file)
@@ -287,8 +287,9 @@ class BacklinkCache {
                        default:
                                $conds = null;
                                wfRunHooks( 'BacklinkCacheGetConditions', array( $table, $this->title, &$conds ) );
-                               if( !$conds )
+                               if( !$conds ) {
                                        throw new MWException( "Invalid table \"$table\" in " . __CLASS__ );
+                               }
                }
 
                return $conds;
index ae2e5b1..2a6a3d2 100644 (file)
@@ -133,8 +133,9 @@ class CdbReader_DBA {
        }
 
        function close() {
-               if( isset($this->handle) )
+               if( isset($this->handle) ) {
                        dba_close( $this->handle );
+               }
                unset( $this->handle );
        }
 
@@ -164,8 +165,9 @@ class CdbWriter_DBA {
        }
 
        function close() {
-               if( isset($this->handle) )
+               if( isset($this->handle) ) {
                        dba_close( $this->handle );
+               }
                if ( wfIsWindows() ) {
                        unlink( $this->realFileName );
                }
index 0ebc926..a97cb03 100644 (file)
@@ -224,8 +224,9 @@ class ChangeTags {
        public static function buildTagFilterSelector( $selected='', $fullForm = false, Title $title = null ) {
                global $wgUseTagFilter;
 
-               if ( !$wgUseTagFilter || !count( self::listDefinedTags() ) )
+               if ( !$wgUseTagFilter || !count( self::listDefinedTags() ) ) {
                        return $fullForm ? '' : array();
+               }
 
                $data = array( Html::rawElement( 'label', array( 'for' => 'tagfilter' ), wfMessage( 'tag-filter' )->parse() ),
                        Xml::input( 'tagfilter', 20, $selected, array( 'class' => 'mw-tagfilter-input' ) ) );
index 8467712..e7395c0 100644 (file)
@@ -1058,8 +1058,9 @@ class EnhancedChangesList extends ChangesList {
                                                array(),
                                                $params
                                        );
-                               if( $this->isDeleted($rcObj,Revision::DELETED_TEXT) )
+                               if( $this->isDeleted( $rcObj, Revision::DELETED_TEXT ) ) {
                                        $link = '<span class="history-deleted">'.$link.'</span> ';
+                               }
                        }
                        $r .= $link . '</span>';
 
index 98b4589..8de981c 100644 (file)
@@ -59,7 +59,7 @@ if( !defined( 'MEDIAWIKI' ) ) {
 $wgConf = new SiteConfiguration;
 
 /** MediaWiki version number */
-$wgVersion = '1.20alpha';
+$wgVersion = '1.21alpha';
 
 /** Name of the site. It must be changed in LocalSettings.php */
 $wgSitename = 'MediaWiki';
@@ -530,6 +530,12 @@ $wgAllowAsyncCopyUploads = false;
  */
 $wgCopyUploadsDomains = array();
 
+/**
+ * Proxy to use for copy upload requests.
+ * @since 1.20
+ */
+$wgCopyUploadProxy = false;
+
 /**
  * Max size for uploads, in bytes. If not set to an array, applies to all
  * uploads. If set to an array, per upload type maximums can be set, using the
@@ -2714,11 +2720,11 @@ $wgFooterIcons = array(
 $wgUseCombinedLoginLink = false;
 
 /**
- * Search form behavior for Vector skin only.
+ * Search form look for Vector skin only.
  *  - true = use an icon search button
  *  - false = use Go & Search buttons
  */
-$wgVectorUseSimpleSearch = false;
+$wgVectorUseSimpleSearch = true;
 
 /**
  * Watch and unwatch as an icon rather than a link for Vector skin only.
@@ -4270,8 +4276,18 @@ $wgProxyScriptPath = "$IP/maintenance/proxy_check.php";
 $wgProxyMemcExpiry = 86400;
 /** This should always be customised in LocalSettings.php */
 $wgSecretKey = false;
-/** big list of banned IP addresses, in the keys not the values */
+
+/**
+ * Big list of banned IP addresses.
+ *
+ * This can have the following formats:
+ * - An array of addresses, either in the values
+ *   or the keys (for backward compatibility)
+ * - A string, in that case this is the path to a file
+ *   containing the list of IP addresses, one per line
+ */
 $wgProxyList = array();
+
 /** deprecated */
 $wgProxyKey = false;
 
@@ -4688,17 +4704,11 @@ $wgCountTotalSearchHits = false;
  */
 $wgOpenSearchTemplate = false;
 
-/**
- * Enable suggestions while typing in search boxes
- * (results are passed around in OpenSearch format)
- * Requires $wgEnableOpenSearchSuggest = true;
- */
-$wgEnableMWSuggest = false;
-
 /**
  * Enable OpenSearch suggestions requested by MediaWiki. Set this to
- * false if you've disabled MWSuggest or another suggestion script and
- * want reduce load caused by cached scripts pulling suggestions.
+ * false if you've disabled scripts that use api?action=opensearch and
+ * want reduce load caused by cached scripts still pulling suggestions.
+ * It will let the API fallback by responding with an empty array.
  */
 $wgEnableOpenSearchSuggest = true;
 
@@ -4707,14 +4717,6 @@ $wgEnableOpenSearchSuggest = true;
  */
 $wgSearchSuggestCacheExpiry = 1200;
 
-/**
- *  Template for internal MediaWiki suggestion engine, defaults to API action=opensearch
- *
- *  Placeholders: {searchTerms}, {namespaces}, {dbname}
- *
- */
-$wgMWSuggestTemplate = false;
-
 /**
  * If you've disabled search semi-permanently, this also disables updates to the
  * table. If you ever re-enable, be sure to rebuild the search table.
index 782b763..3922719 100644 (file)
@@ -392,10 +392,14 @@ class EditPage {
                                wfProfileOut( __METHOD__ );
                                return;
                        }
-                       if ( !$this->mTitle->getArticleID() )
+
+                       if ( !$this->mTitle->getArticleID() ) {
                                wfRunHooks( 'EditFormPreloadText', array( &$this->textbox1, &$this->mTitle ) );
-                       else
+                       }
+                       else {
                                wfRunHooks( 'EditFormInitialText', array( $this ) );
+                       }
+
                }
 
                $this->showEditForm();
@@ -586,8 +590,10 @@ class EditPage {
                                // modified by subclasses
                                wfProfileIn( get_class( $this ) . "::importContentFormData" );
                                $textbox1 = $this->importContentFormData( $request );
-                               if ( isset( $textbox1 ) )
+                               if ( isset( $textbox1 ) ) {
                                        $this->textbox1 = $textbox1;
+                               }
+
                                wfProfileOut( get_class( $this ) . "::importContentFormData" );
                        }
 
@@ -1244,7 +1250,7 @@ class EditPage {
                        if ( $this->section == 'new' ) {
                                if ( $this->sectiontitle !== '' ) {
                                        // Insert the section title above the content.
-                                       $text = wfMessage( 'newsectionheaderdefaultlevel', $this->sectiontitle )
+                                       $text = wfMessage( 'newsectionheaderdefaultlevel' )->rawParams( $this->sectiontitle )
                                                ->inContentLanguage()->text() . "\n\n" . $text;
 
                                        // Jump to the new section
@@ -1260,7 +1266,7 @@ class EditPage {
                                        }
                                } elseif ( $this->summary !== '' ) {
                                        // Insert the section title above the content.
-                                       $text = wfMessage( 'newsectionheaderdefaultlevel', $this->summary )
+                                       $text = wfMessage( 'newsectionheaderdefaultlevel' )->rawParams( $this->summary )
                                                ->inContentLanguage()->text() . "\n\n" . $text;
 
                                        // Jump to the new section
@@ -1452,7 +1458,7 @@ class EditPage {
 
                if ( $doEditStatus->isOK() ) {
                        $result['redirect'] = Title::newFromRedirect( $text ) !== null;
-                       $this->commitWatch();
+                       $this->updateWatchlist();
                        wfProfileOut( __METHOD__ );
                        return $status;
                } else {
@@ -1473,19 +1479,27 @@ class EditPage {
        }
 
        /**
-        * Commit the change of watch status
+        * Register the change of watch status
         */
-       protected function commitWatch() {
+       protected function updateWatchlist() {
                global $wgUser;
+
                if ( $wgUser->isLoggedIn() && $this->watchthis != $wgUser->isWatched( $this->mTitle ) ) {
+                       $fname = __METHOD__;
+                       $title = $this->mTitle;
+                       $watch = $this->watchthis;
+
+                       // Do this in its own transaction to reduce contention...
                        $dbw = wfGetDB( DB_MASTER );
-                       $dbw->begin( __METHOD__ );
-                       if ( $this->watchthis ) {
-                               WatchAction::doWatch( $this->mTitle, $wgUser );
-                       } else {
-                               WatchAction::doUnwatch( $this->mTitle, $wgUser );
-                       }
-                       $dbw->commit( __METHOD__ );
+                       $dbw->onTransactionIdle( function() use ( $dbw, $title, $watch, $wgUser, $fname ) {
+                               $dbw->begin( $fname );
+                               if ( $watch ) {
+                                       WatchAction::doWatch( $title, $wgUser );
+                               } else {
+                                       WatchAction::doUnwatch( $title, $wgUser );
+                               }
+                               $dbw->commit( $fname );
+                       } );
                }
        }
 
@@ -1591,7 +1605,7 @@ class EditPage {
                $wgOut->addModules( 'mediawiki.action.edit' );
 
                if ( $wgUser->getOption( 'uselivepreview', false ) ) {
-                       $wgOut->addModules( 'mediawiki.legacy.preview' );
+                       $wgOut->addModules( 'mediawiki.action.edit.preview' );
                }
                // Bug #19334: textarea jumps when editing articles in IE8
                $wgOut->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' );
@@ -2014,10 +2028,13 @@ class EditPage {
                                        $wgOut->wrapWikiMsg( "<div class='error' id='mw-userinvalidcssjstitle'>\n$1\n</div>", array( 'userinvalidcssjstitle', $this->mTitle->getSkinFromCssJsSubpage() ) );
                                }
                                if ( $this->formtype !== 'preview' ) {
-                                       if ( $this->isCssSubpage )
+                                       if ( $this->isCssSubpage ) {
                                                $wgOut->wrapWikiMsg( "<div id='mw-usercssyoucanpreview'>\n$1\n</div>", array( 'usercssyoucanpreview' ) );
-                                       if ( $this->isJsSubpage )
+                                       }
+
+                                       if ( $this->isJsSubpage ) {
                                                $wgOut->wrapWikiMsg( "<div id='mw-userjsyoucanpreview'>\n$1\n</div>", array( 'userjsyoucanpreview' ) );
+                                       }
                                }
                        }
                }
@@ -2148,14 +2165,16 @@ class EditPage {
         * @return String
         */
        protected function getSummaryPreview( $isSubjectPreview, $summary = "" ) {
-               if ( !$summary || ( !$this->preview && !$this->diff ) )
+               if ( !$summary || ( !$this->preview && !$this->diff ) ) {
                        return "";
+               }
 
                global $wgParser;
 
-               if ( $isSubjectPreview )
+               if ( $isSubjectPreview ) {
                        $summary = wfMessage( 'newsectionsummary', $wgParser->stripSectionName( $summary ) )
                                ->inContentLanguage()->text();
+               }
 
                $message = $isSubjectPreview ? 'subject-preview' : 'summary-preview';
 
@@ -2174,8 +2193,9 @@ class EditPage {
 
 HTML
                );
-               if ( !$this->checkUnicodeCompliantBrowser() )
+               if ( !$this->checkUnicodeCompliantBrowser() ) {
                        $wgOut->addHTML( Html::hidden( 'safemode', '1' ) );
+               }
        }
 
        protected function showFormAfterText() {
@@ -2285,13 +2305,15 @@ HTML
        protected function displayPreviewArea( $previewOutput, $isOnTop = false ) {
                global $wgOut;
                $classes = array();
-               if ( $isOnTop )
+               if ( $isOnTop ) {
                        $classes[] = 'ontop';
+               }
 
                $attribs = array( 'id' => 'wikiPreview', 'class' => implode( ' ', $classes ) );
 
-               if ( $this->formtype != 'preview' )
+               if ( $this->formtype != 'preview' ) {
                        $attribs['style'] = 'display: none;';
+               }
 
                $wgOut->addHTML( Xml::openElement( 'div', $attribs ) );
 
@@ -2568,10 +2590,13 @@ HTML
                );
                // Quick paranoid permission checks...
                if ( is_object( $data ) ) {
-                       if ( $data->log_deleted & LogPage::DELETED_USER )
+                       if ( $data->log_deleted & LogPage::DELETED_USER ) {
                                $data->user_name = wfMessage( 'rev-deleted-user' )->escaped();
-                       if ( $data->log_deleted & LogPage::DELETED_COMMENT )
+                       }
+
+                       if ( $data->log_deleted & LogPage::DELETED_COMMENT ) {
                                $data->log_comment = wfMessage( 'rev-deleted-comment' )->escaped();
+                       }
                }
                return $data;
        }
index f01fb23..c2409de 100644 (file)
@@ -83,9 +83,9 @@ class WikiExporter {
         * @param $buffer Int: one of WikiExporter::BUFFER or WikiExporter::STREAM
         * @param $text Int: one of WikiExporter::TEXT or WikiExporter::STUB
         */
-       function __construct( &$db, $history = WikiExporter::CURRENT,
+       function __construct( $db, $history = WikiExporter::CURRENT,
                        $buffer = WikiExporter::BUFFER, $text = WikiExporter::TEXT ) {
-               $this->db =& $db;
+               $this->db = $db;
                $this->history = $history;
                $this->buffer  = $buffer;
                $this->writer  = new XmlDumpWriter();
index 61d4ef7..391829a 100644 (file)
@@ -50,8 +50,9 @@ class ExternalStore {
        static function fetchFromURL( $url, $params = array() ) {
                global $wgExternalStores;
 
-               if( !$wgExternalStores )
+               if( !$wgExternalStores ) {
                        return false;
+               }
 
                $parts = explode( '://', $url, 2 );
 
@@ -66,8 +67,10 @@ class ExternalStore {
                }
 
                $store = self::getStoreObject( $proto, $params );
-               if ( $store === false )
+               if ( $store === false ) {
                        return false;
+               }
+
                return $store->fetchFromURL( $url );
        }
 
@@ -80,11 +83,14 @@ class ExternalStore {
         */
        static function getStoreObject( $proto, $params = array() ) {
                global $wgExternalStores;
-               if( !$wgExternalStores )
+               if( !$wgExternalStores ) {
                        return false;
+               }
+
                /* Protocol not enabled */
-               if( !in_array( $proto, $wgExternalStores ) )
+               if( !in_array( $proto, $wgExternalStores ) ) {
                        return false;
+               }
 
                $class = 'ExternalStore' . ucfirst( $proto );
                /* Any custom modules should be added to $wgAutoLoadClasses for on-demand loading */
index e75ad72..7e616b2 100644 (file)
@@ -374,8 +374,9 @@ class FileDeleteForm {
                $q = array();
                $q['action'] = 'delete';
 
-               if( $this->oldimage )
+               if( $this->oldimage ) {
                        $q['oldimage'] = $this->oldimage;
+               }
 
                return $this->title->getLocalUrl( $q );
        }
index ba504a9..4d2229f 100644 (file)
@@ -117,7 +117,7 @@ class Licenses extends HTMLFormField {
         * @param $depth int
         */
        protected function makeHtml( $tagset, $depth = 0 ) {
-               foreach ( $tagset as $key => $val )
+               foreach ( $tagset as $key => $val ) {
                        if ( is_array( $val ) ) {
                                $this->html .= $this->outputOption(
                                        $key, '',
@@ -135,6 +135,7 @@ class Licenses extends HTMLFormField {
                                        $depth
                                );
                        }
+               }
        }
 
        /**
@@ -148,8 +149,10 @@ class Licenses extends HTMLFormField {
                $msgObj = $this->msg( $message );
                $text = $msgObj->exists() ? $msgObj->text() : $message;
                $attribs['value'] = $value;
-               if ( $value === $this->selected )
+               if ( $value === $this->selected ) {
                        $attribs['selected'] = 'selected';
+               }
+
                $val = str_repeat( /* &nbsp */ "\xc2\xa0", $depth * 2 ) . $text;
                return str_repeat( "\t", $depth ) . Xml::element( 'option', $attribs, $val ) . "\n";
        }
index 8e31a1c..97b03be 100644 (file)
@@ -188,6 +188,8 @@ class Linker {
         *       cons.
         *     'forcearticlepath': Use the article path always, even with a querystring.
         *       Has compatibility issues on some setups, so avoid wherever possible.
+        *     'http': Force a full URL with http:// as the scheme.
+        *     'https': Force a full URL with https:// as the scheme.
         * @return string HTML <a> attribute
         */
        public static function link(
@@ -294,7 +296,16 @@ class Linker {
                        $query['action'] = 'edit';
                        $query['redlink'] = '1';
                }
-               $ret = $target->getLinkURL( $query );
+
+               if ( in_array( 'http', $options ) ) {
+                       $proto = PROTO_HTTP;
+               } elseif ( in_array( 'https', $options ) ) {
+                       $proto = PROTO_HTTPS;
+               } else {
+                       $proto = PROTO_RELATIVE;
+               }
+
+               $ret = $target->getLinkURL( $query, false, $proto );
                wfProfileOut( __METHOD__ );
                return $ret;
        }
index 776a52f..9d09f00 100644 (file)
@@ -530,7 +530,7 @@ class Message {
        /**
         * Check whether a message does not exist, is an empty string, or is "-"
         * @since 1.18
-        * @return Bool: true if is is and false if not
+        * @return Bool: true if it is and false if not
         */
        public function isDisabled() {
                $message = $this->fetchMessage();
index b69069b..a2e2670 100644 (file)
@@ -2342,11 +2342,20 @@ $templates
         * @param $title Title to link
         * @param $query Array query string parameters
         * @param $text String text of the link (input is not escaped)
+        * @param $options Options array to pass to Linker
         */
-       public function addReturnTo( $title, $query = array(), $text = null ) {
-               $this->addLink( array( 'rel' => 'next', 'href' => $title->getFullURL() ) );
+       public function addReturnTo( $title, $query = array(), $text = null, $options = array() ) {
+               if( in_array( 'http', $options ) ) {
+                       $proto = PROTO_HTTP;
+               } elseif( in_array( 'https', $options ) ) {
+                       $proto = PROTO_HTTPS;
+               } else {
+                       $proto = PROTO_RELATIVE;
+               }
+
+               $this->addLink( array( 'rel' => 'next', 'href' => $title->getFullURL( '', false, $proto ) ) );
                $link = $this->msg( 'returnto' )->rawParams(
-                       Linker::link( $title, $text, array(), $query ) )->escaped();
+                       Linker::link( $title, $text, array(), $query, $options ) )->escaped();
                $this->addHTML( "<p id=\"mw-returnto\">{$link}</p>\n" );
        }
 
@@ -2450,7 +2459,7 @@ $templates
         */
        private function addDefaultModules() {
                global $wgIncludeLegacyJavaScript, $wgPreloadJavaScriptMwUtil, $wgUseAjax,
-                       $wgAjaxWatch, $wgEnableMWSuggest;
+                       $wgAjaxWatch;
 
                // Add base resources
                $this->addModules( array(
@@ -2478,8 +2487,8 @@ $templates
                                $this->addModules( 'mediawiki.page.watch.ajax' );
                        }
 
-                       if ( $wgEnableMWSuggest && !$this->getUser()->getOption( 'disablesuggest', false ) ) {
-                               $this->addModules( 'mediawiki.legacy.mwsuggest' );
+                       if ( !$this->getUser()->getOption( 'disablesuggest', false ) ) {
+                               $this->addModules( 'mediawiki.searchSuggest' );
                        }
                }
 
@@ -2903,7 +2912,7 @@ $templates
         * @return array
         */
        public function getJSVars() {
-               global $wgUseAjax, $wgEnableMWSuggest, $wgContLang;
+               global $wgUseAjax, $wgContLang;
 
                $latestRevID = 0;
                $pageID = 0;
@@ -2969,9 +2978,6 @@ $templates
                foreach ( $title->getRestrictionTypes() as $type ) {
                        $vars['wgRestriction' . ucfirst( $type )] = $title->getRestrictions( $type );
                }
-               if ( $wgUseAjax && $wgEnableMWSuggest && !$this->getUser()->getOption( 'disablesuggest', false ) ) {
-                       $vars['wgSearchNamespaces'] = SearchEngine::userNamespaces( $this->getUser() );
-               }
                if ( $title->isMainPage() ) {
                        $vars['wgIsMainPage'] = true;
                }
index 96ba446..077430d 100644 (file)
@@ -287,8 +287,7 @@ abstract class IndexPager extends ContextSource implements Pager {
                        if ( $numRows > $this->mLimit && $numRows > 1 ) {
                                $res->seek( $numRows - 1 );
                                $this->mPastTheEndRow = $res->fetchObject();
-                               $indexField = $this->mIndexField;
-                               $this->mPastTheEndIndex = $this->mPastTheEndRow->$indexField;
+                               $this->mPastTheEndIndex = $this->mPastTheEndRow->$indexColumn;
                                $res->seek( $numRows - 2 );
                                $row = $res->fetchRow();
                                $lastIndex = $row[$indexColumn];
index eaf781b..216ba48 100644 (file)
@@ -978,7 +978,7 @@ class Preferences {
         * @param $defaultPreferences Array
         */
        static function searchPreferences( $user, IContextSource $context, &$defaultPreferences ) {
-               global $wgContLang, $wgEnableMWSuggest, $wgVectorUseSimpleSearch;
+               global $wgContLang, $wgVectorUseSimpleSearch;
 
                ## Search #####################################
                $defaultPreferences['searchlimit'] = array(
@@ -988,22 +988,21 @@ class Preferences {
                        'min' => 0,
                );
 
-               if ( $wgEnableMWSuggest ) {
-                       $defaultPreferences['disablesuggest'] = array(
-                               'type' => 'toggle',
-                               'label-message' => 'mwsuggest-disable',
-                               'section' => 'searchoptions/displaysearchoptions',
-                       );
-               }
 
                if ( $wgVectorUseSimpleSearch ) {
                        $defaultPreferences['vector-simplesearch'] = array(
                                'type' => 'toggle',
                                'label-message' => 'vector-simplesearch-preference',
-                               'section' => 'searchoptions/displaysearchoptions'
+                               'section' => 'searchoptions/displaysearchoptions',
                        );
                }
 
+               $defaultPreferences['disablesuggest'] = array(
+                       'type' => 'toggle',
+                       'label-message' => 'mwsuggest-disable',
+                       'section' => 'searchoptions/displaysearchoptions',
+               );
+
                $defaultPreferences['searcheverything'] = array(
                        'type' => 'toggle',
                        'label-message' => 'searcheverything-enable',
index 332d039..debec69 100644 (file)
@@ -162,17 +162,6 @@ class RecentChange {
                return $this->mTitle;
        }
 
-       /**
-        * @return bool|Title
-        */
-       public function getMovedToTitle() {
-               if( $this->mMovedToTitle === false ) {
-                       $this->mMovedToTitle = Title::makeTitle( $this->mAttribs['rc_moved_to_ns'],
-                               $this->mAttribs['rc_moved_to_title'] );
-               }
-               return $this->mMovedToTitle;
-       }
-
        /**
         * Get the User object of the person who performed this change.
         *
@@ -421,8 +410,6 @@ class RecentChange {
                        'rc_this_oldid' => $newId,
                        'rc_last_oldid' => $oldId,
                        'rc_bot'        => $bot ? 1 : 0,
-                       'rc_moved_to_ns' => 0,
-                       'rc_moved_to_title' => '',
                        'rc_ip'         => self::checkIPAddress( $ip ),
                        'rc_patrolled'  => intval($patrol),
                        'rc_new'        => 0,  # obsolete
@@ -481,8 +468,6 @@ class RecentChange {
                        'rc_this_oldid'     => $newId,
                        'rc_last_oldid'     => 0,
                        'rc_bot'            => $bot ? 1 : 0,
-                       'rc_moved_to_ns'    => 0,
-                       'rc_moved_to_title' => '',
                        'rc_ip'             => self::checkIPAddress( $ip ),
                        'rc_patrolled'      => intval($patrol),
                        'rc_new'            => 1, # obsolete
@@ -570,8 +555,6 @@ class RecentChange {
                        'rc_this_oldid' => 0,
                        'rc_last_oldid' => 0,
                        'rc_bot'        => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot', true ) : 0,
-                       'rc_moved_to_ns' => 0,
-                       'rc_moved_to_title' => '',
                        'rc_ip'         => self::checkIPAddress( $ip ),
                        'rc_patrolled'  => 1,
                        'rc_new'        => 0, # obsolete
@@ -624,8 +607,6 @@ class RecentChange {
                        'rc_this_oldid' => $row->rev_id,
                        'rc_last_oldid' => isset($row->rc_last_oldid) ? $row->rc_last_oldid : 0,
                        'rc_bot'        => 0,
-                       'rc_moved_to_ns'        => 0,
-                       'rc_moved_to_title'     => '',
                        'rc_ip' => '',
                        'rc_id' => $row->rc_id,
                        'rc_patrolled' => $row->rc_patrolled,
index 224b2d1..6358540 100644 (file)
@@ -912,7 +912,7 @@ class Sanitizer {
                // Reject problematic keywords and control characters
                if ( preg_match( '/[\000-\010\016-\037\177]/', $value ) ) {
                        return '/* invalid control char */';
-               } elseif ( preg_match( '! expression | filter\s*: | accelerator\s*: | url\s*\( !ix', $value ) ) {
+               } elseif ( preg_match( '! expression | filter\s*: | accelerator\s*: | url\s*\( | image\s*\( !ix', $value ) ) {
                        return '/* insecure input */';
                }
                return $value;
index 924c3c0..5c5d7d1 100644 (file)
@@ -369,7 +369,7 @@ if ( $wgNewUserLog ) {
 }
 
 if ( $wgCookieSecure === 'detect' ) {
-       $wgCookieSecure = ( WebRequest::detectProtocol() === 'https:' );
+       $wgCookieSecure = ( WebRequest::detectProtocol() === 'https' );
 }
 
 // Disable MWDebug for command line mode, this prevents MWDebug from eating up
index 422d606..01841b6 100644 (file)
@@ -48,8 +48,7 @@ class SiteStats {
                        # Update schema
                        $u = new SiteStatsUpdate( 0, 0, 0 );
                        $u->doUpdate();
-                       $dbr = wfGetDB( DB_SLAVE );
-                       self::$row = $dbr->selectRow( 'site_stats', '*', false, __METHOD__ );
+                       self::$row = self::doLoad( wfGetDB( DB_SLAVE ) );
                }
 
                self::$loaded = true;
@@ -91,7 +90,16 @@ class SiteStats {
         * @return Bool|ResultWrapper
         */
        static function doLoad( $db ) {
-               return $db->selectRow( 'site_stats', '*', false, __METHOD__ );
+               return $db->selectRow( 'site_stats', array(
+                               'ss_row_id',
+                               'ss_total_views',
+                               'ss_total_edits',
+                               'ss_good_articles',
+                               'ss_total_pages',
+                               'ss_users',
+                               'ss_active_users',
+                               'ss_images',
+                       ), false, __METHOD__ );
        }
 
        /**
index 968f215..9bee8a2 100644 (file)
@@ -290,8 +290,8 @@ abstract class Skin extends ContextSource {
                        return $this->mRelevantUser;
                }
                $title = $this->getRelevantTitle();
-               if( $title->getNamespace() == NS_USER || $title->getNamespace() == NS_USER_TALK ) {
-                       $rootUser = strtok( $title->getText(), '/' );
+               if( $title->hasSubjectNamespace( NS_USER ) ) {
+                       $rootUser = $title->getRootText();
                        if ( User::isIP( $rootUser ) ) {
                                $this->mRelevantUser = User::newFromName( $rootUser, false );
                        } else {
index bda4395..b4da525 100644 (file)
@@ -529,6 +529,8 @@ class SkinTemplate extends Skin {
         * @return array
         */
        protected function buildPersonalUrls() {
+               global $wgSecureLogin;
+
                $title = $this->getTitle();
                $request = $this->getRequest();
                $pageurl = $title->getLocalURL();
@@ -551,6 +553,11 @@ class SkinTemplate extends Skin {
                                $a['returntoquery'] = $query;
                        }
                }
+
+               if ( $wgSecureLogin && $request->detectProtocol() === 'https' ) {
+                       $a['wpStickHTTPS'] = true;
+               }
+
                $returnto = wfArrayToCGI( $a );
                if( $this->loggedin ) {
                        $personal_urls['userpage'] = array(
@@ -1225,7 +1232,7 @@ abstract class QuickTemplate {
        /**
         * Constructor
         */
-       public function QuickTemplate() {
+       function __construct() {
                $this->data = array();
                $this->translator = new MediaWiki_I18N();
        }
@@ -1783,11 +1790,15 @@ abstract class BaseTemplate extends QuickTemplate {
                                );
                                unset( $buttonAttrs['src'] );
                                unset( $buttonAttrs['alt'] );
+                               unset( $buttonAttrs['width'] );
+                               unset( $buttonAttrs['height'] );
                                $imgAttrs = array(
                                        'src' => $attrs['src'],
                                        'alt' => isset( $attrs['alt'] )
                                                ? $attrs['alt']
                                                : $this->translator->translate( 'searchbutton' ),
+                                       'width' => isset( $attrs['width'] ) ? $attrs['width'] : null,
+                                       'height' => isset( $attrs['height'] ) ? $attrs['height'] : null,
                                );
                                return Html::rawElement( 'button', $buttonAttrs, Html::element( 'img', $imgAttrs ) );
                        default:
index 95f75a8..8ed5264 100644 (file)
@@ -155,7 +155,6 @@ class SpecialPageFactory {
                'Blankpage'                 => 'SpecialBlankpage',
                'Blockme'                   => 'SpecialBlockme',
                'Emailuser'                 => 'SpecialEmailUser',
-               'JavaScriptTest'            => 'SpecialJavaScriptTest',
                'Movepage'                  => 'MovePageForm',
                'Mycontributions'           => 'SpecialMycontributions',
                'Mypage'                    => 'SpecialMypage',
@@ -178,7 +177,7 @@ class SpecialPageFactory {
        static function getList() {
                global $wgSpecialPages;
                global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
-               global $wgEnableEmail;
+               global $wgEnableEmail, $wgEnableJavaScriptTest;
 
                if ( !is_object( self::$mList ) ) {
                        wfProfileIn( __METHOD__ );
@@ -200,6 +199,10 @@ class SpecialPageFactory {
                                self::$mList['ChangeEmail'] = 'SpecialChangeEmail';
                        }
 
+                       if( $wgEnableJavaScriptTest ) {
+                               self::$mList['JavaScriptTest'] = 'SpecialJavaScriptTest';
+                       }
+
                        // Add extension special pages
                        self::$mList = array_merge( self::$mList, $wgSpecialPages );
 
index fed95c0..a5844b6 100644 (file)
@@ -140,14 +140,10 @@ class MWTimestamp {
                        $strtime = call_user_func_array( "sprintf", $da );
                }
 
-               if( function_exists( "date_create" ) ) {
-                       try {
-                               $final = new DateTime( $strtime, new DateTimeZone( 'GMT' ) );
-                       } catch(Exception $e) {
-                               throw new TimestampException( __METHOD__ . ' Invalid timestamp format.' );
-                       }
-               } else {
-                       $final = strtotime( $strtime );
+               try {
+                       $final = new DateTime( $strtime, new DateTimeZone( 'GMT' ) );
+               } catch(Exception $e) {
+                       throw new TimestampException( __METHOD__ . ' Invalid timestamp format.' );
                }
 
                if( $final === false ) {
index 1b5e21d..3573198 100644 (file)
@@ -1161,7 +1161,49 @@ class Title {
        }
 
        /**
-        * Get the base page name, i.e. the leftmost part before any slashes
+        * Get the root page name text without a namespace, i.e. the leftmost part before any slashes
+        *
+        * @par Example:
+        * @code
+        * Title::newFromText('User:Foo/Bar/Baz')->getRootText();
+        * # returns: 'Foo'
+        * @endcode
+        *
+        * @return String Root name
+        * @since 1.20
+        */
+       public function getRootText() {
+               if ( !MWNamespace::hasSubpages( $this->mNamespace ) ) {
+                       return $this->getText();
+               }
+
+               return strtok( $this->getText(), '/' );
+       }
+
+       /**
+        * Get the root page name title, i.e. the leftmost part before any slashes
+        *
+        * @par Example:
+        * @code
+        * Title::newFromText('User:Foo/Bar/Baz')->getRootTitle();
+        * # returns: Title{User:Foo}
+        * @endcode
+        *
+        * @return Title Root title
+        * @since 1.20
+        */
+       public function getRootTitle() {
+               return Title::makeTitle( $this->getNamespace(), $this->getRootText() );
+       }
+
+       /**
+        * Get the base page name without a namespace, i.e. the part before the subpage name
+        *
+        * @par Example:
+        * @code
+        * Title::newFromText('User:Foo/Bar/Baz')->getBaseText();
+        * # returns: 'Foo/Bar'
+        * @endcode
         *
         * @return String Base name
         */
@@ -1178,9 +1220,31 @@ class Title {
                return implode( '/', $parts );
        }
 
+       /**
+        * Get the base page name title, i.e. the part before the subpage name
+        *
+        * @par Example:
+        * @code
+        * Title::newFromText('User:Foo/Bar/Baz')->getBaseTitle();
+        * # returns: Title{User:Foo/Bar}
+        * @endcode
+        *
+        * @return Title Base title
+        * @since 1.20
+        */
+       public function getBaseTitle() {
+               return Title::makeTitle( $this->getNamespace(), $this->getBaseText() );
+       }
+
        /**
         * Get the lowest-level subpage name, i.e. the rightmost part after any slashes
         *
+        * @par Example:
+        * @code
+        * Title::newFromText('User:Foo/Bar/Baz')->getSubpageText();
+        * # returns: "Baz"
+        * @endcode
+        *
         * @return String Subpage name
         */
        public function getSubpageText() {
@@ -1191,6 +1255,23 @@ class Title {
                return( $parts[count( $parts ) - 1] );
        }
 
+       /**
+        * Get the title for a subpage of the current page
+        *
+        * @par Example:
+        * @code
+        * Title::newFromText('User:Foo/Bar/Baz')->getSubpage("Asdf");
+        * # returns: Title{User:Foo/Bar/Baz/Asdf}
+        * @endcode
+        *
+        * @param $text String The subpage name to add to the title
+        * @return Title Subpage title
+        * @since 1.20
+        */
+       public function getSubpage( $text ) {
+               return Title::makeTitleSafe( $this->getNamespace(), $this->getText() . '/' . $text );
+       }
+
        /**
         * Get the HTML-escaped displayable text form.
         * Used for the title field in <a> tags.
@@ -1396,13 +1477,14 @@ class Title {
         *
         * See getLocalURL for the arguments.
         *
+        * @param $proto Protocol to use; setting this will cause a full URL to be used
         * @see self::getLocalURL
         * @return String the URL
         */
-       public function getLinkURL( $query = '', $query2 = false ) {
+       public function getLinkURL( $query = '', $query2 = false, $proto = PROTO_RELATIVE ) {
                wfProfileIn( __METHOD__ );
-               if ( $this->isExternal() ) {
-                       $ret = $this->getFullURL( $query, $query2 );
+               if ( $this->isExternal() || $proto !== PROTO_RELATIVE ) {
+                       $ret = $this->getFullURL( $query, $query2, $proto );
                } elseif ( $this->getPrefixedText() === '' && $this->getFragment() !== '' ) {
                        $ret = $this->getFragmentForURL();
                } else {
index 0a3db4c..8216914 100644 (file)
@@ -286,7 +286,10 @@ class User {
                                $this->loadFromId();
                                break;
                        case 'session':
-                               $this->loadFromSession();
+                               if( !$this->loadFromSession() ) {
+                                       // Loading from session failed. Load defaults.
+                                       $this->loadDefaults();
+                               }
                                wfRunHooks( 'UserLoadAfterLoadFromSession', array( $this ) );
                                break;
                        default:
@@ -933,8 +936,7 @@ class User {
        }
 
        /**
-        * Load user data from the session or login cookie. If there are no valid
-        * credentials, initialises the user as an anonymous user.
+        * Load user data from the session or login cookie.
         * @return Bool True if the user is logged in, false otherwise.
         */
        private function loadFromSession() {
@@ -962,7 +964,6 @@ class User {
                if ( $cookieId !== null ) {
                        $sId = intval( $cookieId );
                        if( $sessId !== null && $cookieId != $sessId ) {
-                               $this->loadDefaults(); // Possible collision!
                                wfDebugLog( 'loginSessions', "Session user ID ($sessId) and
                                        cookie user ID ($sId) don't match!" );
                                return false;
@@ -971,7 +972,6 @@ class User {
                } elseif ( $sessId !== null && $sessId != 0 ) {
                        $sId = $sessId;
                } else {
-                       $this->loadDefaults();
                        return false;
                }
 
@@ -981,21 +981,18 @@ class User {
                        $sName = $request->getCookie( 'UserName' );
                        $request->setSessionData( 'wsUserName', $sName );
                } else {
-                       $this->loadDefaults();
                        return false;
                }
 
                $proposedUser = User::newFromId( $sId );
                if ( !$proposedUser->isLoggedIn() ) {
                        # Not a valid ID
-                       $this->loadDefaults();
                        return false;
                }
 
                global $wgBlockDisablesLogin;
                if( $wgBlockDisablesLogin && $proposedUser->isBlocked() ) {
                        # User blocked and we've disabled blocked user logins
-                       $this->loadDefaults();
                        return false;
                }
 
@@ -1007,7 +1004,6 @@ class User {
                        $from = 'cookie';
                } else {
                        # No session or persistent login cookie
-                       $this->loadDefaults();
                        return false;
                }
 
@@ -1019,7 +1015,6 @@ class User {
                } else {
                        # Invalid credentials
                        wfDebug( "User: can't log in from $from, invalid credentials\n" );
-                       $this->loadDefaults();
                        return false;
                }
        }
@@ -2798,9 +2793,13 @@ class User {
         * @param $value String Value to set
         * @param $exp Int Expiration time, as a UNIX time value;
         *                   if 0 or not specified, use the default $wgCookieExpiration
+        * @param $secure Bool
+        *  true: Force setting the secure attribute when setting the cookie
+        *  false: Force NOT setting the secure attribute when setting the cookie
+        *  null (default): Use the default ($wgCookieSecure) to set the secure attribute
         */
-       protected function setCookie( $name, $value, $exp = 0 ) {
-               $this->getRequest()->response()->setcookie( $name, $value, $exp );
+       protected function setCookie( $name, $value, $exp = 0, $secure = null ) {
+               $this->getRequest()->response()->setcookie( $name, $value, $exp, null, null, $secure );
        }
 
        /**
@@ -2816,8 +2815,9 @@ class User {
         *
         * @param $request WebRequest object to use; $wgRequest will be used if null
         *        is passed.
+        * @param $secure Whether to force secure/insecure cookies or use default
         */
-       public function setCookies( $request = null ) {
+       public function setCookies( $request = null, $secure = null ) {
                if ( $request === null ) {
                        $request = $this->getRequest();
                }
@@ -2856,9 +2856,18 @@ class User {
                        if ( $value === false ) {
                                $this->clearCookie( $name );
                        } else {
-                               $this->setCookie( $name, $value );
+                               $this->setCookie( $name, $value, 0, $secure );
                        }
                }
+
+               /**
+                * If wpStickHTTPS was selected, also set an insecure cookie that
+                * will cause the site to redirect the user to HTTPS, if they access
+                * it over HTTP. Bug 29898.
+                */
+               if ( $request->getCheck( 'wpStickHTTPS' ) ) {
+                       $this->setCookie( 'forceHTTPS', 'true', time() + 2592000, false ); //30 days
+               }
        }
 
        /**
@@ -2881,6 +2890,7 @@ class User {
 
                $this->clearCookie( 'UserID' );
                $this->clearCookie( 'Token' );
+               $this->clearCookie( 'forceHTTPS' );
 
                # Remember when user logged out, to prevent seeing cached pages
                $this->setCookie( 'LoggedOut', wfTimestampNow(), time() + 86400 );
index 193101b..9c613a9 100644 (file)
@@ -45,8 +45,12 @@ class WebResponse {
         * @param $expire Int: number of seconds til cookie expires
         * @param $prefix String: Prefix to use, if not $wgCookiePrefix (use '' for no prefix)
         * @param @domain String: Cookie domain to use, if not $wgCookieDomain
+        * @param $forceSecure Bool:
+        *   true: force the cookie to be set with the secure attribute
+        *   false: force the cookie to be set without the secure attribute
+        *   null: use the value from $wgCookieSecure
         */
-       public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null ) {
+       public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null, $forceSecure = null ) {
                global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain;
                global $wgCookieSecure,$wgCookieExpiration, $wgCookieHttpOnly;
                if ( $expire == 0 ) {
@@ -58,6 +62,13 @@ class WebResponse {
                if( $domain === null ) {
                        $domain = $wgCookieDomain;
                }
+
+               if ( is_null( $forceSecure ) ) {
+                       $secureCookie = $wgCookieSecure;
+               } else {
+                       $secureCookie = $forceSecure;
+               }
+
                $httpOnlySafe = wfHttpOnlySafe() && $wgCookieHttpOnly;
                wfDebugLog( 'cookie',
                        'setcookie: "' . implode( '", "',
@@ -67,14 +78,14 @@ class WebResponse {
                                        $expire,
                                        $wgCookiePath,
                                        $domain,
-                                       $wgCookieSecure,
+                                       $secureCookie,
                                        $httpOnlySafe ) ) . '"' );
                setcookie( $prefix . $name,
                        $value,
                        $expire,
                        $wgCookiePath,
                        $domain,
-                       $wgCookieSecure,
+                       $secureCookie,
                        $httpOnlySafe );
        }
 }
@@ -140,7 +151,7 @@ class FauxResponse extends WebResponse {
         * @param $domain TODO DOCUMENT (Default: null)
         *
         */
-       public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null ) {
+       public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null, $forceSecure = null ) {
                $this->cookies[$name] = $value;
        }
 
index 01c5eea..247f810 100644 (file)
@@ -156,4 +156,3 @@ wfProfileOut( 'WebStart.php-ob_start' );
 if ( !defined( 'MW_NO_SETUP' ) ) {
        require_once( MWInit::compiledPath( "includes/Setup.php" ) );
 }
-
index a4a8903..e1d84d4 100644 (file)
@@ -490,6 +490,23 @@ class MediaWiki {
 
                $request = $this->context->getRequest();
 
+               if ( $request->getCookie( 'forceHTTPS' )
+                       && $request->detectProtocol() == 'http'
+                       && $request->getMethod() == 'GET'
+               ) {
+                       $redirUrl = $request->getFullRequestURL();
+                       $redirUrl = str_replace( 'http://' , 'https://' , $redirUrl );
+
+                       // Setup dummy Title, otherwise OutputPage::redirect will fail
+                       $title = Title::newFromText( NS_MAIN, 'REDIR' );
+                       $this->context->setTitle( $title );
+                       $output = $this->context->getOutput();
+                       $output->redirect( $redirUrl );
+                       $output->output();
+                       wfProfileOut( __METHOD__ );
+                       return;
+               }
+
                // Send Ajax requests to the Ajax dispatcher.
                if ( $wgUseAjax && $request->getVal( 'action', 'view' ) == 'ajax' ) {
 
index e27e53e..b523111 100644 (file)
@@ -474,7 +474,7 @@ class InfoAction extends FormlessAction {
         */
        protected function addRow( $table, $name, $value ) {
                return $table . Html::rawElement( 'tr', array(),
-                       Html::rawElement( 'td', array( 'valign' => 'top' ), $name ) .
+                       Html::rawElement( 'td', array( 'style' => 'vertical-align: top;' ), $name ) .
                        Html::rawElement( 'td', array(), $value )
                );
        }
index 875a381..1513e7d 100644 (file)
@@ -929,9 +929,9 @@ abstract class ApiBase extends ContextSource {
                                ApiBase::dieDebug( __METHOD__, "Boolean param $encParamName's default is set to '$default'. Boolean parameters must default to false." );
                        }
 
-                       $value = $this->getRequest()->getCheck( $encParamName );
+                       $value = $this->getMain()->getCheck( $encParamName );
                } else {
-                       $value = $this->getRequest()->getVal( $encParamName, $default );
+                       $value = $this->getMain()->getVal( $encParamName, $default );
 
                        if ( isset( $value ) && $type == 'namespace' ) {
                                $type = MWNamespace::getValidNamespaces();
index 35febd9..87a287b 100644 (file)
@@ -135,6 +135,7 @@ class ApiMain extends ApiBase {
 
        private $mCacheMode = 'private';
        private $mCacheControl = array();
+       private $mParamsUsed = array();
 
        /**
         * Constructs an instance of ApiMain that utilizes the module and format specified by $request.
@@ -168,7 +169,7 @@ class ApiMain extends ApiBase {
                        // Remove all modules other than login
                        global $wgUser;
 
-                       if ( $this->getRequest()->getVal( 'callback' ) !== null ) {
+                       if ( $this->getVal( 'callback' ) !== null ) {
                                // JSON callback allows cross-site reads.
                                // For safety, strip user credentials.
                                wfDebug( "API: stripping user credentials for JSON callback\n" );
@@ -365,6 +366,7 @@ class ApiMain extends ApiBase {
                // clear the output buffer and print just the error information
                ob_start();
 
+               $t = microtime( true );
                try {
                        $this->executeAction();
                } catch ( Exception $e ) {
@@ -401,6 +403,9 @@ class ApiMain extends ApiBase {
                        $this->printResult( true );
                }
 
+               // Log the request whether or not there was an error
+               $this->logRequest( microtime( true ) - $t);
+
                // Send cache headers after any code which might generate an error, to
                // avoid sending public cache headers for errors.
                $this->sendCacheHeaders();
@@ -816,6 +821,9 @@ class ApiMain extends ApiBase {
                $module->profileOut();
 
                if ( !$this->mInternalMode ) {
+                       // Report unused params
+                       $this->reportUnusedParams();
+
                        //append Debug information
                        MWDebug::appendDebugInfoToApiResult( $this->getContext(), $this->getResult() );
 
@@ -824,6 +832,88 @@ class ApiMain extends ApiBase {
                }
        }
 
+       /**
+        * Log the preceding request
+        * @param $time Time in seconds
+        */
+       protected function logRequest( $time ) {
+               $request = $this->getRequest();
+               $milliseconds = $time === null ? '?' : round( $time * 1000 );
+               $s = 'API' . 
+                       ' ' . $request->getMethod() .
+                       ' ' . wfUrlencode( str_replace( ' ', '_', $this->getUser()->getName() ) ) .
+                       ' ' . $request->getIP() .
+                       ' T=' . $milliseconds .'ms';
+               foreach ( $this->getParamsUsed() as $name ) {
+                       $value = $request->getVal( $name );
+                       if ( $value === null ) {
+                               continue;
+                       }
+                       $s .= ' ' . $name . '=';
+                       if ( strlen( $value ) > 256 ) {
+                               $encValue = $this->encodeRequestLogValue( substr( $value, 0, 256 ) );
+                               $s .= $encValue . '[...]';
+                       } else {
+                               $s .= $this->encodeRequestLogValue( $value );
+                       }
+               }
+               $s .= "\n";
+               wfDebugLog( 'api', $s, false );
+       }
+
+       /**
+        * Encode a value in a format suitable for a space-separated log line.
+        */
+       protected function encodeRequestLogValue( $s ) {
+               static $table;
+               if ( !$table ) {
+                       $chars = ';@$!*(),/:';
+                       for ( $i = 0; $i < strlen( $chars ); $i++ ) {
+                               $table[ rawurlencode( $chars[$i] ) ] = $chars[$i];
+                       }
+               }
+               return strtr( rawurlencode( $s ), $table );
+       }
+
+       /**
+        * Get the request parameters used in the course of the preceding execute() request
+        */
+       protected function getParamsUsed() {
+               return array_keys( $this->mParamsUsed );
+       }
+
+       /**
+        * Get a request value, and register the fact that it was used, for logging.
+        */
+       public function getVal( $name, $default = null ) {
+               $this->mParamsUsed[$name] = true;
+               return $this->getRequest()->getVal( $name, $default );
+       }
+
+       /**
+        * Get a boolean request value, and register the fact that the parameter
+        * was used, for logging.
+        */
+       public function getCheck( $name ) {
+               $this->mParamsUsed[$name] = true;
+               return $this->getRequest()->getCheck( $name );          
+       }
+
+       /**
+        * Report unused parameters, so the client gets a hint in case it gave us parameters we don't know,
+        * for example in case of spelling mistakes or a missing 'g' prefix for generators.
+        */
+       protected function reportUnusedParams() {
+               $paramsUsed = $this->getParamsUsed();
+               $allParams = $this->getRequest()->getValueNames();
+
+               $unusedParams = array_diff( $allParams, $paramsUsed );
+               if( count( $unusedParams ) ) {
+                       $s = count( $unusedParams ) > 1 ? 's' : '';
+                       $this->setWarning( "Unrecognized parameter$s: '" . implode( $unusedParams, "', '" ) . "'" );
+               }
+       }
+
        /**
         * Print results using the current printer
         *
index 5a78354..ef56274 100644 (file)
@@ -45,7 +45,7 @@ class ApiOpenSearch extends ApiBase {
                $namespaces = $params['namespace'];
                $suggest = $params['suggest'];
 
-               // MWSuggest or similar hit
+               // Some script that was loaded regardless of wgEnableOpenSearchSuggest, likely cached.
                if ( $suggest && !$wgEnableOpenSearchSuggest ) {
                        $searches = array();
                } else {
index 554aae5..64399b2 100644 (file)
@@ -513,8 +513,9 @@ class ApiQuery extends ApiBase {
                $exportTitles = array();
                $titles = $pageSet->getGoodTitles();
                if ( count( $titles ) ) {
+                       $user = $this->getUser();
                        foreach ( $titles as $title ) {
-                               if ( $title->userCan( 'read' ) ) {
+                               if ( $title->userCan( 'read', $user ) ) {
                                        $exportTitles[] = $title;
                                }
                        }
index d822eed..ee55fb5 100644 (file)
@@ -377,8 +377,10 @@ class ApiQueryImageInfo extends ApiQueryBase {
                }
 
                if ( $meta ) {
+                       wfSuppressWarnings();
                        $metadata = unserialize( $file->getMetadata() );
-                       if ( $version !== 'latest' ) {
+                       wfRestoreWarnings();
+                       if ( $metadata && $version !== 'latest' ) {
                                $metadata = $file->convertMetadataVersion( $metadata, $version );
                        }
                        $vals['metadata'] = $metadata ? self::processMetaData( $metadata, $result ) : null;
index 5d4f034..b617ed0 100644 (file)
@@ -406,7 +406,7 @@ class ApiQueryInfo extends ApiQueryBase {
                        $pageInfo['fullurl'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
                        $pageInfo['editurl'] = wfExpandUrl( $title->getFullURL( 'action=edit' ), PROTO_CURRENT );
                }
-               if ( $this->fld_readable && $title->userCan( 'read' ) ) {
+               if ( $this->fld_readable && $title->userCan( 'read', $this->getUser() ) ) {
                        $pageInfo['readable'] = '';
                }
 
index 7ae4f37..84c2332 100644 (file)
@@ -214,8 +214,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        'rc_title',
                        'rc_cur_id',
                        'rc_type',
-                       'rc_moved_to_ns',
-                       'rc_moved_to_title',
                        'rc_deleted'
                ) );
 
@@ -321,12 +319,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
         * @access public
         */
        public function extractRowInfo( $row ) {
-               /* If page was moved somewhere, get the title of the move target. */
-               $movedToTitle = false;
-               if ( isset( $row->rc_moved_to_title ) && $row->rc_moved_to_title !== '' ) {
-                       $movedToTitle = Title::makeTitle( $row->rc_moved_to_ns, $row->rc_moved_to_title );
-               }
-
                /* Determine the title of the page that has been changed. */
                $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
 
@@ -359,9 +351,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                /* Create a new entry in the result for the title. */
                if ( $this->fld_title ) {
                        ApiQueryBase::addTitleInfo( $vals, $title );
-                       if ( $movedToTitle ) {
-                               ApiQueryBase::addTitleInfo( $vals, $movedToTitle, 'new_' );
-                       }
                }
 
                /* Add ids, such as rcid, pageid, revid, and oldid to the change's info. */
index b89a8ea..41dfc33 100644 (file)
@@ -191,8 +191,9 @@ class ApiQueryRevisions extends ApiQueryBase {
 
                if ( isset( $prop['content'] ) || !is_null( $this->difftotext ) ) {
                        // For each page we will request, the user must have read rights for that page
+                       $user = $this->getUser();
                        foreach ( $pageSet->getGoodTitles() as $title ) {
-                               if ( !$title->userCan( 'read' ) ) {
+                               if ( !$title->userCan( 'read', $user ) ) {
                                        $this->dieUsage(
                                                'The current user is not allowed to read ' . $title->getPrefixedText(),
                                                'accessdenied' );
index 5344b12..9519e50 100644 (file)
@@ -247,7 +247,7 @@ abstract class DatabaseBase implements DatabaseType {
        protected $delimiter = ';';
 
        /**
-        * Remembers the function name given for starting the most recent transaction via the begin() method.
+        * Remembers the function name given for starting the most recent transaction via begin().
         * Used to provide additional context for error reporting.
         *
         * @var String
@@ -255,6 +255,14 @@ abstract class DatabaseBase implements DatabaseType {
         */
        private $mTrxFname = null;
 
+       /**
+        * Record if possible write queries were done in the last transaction started
+        *
+        * @var Bool
+        * @see DatabaseBase::mTrxLevel
+        */
+       private $mTrxDoneWrites = false;
+
 # ------------------------------------------------------------------------------
 # Accessors
 # ------------------------------------------------------------------------------
@@ -845,9 +853,10 @@ abstract class DatabaseBase implements DatabaseType {
                $commentedSql = preg_replace( '/\s/', " /* $fname $userName */ ", $sql, 1 );
 
                # If DBO_TRX is set, start a transaction
-               if ( ( $this->mFlags & DBO_TRX ) && !$this->trxLevel() &&
-                       $sql != 'BEGIN' && $sql != 'COMMIT' && $sql != 'ROLLBACK' ) {
-                       # avoid establishing transactions for SHOW and SET statements too -
+               if ( ( $this->mFlags & DBO_TRX ) && !$this->mTrxLevel &&
+                       $sql != 'BEGIN' && $sql != 'COMMIT' && $sql != 'ROLLBACK' )
+               {
+                       # Avoid establishing transactions for SHOW and SET statements too -
                        # that would delay transaction initializations to once connection
                        # is really used by application
                        $sqlstart = substr( $sql, 0, 10 ); // very much worth it, benchmark certified(tm)
@@ -860,6 +869,11 @@ abstract class DatabaseBase implements DatabaseType {
                        }
                }
 
+               # Keep track of whether the transaction has write queries pending
+               if ( $this->mTrxLevel && !$this->mTrxDoneWrites && $this->isWriteQuery( $sql ) ) {
+                       $this->mTrxDoneWrites = true;
+               }
+
                if ( $this->debug() ) {
                        static $cnt = 0;
 
@@ -2878,22 +2892,52 @@ abstract class DatabaseBase implements DatabaseType {
        }
 
        /**
-        * Begin a transaction
+        * Begin a transaction. If a transaction is already in progress, that transaction will be committed before the
+        * new transaction is started.
+        *
+        * Note that when the DBO_TRX flag is set (which is usually the case for web requests, but not for maintenance scripts),
+        * any previous database query will have started a transaction automatically.
+        *
+        * Nesting of transactions is not supported. Attempts to nest transactions will cause warnings if DBO_TRX is not set
+        * or the extsting transaction contained write operations.
         *
         * @param $fname string
         */
        final public function begin( $fname = 'DatabaseBase::begin' ) {
+               global $wgDebugDBTransactions;
+
                if ( $this->mTrxLevel ) { // implicit commit
-                       wfWarn( "$fname: Transaction already in progress (from {$this->mTrxFname}), " .
-                               " performing implicit commit!" );
+                       if ( $this->mTrxDoneWrites || ( $this->mFlags & DBO_TRX ) === 0 ) {
+                               // In theory, we should always warn about nesting BEGIN statements.
+                               // However, it is sometimes hard to avoid so we only warn if:
+                               //
+                               // a) the transaction has done writes. This gives warnings about bad transactions
+                               // that could cause partial writes but not about read queries seeing more
+                               // than one DB snapshot (when in REPEATABLE-READ) due to nested BEGINs.
+                               //
+                               // b) the DBO_TRX flag is not set. Explicit transactions should always be properly
+                               //    started and comitted.
+                               wfWarn( "$fname: Transaction already in progress (from {$this->mTrxFname}), " .
+                                       " performing implicit commit!" );
+                       } else {
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug( "$fname: Transaction already in progress (from {$this->mTrxFname}), " .
+                                               " performing implicit commit!\n" );
+                               }
+                       }
+
                        $this->doCommit( $fname );
                        $this->runOnTransactionIdleCallbacks();
                }
+
                $this->doBegin( $fname );
                $this->mTrxFname = $fname;
+               $this->mTrxDoneWrites = false;
        }
 
        /**
+        * Issues the BEGIN command to the database server.
+        *
         * @see DatabaseBase::begin()
         * @param type $fname
         */
@@ -2903,7 +2947,10 @@ abstract class DatabaseBase implements DatabaseType {
        }
 
        /**
-        * End a transaction
+        * Commits a transaction previously started using begin().
+        * If no transaction is in progress, a warning is issued.
+        *
+        * Nesting of transactions is not supported.
         *
         * @param $fname string
         */
@@ -2916,6 +2963,8 @@ abstract class DatabaseBase implements DatabaseType {
        }
 
        /**
+        * Issues the COMMIT command to the database server.
+        *
         * @see DatabaseBase::commit()
         * @param type $fname
         */
@@ -2927,7 +2976,9 @@ abstract class DatabaseBase implements DatabaseType {
        }
 
        /**
-        * Rollback a transaction.
+        * Rollback a transaction previously started using begin().
+        * If no transaction is in progress, a warning is issued.
+        *
         * No-op on non-transactional databases.
         *
         * @param $fname string
@@ -2941,6 +2992,8 @@ abstract class DatabaseBase implements DatabaseType {
        }
 
        /**
+        * Issues the ROLLBACK command to the database server.
+        *
         * @see DatabaseBase::rollback()
         * @param type $fname
         */
index d635645..195d4ec 100644 (file)
@@ -497,8 +497,8 @@ class LoadBalancer {
                        # Couldn't find a working server in getReaderIndex()?
                        if ( $i === false ) {
                                $this->mLastError = 'No working slave server: ' . $this->mLastError;
-                               $this->reportConnectionError( $this->mErrorConnection );
                                wfProfileOut( __METHOD__ );
+                               $this->reportConnectionError( $this->mErrorConnection );
                                return false;
                        }
                }
@@ -506,6 +506,7 @@ class LoadBalancer {
                # Now we have an explicit index into the servers array
                $conn = $this->openConnection( $i, $wiki );
                if ( !$conn ) {
+                       wfProfileOut( __METHOD__ );
                        $this->reportConnectionError( $this->mErrorConnection );
                }
 
@@ -730,8 +731,6 @@ class LoadBalancer {
         * @throws DBConnectionError
         */
        function reportConnectionError( &$conn ) {
-               wfProfileIn( __METHOD__ );
-
                if ( !is_object( $conn ) ) {
                        // No last connection, probably due to all servers being too busy
                        wfLogDBError( "LB failure with no last connection. Connection error: {$this->mLastError}\n" );
@@ -743,7 +742,6 @@ class LoadBalancer {
                        wfLogDBError( "Connection error: {$this->mLastError} ({$server})\n" );
                        $conn->reportConnectionError( "{$this->mLastError} ({$server})" );
                }
-               wfProfileOut( __METHOD__ );
        }
 
        /**
index 042cb67..e88c368 100644 (file)
@@ -128,6 +128,17 @@ abstract class FileBackend {
                return $this->name;
        }
 
+       /**
+        * Get the wiki identifier used for this backend (possibly empty).
+        * Note that this might *not* be in the same format as wfWikiID().
+        *
+        * @return string
+        * @since 1.20
+        */
+       final public function getWikiId() {
+               return $this->wikiId;
+       }
+
        /**
         * Check if this backend is read-only
         *
index a31b148..5f24fed 100644 (file)
@@ -1321,6 +1321,9 @@ class FileRepo {
         * @return string
         */
        public function getDeletedHashPath( $key ) {
+               if ( strlen( $key ) < 31 ) {
+                       throw new MWException( "Invalid storage key '$key'." );
+               }
                $path = '';
                for ( $i = 0; $i < $this->deletedHashLevels; $i++ ) {
                        $path .= $key[$i] . '/';
index 695c4e9..bbabe84 100644 (file)
@@ -1006,7 +1006,7 @@ class LocalFile extends File {
        {
                $pageText = SpecialUpload::getInitialPageText( $desc, $license, $copyStatus, $source );
 
-               if ( !$this->recordUpload2( $oldver, $desc, $pageText ) ) {
+               if ( !$this->recordUpload2( $oldver, $desc, $pageText, false, $timestamp ) ) {
                        return false;
                }
 
index f812ac2..f7d5a1e 100644 (file)
@@ -87,6 +87,8 @@ class Ibm_db2Updater extends DatabaseUpdater {
 
                        // 1.20
                        array( 'addTable', 'config',                            'patch-config.sql' ),
+
+                       // 1.21
                );
        }
 }
index bd55cb4..98e1386 100644 (file)
@@ -214,6 +214,10 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'addField', 'ipblocks',      'ipb_parent_block_id',           'patch-ipb-parent-block-id.sql' ),
                        array( 'addIndex', 'ipblocks',      'ipb_parent_block_id',           'patch-ipb-parent-block-id-index.sql' ),
                        array( 'dropField', 'category',     'cat_hidden',       'patch-cat_hidden.sql' ),
+
+                       // 1.21
+                       array( 'dropField', 'site_stats',   'ss_admins',        'patch-drop-ss_admins.sql' ),
+                       array( 'dropField', 'recentchanges', 'rc_moved_to_title',            'patch-rc_moved.sql' ),
                );
        }
 
index a741f26..d81cf06 100644 (file)
@@ -71,6 +71,8 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'addIndex', 'ipblocks', 'i05', 'patch-ipblocks_i05_index.sql' ),
                        array( 'addIndex', 'revision', 'i05', 'patch-revision_i05_index.sql' ),
 
+                       // 1.21
+
                        // KEEP THIS AT THE BOTTOM!!
                        array( 'doRebuildDuplicateFunction' ),
 
index bc5fcac..95a61c1 100644 (file)
@@ -93,6 +93,10 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'addField', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id.sql' ),
                        array( 'addIndex', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id-index.sql' ),
                        array( 'dropField', 'category',     'cat_hidden',       'patch-cat_hidden.sql' ),
+
+                       // 1.21
+                       array( 'dropField', 'site_stats',   'ss_admins',        'patch-drop-ss_admins.sql' ),
+                       array( 'dropField', 'recentchanges', 'rc_moved_to_title', 'patch-rc_moved.sql' ),
                );
        }
 
index 08af997..f9c4b0f 100644 (file)
@@ -27,7 +27,7 @@
  * @ingroup JobQueue
  */
 class DoubleRedirectJob extends Job {
-       var $reason, $redirTitle, $destTitleText;
+       var $reason, $redirTitle;
 
        /**
         * @var User
@@ -77,7 +77,6 @@ class DoubleRedirectJob extends Job {
                parent::__construct( 'fixDoubleRedirect', $title, $params, $id );
                $this->reason = $params['reason'];
                $this->redirTitle = Title::newFromText( $params['redirTitle'] );
-               $this->destTitleText = !empty( $params['destTitle'] ) ? $params['destTitle'] : '';
        }
 
        /**
@@ -122,7 +121,7 @@ class DoubleRedirectJob extends Job {
 
                # Preserve fragment (bug 14904)
                $newTitle = Title::makeTitle( $newTitle->getNamespace(), $newTitle->getDBkey(),
-                       $currentDest->getFragment() );
+                       $currentDest->getFragment(), $newTitle->getInterwiki() );
 
                # Fix the text
                # Remember that redirect pages can have categories, templates, etc.,
@@ -171,9 +170,17 @@ class DoubleRedirectJob extends Job {
                        }
                        $seenTitles[$titleText] = true;
 
+                       if ( $title->getInterwiki() ) {
+                               // If the target is interwiki, we have to break early (bug 40352).
+                               // Otherwise it will look up a row in the local page table
+                               // with the namespace/page of the interwiki target which can cause
+                               // unexpected results (e.g. X -> foo:Bar -> Bar -> .. )
+                               break;
+                       }
+
                        $row = $dbw->selectRow(
                                array( 'redirect', 'page' ),
-                               array( 'rd_namespace', 'rd_title' ),
+                               array( 'rd_namespace', 'rd_title', 'rd_interwiki' ),
                                array(
                                        'rd_from=page_id',
                                        'page_namespace' => $title->getNamespace(),
@@ -183,7 +190,7 @@ class DoubleRedirectJob extends Job {
                                # No redirect from here, chain terminates
                                break;
                        } else {
-                               $dest = $title = Title::makeTitle( $row->rd_namespace, $row->rd_title );
+                               $dest = $title = Title::makeTitle( $row->rd_namespace, $row->rd_title, '', $row->rd_interwiki );
                        }
                }
                return $dest;
index 45f0570..270671e 100644 (file)
@@ -151,16 +151,21 @@ abstract class Job {
 
                // Try to delete it from the master
                $dbw = wfGetDB( DB_MASTER );
+               $dbw->begin( __METHOD__ );
                $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
                $affected = $dbw->affectedRows();
+               $dbw->commit( __METHOD__ );
 
                if ( !$affected ) {
+                       $dbw->begin( __METHOD__ );
+
                        // Failed, someone else beat us to it
                        // Try getting a random row
                        $row = $dbw->selectRow( 'job', array( 'minjob' => 'MIN(job_id)',
                                'maxjob' => 'MAX(job_id)' ), '1=1', __METHOD__ );
                        if ( $row === false || is_null( $row->minjob ) || is_null( $row->maxjob ) ) {
                                // No jobs to get
+                               $dbw->rollback( __METHOD__ );
                                wfProfileOut( __METHOD__ );
                                return false;
                        }
@@ -170,12 +175,14 @@ abstract class Job {
                        if ( $row === false ) {
                                // Random job gone before we got the chance to select it
                                // Give up
+                               $dbw->rollback( __METHOD__ );
                                wfProfileOut( __METHOD__ );
                                return false;
                        }
                        // Delete the random row
                        $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
                        $affected = $dbw->affectedRows();
+                       $dbw->commit( __METHOD__ );
 
                        if ( !$affected ) {
                                // Random job gone before we exclusively deleted it
@@ -401,6 +408,7 @@ abstract class Job {
 
                $fields = $this->insertFields();
                unset( $fields['job_id'] );
+               unset( $fields['job_timestamp'] );
                $dbw = wfGetDB( DB_MASTER );
                $dbw->begin( __METHOD__ );
                $dbw->delete( 'job', $fields, __METHOD__ );
index b4b9d61..e72541c 100644 (file)
@@ -28,7 +28,6 @@
  * @since 1.20
  *
  * @file
- * @ingroup Diff
  *
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
@@ -61,13 +60,11 @@ abstract class GenericArrayObject extends ArrayObject {
         * @return integer
         */
        protected function getNewOffset() {
-               while ( true ) {
-                       if ( !$this->offsetExists( $this->indexOffset ) ) {
-                               return $this->indexOffset;
-                       }
-
+               while ( $this->offsetExists( $this->indexOffset ) ) {
                        $this->indexOffset++;
                }
+
+               return $this->indexOffset;
        }
 
        /**
index 59d379a..e778ca8 100644 (file)
@@ -4144,10 +4144,16 @@ class Parser {
                        $safeHeadline = $this->mStripState->unstripBoth( $safeHeadline );
 
                        # Strip out HTML (first regex removes any tag not allowed)
-                       # Allowed tags are <sup> and <sub> (bug 8393), <i> (bug 26375) and <b> (r105284)
-                       # We strip any parameter from accepted tags (second regex)
+                       # Allowed tags are:
+                       # * <sup> and <sub> (bug 8393)
+                       # * <i> (bug 26375)
+                       # * <b> (r105284)
+                       # * <span dir="rtl"> and <span dir="ltr"> (bug 35167)
+                       #
+                       # We strip any parameter from accepted tags (second regex), except dir="rtl|ltr" from <span>,
+                       # to allow setting directionality in toc items.
                        $tocline = preg_replace(
-                               array( '#<(?!/?(sup|sub|i|b)(?: [^>]*)?>).*?'.'>#', '#<(/?(sup|sub|i|b))(?: .*?)?'.'>#' ),
+                               array( '#<(?!/?(span|sup|sub|i|b)(?: [^>]*)?>).*?'.'>#', '#<(/?(?:span(?: dir="(?:rtl|ltr)")?|sup|sub|i|b))(?: .*?)?'.'>#' ),
                                array( '',                          '<$1>' ),
                                $safeHeadline
                        );
index 99fe7ed..3b48a26 100644 (file)
@@ -163,11 +163,11 @@ class ResourceLoader {
                                                $wgResourceLoaderMinifierStatementsOnOwnLine,
                                                $wgResourceLoaderMinifierMaxLineLength
                                        );
-                                       $result .= "\n\n/* cache key: $key */\n";
+                                       $result .= "\n/* cache key: $key */";
                                        break;
                                case 'minify-css':
                                        $result = CSSMin::minify( $data );
-                                       $result .= "\n\n/* cache key: $key */\n";
+                                       $result .= "\n/* cache key: $key */";
                                        break;
                        }
 
@@ -703,7 +703,7 @@ class ResourceLoader {
                                                $scripts = $module->getScriptURLsForDebug( $context );
                                        } else {
                                                $scripts = $module->getScript( $context );
-                                               if ( is_string( $scripts ) ) {
+                                               if ( is_string( $scripts ) && strlen( $scripts ) && substr( $scripts, -1 ) !== ';' ) {
                                                        // bug 27054: Append semicolon to prevent weird bugs
                                                        // caused by files not terminating their statements right
                                                        $scripts .= ";\n";
@@ -720,19 +720,31 @@ class ResourceLoader {
                                                // If we are in debug mode without &only= set, we'll want to return an array of URLs
                                                // See comment near shouldIncludeScripts() for more details
                                                if ( $context->getDebug() && !$context->getOnly() && $module->supportsURLLoading() ) {
-                                                       $styles = $module->getStyleURLsForDebug( $context );
+                                                       $styles = array(
+                                                               'url' => $module->getStyleURLsForDebug( $context )
+                                                       );
                                                } else {
                                                        // Minify CSS before embedding in mw.loader.implement call
                                                        // (unless in debug mode)
                                                        if ( !$context->getDebug() ) {
                                                                foreach ( $stylePairs as $media => $style ) {
-                                                                       if ( is_string( $style ) ) {
+                                                                       // Can be either a string or an array of strings.
+                                                                       if ( is_array( $style ) ) {
+                                                                               $stylePairs[$media] = array();
+                                                                               foreach ( $style as $cssText ) {
+                                                                                       if ( is_string( $cssText ) ) {
+                                                                                               $stylePairs[$media][] = $this->filter( 'minify-css', $cssText );
+                                                                                       }
+                                                                               }
+                                                                       } elseif ( is_string( $style ) ) {
                                                                                $stylePairs[$media] = $this->filter( 'minify-css', $style );
                                                                        }
                                                                }
                                                        }
-                                                       // Combine styles into @media groups as one big string
-                                                       $styles = array( '' => self::makeCombinedStyles( $stylePairs ) );
+                                                       // Wrap styles into @media groups as needed and flatten into a numerical array
+                                                       $styles = array(
+                                                               'css' => self::makeCombinedStyles( $stylePairs )
+                                                       );
                                                }
                                        }
                                }
@@ -752,11 +764,10 @@ class ResourceLoader {
                                                }
                                                break;
                                        case 'styles':
-                                               // We no longer seperate into media, they are all concatenated now with
-                                               // custom media type groups into @media .. {} sections.
-                                               // Module returns either an empty array or an array with '' (no media type) as
-                                               // only key.
-                                               $out .= isset( $styles[''] ) ? $styles[''] : '';
+                                               // We no longer seperate into media, they are all combined now with
+                                               // custom media type groups into @media .. {} sections as part of the css string.
+                                               // Module returns either an empty array or a numerical array with css strings.
+                                               $out .= isset( $styles['css'] ) ? implode( '', $styles['css'] ) : '';
                                                break;
                                        case 'messages':
                                                $out .= self::makeMessageSetScript( new XmlJsCode( $messagesBlob ) );
@@ -860,24 +871,32 @@ class ResourceLoader {
         * Combines an associative array mapping media type to CSS into a
         * single stylesheet with "@media" blocks.
         *
-        * @param $styles Array: List of CSS strings keyed by media type
+        * @param $styles Array: Array keyed by media type containing (arrays of) CSS strings.
         *
-        * @return string
+        * @return Array
         */
-       public static function makeCombinedStyles( array $styles ) {
-               $out = '';
-               foreach ( $styles as $media => $style ) {
-                       // Transform the media type based on request params and config
-                       // The way that this relies on $wgRequest to propagate request params is slightly evil
-                       $media = OutputPage::transformCssMedia( $media );
-
-                       if ( $media === null ) {
-                               // Skip
-                       } elseif ( $media === '' || $media == 'all' ) {
-                               // Don't output invalid or frivolous @media statements
-                               $out .= "$style\n";
-                       } else {
-                               $out .= "@media $media {\n" . str_replace( "\n", "\n\t", "\t" . $style ) . "\n}\n";
+       private static function makeCombinedStyles( array $stylePairs ) {
+               $out = array();
+               foreach ( $stylePairs as $media => $styles ) {
+                       // ResourceLoaderFileModule::getStyle can return the styles
+                       // as a string or an array of strings. This is to allow separation in
+                       // the front-end.
+                       $styles = (array) $styles;
+                       foreach ( $styles as $style ) {
+                               $style = trim( $style );
+                               // Don't output an empty "@media print { }" block (bug 40498)
+                               if ( $style !== '' ) {
+                                       // Transform the media type based on request params and config
+                                       // The way that this relies on $wgRequest to propagate request params is slightly evil
+                                       $media = OutputPage::transformCssMedia( $media );
+
+                                       if ( $media === '' || $media == 'all' ) {
+                                               $out[] = $style;
+                                       } else if ( is_string( $media ) ) {
+                                               $out[] = "@media $media {\n" . str_replace( "\n", "\n\t", "\t" . $style ) . "}";
+                                       }
+                                       // else: skip
+                               }
                        }
                }
                return $out;
index f0892ec..d0c56ae 100644 (file)
@@ -634,7 +634,8 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                // Get and register local file references
                $this->localFileRefs = array_merge(
                        $this->localFileRefs,
-                       CSSMin::getLocalFileReferences( $style, $dir ) );
+                       CSSMin::getLocalFileReferences( $style, $dir )
+               );
                return CSSMin::remap(
                        $style, $dir, $remoteDir, true
                );
index 1e19d0f..e364b71 100644 (file)
@@ -172,7 +172,9 @@ abstract class ResourceLoaderModule {
         * Get all CSS for this module for a given skin.
         *
         * @param $context ResourceLoaderContext: Context object
-        * @return Array: List of CSS strings keyed by media type
+        * @return Array: List of CSS strings or array of CSS strings keyed by media type.
+        *  like array( 'screen' => '.foo { width: 0 }' );
+        *  or array( 'screen' => array( '.foo { width: 0 }' ) );
         */
        public function getStyles( ResourceLoaderContext $context ) {
                // Stub, override expected
@@ -332,8 +334,9 @@ abstract class ResourceLoaderModule {
         */
        public function getMsgBlobMtime( $lang ) {
                if ( !isset( $this->msgBlobMtime[$lang] ) ) {
-                       if ( !count( $this->getMessages() ) )
+                       if ( !count( $this->getMessages() ) ) {
                                return 0;
+                       }
 
                        $dbr = wfGetDB( DB_SLAVE );
                        $msgBlobMtime = $dbr->selectField( 'msg_resource', 'mr_timestamp', array(
@@ -424,10 +427,10 @@ abstract class ResourceLoaderModule {
                        try {
                                $parser->parse( $contents, $fileName, 1 );
                                $result = $contents;
-                       } catch (Exception $e) {
+                       } catch ( Exception $e ) {
                                // We'll save this to cache to avoid having to validate broken JS over and over...
                                $err = $e->getMessage();
-                               $result = "throw new Error(" . Xml::encodeJsVar("JavaScript parse error: $err") . ");";
+                               $result = "throw new Error(" . Xml::encodeJsVar( "JavaScript parse error: $err" ) . ");";
                        }
 
                        $cache->set( $key, $result );
index c86ed1d..20ee83f 100644 (file)
@@ -37,8 +37,8 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
        protected function getConfig( $context ) {
                global $wgLoadScript, $wgScript, $wgStylePath, $wgScriptExtension,
                        $wgArticlePath, $wgScriptPath, $wgServer, $wgContLang,
-                       $wgVariantArticlePath, $wgActionPaths, $wgUseAjax, $wgVersion,
-                       $wgEnableAPI, $wgEnableWriteAPI, $wgDBname, $wgEnableMWSuggest,
+                       $wgVariantArticlePath, $wgActionPaths, $wgVersion,
+                       $wgEnableAPI, $wgEnableWriteAPI, $wgDBname,
                        $wgSitename, $wgFileExtensions, $wgExtensionAssetsPath,
                        $wgCookiePrefix, $wgResourceLoaderMaxQueryLength;
 
@@ -95,9 +95,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgResourceLoaderMaxQueryLength' => $wgResourceLoaderMaxQueryLength,
                        'wgCaseSensitiveNamespaces' => $caseSensitiveNamespaces,
                );
-               if ( $wgUseAjax && $wgEnableMWSuggest ) {
-                       $vars['wgMWSuggestTemplate'] = SearchEngine::getMWSuggestTemplate();
-               }
 
                wfRunHooks( 'ResourceLoaderGetConfigVars', array( &$vars ) );
 
index 623a269..0f09fc3 100644 (file)
@@ -138,12 +138,12 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
                        }
                        $style = CSSMin::remap( $style, false, $wgScriptPath, true );
                        if ( !isset( $styles[$media] ) ) {
-                               $styles[$media] = '';
+                               $styles[$media] = array();
                        }
                        if ( strpos( $titleText, '*/' ) === false ) {
-                               $styles[$media] .=  "/* $titleText */\n";
+                               $style =  "/* $titleText */\n" . $style;
                        }
-                       $styles[$media] .= $style . "\n";
+                       $styles[$media][] = $style;
                }
                return $styles;
        }
index 2ccb6d3..27a321a 100644 (file)
@@ -505,19 +505,6 @@ class SearchEngine {
                        return $wgCanonicalServer . wfScript( 'api' ) . '?action=opensearch&search={searchTerms}&namespace=' . $ns;
                }
        }
-
-       /**
-        * Get internal MediaWiki Suggest template
-        *
-        * @return String
-        */
-       public static function getMWSuggestTemplate() {
-               global $wgMWSuggestTemplate, $wgServer;
-               if ( $wgMWSuggestTemplate )
-                       return $wgMWSuggestTemplate;
-               else
-                       return $wgServer . wfScript( 'api' ) . '?action=opensearch&search={searchTerms}&namespace={namespaces}&suggest';
-       }
 }
 
 /**
index 6e3d49b..fc5df4f 100644 (file)
@@ -36,7 +36,9 @@ class AncientPagesPage extends QueryPage {
                return true;
        }
 
-       function isSyndicated() { return false; }
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array(
index 8119e6d..97de72a 100644 (file)
@@ -33,9 +33,17 @@ class BrokenRedirectsPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
-       function sortDescending() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
+
+       function sortDescending() {
+               return false;
+       }
 
        function getPageHeader() {
                return $this->msg( 'brokenredirectstext' )->parseAsBlock();
@@ -43,25 +51,35 @@ class BrokenRedirectsPage extends QueryPage {
 
        function getQueryInfo() {
                return array(
-                       'tables' => array( 'redirect', 'p1' => 'page',
-                                       'p2' => 'page' ),
-                       'fields' => array( 'namespace' => 'p1.page_namespace',
-                                       'title' => 'p1.page_title',
-                                       'value' => 'p1.page_title',
-                                       'rd_namespace',
-                                       'rd_title'
+                       'tables' => array(
+                               'redirect',
+                               'p1' => 'page',
+                               'p2' => 'page',
+                       ),
+                       'fields' => array(
+                               'namespace' => 'p1.page_namespace',
+                               'title' => 'p1.page_title',
+                               'value' => 'p1.page_title',
+                               'rd_namespace',
+                               'rd_title',
+                       ),
+                       'conds' => array(
+                               // Exclude pages that don't exist locally as wiki pages,
+                               // but aren't "broken" either.
+                               // Special pages and interwiki links
+                               'rd_namespace >= 0',
+                               '(rd_interwiki IS NULL OR rd_interwiki = "")',
+                               'p2.page_namespace IS NULL',
                        ),
-                       'conds' => array( 'rd_namespace >= 0',
-                                       'p2.page_namespace IS NULL'
+                       'join_conds' => array(
+                               'p1' => array( 'JOIN', array(
+                                       'rd_from=p1.page_id',
+                               ) ),
+                               'p2' => array( 'LEFT JOIN', array(
+                                       'rd_namespace=p2.page_namespace',
+                                       'rd_title=p2.page_title'
+                               ) ),
                        ),
-                       'join_conds' => array( 'p1' => array( 'JOIN', array(
-                                               'rd_from=p1.page_id',
-                                       ) ),
-                                       'p2' => array( 'LEFT JOIN', array(
-                                               'rd_namespace=p2.page_namespace',
-                                               'rd_title=p2.page_title'
-                                       ) )
-                       )
                );
        }
 
index 5864ca9..ee07323 100644 (file)
@@ -33,9 +33,17 @@ class DoubleRedirectsPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
-       function sortDescending() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
+
+       function sortDescending() {
+               return false;
+       }
 
        function getPageHeader() {
                return $this->msg( 'doubleredirectstext' )->parseAsBlock();
@@ -44,22 +52,43 @@ class DoubleRedirectsPage extends QueryPage {
        function reallyGetQueryInfo( $namespace = null, $title = null ) {
                $limitToTitle = !( $namespace === null && $title === null );
                $retval = array (
-                       'tables' => array ( 'ra' => 'redirect',
-                                       'rb' => 'redirect', 'pa' => 'page',
-                                       'pb' => 'page', 'pc' => 'page' ),
-                       'fields' => array ( 'namespace' => 'pa.page_namespace',
-                                       'title' => 'pa.page_title',
-                                       'value' => 'pa.page_title',
-                                       'nsb' => 'pb.page_namespace',
-                                       'tb' => 'pb.page_title',
-                                       'nsc' => 'pc.page_namespace',
-                                       'tc' => 'pc.page_title' ),
-                       'conds' => array ( 'ra.rd_from = pa.page_id',
-                                       'pb.page_namespace = ra.rd_namespace',
-                                       'pb.page_title = ra.rd_title',
-                                       'rb.rd_from = pb.page_id',
-                                       'pc.page_namespace = rb.rd_namespace',
-                                       'pc.page_title = rb.rd_title' )
+                       'tables' => array (
+                               'ra' => 'redirect',
+                               'rb' => 'redirect',
+                               'pa' => 'page',
+                               'pb' => 'page'
+                       ),
+                       'fields' => array(
+                               'namespace' => 'pa.page_namespace',
+                               'title' => 'pa.page_title',
+                               'value' => 'pa.page_title',
+
+                               'nsb' => 'pb.page_namespace',
+                               'tb' => 'pb.page_title',
+
+                               // Select fields from redirect instead of page. Because there may
+                               // not actually be a page table row for this target (e.g. for interwiki redirects)
+                               'nsc' => 'rb.rd_namespace',
+                               'tc' => 'rb.rd_title',
+                               'iwc' => 'rb.rd_interwiki',
+                       ),
+                       'conds' => array(
+                               'ra.rd_from = pa.page_id',
+
+                               // Filter out redirects where the target goes interwiki (bug 40353).
+                               // This isn't an optimization, it is required for correct results,
+                               // otherwise a non-double redirect like Bar -> w:Foo will show up
+                               // like "Bar -> Foo -> w:Foo".
+
+                               // Need to check both NULL and "" for some reason,
+                               // apparently either can be stored for non-iw entries.
+                               '(ra.rd_interwiki IS NULL OR ra.rd_interwiki = "")',
+
+                               'pb.page_namespace = ra.rd_namespace',
+                               'pb.page_title = ra.rd_title',
+
+                               'rb.rd_from = pb.page_id',
+                       )
                );
                if ( $limitToTitle ) {
                        $retval['conds']['pa.page_namespace'] = $namespace;
@@ -79,6 +108,11 @@ class DoubleRedirectsPage extends QueryPage {
        function formatResult( $skin, $result ) {
                $titleA = Title::makeTitle( $result->namespace, $result->title );
 
+               // If only titleA is in the query, it means this came from
+               // querycache (which only saves 3 columns).
+               // That does save the bulk of the query cost, but now we need to
+               // get a little more detail about each individual entry quickly
+               // using the filter of reallyGetQueryInfo.
                if ( $result && !isset( $result->nsb ) ) {
                        $dbr = wfGetDB( DB_SLAVE );
                        $qi = $this->reallyGetQueryInfo( $result->namespace,
@@ -94,7 +128,7 @@ class DoubleRedirectsPage extends QueryPage {
                }
 
                $titleB = Title::makeTitle( $result->nsb, $result->tb );
-               $titleC = Title::makeTitle( $result->nsc, $result->tc );
+               $titleC = Title::makeTitle( $result->nsc, $result->tc, '',  $result->iwc );
 
                $linkA = Linker::linkKnown(
                        $titleA,
index ccf8ba1..96739ea 100644 (file)
@@ -40,9 +40,17 @@ class FileDuplicateSearchPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isSyndicated() { return false; }
-       function isCacheable() { return false; }
-       function isCached() { return false; }
+       function isSyndicated() {
+               return false;
+       }
+
+       function isCacheable() {
+               return false;
+       }
+
+       function isCached() {
+               return false;
+       }
 
        function linkParameters() {
                return array( 'filename' => $this->filename );
index c217ecc..b32b0ca 100644 (file)
@@ -40,19 +40,11 @@ class SpecialJavaScriptTest extends SpecialPage {
        }
 
        public function execute( $par ) {
-               global $wgEnableJavaScriptTest;
-
                $out = $this->getOutput();
 
                $this->setHeaders();
                $out->disallowUserJs();
 
-               // Abort early if we're disabled
-               if ( $wgEnableJavaScriptTest !== true ) {
-                       $out->addWikiMsg( 'javascripttest-disabled' );
-                       return;
-               }
-
                $out->addModules( 'mediawiki.special.javaScriptTest' );
 
                // Determine framework
@@ -164,10 +156,4 @@ HTML;
                // $wgJavaScriptTestConfig in DefaultSettings.php
                $out->addJsConfigVars( 'QUnitTestSwarmInjectJSPath', $wgJavaScriptTestConfig['qunit']['testswarm-injectjs'] );
        }
-
-       public function isListed(){
-               global $wgEnableJavaScriptTest;
-               return $wgEnableJavaScriptTest === true;
-       }
-
 }
index fe338a0..f4acd64 100644 (file)
@@ -34,9 +34,17 @@ class ListredirectsPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
-       function sortDescending() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
+
+       function sortDescending() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array(
index 1089fbb..331a0e0 100644 (file)
@@ -298,14 +298,13 @@ class UsersPager extends AlphabeticPager {
 /**
  * @ingroup SpecialPage
  */
-class SpecialListUsers extends SpecialPage {
+class SpecialListUsers extends IncludableSpecialPage {
 
        /**
         * Constructor
         */
        public function __construct() {
                parent::__construct( 'Listusers' );
-               $this->mIncludable = true;
        }
 
        /**
index 763bbdb..2889f7e 100644 (file)
@@ -44,7 +44,10 @@ class LonelyPagesPage extends PageQueryPage {
        function isExpensive() {
                return true;
        }
-       function isSyndicated() { return false; }
+
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
index 104c653..432956f 100644 (file)
@@ -34,9 +34,17 @@ class MIMEsearchPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
-       function isCacheable() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
+
+       function isCacheable() {
+               return false;
+       }
 
        function linkParameters() {
                return array( 'mime' => "{$this->major}/{$this->minor}" );
index 3f0bafa..085a09f 100644 (file)
@@ -35,8 +35,13 @@ class MostcategoriesPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
index 3d79790..01a5caf 100644 (file)
@@ -35,8 +35,13 @@ class MostimagesPage extends ImageQueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
index 894d697..e08cdf3 100644 (file)
@@ -35,8 +35,13 @@ class MostinterwikisPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
index 89c4350..66814cb 100644 (file)
@@ -36,8 +36,13 @@ class MostlinkedPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
index dadef8b..df2975c 100644 (file)
@@ -35,7 +35,9 @@ class MostlinkedCategoriesPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isSyndicated() { return false; }
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
@@ -46,7 +48,9 @@ class MostlinkedCategoriesPage extends QueryPage {
                );
        }
 
-       function sortDescending() { return true; }
+       function sortDescending() {
+               return true;
+       }
 
        /**
         * Fetch user page links and cache their existence
index 448d179..5a9f3f7 100644 (file)
@@ -37,7 +37,9 @@ class PopularPagesPage extends QueryPage {
                return true;
        }
 
-       function isSyndicated() { return false; }
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
index 1226a6c..37fcb2f 100644 (file)
@@ -41,7 +41,10 @@ class UncategorizedPagesPage extends PageQueryPage {
        function isExpensive() {
                return true;
        }
-       function isSyndicated() { return false; }
+
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
index 1bd38e1..69c42d5 100644 (file)
@@ -26,7 +26,9 @@
  */
 class UnusedCategoriesPage extends QueryPage {
 
-       function isExpensive() { return true; }
+       function isExpensive() {
+               return true;
+       }
 
        function __construct( $name = 'Unusedcategories' ) {
                parent::__construct( $name );
index 06077d1..fe79731 100644 (file)
@@ -35,9 +35,17 @@ class UnusedtemplatesPage extends QueryPage {
                parent::__construct( $name );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
-       function sortDescending() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
+
+       function sortDescending() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
index e5a7941..d397149 100644 (file)
@@ -35,8 +35,13 @@ class UnwatchedpagesPage extends QueryPage {
                parent::__construct( $name, 'unwatchedpages' );
        }
 
-       function isExpensive() { return true; }
-       function isSyndicated() { return false; }
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
 
        function getQueryInfo() {
                return array (
@@ -54,7 +59,9 @@ class UnwatchedpagesPage extends QueryPage {
                );
        }
 
-       function sortDescending() { return false; }
+       function sortDescending() {
+               return false;
+       }
 
        function getOrderFields() {
                return array( 'page_namespace', 'page_title' );
index ef6af80..b7d01c8 100644 (file)
@@ -149,6 +149,23 @@ class LoginForm extends SpecialPage {
                $this->load();
                $this->setHeaders();
 
+               global $wgSecureLogin;
+               if (
+                       $this->mType !== 'signup' &&
+                       $wgSecureLogin &&
+                       WebRequest::detectProtocol() !== 'https'
+               ) {
+                       $title = $this->getFullTitle();
+                       $query = array(
+                               'returnto' => $this->mReturnTo,
+                               'returntoquery' => $this->mReturnToQuery,
+                               'wpStickHTTPS' => $this->mStickHTTPS
+                       );
+                       $url = $title->getFullURL( $query, false, PROTO_HTTPS );
+                       $this->getOutput()->redirect( $url );
+                       return;
+               }
+
                if ( $par == 'signup' ) { # Check for [[Special:Userlogin/signup]]
                        $this->mType = 'signup';
                }
@@ -721,6 +738,7 @@ class LoginForm extends SpecialPage {
 
                switch ( $this->authenticateUserData() ) {
                        case self::SUCCESS:
+                               global $wgSecureLogin;
                                # We've verified now, update the real record
                                $user = $this->getUser();
                                if( (bool)$this->mRemember != (bool)$user->getOption( 'rememberpassword' ) ) {
@@ -729,7 +747,12 @@ class LoginForm extends SpecialPage {
                                } else {
                                        $user->invalidateCache();
                                }
-                               $user->setCookies();
+
+                               if( $wgSecureLogin && !$this->mStickHTTPS ) {
+                                       $user->setCookies( null, false );
+                               } else {
+                                       $user->setCookies();
+                               }
                                self::clearLoginToken();
 
                                // Reset the throttle
@@ -962,14 +985,19 @@ class LoginForm extends SpecialPage {
                        $returnToTitle = Title::newMainPage();
                }
 
+               if ( $wgSecureLogin && !$this->mStickHTTPS ) {
+                       $options = array( 'http' );
+                       $proto = PROTO_HTTP;
+               } else {
+                       $options = array( 'https' );
+                       $proto = PROTO_HTTPS;
+               }
+
                if ( $type == 'successredirect' ) {
-                       $redirectUrl = $returnToTitle->getFullURL( $returnToQuery );
-                       if( $wgSecureLogin && !$this->mStickHTTPS ) {
-                               $redirectUrl = preg_replace( '/^https:/', 'http:', $redirectUrl );
-                       }
+                       $redirectUrl = $returnToTitle->getFullURL( $returnToQuery, false, $proto );
                        $this->getOutput()->redirect( $redirectUrl );
                } else {
-                       $this->getOutput()->addReturnTo( $returnToTitle, $returnToQuery );
+                       $this->getOutput()->addReturnTo( $returnToTitle, $returnToQuery, null, $options );
                }
        }
 
index fbc2c93..4e5b6bf 100644 (file)
@@ -83,7 +83,7 @@ class SpecialVersion extends SpecialPage {
                $ret = Xml::element( 'h2', array( 'id' => 'mw-version-license' ), wfMessage( 'version-license' )->text() );
 
                // This text is always left-to-right.
-               $ret .= '<div>';
+               $ret .= '<div class="plainlinks">';
                $ret .= "__NOTOC__
                " . self::getCopyrightAndAuthorList() . "\n
                " . wfMessage( 'version-license-info' )->text();
@@ -109,7 +109,9 @@ class SpecialVersion extends SpecialPage {
                        'Roan Kattouw', 'Trevor Parscal', 'Bryan Tong Minh', 'Sam Reed',
                        'Victor Vasiliev', 'Rotem Liss', 'Platonides', 'Antoine Musso',
                        'Timo Tijhof',
-                       wfMessage( 'version-poweredby-others' )->text()
+                       '[{{SERVER}}{{SCRIPTPATH}}/CREDITS ' .
+                       wfMessage( 'version-poweredby-others' )->text() .
+                       ']'
                );
 
                return wfMessage( 'version-poweredby-credits', date( 'Y' ),
@@ -136,7 +138,7 @@ class SpecialVersion extends SpecialPage {
                wfRunHooks( 'SoftwareInfo', array( &$software ) );
 
                $out = Xml::element( 'h2', array( 'id' => 'mw-version-software' ), wfMessage( 'version-software' )->text() ) .
-                          Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-software' ) ) .
+                          Xml::openElement( 'table', array( 'class' => 'wikitable plainlinks', 'id' => 'sv-software' ) ) .
                                "<tr>
                                        <th>" . wfMessage( 'version-software-product' )->text() . "</th>
                                        <th>" . wfMessage( 'version-software-version' )->text() . "</th>
@@ -327,7 +329,7 @@ class SpecialVersion extends SpecialPage {
                wfRunHooks( 'SpecialVersionExtensionTypes', array( &$this, &$extensionTypes ) );
 
                $out = Xml::element( 'h2', array( 'id' => 'mw-version-ext' ), $this->msg( 'version-extensions' )->text() ) .
-                       Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-ext' ) );
+                       Xml::openElement( 'table', array( 'class' => 'wikitable plainlinks', 'id' => 'sv-ext' ) );
 
                // Make sure the 'other' type is set to an array.
                if ( !array_key_exists( 'other', $wgExtensionCredits ) ) {
@@ -760,7 +762,7 @@ class SpecialVersion extends SpecialPage {
                );
 
                $out = Html::element( 'h2', array( 'id' => 'mw-version-entrypoints' ), $this->msg( 'version-entrypoints' )->text() ) .
-                       Html::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'mw-version-entrypoints-table' ) ) .
+                       Html::openElement( 'table', array( 'class' => 'wikitable plainlinks', 'id' => 'mw-version-entrypoints-table' ) ) .
                        Html::openElement( 'tr' ) .
                        Html::element( 'th', array(), $this->msg( 'version-entrypoints-header-entrypoint' )->text() ) .
                        Html::element( 'th', array(), $this->msg( 'version-entrypoints-header-url' )->text() ) .
index 7673305..dec123d 100644 (file)
@@ -30,7 +30,10 @@ class WantedPagesPage extends WantedQueryPage {
        
        function __construct( $name = 'Wantedpages' ) {
                parent::__construct( $name );
-               $this->mIncludable = true;
+       }
+
+       function isIncludable() {
+               return true;
        }
 
        function execute( $par ) {
index a3f6a38..182992a 100644 (file)
@@ -25,8 +25,6 @@
  * @defgroup Templates Templates
  */
 
-if( !defined( 'MEDIAWIKI' ) ) die( -1 );
-
 /**
  * HTML template for Special:Userlogin form
  * @ingroup Templates
index c11d719..7f430c5 100644 (file)
@@ -61,6 +61,8 @@ class UploadFromUrl extends UploadBase {
 
        /**
         * Checks whether the URL is for an allowed host
+        * The domains in the whitelist can include wildcard characters (*) in place
+        * of any of the domain levels, e.g. '*.flickr.com' or 'upload.*.gov.uk'.
         *
         * @param $url string
         * @return bool
@@ -76,10 +78,28 @@ class UploadFromUrl extends UploadBase {
                }
                $valid = false;
                foreach( $wgCopyUploadsDomains as $domain ) {
+                       // See if the domain for the upload matches this whitelisted domain
+                       $whitelistedDomainPieces = explode( '.', $domain );
+                       $uploadDomainPieces = explode( '.', $parsedUrl['host'] );
+                       if ( count( $whitelistedDomainPieces ) === count( $uploadDomainPieces ) ) {
+                               $valid = true;
+                               // See if all the pieces match or not (excluding wildcards)
+                               foreach ( $whitelistedDomainPieces as $index => $piece ) {
+                                       if ( $piece !== '*' && $piece !== $uploadDomainPieces[$index] ) {
+                                               $valid = false;
+                                       }
+                               }
+                               if ( $valid ) {
+                                       // We found a match, so quit comparing against the list
+                                       break;
+                               }
+                       }
+                       /* Non-wildcard test
                        if ( $parsedUrl['host'] === $domain ) {
                                $valid = true;
                                break;
                        }
+                       */
                }
                return $valid;
        }
@@ -207,9 +227,14 @@ class UploadFromUrl extends UploadBase {
                $this->mRemoveTempFile = true;
                $this->mFileSize = 0;
 
-               $req = MWHttpRequest::factory( $this->mUrl, array(
+               $options = array(
                        'followRedirects' => true
-               ) );
+               );
+               global $wgCopyUploadProxy;
+               if ( $wgCopyUploadProxy !== false ) {
+                       $options['proxy'] = $wgCopyUploadProxy;
+               }
+               $req = MWHttpRequest::factory( $this->mUrl, $options );
                $req->setCallback( array( $this, 'saveTempFileChunk' ) );
                $status = $req->execute();
 
index c7fd23a..bbd9c44 100644 (file)
@@ -361,14 +361,11 @@ class UploadStash {
 
                $dbw = $this->repo->getMasterDb();
 
-               // this gets its own transaction since it's called serially by the cleanupUploadStash maintenance script
-               $dbw->begin( __METHOD__ );
                $dbw->delete(
                        'uploadstash',
                        array( 'us_key' => $key ),
                        __METHOD__
                );
-               $dbw->commit( __METHOD__ );
 
                // TODO: look into UnregisteredLocalFile and find out why the rv here is sometimes wrong (false when file was removed)
                // for now, ignore.
index 40d1f36..e118e72 100644 (file)
@@ -48,7 +48,7 @@ class FakeConverter {
        /**
         * @var Language
         */
-       var $mLang;
+       public $mLang;
        function __construct( $langobj ) { $this->mLang = $langobj; }
        function autoConvertToAllVariants( $text ) { return array( $this->mLang->getCode() => $text ); }
        function convert( $t ) { return $t; }
@@ -77,21 +77,21 @@ class Language {
        /**
         * @var LanguageConverter
         */
-       var $mConverter;
+       public $mConverter;
 
-       var $mVariants, $mCode, $mLoaded = false;
-       var $mMagicExtensions = array(), $mMagicHookDone = false;
+       public $mVariants, $mCode, $mLoaded = false;
+       public $mMagicExtensions = array(), $mMagicHookDone = false;
        private $mHtmlCode = null;
 
-       var $dateFormatStrings = array();
-       var $mExtendedSpecialPageAliases;
+       public $dateFormatStrings = array();
+       public $mExtendedSpecialPageAliases;
 
        protected $namespaceNames, $mNamespaceIds, $namespaceAliases;
 
        /**
         * ReplacementArray object caches
         */
-       var $transformData = array();
+       public $transformData = array();
 
        /**
         * @var LocalisationCache
index 8b7d6cb..56b885f 100644 (file)
@@ -47,28 +47,28 @@ class LanguageConverter {
                'zh',
        );
 
-       var $mMainLanguageCode;
-       var $mVariants, $mVariantFallbacks, $mVariantNames;
-       var $mTablesLoaded = false;
-       var $mTables;
+       public $mMainLanguageCode;
+       public $mVariants, $mVariantFallbacks, $mVariantNames;
+       public $mTablesLoaded = false;
+       public $mTables;
        // 'bidirectional' 'unidirectional' 'disable' for each variant
-       var $mManualLevel;
+       public $mManualLevel;
 
        /**
         * @var String: memcached key name
         */
-       var $mCacheKey;
-
-       var $mLangObj;
-       var $mFlags;
-       var $mDescCodeSep = ':', $mDescVarSep = ';';
-       var $mUcfirst = false;
-       var $mConvRuleTitle = false;
-       var $mURLVariant;
-       var $mUserVariant;
-       var $mHeaderVariant;
-       var $mMaxDepth = 10;
-       var $mVarSeparatorPattern;
+       public $mCacheKey;
+
+       public $mLangObj;
+       public $mFlags;
+       public $mDescCodeSep = ':', $mDescVarSep = ';';
+       public $mUcfirst = false;
+       public $mConvRuleTitle = false;
+       public $mURLVariant;
+       public $mUserVariant;
+       public $mHeaderVariant;
+       public $mMaxDepth = 10;
+       public $mVarSeparatorPattern;
 
        const CACHE_VERSION_KEY = 'VERSION 6';
 
@@ -1113,17 +1113,17 @@ class LanguageConverter {
  * @author fdcn <fdcn64@gmail.com>, PhiLiP <philip.npc@gmail.com>
  */
 class ConverterRule {
-       var $mText; // original text in -{text}-
-       var $mConverter; // LanguageConverter object
-       var $mRuleDisplay = '';
-       var $mRuleTitle = false;
-       var $mRules = '';// string : the text of the rules
-       var $mRulesAction = 'none';
-       var $mFlags = array();
-       var $mVariantFlags = array();
-       var $mConvTable = array();
-       var $mBidtable = array();// array of the translation in each variant
-       var $mUnidtable = array();// array of the translation in each variant
+       public $mText; // original text in -{text}-
+       public $mConverter; // LanguageConverter object
+       public $mRuleDisplay = '';
+       public $mRuleTitle = false;
+       public $mRules = '';// string : the text of the rules
+       public $mRulesAction = 'none';
+       public $mFlags = array();
+       public $mVariantFlags = array();
+       public $mConvTable = array();
+       public $mBidtable = array();// array of the translation in each variant
+       public $mUnidtable = array();// array of the translation in each variant
 
        /**
         * Constructor
index 8f158a4..da55c82 100644 (file)
   * These determine things like interwikis, language selectors, and so on.
   * Safe to change without running scripts on the respective sites.
   *
+  * \xE2\x80\x8E is the left-to-right marker and
+  * \xE2\x80\x8F is the right-to-left marker.
+  * They are required for ensuring the correct display of brackets in
+  * mixed rtl/ltr environment.
+  *
   * @ingroup Language
   */
 /* private */ $coreLanguageNames = array(
@@ -56,8 +61,8 @@
        'bcc' => 'بلوچی مکرانی', # Southern Balochi
        'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
        'be' => 'беларуская', #  Belarusian normative
-       'be-tarask' => "\xE2\x80\xAAбеларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography
-       'be-x-old' => "\xE2\x80\xAAбеларуская (тарашкевіца)\xE2\x80\xAC",  # Belarusian in Taraskievica orthography; compat link
+       'be-tarask' => "беларуская (тарашкевіца)\xE2\x80\x8E",     # Belarusian in Taraskievica orthography
+       'be-x-old' => "беларуская (тарашкевіца)\xE2\x80\x8E",      # Belarusian in Taraskievica orthography; compat link
        'bg' => 'български',   # Bulgarian
        'bh' => 'भोजपुरी',        # Bihari macro language. Falls back to Bhojpuri (bho). The name actually says "Bhojpuri".
        'bho' => 'भोजपुरी',       # Bhojpuri
@@ -87,8 +92,8 @@
        'cps' => 'Capiceño', # Capiznon
        'cr' => 'Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ',                # Cree
        'crh' => 'qırımtatarca',   # Crimean Tatar (multiple scripts - defaults to Latin)
-       'crh-latn' => "\xE2\x80\xAAqırımtatarca (Latin)\xE2\x80\xAC",       # Crimean Tatar (Latin)
-       'crh-cyrl' => "\xE2\x80\xAAкъырымтатарджа (Кирилл)\xE2\x80\xAC",       # Crimean Tatar (Cyrillic)
+       'crh-latn' => "qırımtatarca (Latin)\xE2\x80\x8E",       # Crimean Tatar (Latin)
+       'crh-cyrl' => "къырымтатарджа (Кирилл)\xE2\x80\x8E",       # Crimean Tatar (Cyrillic)
        'cs' => 'česky',       # Czech
        'csb' => 'kaszëbsczi', # Cassubian
        'cu' => 'словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',      # Old Church Slavonic (ancient language)
        'de' => 'Deutsch',              # German ("Du")
        'de-at' => 'Österreichisches Deutsch',         # Austrian German
        'de-ch' => 'Schweizer Hochdeutsch',             # Swiss Standard German
-       'de-formal' => "\xE2\x80\xAADeutsch (Sie-Form)\xE2\x80\xAC",            # German - formal address ("Sie")
+       'de-formal' => "Deutsch (Sie-Form)\xE2\x80\x8E",                # German - formal address ("Sie")
        'diq' => 'Zazaki',              # Zazaki
        'dsb' => 'dolnoserbski', # Lower Sorbian
        'dtp' => 'Dusun Bundu-liwan', # Central Dusun
        'ga' => 'Gaeilge',              # Irish
        'gag' => 'Gagauz',              # Gagauz
        'gan' => '贛語',              # Gan (multiple scripts - defaults to Traditional)
-       'gan-hans' => "\xE2\x80\xAA赣语(简体)\xE2\x80\xAC",     # Gan (Simplified Han)
-       'gan-hant' => "\xE2\x80\xAA贛語(繁體)\xE2\x80\xAC",     # Gan (Traditional Han)
+       'gan-hans' => "赣语(简体)\xE2\x80\x8E", # Gan (Simplified Han)
+       'gan-hant' => "贛語(繁體)\xE2\x80\x8E", # Gan (Traditional Han)
        'gd' => 'Gàidhlig',    # Scots Gaelic
        'gl' => 'galego',               # Galician
        'glk' => 'گیلکی',  # Gilaki
        'gsw' => 'Alemannisch', # Alemannic
        'gu' => 'ગુજરાતી',        # Gujarati
        'gv' => 'Gaelg',                # Manx
-       'ha' => 'هَوُسَ', # Hausa
+       'ha' => 'Hausa',        # Hausa
        'hak' => 'Hak-kâ-fa',  # Hakka
        'haw' => 'Hawai`i',             # Hawaiian
        'he' => 'עברית',   # Hebrew
        'kiu' => 'Kırmancki',  # Kirmanjki
        'kj' => 'Kwanyama',     # Kwanyama
        'kk' => 'қазақша',       # Kazakh (multiple scripts - defaults to Cyrillic)
-       'kk-arab' => "\xE2\x80\xABقازاقشا (تٴوتە)\xE2\x80\xAC",     # Kazakh Arabic
-       'kk-cyrl' => "\xE2\x80\xAAқазақша (кирил)\xE2\x80\xAC",     # Kazakh Cyrillic
-       'kk-latn' => "\xE2\x80\xAAqazaqşa (latın)\xE2\x80\xAC",       # Kazakh Latin
-       'kk-cn' => "\xE2\x80\xABقازاقشا (جۇنگو)\xE2\x80\xAC",       # Kazakh (China)
-       'kk-kz' => "\xE2\x80\xAAқазақша (Қазақстан)\xE2\x80\xAC",       # Kazakh (Kazakhstan)
-       'kk-tr' => "\xE2\x80\xAAqazaqşa (Türkïya)\xE2\x80\xAC",      # Kazakh (Turkey)
+       'kk-arab' => "قازاقشا (تٴوتە)\xE2\x80\x8F", # Kazakh Arabic
+       'kk-cyrl' => "қазақша (кирил)\xE2\x80\x8E", # Kazakh Cyrillic
+       'kk-latn' => "qazaqşa (latın)\xE2\x80\x8E",   # Kazakh Latin
+       'kk-cn' => "قازاقشا (جۇنگو)\xE2\x80\x8F",   # Kazakh (China)
+       'kk-kz' => "қазақша (Қазақстан)\xE2\x80\x8E",   # Kazakh (Kazakhstan)
+       'kk-tr' => "qazaqşa (Türkïya)\xE2\x80\x8E",  # Kazakh (Turkey)
        'kl' => 'kalaallisut',  # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
        'km' => 'ភាសាខ្មែរ',  # Khmer, Central
        'kn' => 'ಕನ್ನಡ',      # Kannada
        'ks-deva' => 'कॉशुर', # Kashmiri (Devanagari script)
        'ksh' => 'Ripoarisch',  # Ripuarian
        'ku'  => 'Kurdî',      # Kurdish (multiple scripts - defaults to Latin)
-       'ku-latn' => "\xE2\x80\xAAKurdî (latînî)\xE2\x80\xAC",       # Northern Kurdish (Latin script)
-       'ku-arab' => "\xE2\x80\xABكوردي (عەرەبی)\xE2\x80\xAC",       # Northern Kurdish (Arabic script) (falls back to ckb)
+       'ku-latn' => "Kurdî (latînî)\xE2\x80\x8E",   # Northern Kurdish (Latin script)
+       'ku-arab' => "كوردي (عەرەبی)\xE2\x80\x8F",   # Northern Kurdish (Arabic script) (falls back to ckb)
        'kv' => 'коми',     # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
        'kw' => 'kernowek',             # Cornish
        'ky' => 'Кыргызча',     # Kirghiz
        'nah' => 'Nāhuatl',            # Nahuatl, en:Wikipedia writes Nahuatlahtolli, while another form is Náhuatl
        'nan' => 'Bân-lâm-gú', # Min-nan -- (bug 8217) nan instead of zh-min-nan, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=n
        'nap' => 'Nnapulitano', # Neapolitan
-       'nb' => "\xE2\x80\xAAnorsk (bokmål)\xE2\x80\xAC",              # Norwegian (Bokmal)
+       'nb' => "norsk (bokmål)\xE2\x80\x8E",          # Norwegian (Bokmal)
        'nds' => 'Plattdüütsch',      # Low German ''or'' Low Saxon
        'nds-nl' => 'Nedersaksisch',    # Dutch Low Saxon
        'ne' => 'नेपाली',   # Nepali
        'ng' => 'Oshiwambo',            # Ndonga
        'niu' => 'Niuē',       # Niuean
        'nl' => 'Nederlands',   # Dutch
-       'nl-informal' => "\xE2\x80\xAANederlands (informeel)\xE2\x80\xAC",      # Dutch (informal address ("je"))
-       'nn' => "\xE2\x80\xAAnorsk (nynorsk)\xE2\x80\xAC",      # Norwegian (Nynorsk)
-       'no' => "\xE2\x80\xAAnorsk (bokmål)\xE2\x80\xAC",              # Norwegian (falls back to nb).
+       'nl-informal' => "Nederlands (informeel)\xE2\x80\x8E",  # Dutch (informal address ("je"))
+       'nn' => "norsk (nynorsk)\xE2\x80\x8E",  # Norwegian (Nynorsk)
+       'no' => "norsk (bokmål)\xE2\x80\x8E",          # Norwegian (falls back to nb).
        'nov' => 'Novial',              # Novial
        'nrm' => 'Nouormand',   # Norman
        'nso' => 'Sesotho sa Leboa',    # Northern Sotho
        'so' => 'Soomaaliga',   # Somali
        'sq' => 'shqip',                # Albanian
        'sr' => 'српски / srpski',        # Serbian (multiple scripts - defaults to Cyrillic)
-       'sr-ec' => "\xE2\x80\xAAсрпски (ћирилица)\xE2\x80\xAC",   # Serbian Cyrillic ekavian
-       'sr-el' => "\xE2\x80\xAAsrpski (latinica)\xE2\x80\xAC", # Serbian Latin ekavian
+       'sr-ec' => "српски (ћирилица)\xE2\x80\x8E",       # Serbian Cyrillic ekavian
+       'sr-el' => "srpski (latinica)\xE2\x80\x8E",     # Serbian Latin ekavian
        'srn' => 'Sranantongo',         # Sranan Tongo
        'ss' => 'SiSwati',              # Swati
        'st' => 'Sesotho',              # Southern Sotho
        'zea' => 'Zeêuws',     # Zeeuws/Zeaws
        'zh' => '中文',                                               # (Zhōng Wén) - Chinese
        'zh-classical' => '文言',                     # Classical Chinese/Literary Chinese -- (see bug 8217)
-       'zh-cn' => "\xE2\x80\xAA中文(中国大陆)\xE2\x80\xAC",  # Chinese (PRC)
-       'zh-hans' => "\xE2\x80\xAA中文(简体)\xE2\x80\xAC",      # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
-       'zh-hant' => "\xE2\x80\xAA中文(繁體)\xE2\x80\xAC",      # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
-       'zh-hk' => "\xE2\x80\xAA中文(香港)\xE2\x80\xAC",        # Chinese (Hong Kong)
+       'zh-cn' => "中文(中国大陆)\xE2\x80\x8E",      # Chinese (PRC)
+       'zh-hans' => "中文(简体)\xE2\x80\x8E",  # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
+       'zh-hant' => "中文(繁體)\xE2\x80\x8E",  # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
+       'zh-hk' => "中文(香港)\xE2\x80\x8E",    # Chinese (Hong Kong)
        'zh-min-nan' => 'Bân-lâm-gú',                                # Min-nan -- (see bug 8217)
-       'zh-mo' => "\xE2\x80\xAA中文(澳門)\xE2\x80\xAC",        # Chinese (Macau)
-       'zh-my' => "\xE2\x80\xAA中文(马来西亚)\xE2\x80\xAC",  # Chinese (Malaysia)
-       'zh-sg' => "\xE2\x80\xAA中文(新加坡)\xE2\x80\xAC",     # Chinese (Singapore)
-       'zh-tw' => "\xE2\x80\xAA中文(台灣)\xE2\x80\xAC",        # Chinese (Taiwan)
+       'zh-mo' => "中文(澳門)\xE2\x80\x8E",    # Chinese (Macau)
+       'zh-my' => "中文(马来西亚)\xE2\x80\x8E",      # Chinese (Malaysia)
+       'zh-sg' => "中文(新加坡)\xE2\x80\x8E", # Chinese (Singapore)
+       'zh-tw' => "中文(台灣)\xE2\x80\x8E",    # Chinese (Taiwan)
        'zh-yue' => '粵語',                                   # Cantonese -- (see bug 8217)
        'zu' => 'isiZulu'               # Zulu
 );
index 9bac5d7..7402b08 100644 (file)
@@ -38,7 +38,7 @@ require_once( __DIR__ . '/../LanguageConverter.php' );
 class IuConverter extends LanguageConverter {
 
        protected $mDoContentConvert;
-       var $mToLatin = array(
+       public $mToLatin = array(
                'ᐦ' => 'h',   'ᐃ' => 'i',    'ᐄ' => 'ii',    'ᐅ' => 'u',    'ᐆ' => 'uu',    'ᐊ' => 'a',    'ᐋ' => 'aa',
                'ᑉ' => 'p',   'ᐱ' => 'pi',   'ᐲ' => 'pii',   'ᐳ' => 'pu',   'ᐴ' => 'puu',   'ᐸ' => 'pa',   'ᐹ' => 'paa',
                'ᑦ' => 't',   'ᑎ' => 'ti',   'ᑏ' => 'tii',   'ᑐ' => 'tu',   'ᑑ' => 'tuu',   'ᑕ' => 'ta',   'ᑖ' => 'taa',
@@ -58,7 +58,7 @@ class IuConverter extends LanguageConverter {
                'ᖦ' => 'ɫ',   'ᖠ' => 'ɫi',    'ᖡ' => 'ɫii',   'ᖢ' => 'ɫu',    'ᖣ' => 'ɫuu',   'ᖤ' => 'ɫa',    'ᖥ' => 'ɫaa',
        );
 
-       var $mUpperToLowerCaseLatin = array(
+       public $mUpperToLowerCaseLatin = array(
                'A' => 'a',     'B' => 'b',     'C' => 'c',     'D' => 'd',     'E' => 'e',
                'F' => 'f',     'G' => 'g',     'H' => 'h',     'I' => 'i',     'J' => 'j',
                'K' => 'k',     'L' => 'l',     'M' => 'm',     'N' => 'n',     'O' => 'o',
@@ -67,7 +67,7 @@ class IuConverter extends LanguageConverter {
                'Z' => 'z',
        );
 
-       var $mToSyllabics = array(
+       public $mToSyllabics = array(
                'h' => 'ᐦ',   'i' => 'ᐃ',    'ii' => 'ᐄ',    'u' => 'ᐅ',    'uu' => 'ᐆ',    'a' => 'ᐊ',    'aa' => 'ᐋ',
                'p' => 'ᑉ',   'pi' => 'ᐱ',   'pii' => 'ᐲ',   'pu' => 'ᐳ',   'puu' => 'ᐴ',   'pa' => 'ᐸ',   'paa' => 'ᐹ',
                't' => 'ᑦ',   'ti' => 'ᑎ',   'tii' => 'ᑏ',   'tu' => 'ᑐ',   'tuu' => 'ᑑ',   'ta' => 'ᑕ',   'taa' => 'ᑖ',
index 02ec648..d60f083 100644 (file)
@@ -30,7 +30,7 @@ require_once( __DIR__ . '/LanguageKu_ku.php' );
  * @ingroup Language
  */
 class KuConverter extends LanguageConverter {
-       var $mArabicToLatin = array(
+       public $mArabicToLatin = array(
                'ب' => 'b', 'ج' => 'c', 'چ' => 'ç', 'د' => 'd', 'ف' => 'f', 'گ' => 'g', 'ھ' => 'h',
                'ہ' => 'h', 'ه' => 'h', 'ح' => 'h', 'ژ' => 'j', 'ك' => 'k', 'ک' => 'k', 'ل' => 'l',
                'م' => 'm', 'ن' => 'n', 'پ' => 'p', 'ق' => 'q', 'ر' => 'r', 'س' => 's', 'ش' => 'ş',
@@ -72,7 +72,7 @@ class KuConverter extends LanguageConverter {
                '٩' => '9', # &#x0669;
        );
 
-       var $mLatinToArabic = array(
+       public $mLatinToArabic = array(
                'b' => 'ب', 'c' => 'ج', 'ç' => 'چ', 'd' => 'د', 'f' => 'ف', 'g' => 'گ',
                'h' => 'ه', 'j' => 'ژ', 'k' => 'ک', 'l' => 'ل',
                'm' => 'م', 'n' => 'ن', 'p' => 'پ', 'q' => 'ق', 'r' => 'ر', 's' => 'س', 'ş' => 'ش',
index 27c5d64..36f3407 100644 (file)
@@ -39,7 +39,7 @@ class ShiConverter extends LanguageConverter {
 
        protected $mDoContentConvert;
 
-       var $mToLatin = array(
+       public $mToLatin = array(
                'ⴰ' => 'a', 'ⴱ' => 'b', 'ⴳ' => 'g', 'ⴷ' => 'd', 'ⴹ' => 'ḍ', 'ⴻ' => 'e',
                'ⴼ' => 'f', 'ⴽ' => 'k', 'ⵀ' => 'h', 'ⵃ' => 'ḥ', 'ⵄ' => 'ε', 'ⵅ' => 'x',
                'ⵇ' => 'q', 'ⵉ' => 'i', 'ⵊ' => 'j',  'ⵍ' => 'l', 'ⵎ' => 'm', 'ⵏ' => 'n',
@@ -48,7 +48,7 @@ class ShiConverter extends LanguageConverter {
                'ⵥ' => 'ẓ', 'ⵯ' => 'ʷ', 'ⵖ' => 'ɣ', 'ⵠ' => 'v', 'ⵒ' => 'p',
        );
 
-       var $mUpperToLowerCaseLatin = array(
+       public $mUpperToLowerCaseLatin = array(
                'A' => 'a',     'B' => 'b',     'C' => 'c',     'D' => 'd',     'E' => 'e',
                'F' => 'f',     'G' => 'g',     'H' => 'h',     'I' => 'i',     'J' => 'j',
                'K' => 'k',     'L' => 'l',     'M' => 'm',     'N' => 'n',     'O' => 'o',
@@ -57,7 +57,7 @@ class ShiConverter extends LanguageConverter {
                'Z' => 'z', 'Ɣ' => 'ɣ',
        );
 
-       var $mToTifinagh = array(
+       public $mToTifinagh = array(
                'a' => 'ⴰ', 'b' => 'ⴱ', 'g' => 'ⴳ', 'd' => 'ⴷ', 'ḍ' => 'ⴹ', 'e' => 'ⴻ',
                'f' => 'ⴼ', 'k' => 'ⴽ', 'h' => 'ⵀ', 'ḥ' => 'ⵃ', 'ε' => 'ⵄ', 'x' => 'ⵅ',
                'q' => 'ⵇ', 'i' => 'ⵉ', 'j' => 'ⵊ',  'l' => 'ⵍ', 'm' => 'ⵎ', 'n' => 'ⵏ',
index 4b799f2..5f1110d 100644 (file)
@@ -35,7 +35,7 @@ require_once( __DIR__ . '/LanguageSr_el.php' );
  * @ingroup Language
  */
 class SrConverter extends LanguageConverter {
-       var $mToLatin = array(
+       public $mToLatin = array(
                'а' => 'a', 'б' => 'b',  'в' => 'v', 'г' => 'g',  'д' => 'd',
                'ђ' => 'đ', 'е' => 'e',  'ж' => 'ž', 'з' => 'z',  'и' => 'i',
                'ј' => 'j', 'к' => 'k',  'л' => 'l', 'љ' => 'lj', 'м' => 'm',
@@ -51,7 +51,7 @@ class SrConverter extends LanguageConverter {
                'Х' => 'H', 'Ц' => 'C',  'Ч' => 'Č', 'Џ' => 'Dž', 'Ш' => 'Š',
        );
 
-       var $mToCyrillics = array(
+       public $mToCyrillics = array(
                'a' => 'а', 'b'  => 'б', 'c' => 'ц', 'č' => 'ч', 'ć'  => 'ћ',
                'd' => 'д', 'dž' => 'џ', 'đ' => 'ђ', 'e' => 'е', 'f'  => 'ф',
                'g' => 'г', 'h'  => 'х', 'i' => 'и', 'j' => 'ј', 'k'  => 'к',
index bd69e30..d6ddf10 100644 (file)
@@ -27,7 +27,7 @@ require_once( __DIR__ . '/../LanguageConverter.php' );
  * @ingroup Language
  */
 class UzConverter extends LanguageConverter {
-       var $toLatin = array(
+       public $toLatin = array(
                'а' => 'a', 'А' => 'A',
                'б' => 'b', 'Б' => 'B',
                'д' => 'd', 'Д' => 'D',
@@ -65,7 +65,7 @@ class UzConverter extends LanguageConverter {
                'ъ' => 'ʼ',
        );
 
-       var $toCyrillic = array(
+       public $toCyrillic = array(
                'a' => 'а', 'A' => 'А',
                'b' => 'б', 'B' => 'Б',
                'd' => 'д', 'D' => 'Д',
index 65e27ca..0a5f059 100644 (file)
                        <pluralRule count="two">n mod 100 is 2</pluralRule>
                        <pluralRule count="few">n mod 100 in 3..4</pluralRule>
                </pluralRules>
+               <!-- Copied from "be" -->
+               <pluralRules locales="be-tarask">
+                       <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
+                       <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
+                       <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
+                       <!-- others are fractions -->
+               </pluralRules>
                <pluralRules locales="cu">
                        <pluralRule count="one">n mod 10 is 1</pluralRule>
                        <pluralRule count="two">n mod 10 is 2</pluralRule>
index e763f58..fa1d906 100644 (file)
@@ -693,8 +693,6 @@ Alasan-alasan nyan hana geupeureumeuen.",
 'search-interwiki-caption' => 'Buët la’én',
 'search-interwiki-default' => 'Hasé $1:',
 'search-interwiki-more' => '(lom)',
-'search-mwsuggest-enabled' => 'ngon saran',
-'search-mwsuggest-disabled' => 'hana saran',
 'searchrelated' => 'meusambat',
 'searchall' => 'ban dum',
 'showingresultsheader' => "{{PLURAL:$5|Hase '''$1''' nibak '''$3'''|Hase '''$1 - $2''' nibak '''$3'''}} keu '''$4'''",
@@ -1208,4 +1206,6 @@ Data nyang la'én eunteuk teupeusom keudroë.
 # Special:Tags
 'tag-filter' => 'Filter [[Special:Tags|tag]]:',
 
+# Unknown messages
+'searchsuggest-search' => 'Mita',
 );
index 3756dfd..579568c 100644 (file)
@@ -1229,8 +1229,6 @@ Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} s
 'search-interwiki-caption' => 'Suster projekte',
 'search-interwiki-default' => '$1 resultate:',
 'search-interwiki-more' => '(meer)',
-'search-mwsuggest-enabled' => 'met voorstelle',
-'search-mwsuggest-disabled' => 'geen voorstelle',
 'search-relatedarticle' => 'Verwante',
 'mwsuggest-disable' => 'Deaktiveer AJAX-voorstelle',
 'searcheverything-enable' => 'Soek in alle naamruimtes',
@@ -2866,7 +2864,6 @@ Die lêer is slegs gedeeltelik opgelaai.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript toetsing',
-'javascripttest-disabled' => 'Die funksie is nie op hierdie wiki geaktiveer nie.',
 'javascripttest-title' => 'Voer toetse uit vir $1',
 'javascripttest-pagetext-noframework' => 'Hierdie bladsy is gereserveer vir die uitvoer van JavaScript-toetse.',
 'javascripttest-pagetext-unknownframework' => 'Onbekende toetsraamwerk "$1".',
@@ -3876,4 +3873,7 @@ Anders kan u die eenvoudige vorm hieronder gebruik. U kommentaar sal by die blad
 'duration-centuries' => '$1 {{PLURAL:$1|eeu|eeue}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'bevat...',
+'searchsuggest-search' => 'Soek',
 );
index 9a1f89d..6122c44 100644 (file)
@@ -929,8 +929,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'search-interwiki-caption' => 'Projektet simotra',
 'search-interwiki-default' => '$1 rezultate:',
 'search-interwiki-more' => '(mâ shumë)',
-'search-mwsuggest-enabled' => 'me parahedhje',
-'search-mwsuggest-disabled' => "s'ka parahedhje",
 'search-relatedarticle' => 'Të ngjajshme',
 'mwsuggest-disable' => 'Deaktivizo sygjerimet me AJAX',
 'searcheverything-enable' => 'Kërko në tâna hapësinat',
@@ -1621,4 +1619,7 @@ Tjerat kanë me mbetë të mshefuna.
 'revdelete-restricted' => 'u vendosën kufizime për administruesit',
 'revdelete-unrestricted' => 'u hoqën kufizimet për administruesit',
 
+# Unknown messages
+'searchsuggest-containing' => 'përmban ...',
+'searchsuggest-search' => 'Kërkim',
 );
index 22468f8..cd85981 100644 (file)
@@ -197,7 +197,7 @@ $messages = array(
 'vector-action-unprotect' => 'አለመቆለፍ',
 'vector-view-create' => 'አዲስ ፍጠር',
 'vector-view-edit' => 'አርም',
-'vector-view-history' => ' ታሪኩን አሳይ',
+'vector-view-history' => 'ታሪኩን አሳይ',
 'vector-view-view' => 'ለማንበብ',
 'vector-view-viewsource' => 'ጥሬ ኮድ ለመመልከት',
 
@@ -736,8 +736,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'search-interwiki-caption' => 'ተዛማጅ ስራዎች',
 'search-interwiki-default' => '$1 ውጤቶች፦',
 'search-interwiki-more' => '(ተጨማሪ)',
-'search-mwsuggest-enabled' => 'ከ አማራጮች ጋር',
-'search-mwsuggest-disabled' => 'አማራጭ አልተገኘለትም',
 'search-relatedarticle' => 'የተዛመደ',
 'searchrelated' => 'የተዛመደ',
 'searchall' => 'ሁሉ',
@@ -946,6 +944,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'recentchanges-legend' => 'የቅርብ ለውጥ አማራጮች፦',
 'recentchanges-summary' => 'በዚሁ ገጽ ላይ በቅርብ ጊዜ የወጡ አዳዲስ ለውጦች ለመከታተል ይችላሉ።',
 'recentchanges-feed-description' => 'በዚህ ዊኪ ላይ በቅርብ ግዜ የተለወጠውን በዚሁ feed መከታተል ይችላሉ',
+'recentchanges-label-minor' => 'ይህ ለውጥ ጥቃቅን ነው።',
 'rcnote' => "ከ$5 $4 እ.ኤ.አ. {{PLURAL:$2|ባለፈው 1 ቀን|ባለፉት '''$2''' ቀኖች}} {{PLURAL:$1|የተደረገው '''1''' ለውጥ እታች ይገኛል|የተደረጉት '''$1''' መጨረሻ ለውጦች እታች ይገኛሉ}}።",
 'rcnotefrom' => "ከ'''$2''' ጀምሮ የተቀየሩት ገጾች (እስከ '''$1''' ድረስ) ክዚህ በታች ይታያሉ።",
 'rclistfrom' => '(ከ $1 ጀምሮ አዲስ ለውጦቹን ለማየት)',
@@ -2295,4 +2294,7 @@ $3
 'api-error-uploaddisabled' => 'ፋይል መላክ በዚህ ውኪ ላይ አልተፈቀደም።',
 'api-error-verification-error' => 'ይህ ፋይል የተበላሸ ወይም ትክክል ያልሆነ ቅጥያ ያለው ሊሆን ይችላል።',
 
+# Unknown messages
+'searchsuggest-containing' => 'በመጣጥፎች ይዘት ለመፈልግ...',
+'searchsuggest-search' => 'ፈልግ',
 );
index 293616c..52ad052 100644 (file)
@@ -1085,8 +1085,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'search-interwiki-caption' => 'Prochectos chermans',
 'search-interwiki-default' => '$1 resultaus:',
 'search-interwiki-more' => '(más)',
-'search-mwsuggest-enabled' => 'con socherencias',
-'search-mwsuggest-disabled' => 'garra socherencia',
 'search-relatedarticle' => 'Relacionato',
 'mwsuggest-disable' => "Desactivar as socherencias d'AJAX",
 'searcheverything-enable' => 'Mirar en totz os espacios de nombres',
@@ -2651,7 +2649,6 @@ Alce-lo en o suyo ordenador y cargue-lo aquí.",
 
 # JavaScriptTest
 'javascripttest' => 'Prebatinas de JavaScript',
-'javascripttest-disabled' => 'Ista función ye desactivata.',
 'javascripttest-title' => 'Fendo as prebas de $1',
 'javascripttest-pagetext-noframework' => 'Ista pachina ye reservada ta fer as prebas de JavaScrip.',
 'javascripttest-pagetext-unknownframework' => 'Bastida de prebas "$1" desconoixida.',
@@ -3672,4 +3669,7 @@ Si no, puet usar o siguient formulario. O suyo comentario será adhibiu a la pac
 'api-error-uploaddisabled' => 'As cargas de fichers son desactivadas en iste wiki.',
 'api-error-verification-error' => 'Iste fichero puede estar danyau, u tiene una extensión incorrecta.',
 
+# Unknown messages
+'searchsuggest-containing' => 'que contién...',
+'searchsuggest-search' => 'Mirar',
 );
index 6c4919e..7a42ebd 100644 (file)
@@ -568,8 +568,6 @@ folcliċum āgnunge oþþe ȝelīċum frēom horde (sēo $1 for āscungum).
 'search-interwiki-caption' => 'Sƿeostorƿeorc',
 'search-interwiki-default' => '$1 becymas:',
 'search-interwiki-more' => '(mā)',
-'search-mwsuggest-enabled' => 'mid teohhungum',
-'search-mwsuggest-disabled' => 'nān teohhunga',
 'searchrelated' => 'ȝesibbed',
 'searchall' => 'eall',
 'showingresults' => 'Īewan under oþ <b>$1</b> tōhīgunga onginnenda mid #<b>$2</b>.',
index 322ebc4..2660f29 100644 (file)
@@ -851,10 +851,11 @@ $1',
 'protectedpagetext' => 'هذه الصفحة تمت حمايتها لمنع التعديل.',
 'viewsourcetext' => 'يمكنك رؤية ونسخ مصدر هذه الصفحة:',
 'viewyourtext' => "يمكنك رؤية ونسخ مصدر ''' تعديلاتك ''' في هذه الصفحة:",
-'protectedinterface' => 'هذه الصفحة توفر نص الواجهة للبرنامج، وهي مقفلة لمنع التخريب.',
+'protectedinterface' => 'توفر هذه الصفحة نص الواجهة للبرنامج على هذا الويكي، وهي محمية لمنع سوء أستخدامها.
+لإضافة أو تغيير الترجمات لجميع مشاريع الويكي، رجاءً أستخدم [//translatewiki.net/ translatewiki.net]، مشروع الترجمة الخاص بميدياويكي.',
 'editinginterface' => "'''تحذير:''' أنت تقوم بتحرير صفحة تستخدم في الواجهة النصية للبرنامج.
-سوف تؤثر التغييرات على هذه الصفحة على مظهر واجهة المستخدم للمستخدمين الآخرين.
لترجمات، من فضلك استخدم مشروع ترجمة ميدياويكي [//translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
+سوف تؤثر التغييرات في هذه الصفحة على مظهر واجهة المستخدم للمستخدمين الآخرين على هذا الويكي.
إضافة أو تغيير الترجمات في جميع مشاريع الويكي، رجاءً استخدم [//translatewiki.net/ translatewiki.net]، مشروع الترجمة الخاص بميدياويكي.",
 'sqlhidden' => '(استعلام SQL مخفي)',
 'cascadeprotected' => 'تمت حماية هذه الصفحة من التعديل لأنها مدمجة في {{PLURAL:$1||الصفحة التالية، والتي|الصفحتين التاليتين، واللتين|الصفحات التالية، والتي}} تم استعمال خاصية "حماية الصفحات المدمجة" {{PLURAL:$1||بها|بهما|بها}}:
 $2',
@@ -1142,7 +1143,8 @@ $2
 يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى،
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} البحث في السجلات المتعلقة]،
 أو [{{fullurl:{{FULLPAGENAME}}|action=edit}} تعديل هذه الصفحة]</span>.',
-'noarticletext-nopermission' => 'لا يوجد حاليا أي نص في هذه الصفحة.يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى,أو <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} بحث السجلات المتصلة]</span>.',
+'noarticletext-nopermission' => 'لا يوجد حاليا أي نص في هذه الصفحة.
+يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى، أو <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} البحث في السجلات المتعلقة بها]</span>، لكنك لست مخولاً لإنشاء هذه الصفحة.',
 'missing-revision' => 'المراجعة #$1 من الصفحة المسماة "{{PAGENAME}}" غير موجودة.
 
 هذا يحدث عادة عن طريق اتباع وصلة تاريخ قديمة لصفحة تم حذفها.
@@ -1518,8 +1520,6 @@ $1",
 'search-interwiki-caption' => 'المشاريع الشقيقة',
 'search-interwiki-default' => '$1 نتيجة:',
 'search-interwiki-more' => '(المزيد)',
-'search-mwsuggest-enabled' => 'مع اقتراحات',
-'search-mwsuggest-disabled' => 'لا اقتراحات',
 'search-relatedarticle' => 'مرتبطة',
 'mwsuggest-disable' => 'عطل اقتراحات أجاكس',
 'searcheverything-enable' => 'ابحث في جميع النطاقات',
@@ -1618,7 +1618,7 @@ $1",
 'timezoneregion-indian' => 'المحيط الهندي',
 'timezoneregion-pacific' => 'المحيط الهادي',
 'allowemail' => 'مكن تلقي البريد الإلكتروني من المستخدمين الآخرين',
-'prefs-searchoptions' => 'Ø®Ù\8aارات Ø§Ù\84بحث',
+'prefs-searchoptions' => 'البحث',
 'prefs-namespaces' => 'أسماء النطاقات',
 'defaultns' => 'أو ابحث في هذه النطاقات:',
 'default' => 'افتراضي',
@@ -3175,7 +3175,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'اختبار جافاسكربت',
-'javascripttest-disabled' => 'هذه الخاصية معطلة.',
 'javascripttest-title' => 'تشغيل أختبارات $1',
 'javascripttest-pagetext-noframework' => 'هذه الصفحة محجوزة لإجراء أختبارات الجافا سكريبت.',
 'javascripttest-pagetext-unknownframework' => 'إطار اختبار غير معروف "$1".',
@@ -4380,4 +4379,7 @@ $5
 'duration-centuries' => '{{PLURAL: $1||قرن واحد|قرنان|$1 قرون|$1 قرنًا|$1 قرن}}',
 'duration-millennia' => '{{PLURAL: $1||ألفية واحدة|ألفيتان|$1 ألفيات|$1 ألفية}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'يحتوي...',
+'searchsuggest-search' => 'بحث',
 );
index 565c467..e26e5ae 100644 (file)
@@ -187,9 +187,12 @@ $messages = array(
 'category-empty' => "''ܗܢܐ ܣܕܪܐ ܗܫܐ ܠܝܬ ܒܗ ܦܐܬܬ̈ܐ ܐܘ ܡܝܕܝܐ.''",
 'hidden-categories' => '{{PLURAL:$1|ܣܕܪܐ ܛܘܫܝܐ|ܣܕܪ̈ܐ ܛܘܫܝܐ}}',
 'hidden-category-category' => 'ܣܕܪ̈ܐ ܛܘܫܝ̈ܐ',
+'category-subcat-count' => '{{PLURAL:$2|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ ܗܢܐ ܣܕܪܐ ܦܪܥܝܐ ܕܐܬܐ ܒܠܚܘܕ.|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ {{PLURAL:$1|ܣܕܪܐ ܦܪܥܝܐ ܕܐܬܐ|$1 ܣܕܪ̈ܐ ܦܪ̈ܥܝܐ ܕܐܬܝܢ}}، ܡܢ ܣܘܝܟܐ ܕ $2.}}',
 'category-subcat-count-limited' => 'ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ {{PLURAL:$1|ܣܕܪܐ ܦܪܥܝܐ ܗܢܐ|$1 ܣܕܪ̈ܐ ܦܪ̈ܥܝܐ ܗܠܝܢ}}.',
-'category-article-count' => '{{PLURAL:$2|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ ܦܐܬܐ ܗܕܐ ܒܠܚܘܕ.|ܐܝܬ {{PLURAL:$1|ܦܐܬܐ|$1 ܦܐܬܬ̈ܐ}} ܒܣܕܪܐ ܗܢܐ، ܡܢ $2 ܟܠܢܐܝܬ.}}',
+'category-article-count' => '{{PLURAL:$2|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ ܦܐܬܐ ܗܕܐ ܒܠܚܘܕ.|ܐܝܬ {{PLURAL:$1|ܦܐܬܐ|$1 ܦܐܬܬ̈ܐ}} ܒܣܕܪܐ ܗܢܐ، ܡܢ ܣܘܝܟܐ ܕ$2.}}',
 'category-article-count-limited' => '{{PLURAL:$1|ܦܐܬܐ ܗܕܐ|$1 ܦܐܬܬ̈ܐ ܗܠܝܢ}} ܒܣܕܪܐ ܗܢܐ.',
+'category-file-count' => '{{PLURAL:$2|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ ܠܦܦܐ ܗܢܐ ܒܠܚܘܕ.|{{PLURAL:$1|ܠܦܦܐ ܕܐܬܐ ܐܝܬܘܗܝ|$1 ܠܦܦ̈ܐ ܕܐܬܝܢ ܐܝܬܝܗܘܢ}} ܒܣܕܪܐ ܗܢܐ، ܡܢ ܣܘܝܟܐ ܕ$2.}}',
+'category-file-count-limited' => 'ܐܝܬ {{PLURAL:$1|ܠܦܦܐ ܕܐܬܐ|$1 ܠܦܦ̈ܐ ܕܐܬܝܢ}} ܒܣܕܪܐ ܗܫܝܐ.',
 'listingcontinuesabbrev' => '(ܫܘܠܡܐ)',
 
 'about' => 'ܡܢܘ',
@@ -373,10 +376,11 @@ $1',
 'viewsource-title' => 'ܚܙܝ ܡܒܘܥܐ ܕ $1',
 'actionthrottled' => 'ܠܐ ܡܬܡܨܝܢܬܐ ܐܝܬܝܗܝ ܠܡܥܒܕ ܝܬܝܪ ܡܢ ܗܢܐ ܥܒܕܐ',
 'viewsourcetext' => 'ܡܨܐ ܐܢܬ ܕܬܚܙܐ ܘܬܢܣܚ ܠܡܒܘ̈ܥܐ ܕܗܕܐ ܦܐܬܐ:',
-'protectedinterface' => 'ܗܕܐ ܦܐܬܐ ܡܘܬܪܐ ܟܬܝܒܬܐ ܕܦܐܬܐ ܠܚܘܪܙܐ, ܘܐܝܬܝܗܝ ܢܛܪܬܐ ܠܡܘܢܥ ܚܘܒܠܐ.',
+'protectedinterface' => 'ܗܕܐ ܦܐܬܐ ܡܘܬܪܐ ܟܬܝܒܬܐ ܕܦܐܬܐ ܠܚܘܪܙܐ ܒܗܢܐ ܘܝܩܝ, ܘܐܝܬܝܗܝ ܢܛܪܬܐ ܠܡܘܢܥ ܚܘܒܠܐ.
+ܠܡܘܣܦ ܐܘ ܫܘܚܠܦ ܬܘܪ̈ܓܡܐ ܕܟܠܗܘܢ ܘܝܩܝ، ܐܦܠܚ [//translatewiki.net/ translatewiki.net]، ܬܪܡܝܬܐ ܕܬܘܪܓܡܐ ܕܡܝܕܝܐܘܝܩܝ.',
 'editinginterface' => "'''ܙܘܗܪܐ:''' ܐܢܬ ܫܚܠܦܬ ܦܐܬܐ ܕܡܬܦܠܚܬ ܒܚܙܝܐ ܟܬܝܒܝܐ ܕܬܚܪܙܬܐ.
-ܟܠ ܫܘܚܠܦܐ ܒܦܐܬܐ ܗܕܐ ܢܗܘܐ ܠܗ ܡܥܒܕܢܘܬܐ ܥܠ ܐܣܟܡܐ ܕܦܐܬܐ ܕܡܦܠܚܢܐ ܕܡܦܠܚܢ̈ܐ ܐܚܪ̈ܢܐ.
-ܠܬÜ\98ܪÌ\88Ü\93Ü¡Ü\90Ø\8c Ü\90ܦܠÜ\9a Ü¬ÜªÜ¡Ü\9dܬÜ\90 Ü\95ܬÜ\98ܪÜ\93Ü¡Ü\90 Ü\95Ü¡Ü\9dÜ\95Ü\9dÜ\90Ü\98Ü\9dÜ©Ü\9d [//translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
+ܟܠ ܫܘܚܠܦܐ ܒܦܐܬܐ ܗܕܐ ܢܗܘܐ ܠܗ ܡܥܒܕܢܘܬܐ ܥܠ ܐܣܟܡܐ ܕܦܐܬܐ ܕܡܦܠܚܢܐ ܕܡܦܠܚܢ̈ܐ ܐܚܪ̈ܢܐ ܒܘܝܩܝ ܗܢܐ.
+Ü Ü¡Ü\98ܣܦ Ü\90Ü\98 Ü«Ü\98Ü\9aܠܦ Ü¬Ü\98ܪÌ\88Ü\93Ü¡Ü\90 Ü\95Ü\9fÜ Ü\97Ü\98Ü¢ Ü\98Ü\9dÜ©Ü\9dØ\8c Ü\90ܦܠÜ\9a [//translatewiki.net/ translatewiki.net]Ø\8c Ü¬ÜªÜ¡Ü\9dܬÜ\90 Ü\95ܬÜ\98ܪÜ\93Ü¡Ü\90 Ü\95Ü¡Ü\9dÜ\95Ü\9dÜ\90Ü\98Ü\9dÜ©Ü\9d.",
 'sqlhidden' => '(ܒܘܬܬܐ SQL ܛܫܝܐ)',
 'namespaceprotected' => "ܠܝܬ ܠܟ ܦܣܣܐ ܠܫܚܠܦܬܐ ܕܦܐܬܬ̈ܐ ܒܚܩܠܐ ܕ'''$1'''.",
 
@@ -521,12 +525,12 @@ $1',
 'currentrev-asof' => 'ܬܢܝܬܐ ܗܫܝܬܐ ܒܣܝܩܘܡ $1',
 'revisionasof' => 'ܬܢܝܬܐ ܒܣܝܩܘܡ $1',
 'revision-info' => 'ܬܢܝܬܐ ܒܣܝܩܘܡ $1 ܒܝܕ $2',
-'previousrevision' => 'â\86\90 Ü¬Ü¢Ü\9dܬÜ\90 Ü¥Ü¬Ü\9dܩܬÜ\90',
-'nextrevision' => 'ܬܢÜ\9dܬÜ\90 Ü\9aÜ\95ܬÜ\90 →',
+'previousrevision' => 'â\86\90 Ü¬Ü¢Ü\9dܬÜ\90 Ü\95Ü©Ü\95Ü¡',
+'nextrevision' => 'ܬܢÜ\9dܬÜ\90 Ü\95Ü\92ܬܪ →',
 'currentrevisionlink' => 'ܬܢܝܬܐ ܗܫܝܬܐ',
 'cur' => 'ܗܫܝܐ',
-'next' => 'ܒܬܪ',
-'last' => 'ܩܕܡ',
+'next' => 'Ü\95Ü\92ܬܪ',
+'last' => 'Ü\95Ü©Ü\95Ü¡',
 'page_first' => 'ܩܕܡܝܐ',
 'page_last' => 'ܐܚܪܝܐ',
 'histlegend' => "ܓܒܝܐ ܕܦܘܪܫܐ: ܓܒܝ ܣܢܕ̈ܘܩܐ ܕܬܢܝܬ̈ܐ ܠܦܘܚܡܐ ܘܕܘܫ '''Enter''' ܐܘ '''ܦܚܘܡ ܒܝܢܝ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ'''.<br />
@@ -604,10 +608,10 @@ $1',
 'notitlematches' => 'ܠܝܬ ܫܡܐ ܕܦܐܬܐ ܐܘܝܢܐ',
 'textmatches' => 'ܟܬܒܬܐ ܐܘܝܢܬܐ',
 'notextmatches' => 'ܠܝܬ ܟܬܒܬܐ ܐܘܝܢܬܐ',
-'prevn' => '{{PLURAL:$1|$1}} Ü©Ü\95Ü\9dÜ¡Ü\90',
-'nextn' => '{{PLURAL:$1|$1}} Ü\90Ü\9aܪܢÜ\90',
-'prevn-title' => '$1 {{PLURAL:$1|ܦܠܛܐ ܩܕܝܡܐ|ܦܠܛ̈ܐ ܩܕ̈ܝܡܐ}}',
-'nextn-title' => '$1 {{PLURAL:$1|ܦܠܛܐ ܐܚܪܢܐ|ܦܠܛ̈ܐ ܐܚܪ̈ܢܐ}}',
+'prevn' => '{{PLURAL:$1|$1}} Ü\95Ü©Ü\95Ü¡',
+'nextn' => '{{PLURAL:$1|$1}} Ü\95Ü\92ܬܪ',
+'prevn-title' => '$1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܕܩܕܡ',
+'nextn-title' => '$1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܕܒܬܪ',
 'shown-title' => 'ܚܘܝ $1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܠܟܠ ܦܐܬܐ',
 'viewprevnext' => 'ܚܘܝ ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'ܓܒܝܬ̈ܐ ܕܒܨܝܐ',
@@ -621,6 +625,7 @@ $1',
 'searchprofile-advanced' => 'ܡܬܩܕܡܢܐ',
 'searchprofile-articles-tooltip' => 'ܒܨܝ ܒ $1',
 'searchprofile-project-tooltip' => 'ܒܨܝ ܒ $1',
+'searchprofile-images-tooltip' => 'ܒܨܝ ܥܠ ܠܦܦ̈ܐ',
 'search-result-size' => '$1 ({{PLURAL:$2|1 ܡܠܬܐ|$2 ܡܠ̈ܐ}})',
 'search-redirect' => '(ܨܝܒ $1)',
 'search-section' => '(ܡܢܬܐ $1)',
@@ -691,7 +696,7 @@ $1',
 'timezoneregion-europe' => 'ܐܘܪܘܦܐ',
 'timezoneregion-indian' => 'ܐܘܩܝܢܘܣ ܗܢܕܘܝܐ',
 'timezoneregion-pacific' => 'ܐܘܩܝܢܘܣ ܫܩܛܝܐ',
-'prefs-searchoptions' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\92ܨÜ\9dÜ\90',
+'prefs-searchoptions' => 'ܒܨܝܐ',
 'prefs-namespaces' => 'ܚܩܠܬ̈ܐ',
 'defaultns' => 'ܐܘ ܒܨܝ ܒܚܩܠܬ̈ܐ ܗܢܝܢ',
 'prefs-files' => 'ܠܦܦ̈ܐ',
@@ -854,6 +859,7 @@ $1',
 'minlength1' => 'ܫܡܗ̈ܐ ܕܠܦܦܐ ܘܠܐ ܕܢܗܘܐ ܒܪܝܐ ܡܢ ܐܬܘܬܐ ܚܕܐ ܟܕ ܙܥܘܪ',
 'uploadwarning' => 'ܐܣܩ ܙܘܗܪܐ',
 'savefile' => 'ܠܒܘܟ ܠܦܦܐ',
+'uploadedimage' => '',
 'uploadvirus' => 'ܠܦܦܐ ܐܝܬ ܒܗ ܒܝܪܘܣ!
 ܐܪ̈ܝܟܬܐ: $1',
 'upload-source' => 'ܡܒܘܥܐ ܕܠܦܦܐ',
@@ -1029,7 +1035,7 @@ $1',
 'notargettitle' => 'ܠܐ ܢܘܦܐ',
 'nopagetitle' => 'ܠܝܬ ܗܟܘܬ ܦܐܬܐ ܕܢܘܦܐ',
 'pager-newer-n' => '{{PLURAL:$1|1 1 ܚܕܬܐ|$1 ܚܕ̈ܬܐ}}',
-'pager-older-n' => '{{PLURAL:$1|1 ܥܬܝܩ̈ܐ 1|$1 ܥܬܝܩ̈ܐ}}',
+'pager-older-n' => '{{PLURAL:$1|ܥܬܝܩܐ 1|ܥܬܝܩ̈ܐ $1}}',
 'suppress' => 'ܚܝܘܪܐ',
 
 # Book sources
@@ -1048,15 +1054,15 @@ $1',
 # Special:AllPages
 'allpages' => 'ܟܠ ܦܐܬܬ̈ܐ',
 'alphaindexline' => '$1 ܠ $2',
-'nextpage' => 'ܦÜ\90ܬÜ\90 Ü\90Ü\9aܪܬÜ\90 ($1)',
-'prevpage' => 'ܦÜ\90ܬÜ\90 Ü©Ü\95Ü\9dܡܬÜ\90 ($1)',
+'nextpage' => 'ܦÜ\90ܬÜ\90 Ü\95Ü\92ܬܪ ($1)',
+'prevpage' => 'ܦÜ\90ܬÜ\90 Ü\95Ü©Ü\95Ü¡ ($1)',
 'allpagesfrom' => 'ܚܘܝ ܦܐܬܬ̈ܐ ܕܫܪܐ ܥܡ:',
 'allpagesto' => 'ܚܘܝ ܦܐܬܬ̈ܐ ܕܫܠܡ ܥܡ:',
 'allarticles' => 'ܟܠ ܡܓܠ̈ܐ',
 'allinnamespace' => 'ܟܠ ܦܐܬܬ̈ܐ (ܚܩܠܐ ܕ $1)',
 'allnotinnamespace' => 'ܟܠ ܦܐܬܬ̈ܐ (ܠܐ ܒܚܩܠܐ ܕ $1)',
-'allpagesprev' => 'ܩܕܡ',
-'allpagesnext' => 'ܒܬܪ',
+'allpagesprev' => 'Ü\95Ü©Ü\95Ü¡',
+'allpagesnext' => 'Ü\95Ü\92ܬܪ',
 'allpagessubmit' => 'ܙܠ',
 'allpagesprefix' => 'ܚܘܝ ܦܐܬܬ̈ܐ ܕܫܪܝܢ ܒ:',
 'allpages-bad-ns' => '{{SITENAME}} ܠܝܬ ܠܗ ܚܩܠܐ "$1".',
@@ -1296,8 +1302,8 @@ $1',
 'isredirect' => 'ܦܐܬܐ ܕܨܘܝܒܐ',
 'istemplate' => 'ܚܒܝܫܬܐ',
 'isimage' => 'ܐܣܘܪܐ ܕܠܦܦܐ',
-'whatlinkshere-prev' => '{{PLURAL:$1|Ü©Ü\95Ü\9dÜ¡Ü\90|$1 Ü©Ü\95Ì\88Ü\9dÜ¡Ü\90}}',
-'whatlinkshere-next' => '{{PLURAL:$1|Ü\9aÜ\95ܬÜ\90|$1 Ü\9aÜ\95Ì\88ܬÜ\90}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|Ü\95Ü©Ü\95Ü¡|$1 Ü\95Ü©Ü\95Ü¡}}',
+'whatlinkshere-next' => '{{PLURAL:$1|Ü\95Ü\92ܬܪ|$1 Ü\95Ü\92ܬܪ}}',
 'whatlinkshere-links' => '← ܐܣܘܪ̈ܐ',
 'whatlinkshere-hideredirs' => '$1 ܨܘܝܒ̈ܐ',
 'whatlinkshere-hidetrans' => '$1 ܡܬܚܪ̈ܙܢܘܬܐ',
@@ -1420,6 +1426,7 @@ Do you want to change the settings?',
 'tooltip-pt-mytalk' => 'ܦܐܬܐ ܕܡܡܠܘܟ',
 'tooltip-pt-preferences' => 'Your preferences',
 'tooltip-pt-watchlist' => 'ܡܟܬܒܢܘܬܐ ܕܦܐܬܬ̈ܐ ܕܒܪܗܝܬ ܐܢܬ ܫܘܚܠܦ̈ܐ ܕܬܗܘܐ ܒܗܘܢ',
+'tooltip-pt-mycontris' => 'ܡܟܬܒܢܘܬܐ ܕܫܘܬܦܘܝܬܘ̈ܟ',
 'tooltip-pt-login' => 'ܢܠܒܒ ܠܟ ܕܣܓܠ ܐܢܬ ܥܠܠܐ ܕܝܠܟ، ܐܠܐ ܗܢܐ ܠܐ ܐܝܬܝܗܝ ܐܠܨܝܐ',
 'tooltip-pt-logout' => 'ܦܠܛܐ',
 'tooltip-ca-talk' => 'ܡܡܠܠܐ ܥܠ ܚܒܝܫܬܐ ܕܦܐܬܐ',
@@ -1428,9 +1435,11 @@ Do you want to change the settings?',
 ܐܝܬ ܒܟ ܬܚܙܝ ܡܒܘܥܐ ܕܝܠܗ',
 'tooltip-ca-protect' => 'ܢܛܘܪ ܗܕܐ ܦܐܬܐ',
 'tooltip-ca-delete' => 'ܫܘܦ ܦܐܬܐ ܗܕܐ',
+'tooltip-ca-move' => 'ܫܢܝ ܦܐܬܐ ܗܕܐ',
 'tooltip-search' => 'ܒܨܝ ܒܓܘ {{SITENAME}}',
 'tooltip-search-fulltext' => 'ܒܨܝ ܒܓܘ ܦܐܬܬ̈ܐ ܥܠ ܗܢܐ ܟܬܝܒܬܐ',
 'tooltip-p-logo' => 'ܦܐܬܐ ܪܝܫܝܬܐ',
+'tooltip-n-mainpage' => 'ܬܪܘܩܬܐ ܕܦܐܬܐ ܪܝܫܝܬܐ',
 'tooltip-n-mainpage-description' => 'ܬܪܘܩܬܐ ܕܦܐܬܐ ܪܝܫܝܬܐ',
 'tooltip-n-portal' => 'ܚܕܪ ܬܪܡܝܬܐ، ܡܢܐ ܡܫܟܚ ܐܢܬ ܠܥܒܕܐ، ܐܝܟܐ ܬܚܙܝ ܟܠ ܡܐ ܕܣܢܝܩ ܐܢܬ ܠܗ',
 'tooltip-n-recentchanges' => 'ܡܟܬܒܢܘܬܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܒܓܘ ܘܝܩܝ.',
@@ -1444,7 +1453,9 @@ Do you want to change the settings?',
 'tooltip-ca-nstab-main' => 'ܚܘܝ ܦܐܬܬܐ ܕܚܒ̈ܝܫܬܐ',
 'tooltip-ca-nstab-user' => 'ܚܘܝ ܦܐܬܐ ܕܡܦܠܚܢܐ',
 'tooltip-ca-nstab-image' => 'ܚܘܝ ܦܐܬܐ ܕܠܦܦܐ',
+'tooltip-ca-nstab-category' => 'ܚܘܝ ܦܐܬܐ ܕܣܕܪ̈ܐ',
 'tooltip-save' => 'ܠܒܘܟ ܫܘܚܠܦܟ',
+'tooltip-watch' => 'ܐܘܣܦ ܗܢܐ ܦܐܬܐ ܠܡܟܬܒܢܘܬܐ ܕܪܗܝܬܘܟ',
 
 # Attribution
 'anonymous' => '{{PLURAL:$1|ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ|ܡܦܠܚܢ̈ܐ ܠܐ ܝܕ̈ܝܥܐ}} ܕ {{SITENAME}}',
@@ -1461,8 +1472,8 @@ Do you want to change the settings?',
 $1',
 
 # Browsing diffs
-'previousdiff' => 'â\86\90 Ü«Ü\98Ü\9aܠܦÜ\90 Ü¥Ü¬Ü\9dÜ©Ü\90',
-'nextdiff' => 'Ü«Ü\98Ü\9aܠܦÜ\90 Ü\9aÜ\95ܬÜ\90 →',
+'previousdiff' => 'â\86\90 Ü«Ü\98Ü\9aܠܦÜ\90 Ü\95Ü©Ü\95Ü¡',
+'nextdiff' => 'Ü«Ü\98Ü\9aܠܦÜ\90 Ü\95Ü\92ܬܪ →',
 
 # Media information
 'thumbsize' => 'ܥܓܪܐ ܕܨܘܪܬܐ ܙܥܘܪܬܐ:',
@@ -1563,16 +1574,16 @@ $1',
 'confirm_purge_button' => 'ܛܒ',
 
 # Multipage image navigation
-'imgmultipageprev' => 'â\86\90 Ü«Ü\98Ü\9aܠܦÜ\90 Ü©Ü\95Ü\9dÜ¡Ü\90',
-'imgmultipagenext' => 'â\86\90 Ü«Ü\98Ü\9aܠܦÜ\90 Ü\9aÜ\95ܬÜ\90',
+'imgmultipageprev' => 'â\86\90 Ü«Ü\98Ü\9aܠܦÜ\90 Ü\95Ü©Ü\95Ü¡',
+'imgmultipagenext' => 'â\86\90 Ü«Ü\98Ü\9aܠܦÜ\90 Ü\95Ü\92ܬܪ',
 'imgmultigo' => 'ܙܠ!',
 'imgmultigoto' => 'ܙܠ ܠܦܐܬܐ $1',
 
 # Table pager
 'ascending_abbrev' => 'ܡܣܩܐܝܬ',
 'descending_abbrev' => 'ܡܚܬܐܝܬ',
-'table_pager_next' => 'ܦÜ\90ܬÜ\90 Ü\90Ü\9aܪܬÜ\90',
-'table_pager_prev' => 'ܦÜ\90ܬÜ\90 Ü©Ü\95Ü\9dܡܬÜ\90',
+'table_pager_next' => 'ܦÜ\90ܬÜ\90 Ü\95Ü\92ܬܪ',
+'table_pager_prev' => 'ܦÜ\90ܬÜ\90 Ü\95Ü©Ü\95Ü¡',
 'table_pager_first' => 'ܦܐܬܐ ܩܕܡܝܬܐ',
 'table_pager_last' => 'ܦܐܬܐ ܐܚܪܝܬܐ',
 'table_pager_limit_label' => 'ܡܕ̈ܡܐ ܠܟܠ ܦܐܬܐ:',
@@ -1628,7 +1639,7 @@ $1',
 * <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ ܒܠܚܘܕ.</span>',
 'specialpages-group-maintenance' => 'ܬܫܪܪܐ ܕܚܕܬܘܬܐ',
 'specialpages-group-other' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܐܚܪ̈ܢܝܬܐ',
-'specialpages-group-login' => 'ܥܘܠ / ܒܪܝ',
+'specialpages-group-login' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
 'specialpages-group-changes' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܘܣܓܠ̈ܐ',
 'specialpages-group-users' => 'ܡܦܠܚܢ̈ܐ ܘܙܕ̈ܩܐ',
 'specialpages-group-highuse' => 'ܦܐܬܬ̈ܐ ܕܡܬܚܫܚܢܘܬܐ ܥܠܝܬܐ',
index e5397fa..67b3830 100644 (file)
@@ -957,8 +957,6 @@ $1",
 'search-interwiki-caption' => 'Maċariĝ ĥĥoṫ',
 'search-interwiki-default' => 'N-Naṫija dyal $1:',
 'search-interwiki-more' => '(z-zyada)',
-'search-mwsuggest-enabled' => 'be qṫiraḫaṫ',
-'search-mwsuggest-disabled' => 'bla qṫiraḫaṫ',
 'search-relatedarticle' => 'mortabita',
 'mwsuggest-disable' => 'attl liqtirahat dyal AJAX',
 'searcheverything-enable' => 'qlleb f-gaĝ n-nitaqaṫ',
index 142b79f..aac01e1 100644 (file)
@@ -887,9 +887,10 @@ $2',
 ممكن [[Special:Search/{{PAGENAME}}|تدور على عنوان الصفحه دى]] فى صفح تانيه,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} تدور فى السجلات اللى ليها علاقه],
 او [{{fullurl:{{FULLPAGENAME}}|action=edit}} تعدل الصفحه دى]</span>.',
-'noarticletext-nopermission' => 'مفيش اى نص دلوقتى فى الصفحه دى.
-ممكن [[Special:Search/{{PAGENAME}}|تدور على عنوان الصفحه دى]] فى الصفحات التانيه,
-او <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} تدور فى السجلات بتاعتها]</span>.',
+'noarticletext-nopermission' => 'مافيش دلوقتى اى نص فى الصفحه دى.
+ممكن [[Special:Search/{{PAGENAME}}|تدور على عنوان الصفحه دى]] فى صفح تانيه,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} تدور فى السجلات اللى ليها علاقه],
+او [{{fullurl:{{FULLPAGENAME}}|action=edit}} تعدل الصفحه دى]</span>.',
 'userpage-userdoesnotexist' => 'حساب اليوزر "<nowiki>$1</nowiki>" مش متسجل. لو سمحت تشوف لو عايز تبتدي/تعدل الصفحة دي.',
 'userpage-userdoesnotexist-view' => 'حساب اليوزر "$1" مش متسجل',
 'blocked-notice-logextract' => 'اليوزر ده معمول له بلوك دلوقتى.
index 2e86ea2..80173ea 100644 (file)
@@ -1203,8 +1203,6 @@ $1",
 'search-interwiki-caption' => 'সহপ্ৰকল্পসমূহ',
 'search-interwiki-default' => '$1 ফলাফলসমূহ:',
 'search-interwiki-more' => '(আৰু)',
-'search-mwsuggest-enabled' => 'উপদেশ সহ',
-'search-mwsuggest-disabled' => 'উপদেশ নাই',
 'search-relatedarticle' => 'সম্পৰ্কিত',
 'mwsuggest-disable' => 'AJAX পৰামৰ্শ নিষ্ক্ৰিয় কৰক',
 'searcheverything-enable' => 'সকলো নামস্থানত অনুসন্ধান কৰক',
@@ -2842,7 +2840,6 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 
 # JavaScriptTest
 'javascripttest' => 'জাভাস্ক্ৰিপ্ট পৰীক্ষা।',
-'javascripttest-disabled' => 'এই ৱিকিত এই কাৰ্যটো সক্ৰিয় কৰা হোৱা নাই।',
 'javascripttest-title' => '$1 পৰীক্ষাসমূহ চলোৱা হৈছে',
 'javascripttest-pagetext-noframework' => 'এই পৃষ্ঠাখন জাভালিপি পৰীক্ষা চলোৱাৰ বাবে সংৰক্ষিত।',
 'javascripttest-pagetext-unknownframework' => 'অজ্ঞাত সম্পৰীক্ষা ফ্ৰেমৱৰ্ক "$1"।',
@@ -2880,9 +2877,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-p-logo' => 'বেটুপাত খুলিবৰ কাৰণে',
 'tooltip-n-mainpage' => 'বেটুপাত খুলিবৰ কাৰণে',
 'tooltip-n-mainpage-description' => 'প্ৰথম পৃষ্ঠা পৰিদৰ্শন কৰক',
-'tooltip-n-portal' => 'ৱিà¦\95িপিডিয়া à¦¬à§\8dৰাà¦\93à¦\9c à¦\95ৰিবলà§\88',
+'tooltip-n-portal' => 'ৱিà¦\95িপিডিয়া à¦¸à¦\82à¦\95à§\8dৰানà§\8dতà§\80য় à¦\97à§\81ৰà§\81তà§\8dবপà§\82ৰà§\8dণ à¦\86লà§\8bà¦\9aনা à¦\95à¦\95à§\8dষ',
 'tooltip-n-currentevents' => 'সাম্প্ৰতিক ঘটনাৱলীৰ পটভূমি',
-'tooltip-n-recentchanges' => 'শà§\87হতà§\80য়া à¦¸à¦¾à¦²à¦¸à¦²à¦¨à¦¿à¦¸à¦®à§\82হৰ à¦¸à§\82à¦\9aà§\80',
+'tooltip-n-recentchanges' => 'à¦\85সমà§\80য়া à§±à¦¿à¦\95িপিডিয়াত à¦¹à§\8bৱা à¦¶à§\87হতà§\80য়া à¦¸à¦¾à¦²à¦¸à¦²à¦¨à¦¿à¦¸à¦®à§\82হ à¦\9aাà¦\93à¦\95',
 'tooltip-n-randompage' => 'অ-পূৰ্বনিৰ্ধাৰিতভাবে যিকোনো এটা পৃষ্ঠা দেখুৱাবৰ কাৰণে',
 'tooltip-n-help' => 'সহায়ৰ বাবে ইয়াত ক্লিক কৰক',
 'tooltip-t-whatlinkshere' => 'ইয়ালৈ সংযোজিত সকলো পৃষ্ঠাৰ সুচী',
@@ -3851,4 +3848,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
 'duration-millennia' => '$1 {{PLURAL:$1|সহস্ৰাব্দ|সহস্ৰাব্দ}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'যি আছে...',
+'searchsuggest-search' => 'সন্ধান কৰক',
 );
index c0e7226..aa83162 100644 (file)
@@ -1114,8 +1114,6 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'search-interwiki-caption' => 'Proyeutos hermanos',
 'search-interwiki-default' => '$1 resultaos:',
 'search-interwiki-more' => '(más)',
-'search-mwsuggest-enabled' => 'con suxerencies',
-'search-mwsuggest-disabled' => 'ensin suxerencies',
 'search-relatedarticle' => 'Rellacionáu',
 'mwsuggest-disable' => 'Desactivar les suxerencies AJAX',
 'searcheverything-enable' => 'Buscar en tolos espacios de nome',
@@ -2753,7 +2751,6 @@ Guárdalu nel ordenador y xúbilu equí.",
 
 # JavaScriptTest
 'javascripttest' => 'Prueba de JavaScript',
-'javascripttest-disabled' => 'Esta función ta desactivada.',
 'javascripttest-title' => 'Executando pruebes de $1',
 'javascripttest-pagetext-noframework' => 'Esta páxina ta acutada pa executar pruebes de javascript.',
 'javascripttest-pagetext-unknownframework' => "L'entornu de pruebes «$1» ye desconocíu.",
@@ -3832,4 +3829,7 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 'duration-centuries' => '$1 {{PLURAL:$1|sieglu|sieglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenios}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'que contién...',
+'searchsuggest-search' => 'Guetar',
 );
index 0ff447d..60e8cad 100644 (file)
@@ -923,8 +923,6 @@ $1",
 'search-interwiki-caption' => 'Qardaş layihələr',
 'search-interwiki-default' => '$1 nəticə:',
 'search-interwiki-more' => '(yenə)',
-'search-mwsuggest-enabled' => 'təkliflərlə',
-'search-mwsuggest-disabled' => 'təklif yoxdur',
 'search-relatedarticle' => 'əlaqədar',
 'mwsuggest-disable' => 'AJAX təkliflərini rədd et',
 'searcheverything-enable' => 'Ad aralığında axtar:',
@@ -3012,4 +3010,6 @@ Bu saytda texniki problemlər var.',
 'duration-centuries' => '$1 {{PLURAL:$1|əsr|əsr}}',
 'duration-millennia' => '$1 {{PLURAL:$1|minillik|minillik}}',
 
+# Unknown messages
+'searchsuggest-search' => 'Axtar',
 );
index 77b913b..e8a0130 100644 (file)
@@ -261,7 +261,7 @@ $messages = array(
 'unprotectthispage' => 'Был биттең һаҡлауын үҙгәртергә',
 'newpage' => 'Яңы бит',
 'talkpage' => 'Фекер алышыу',
-'talkpagelinktext' => 'Фекер алышыу',
+'talkpagelinktext' => 'әңг.',
 'specialpage' => 'Ярҙамсы бит',
 'personaltools' => 'Шәхси ҡоралдар',
 'postcomment' => 'Яңы бүлек',
@@ -1078,8 +1078,6 @@ $1",
 'search-interwiki-caption' => 'Туғандаш проекттар',
 'search-interwiki-default' => '$1 һөҙөмтә:',
 'search-interwiki-more' => '(тағы)',
-'search-mwsuggest-enabled' => 'кәңәштәр менән',
-'search-mwsuggest-disabled' => 'кәңәшһеҙ',
 'search-relatedarticle' => 'Ҡағылышлы',
 'mwsuggest-disable' => 'AJAX-тәҡдимдәрен ябырға',
 'searcheverything-enable' => 'Бар исем арауыҡтарында эҙләргә',
@@ -2157,7 +2155,7 @@ $UNWATCHURL
 # Rollback
 'rollback' => 'Үҙгәртеүҙәрҙе кире ҡайтарырға',
 'rollback_short' => 'Кире ҡайтарырға',
-'rollbacklink' => 'кире алырға',
+'rollbacklink' => 'кире',
 'rollbacklinkcount' => '$1 {{PLURAL:$1|төҙәтеүҙе|төҙәтеүҙе}} кире алырға',
 'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1|төҙәтеүҙән|төҙәтеүҙән}} күберәк кире алырға',
 'rollbackfailed' => 'Кире ҡайтарырғанда барлыҡҡа килгән хата',
@@ -2430,10 +2428,10 @@ $1',
 'blocklist-nousertalk' => 'үҙенең фекер алышыу битен мөхәррирләй алмай',
 'ipblocklist-empty' => 'Бикләү исемлеге буш.',
 'ipblocklist-no-results' => 'Күрһәтелгән IP адрес йәки ҡатнашыусы исеме бикләнмәгән.',
-'blocklink' => 'ябып ҡуйырға',
+'blocklink' => 'яб.',
 'unblocklink' => 'Тыйыуҙы кире алырға',
 'change-blocklink' => 'блоклауҙы үҙгәртергә',
-'contribslink' => 'индергән өлөш',
+'contribslink' => 'өл.',
 'emaillink' => 'электрон хат ебәрергә',
 'autoblocker' => 'Һеҙҙең IP адресығыҙ [[User:$1|$1]] яңыраҡ ҡулланған адрес менән тап килеүе арҡаһында бикләнде.
 $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
@@ -2707,7 +2705,6 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 # JavaScriptTest
 'javascripttest' => '
 JavaScript тикшереү',
-'javascripttest-disabled' => 'Был мөмкинлек был Википроектта ғәмәлгә индерелмәгән.',
 'javascripttest-title' => '$1 тикшеренеү үткәрелә',
 'javascripttest-pagetext-noframework' => 'Был бит JavaScript тикшеренеүҙәре үткәреү өсөн  резервланған.',
 'javascripttest-pagetext-unknownframework' => 'Билдәһеҙ тикшеренеүҙәр мөхитнамәһе "$1".',
@@ -3720,4 +3717,7 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'duration-centuries' => '$1 {{PLURAL:$1|быуат|быуаттар}}',
 'duration-millennia' => '$1 {{PLURAL:$1|меңйыллыҡ|меңйыллыҡтар}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'эстәлегендә...',
+'searchsuggest-search' => 'Эҙләү',
 );
index f9ffd92..65af0ce 100644 (file)
@@ -268,8 +268,8 @@ $1",
 'mainpage' => 'Hauptseiten',
 'mainpage-description' => 'Hauptseiten',
 'policy-url' => 'Project:Richtlinien',
-'portal' => 'Gmoahschoftsportoi',
-'portal-url' => 'Project:Gmoahschoftsportoi',
+'portal' => 'Autornportal',
+'portal-url' => 'Project:Autornportal',
 'privacy' => 'Daatenschutz',
 'privacypage' => 'Project:Daatenschutz',
 
@@ -688,8 +688,6 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 'search-interwiki-caption' => 'Schwesterprojekte',
 'search-interwiki-default' => '$1 Eagebnisse:',
 'search-interwiki-more' => '(mea)',
-'search-mwsuggest-enabled' => 'mid Vurschleg',
-'search-mwsuggest-disabled' => 'koane Vurschleg',
 'searchrelated' => 'vawåndt',
 'searchall' => 'olle',
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' voh '''$3'''|Ergebniss '''$1–$2''' voh '''$3'''}} fyr '''$4'''",
@@ -1722,4 +1720,7 @@ Bittscheh d' noraale Vurschau bnutzen.",
 'htmlform-reset' => 'Änderrungen ryckgängég mochen',
 'htmlform-selectorother-other' => 'Åndre',
 
+# Unknown messages
+'searchsuggest-containing' => 'Voitextsuach noch ...',
+'searchsuggest-search' => 'Suach',
 );
index f106772..f6d2692 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Filipinayzd
  * @author Geopoet
+ * @author Hoo
  * @author Kaganer
  * @author Steven*fung
  * @author Urhixidur
@@ -1129,8 +1130,6 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'search-interwiki-caption' => 'Tugang na mga proyekto',
 'search-interwiki-default' => '$1 na mga resulta:',
 'search-interwiki-more' => '(dakol pa)',
-'search-mwsuggest-enabled' => 'igwang mga suhestyon',
-'search-mwsuggest-disabled' => 'mayong suhestyon',
 'search-relatedarticle' => 'Kauyon',
 'mwsuggest-disable' => 'Pundohon an AJAX na mga suhestiyon',
 'searcheverything-enable' => 'Maghanap sa gabos na mga espasyong-ngaran',
@@ -2631,7 +2630,6 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 
 # JavaScriptTest
 'javascripttest' => 'Testing sa JavaScript',
-'javascripttest-disabled' => 'Ining punksyon dae pinagpagana sa wiki na ini.',
 'javascripttest-title' => 'Pinapadalagan na $1 na mga pagtesting',
 'javascripttest-pagetext-noframework' => 'An pahinang ini reserbado para sa pagpapadalagan kan mga pagtesting sa JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Bakong bistadong modelo para sa pagtesting kan "$1".',
@@ -3373,7 +3371,7 @@ Pwede mo man [[Special:EditWatchlist|gamiton an standard editor]].',
 'version-version' => '(Bersyon na $1)',
 'version-license' => 'Lisensiya',
 'version-poweredby-credits' => "An wiking ini pinagpagana kan '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => '[{{SERVER}}{{SCRIPTPATH}}/CREDITS mga iba pa]',
+'version-poweredby-others' => 'mga iba pa',
 'version-license-info' => 'An MediaWiki sarong libreng kasungatan; puwede mong ipanao ini asin/o baguhon ini sa irarom kan termino nin HNU (Heneral na Pampublikong Lisensiya) bilang publisado kan Free Software Foundation; maski sa arin na bersyon 2 kan lisensiya, o (saimong pansadireng pagpipilian) arinman na huring bersyon.
 
 An MediaWiki ipinagpanao sa paglaom na ini magigin kapakinabangan, pero MAYO NIN ANUMAN NA WARANTIYA; mayo dawa ngani nin pinaghuhurot na warantiya kan MERKANTIBILIDAD o KAUYUGAN PARA SA SARONG PARTIKULAR NA KATUYUHAN. Hilngon an HNU (Heneral na Pampublikong Lisensiya) para sa kadagdagang mga detalye.
index 69f2853..6629630 100644 (file)
@@ -1052,8 +1052,6 @@ $1",
 'search-interwiki-caption' => 'Сумежныя праекты',
 'search-interwiki-default' => 'вынікі з $1:',
 'search-interwiki-more' => '(яшчэ)',
-'search-mwsuggest-enabled' => 'з прапановамі',
-'search-mwsuggest-disabled' => 'без прапановаў',
 'search-relatedarticle' => 'Дачыняюцца*',
 'mwsuggest-disable' => 'Не паказваць прапановаў AJAX',
 'searcheverything-enable' => 'Пошук ва ўсіх прасторах назваў',
@@ -2605,7 +2603,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript-тэсты',
-'javascripttest-disabled' => 'Гэта функцыя выключаная.',
 'javascripttest-title' => 'Праводзіцца тэставанне $1',
 'javascripttest-pagetext-noframework' => 'Гэта старонка зарэзервавана для запуску тэстаў JavaScript',
 'javascripttest-pagetext-unknownframework' => 'Невядомая бібліятэка тэставання «$1».',
@@ -3590,4 +3587,7 @@ MediaWiki распаўсюджваецца, спадзеючыся на прыд
 'api-error-uploaddisabled' => 'Загрузка ў гэтую вікі адключаная.',
 'api-error-verification-error' => 'Гэты файл можа быць пашкоджаны, ці мае няслушнае пашырэнне.',
 
+# Unknown messages
+'searchsuggest-containing' => 'змяшчае...',
+'searchsuggest-search' => 'Знайсці',
 );
index 28ec4b3..74bd74f 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Belarusian (Taraškievica orthography) (‪беларуская (тарашкевіца)‬)
+/** Belarusian (Taraškievica orthography) (беларуская (тарашкевіца)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -259,7 +259,7 @@ $messages = array(
 'tog-justify' => 'Выраўноўваць тэкст па шырыні старонкі',
 'tog-hideminor' => 'Хаваць дробныя зьмены ў сьпісе апошніх зьменаў',
 'tog-hidepatrolled' => 'Хаваць патруляваныя зьмены ў сьпісе апошніх зьменаў',
-'tog-newpageshidepatrolled' => 'Хаваць правераныя старонкі ў сьпісе новых старонак',
+'tog-newpageshidepatrolled' => 'Хаваць патруляваныя старонкі ў сьпісе новых старонак',
 'tog-extendwatchlist' => 'Пашырыць сьпіс назіраньня, каб ён паказваў усе зьмены, а ня толькі апошнія',
 'tog-usenewrc' => 'Групаваць зьмены старонкі ў сьпісах апошніх зьменаў і назіраньняў (патрабуе JavaScript)',
 'tog-numberheadings' => 'Аўтаматычная нумарацыя загалоўкаў',
@@ -267,11 +267,11 @@ $messages = array(
 'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным пстрыку (JavaScript)',
 'tog-editsection' => 'Дазволіць рэдагаваньне асобных сэкцыяў па спасылках [рэдагаваць]',
 'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па правым пстрыку на загалоўку (патрабуе JavaScript)',
-'tog-showtoc' => 'Ð\9fаказваÑ\86Ñ\8c Ð·Ñ\8cмеÑ\81Ñ\82 (длÑ\8f Ñ\81Ñ\82аÑ\80онак Ð· ÐºÐ¾Ð»Ñ\8cкаÑ\81Ñ\8cÑ\86Ñ\8e Ñ\81Ñ\8dкÑ\86Ñ\8bй Ð±Ð¾Ð»ÐµÐ¹ Ð·Ð° 3)',
+'tog-showtoc' => 'Ð\9fаказваÑ\86Ñ\8c Ð·Ñ\8cмеÑ\81Ñ\82 (длÑ\8f Ñ\81Ñ\82аÑ\80онак Ð· Ð±Ð¾Ð»Ñ\8cÑ\88 Ñ\8fк 3 Ñ\80азÑ\8cдзеламÑ\96)',
 'tog-rememberpassword' => 'Запомніць мяне ў гэтым браўзэры (ня больш за $1 {{PLURAL:$1|дзень|дні|дзён}})',
-'tog-watchcreations' => 'Дадаваць у мой сьпіс назіраньня створаныя мной старонкі і загружаныя мной файлы',
-'tog-watchdefault' => 'Дадаваць у мой сьпіс назіраньня старонкі і файлы якія я рэдагаваў',
-'tog-watchmoves' => 'Дадаваць у мой сьпіс назіраньня старонкі і файлы якія я пераносіў',
+'tog-watchcreations' => 'Дадаваць у мой сьпіс назіраньня створаныя мной старонкі і загружаныя файлы',
+'tog-watchdefault' => 'Дадаваць у мой сьпіс назіраньня старонкі і файлы, якія я рэдагаваў',
+'tog-watchmoves' => 'Дадаваць у мой сьпіс назіраньня перанесеныя мною старонкі і файлы',
 'tog-watchdeletion' => 'Дадаваць у мой сьпіс назіраньня старонкі і файлы, якія я выдаляю',
 'tog-minordefault' => 'Па змоўчаньні пазначаць усе зьмены дробнымі',
 'tog-previewontop' => 'Паказваць папярэдні прагляд старонкі над полем рэдагаваньня',
@@ -284,18 +284,18 @@ $messages = array(
 'tog-shownumberswatching' => 'Паказваць колькасьць назіральнікаў',
 'tog-oldsig' => 'Цяперашні подпіс:',
 'tog-fancysig' => 'Апрацоўваць подпіс як вікі-тэкст (без аўтаматычнай спасылкі)',
-'tog-externaleditor' => 'Выкарыстоўваць вонкавы рэдактар па змоўчваньні (толькі для адмыслоўцаў, патрэбуе спэцыяльных наладак на вашым кампутары. [//www.mediawiki.org/wiki/Manual:External_editors Падрабязнасьці.])',
-'tog-externaldiff' => 'Выкарыстоўваць вонкавую праграму параўнаньня вэрсіяў па змоўчваньні (толькі для адмыслоўцаў, патрэбуе спэцыяльных наладак на вашым кампутары. [//www.mediawiki.org/wiki/Manual:External_editors Падрабязнасьці.])',
+'tog-externaleditor' => 'Выкарыстоўваць вонкавы рэдактар па змоўчваньні (толькі для адмыслоўцаў, патрабуе спэцыяльных наладак на вашым кампутары. [//www.mediawiki.org/wiki/Manual:External_editors Падрабязнасьці.])',
+'tog-externaldiff' => 'Выкарыстоўваць вонкавую праграму параўнаньня вэрсіяў па змоўчваньні (толькі для адмыслоўцаў, патрабуе спэцыяльных наладак на вашым кампутары. [//www.mediawiki.org/wiki/Manual:External_editors Падрабязнасьці.])',
 'tog-showjumplinks' => 'Актываваць дапаможныя спасылкі «перайсьці да»',
 'tog-uselivepreview' => 'Выкарыстоўваць хуткі папярэдні прагляд (патрабуе JavaScript) (экспэрымэнтальна)',
 'tog-forceeditsummary' => 'Папярэджваць пра адсутнасьць кароткага апісаньня зьменаў',
 'tog-watchlisthideown' => 'Хаваць мае праўкі ў сьпісе назіраньня',
 'tog-watchlisthidebots' => 'Хаваць праўкі робатаў у сьпісе назіраньня',
 'tog-watchlisthideminor' => 'Хаваць дробныя праўкі ў сьпісе назіраньня',
-'tog-watchlisthideliu' => 'ХаваÑ\86Ñ\8c Ð¿Ñ\80аÑ\9eкÑ\96 Ð·Ð°Ñ\80Ñ\8dгÑ\96Ñ\81Ñ\82Ñ\80аванÑ\8bÑ\85 Ñ\83дзелÑ\8cнÑ\96каÑ\9e Ñ\96 Ñ\9eдзелÑ\8cнÑ\96Ñ\86 Ñ\83 Ñ\81Ñ\8cпÑ\96Ñ\81е Ð½Ð°Ð·Ñ\96Ñ\80анÑ\8cнÑ\8f',
+'tog-watchlisthideliu' => 'Хаваць праўкі зарэгістраваных удзельнікаў у сьпісе назіраньня',
 'tog-watchlisthideanons' => 'Хаваць праўкі ананімаў у сьпісе назіраньня',
 'tog-watchlisthidepatrolled' => 'Хаваць патруляваныя праўкі ў сьпісе назіраньня',
-'tog-ccmeonemails' => 'Дасылаць мне копіі лістоў, якія я дасылаю іншым удзельнікам і ўдзельніцам',
+'tog-ccmeonemails' => 'Дасылаць мне копіі лістоў, якія я дасылаю іншым удзельнікам',
 'tog-diffonly' => 'Не паказваць зьмест старонкі пад параўнаньнем зьменаў',
 'tog-showhiddencats' => 'Паказваць схаваныя катэгорыі',
 'tog-noconvertlink' => 'Забараніць канвэртацыю назваў спасылак',
@@ -303,12 +303,12 @@ $messages = array(
 
 'underline-always' => 'Заўсёды',
 'underline-never' => 'Ніколі',
-'underline-default' => 'Як Ñ\83 Ð±Ñ\80аÑ\9eзÑ\8dÑ\80Ñ\8b',
+'underline-default' => 'Ð\9fаводле Ð±Ñ\80аÑ\9eзÑ\8dÑ\80а',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Стыль шрыфту ў полі рэдагаваньня:',
-'editfont-default' => 'ШÑ\80Ñ\8bÑ\84Ñ\82 Ð±Ñ\80аÑ\9eзÑ\8dÑ\80а Ð¿Ð° Ð·Ð¼Ð¾Ñ\9eÑ\87ванÑ\8cнÑ\96',
-'editfont-monospace' => 'ШÑ\80Ñ\8bÑ\84Ñ\82 Ð· Ð°Ð´Ð½Ð¾Ð»Ñ\8cкавай Ñ\88Ñ\8bÑ\80Ñ\8bнÑ\91й Ñ\81Ñ\8bмбалÑ\8fÑ\9e',
+'editfont-default' => 'Ð\9fаводле Ð±Ñ\80аÑ\9eзÑ\8dÑ\80а',
+'editfont-monospace' => 'РоÑ\9eнаÑ\88Ñ\8bÑ\80окÑ\96 Ñ\88Ñ\80Ñ\8bÑ\84Ñ\82',
 'editfont-sansserif' => 'Шрыфт без засечак',
 'editfont-serif' => 'Шрыфт з засечкамі',
 
@@ -351,18 +351,18 @@ $messages = array(
 'october-gen' => 'кастрычніка',
 'november-gen' => 'лістапада',
 'december-gen' => 'сьнежня',
-'jan' => '01',
-'feb' => '02',
-'mar' => '03',
-'apr' => '04',
-'may' => '05',
-'jun' => '06',
-'jul' => '07',
-'aug' => '08',
-'sep' => '09',
-'oct' => '10',
-'nov' => '11',
-'dec' => '12',
+'jan' => 'сту',
+'feb' => 'лют',
+'mar' => 'сак',
+'apr' => 'кра',
+'may' => 'тра',
+'jun' => 'чэр',
+'jul' => 'ліп',
+'aug' => 'жні',
+'sep' => 'вер',
+'oct' => 'кас',
+'nov' => 'ліс',
+'dec' => 'сьн',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Катэгорыя|Катэгорыі|Катэгорыі}}',
@@ -412,7 +412,7 @@ $messages = array(
 'vector-action-protect' => 'Абараніць',
 'vector-action-undelete' => 'Аднавіць',
 'vector-action-unprotect' => 'Зьмяніць абарону',
-'vector-simplesearch-preference' => 'Уключыць палепшаныя пошукавыя падказкі (толькі для афармленьня «Вэктар»)',
+'vector-simplesearch-preference' => 'Уключыць спрошчанае поле пошуку (толькі для афармленьня «Вэктар»)',
 'vector-view-create' => 'Стварыць',
 'vector-view-edit' => 'Рэдагаваць',
 'vector-view-history' => 'Паказаць гісторыю',
@@ -423,7 +423,7 @@ $messages = array(
 'variants' => 'Варыянты',
 
 'errorpagetitle' => 'Памылка',
-'returnto' => 'Вярнуцца да старонкі $1.',
+'returnto' => 'Вярнуцца да старонкі «$1».',
 'tagline' => 'Зьвесткі з {{GRAMMAR:родны|{{SITENAME}}}}',
 'help' => 'Дапамога',
 'search' => 'Пошук',
@@ -511,7 +511,8 @@ $1',
 'badaccess-groups' => 'Запытанае Вамі дзеяньне дазволенае толькі ўдзельнікам {{PLURAL:$2|з групы|адной з групаў:}} $1.',
 
 'versionrequired' => 'Патрабуецца MediaWiki вэрсіі $1',
-'versionrequiredtext' => 'Для карыстаньня гэтай старонкай патрабуецца MediaWiki вэрсіі $1. Глядзіце [[Special:Version|інфармацыю пра вэрсію]].',
+'versionrequiredtext' => 'Для карыстаньня гэтай старонкай патрабуецца MediaWiki вэрсіі $1.
+Глядзіце [[Special:Version|інфармацыю пра вэрсію]].',
 
 'ok' => 'Добра',
 'pagetitle' => '$1 — {{SITENAME}}',
@@ -1278,8 +1279,6 @@ $1",
 'search-interwiki-caption' => 'Сумежныя праекты',
 'search-interwiki-default' => 'вынікі з $1:',
 'search-interwiki-more' => '(яшчэ)',
-'search-mwsuggest-enabled' => 'з парадамі',
-'search-mwsuggest-disabled' => 'без парад',
 'search-relatedarticle' => 'Зьвязаны',
 'mwsuggest-disable' => 'Адключыць AJAX-падказкі',
 'searcheverything-enable' => 'Шукаць ва ўсіх прасторах назваў',
@@ -2904,7 +2903,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'Тэставаньне JavaScript',
-'javascripttest-disabled' => 'Гэтая функцыя не была ўключаная ў гэтай вікі.',
 'javascripttest-title' => 'Праводзіцца тэставаньне $1',
 'javascripttest-pagetext-noframework' => 'Гэтая старонка трымаецца для правядзеньня тэстаў JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Невядомая бібліятэка тэставаньня «$1».',
@@ -3950,4 +3948,7 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'duration-centuries' => '$1 {{PLURAL:$1|стагодзьдзе|стагодзьдзі|стагодзьдзяў}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тысячагодзьдзе|тысячагодзьдзі|тысячагодзьдзяў}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'утрымлівае...',
+'searchsuggest-search' => 'Пошук',
 );
index e8aec2e..6603585 100644 (file)
@@ -1229,8 +1229,6 @@ $1",
 'search-interwiki-caption' => 'Сродни проекти',
 'search-interwiki-default' => '$1 резултата:',
 'search-interwiki-more' => '(още)',
-'search-mwsuggest-enabled' => 'с предположения',
-'search-mwsuggest-disabled' => 'без предположения',
 'search-relatedarticle' => 'Свързани',
 'mwsuggest-disable' => 'Изключване на AJAX предположенията',
 'searcheverything-enable' => 'Търсене във всички именни пространства',
@@ -2750,7 +2748,6 @@ $1',
 'import-logentry-interwiki-detail' => '{{PLURAL:$1|една версия|$1 версии}} на $2 бяха внесени',
 
 # JavaScriptTest
-'javascripttest-disabled' => 'Тази функционалност не е активирана в това уики.',
 'javascripttest-pagetext-noframework' => 'Тази страница е запазена за изпълнение на Джаваскрипт тестове.',
 'javascripttest-qunit-intro' => 'Вижте [$1 тестовата документация] на mediawiki.org.',
 
@@ -3695,4 +3692,6 @@ MediaWiki се разпространява с надеждата, че ще б
 'duration-centuries' => '$1 {{PLURAL:$1|век|века}}',
 'duration-millennia' => '$1 {{PLURAL:$1|хилядолетие|хилядолетия}}',
 
+# Unknown messages
+'searchsuggest-search' => 'Търсене',
 );
index ef3492e..4f91fdf 100644 (file)
@@ -1148,8 +1148,6 @@ Catatan bahwasa mamuruk tautan napigasi akan mambulikakan setelan kolum ngini.',
 'search-interwiki-caption' => 'Dingsanak rangka gawian',
 'search-interwiki-default' => 'Kulihan $1',
 'search-interwiki-more' => '(lagi)',
-'search-mwsuggest-enabled' => 'awan saran',
-'search-mwsuggest-disabled' => 'kadada saran',
 'search-relatedarticle' => 'Bakulaan',
 'mwsuggest-disable' => "Kada kawa'akan sasaran AJAX",
 'searcheverything-enable' => 'Panggagaian pada samunyaan ngaran kakamar',
@@ -3708,4 +3706,7 @@ Salain ngitu, Pian kawa mamuruk prmulir nyaman di bawah ngini. Kumintar Pian aka
 'api-error-uploaddisabled' => 'Paunggahan dinunaktipakan di wiki naya.',
 'api-error-verification-error' => 'Barakas naya kira-kira rusak atawa baisi ikstinsi nang salah.',
 
+# Unknown messages
+'searchsuggest-containing' => 'isian ...',
+'searchsuggest-search' => 'Gagai',
 );
index 21d9b45..81a5db1 100644 (file)
@@ -970,6 +970,17 @@ $1",
 'revdel-restore-visible' => 'প্রদর্শনযোগ্য সংস্করণ',
 'pagehist' => 'পাতার ইতিহাস',
 'deletedhist' => 'ইতিহাস মুছে ফেলো',
+'revdelete-hide-current' => '$2, $1 সময়ের বিষয়টি লুকানো যাচ্ছে না: এটি বর্তমান সংস্করণ।
+এটি লুকানো সম্ভব নয়।',
+'revdelete-show-no-access' => "$2, $1 তারিখের ছবিটি দেখাতে সমস্যা হচ্ছে: এটি ''রেসট্রিটেড'' হিসাবে চিহ্নিত করা রয়েছে।
+আপনার এটি দেখার অনুমতি নেই।",
+'revdelete-modify-no-access' => "$2, $1 তারিখের ছবিটি সম্পাদনা করতে সমস্যা হচ্ছে: এটি ''রেসট্রিটেড'' হিসাবে চিহ্নিত করা রয়েছে।
+আপনার এটি দেখার অনুমতি নেই।",
+'revdelete-modify-missing' => '$1 আইডি সম্বলিত তথ্যটি সম্পাদনা করা যাচ্ছে না: এটি ডাটাবেজ থেকে হারিয়ে গিয়েছে!',
+'revdelete-no-change' => "'''সতর্কতা:''' $2, $1 তারিখ সম্বলিত তথ্যটিতে পূর্বেই অনুরোধকৃত সেটিংস রয়েছে।",
+'revdelete-concurrent-change' => '$2, $1 তারিখ সম্বলিত তথ্যটি সম্পাদনা করা যাচ্ছে না: আপনার সম্পাদনা শুরুর আগে কেউ এটির অবস্থা পরিবর্তন করেছেন।
+অনুগ্রহ করে লগ দেখুন।',
+'revdelete-only-restricted' => '$2, $1 তারিখ সম্বলিত তথ্যটি লুকানো যাচ্ছে না: তথ্য প্রদর্শনের অন্যান্য অপশনগুলো নির্ধারন করা ব্যতিত আপনি এটি শুধুমাত্র প্রশাসকদের জন্য দেখার উপযোগী করতে পারবেন না।',
 'revdelete-reason-dropdown' => '*সাধারণ অপসারণের কারণসমূহ
 ** কপিরাইট লঙ্ঘন
 ** অনুপযুক্ত ব্যক্তিগত তথ্য
@@ -982,6 +993,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'দমন লগ',
+'suppressionlogtext' => 'নিচের তালিকায় প্রশাসকদের থেকে লুকানো রয়েছে এমন তথ্যসহ অন্যন্য অপসারণ এবং বাধাদানের লগ রয়েছে।
+অনুগ্রহ করে অস্থায়ী ব্যান এবং বাধাদানের লগ সম্পর্কে বিস্তারিত জানতে [[Special:BlockList|বাধাদানের লগ দেখুন]]।',
 
 # History merging
 'mergehistory' => 'পাতার ইতিহাসগুলি একত্র করা হোক',
@@ -1022,6 +1035,11 @@ $1",
 'showhideselectedversions' => 'নির্বাচিত সংশোধনগুলো দেখাও/লুকাও',
 'editundo' => 'বাতিল',
 'diff-multi' => '({{PLURAL:$2|একজন ব্যবহারকারী |$2 জন ব্যবহারকারী}} সম্পাদিত {{PLURAL:$1|একটি অন্তর্বর্তীকালীন সংশোধন|$1টি অন্তর্বর্তীকালীন সংশোধন}} দেখানো হয়নি।)',
+'diff-multi-manyusers' => '($2 জন {{PLURAL:$2|ব্যবহারাকারীর}} সম্পাদিত {{PLURAL:$1|একটি সাম্প্রতিক সংস্করণ|$1 টি সাম্প্রতিক সংস্করণ}} প্রদর্শিত হচ্ছে না)',
+'difference-missing-revision' => '$1 পার্থক্যের {{PLURAL:$2|একটি সংস্করণ|$2টি সংস্করণসমূহ}} খুজে পাওয়া যাচ্ছে না।
+
+সাধারণত মুছে ফেলা হয়েছে এমন পাতার মেয়াদ উত্তীর্ণ ইতিহাস পাতার লিংক ওপেন করার কারণে এটি হতে পারে। 
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] বিস্তারিত তথ্য জানা যাবে।',
 
 # Search results
 'searchresults' => 'অনুসন্ধানের ফলাফল',
@@ -1044,6 +1062,7 @@ $1",
 'searchmenu-exists' => "'''এই উইকিতে \"[[:\$1]]\" নামে একটি পাতা রয়েছে'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" পাতাটি এই উইকিতে তৈরি করুন!'''",
 'searchhelp-url' => 'Help:সহায়িকা',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এই প্রিফিক্স রয়েছে এমন পাতা দেখুন]]',
 'searchprofile-articles' => 'বিষয়বস্তুর পাতা',
 'searchprofile-project' => 'সহায়িকা এবং প্রকল্প পাতা',
 'searchprofile-images' => 'মাল্টিমিডিয়া',
@@ -1063,8 +1082,6 @@ $1",
 'search-interwiki-caption' => 'সহপ্রকল্পসমূহ',
 'search-interwiki-default' => '$1 ফলাফলসমূহ:',
 'search-interwiki-more' => '(আরও)',
-'search-mwsuggest-enabled' => 'পরামর্শসহ',
-'search-mwsuggest-disabled' => 'পরামর্শ নেই',
 'search-relatedarticle' => 'সম্পর্কিত',
 'mwsuggest-disable' => 'AJAX পরামর্শ নিষ্ক্রিয় করা হোক',
 'searcheverything-enable' => 'সকল নামস্থানে অনুসন্ধান করো',
@@ -1094,6 +1111,7 @@ $1",
 'qbsettings-fixedright' => 'স্থায়ী ডান',
 'qbsettings-floatingleft' => 'ভাসমান বাম',
 'qbsettings-floatingright' => 'ভাসমান ডান',
+'qbsettings-directionality' => 'ফিক্সড, আপনার ভাষার লেখা শুরুর দিকের উপর ভিত্তি করে',
 
 # Preferences page
 'preferences' => 'আমার পছন্দ',
@@ -1158,7 +1176,7 @@ $1",
 'timezoneregion-indian' => 'ভারত মহাসাগর',
 'timezoneregion-pacific' => 'প্রশান্ত মহাসাগর',
 'allowemail' => 'অন্য ব্যবহারকারীদেরকে আপনাকে ই-মেইল পাঠানোর অনুমতি দিন।',
-'prefs-searchoptions' => 'অনুসন্ধানের পছন্দসমূহ',
+'prefs-searchoptions' => 'অনুসন্ধান',
 'prefs-namespaces' => 'নামস্থানসমূহ',
 'defaultns' => 'নতুবা এই নামস্থানগুলিতে অনুসন্ধান করো:',
 'default' => 'আদি অবস্থা',
@@ -1187,6 +1205,8 @@ $1",
 'gender-unknown' => 'অনুল্লেখিত',
 'gender-male' => 'পুরুষ',
 'gender-female' => 'মহিলা',
+'prefs-help-gender' => 'ঐচ্ছিক: সফটওয়্যারে মাধ্যমে লিঙ্গ অনুযায়ী সম্বধনের ক্ষেত্রে ব্যবহৃত হয়।
+এই তথ্য সকলের জন্য উন্মুক্ত থাকেবে।',
 'email' => 'ই-মেইল',
 'prefs-help-realname' => 'আসল নাম দেওয়া অনাবশ্যক। যদি আসল নাম দেন, তবে আপনার কাজের স্বীকৃতি দানে তা ব্যবহার করা হবে।',
 'prefs-help-email' => 'ই-মেইল ঠিকানা ঐচ্ছিক, তবে শব্দচাবি ভুলে গেলে নতুন করে শব্দচাবি নিতে এটির প্রয়োজন হবে।',
@@ -1268,6 +1288,7 @@ $1",
 'right-move-subpages' => 'পাতাগুলোকে তার উপপাতাসহ সরিয়ে নিন',
 'right-move-rootuserpages' => 'root ব্যবহারকারীর পাতাগুলো সরিয়ে ফেলুন',
 'right-movefile' => 'ফাইল স্থানান্তর',
+'right-suppressredirect' => 'পাতা স্থানান্তরের সময় মূল পাতায় রিডাইরেক্ট তৈরী করছে না',
 'right-upload' => 'ফাইল আপলোড করুন',
 'right-reupload' => 'বিদ্যমান ফাইল প্রতিস্থাপন করো',
 'right-reupload-own' => 'কারও আপলোডকৃত ফাইল ওভাররাইট করুন',
@@ -1286,10 +1307,14 @@ $1",
 'right-deletedtext' => 'অপরাসারিত সংশোধনের অপরাসারিত লেখা এবং পরিবর্তনসমূহ দেখাও',
 'right-browsearchive' => 'অপসারিত পাতা অনুসন্ধান করো',
 'right-undelete' => 'পাতাটি পুনরুদ্ধার করুন',
+'right-suppressrevision' => 'প্রশাসকদের থেকে লুকানো সংস্করণগুলো রিভিউ এবং রিস্টোর করুন',
 'right-suppressionlog' => 'ব্যক্তিগত লগ দেখাও',
 'right-block' => 'সম্পাদনা করতে কোনো ব্যবহারকারীকে বাঁধা দাও',
 'right-blockemail' => 'ই-মেইল পাঠাতে কোনো ব্যবহারকারীকে বাঁধা দাও',
 'right-hideuser' => 'ব্যবহারকারীকে ব্লক করুন, এবং সর্বসাধারণের দৃষ্টিসীমা থেকে সরিয়ে নিন',
+'right-ipblock-exempt' => 'আইপি ব্লক, অটো ব্লক এবং রেঞ্জ ব্লক এড়িয়ে যান',
+'right-proxyunbannable' => 'সয়ংক্রিয় প্রক্সি ব্লক এড়িয়ে যান',
+'right-unblockself' => 'আনব্লক করুন',
 'right-protect' => 'পাতাটির সংরক্ষণ সীমা পরিবর্তন করুন এবং পাতটি সম্পাদনা করুন',
 'right-editprotected' => 'সুরক্ষিত পাতা সম্পাদনা (ক্যাসকাডিং সুরক্ষা ছাড়া)',
 'right-editinterface' => 'ব্যবহারকারী ইন্টারফেস সম্পাদনা',
@@ -1298,9 +1323,11 @@ $1",
 'right-edituserjs' => 'অন্য ব্যবহারকারীগণের JS ফাইল সম্পাদনা',
 'right-rollback' => 'একটি নির্দিষ্ট পাতার সর্বশেষ ব্যবহারকারীর সম্পদনা পূর্বাবস্থায় ফিরিয়ে আনুন',
 'right-markbotedits' => 'রোলড-ব্যাক সম্পাদনাসমূহকে বট সম্পাদনা হিসেবে চিহ্নিত করো',
+'right-noratelimit' => 'রেট লিমিটের ভিত্তিতে পরিবর্তন হবে না',
 'right-import' => 'অন্য উইকি থেকে পাতা আমদানী করো',
 'right-importupload' => 'ফাইল আপলোড থেকে এই পাতাগুলো আমদানী করো',
 'right-patrol' => 'অন্যের সম্পাদনা পরীক্ষিত বলে চিহ্নিত করো',
+'right-autopatrol' => 'কারও নিজের সম্পাদনা সয়ংক্রিয়ভাবে পরীক্ষাণ হিসাবে চিহ্নিত',
 'right-patrolmarks' => 'সাম্প্রতিক পরিবর্তনের পরীক্ষিত চিহ্ন দেখাও',
 'right-unwatchedpages' => 'নজরতালিকা বহির্ভূত পাতাগুলির তালিকা দেখাও',
 'right-mergehistory' => 'পাতার ইতিহাস একীকরণ করুন।',
@@ -1309,11 +1336,13 @@ $1",
 'right-siteadmin' => 'ডাটাবেজ বন্ধ এবং খুলুন',
 'right-override-export-depth' => '৫ম স্তর পর্যন্ত সংযুক্তিসহ একটি পাতা রপ্তানী করুন',
 'right-sendemail' => 'অন্য ব্যবহারকারীকে ইমেইল পাঠান',
+'right-passwordreset' => 'পাসওয়ার্ড রিসেট ইমেইল দেখুন',
 
 # User rights log
 'rightslog' => 'ব্যবহারকারীর অধিকার লগ',
 'rightslogtext' => 'এটি ব্যবহারকারী অধিকারে আনা পরিবর্তনগুলির একটি লগ।',
 'rightslogentry' => '$1-কে $2 দল থেকে পরিবর্তন করে $3 দলের সদস্য করা হয়েছে',
+'rightslogentry-autopromote' => 'সয়ংক্রিয়ভাবে $2 থেকে $3 উন্নীত হয়েছে',
 'rightsnone' => '(কিছু নাই)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1329,6 +1358,7 @@ $1",
 'action-movefile' => 'এই ফাইলটি সরিয়ে ফেলুন',
 'action-upload' => 'এই ফাইল আপলোড করো',
 'action-reupload' => 'বিদ্যমান ফাইল প্রতিস্থাপন করো',
+'action-reupload-shared' => 'শেয়ার্ড রিপোজিটরীতে এই ফাইলটি আপডেট করুন',
 'action-upload_by_url' => 'কোন ইউআরএল থেকে ফাইলটি আপলোড করো',
 'action-writeapi' => 'রাইট এপিআই ব্যবহার করুন',
 'action-delete' => 'পাতাটি মুছে ফেলো',
@@ -1336,9 +1366,11 @@ $1",
 'action-deletedhistory' => 'পাতার মুছে ফেলা ইতিহাস দেখাও',
 'action-browsearchive' => 'অপসারিত পাতায় অনুসন্ধান করুন',
 'action-undelete' => 'পাতাটি পুনরুদ্ধার করো',
+'action-suppressrevision' => 'লুকানো সংস্করণগুলো রিভিউ এবং রিস্টোর করুন',
 'action-suppressionlog' => 'এই ব্যক্তিগত লগ দেখাও',
 'action-block' => 'এই ব্যবহারকারীকে সম্পাদনা করতে বাঁধা দাও',
 'action-protect' => 'এই পাতার সুরক্ষার মাত্রা পরিবর্তন করো',
+'action-rollback' => 'একটি নির্দিষ্ট পাতার সর্বশেষ ব্যবহারকারীর সম্পদনা পূর্বাবস্থায় ফিরিয়ে আনুন',
 'action-import' => 'অন্য উইকি থেকে এই পাতাটি আমদানী করো',
 'action-importupload' => 'ফাইল আপলোড থেকে এই পাতাটি আমদানী করো',
 'action-patrol' => 'অন্যদের সম্পাদনা পরীক্ষিত বলে চিহ্নিত করো',
@@ -1347,6 +1379,7 @@ $1",
 'action-mergehistory' => 'এই পাতার ইতিহাস একত্রিত করুন',
 'action-userrights' => 'সকল ব্যবহারকারীর অধিকার সম্পাদনা করুন',
 'action-userrights-interwiki' => 'অন্যান্য উইকির ব্যবহারকারীদের অধিকারসমূহ সম্পাদনা করুন',
+'action-siteadmin' => 'ডাটাবেজ বন্ধ অথবা খুলুন',
 'action-sendemail' => 'ই-মেইল পাঠাও',
 
 # Recent changes
@@ -1381,9 +1414,11 @@ $1",
 'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|জন ব্যবহারকারী|জন ব্যবহারকারী}} এই পাতার উপর নজর রাখছেন]',
 'rc_categories' => 'এই বিষয়শ্রেণীগুলিতে সীমাবদ্ধ করা হোক ("|" দিয়ে আলাদা করে লিখুন)',
 'rc_categories_any' => 'যেকোনো',
+'rc-change-size-new' => 'পরিবর্তনের পর $1 {{PLURAL:$1|বাইট}}',
 'newsectionsummary' => '/* $1 */ নতুন অনুচ্ছেদ',
 'rc-enhanced-expand' => 'বিস্তারিত দেখাও (জাভাস্ক্রিপ্ট দরকার)',
 'rc-enhanced-hide' => 'বিস্তারিত লুকাও',
+'rc-old-title' => 'মূলত "$1" হিসাবে তৈরী করা হয়েছিল',
 
 # Recent changes linked
 'recentchangeslinked' => 'সম্পর্কিত পরিবর্তন',
@@ -1405,6 +1440,9 @@ $1",
 'upload_directory_missing' => 'আপলোড ডাইরেক্টরি ($1) পাওয়া যাচ্ছে না এবং ওয়েব সার্ভার কর্তৃক তৈরি করা যাচ্ছে না।',
 'upload_directory_read_only' => 'আপলোড ডিরেক্টরিটি ($1) ওয়েবসার্ভার কর্তৃক লিখনযোগ্য নয়।',
 'uploaderror' => 'আপলোড এ সমস্যা হয়েছে',
+'upload-recreate-warning' => "'''সতর্কতা: এই নামের ফাইলটি অপসারণ অথবা স্থানান্তর করা হয়েছে।'''
+
+কাজের সুবিধার জন্য অপসারণ এবং স্থানান্তর লগ এখানে দেখানো হল:",
 'uploadtext' => "ফাইল আপলোড করতে নিচের ফরমটি ব্যবহার করুন।</br>
 পূর্বে আপলোড করা ফাইল দেখতে বা অনুসন্ধানে [[Special:FileList|পূর্বে আপলোড করা ফাইলের তালিকা]] দেখুন। (পুনঃ)আপলোড করা ফাইল এর নাম  [[Special:Log/upload|আপলোড লগে]] যোগ হয়, অপসারিত ফাইলের নাম [[Special:Log/delete|অপসারণ লগে]] রয়েছে।
 
@@ -1430,7 +1468,9 @@ $1",
 'ignorewarnings' => 'সমস্ত সতর্কীকরণ উপেক্ষা করা হোক',
 'minlength1' => 'ফাইলের নাম কমপক্ষে এক বর্ণের হতে হবে।',
 'illegalfilename' => '"$1" ফাইলনামটিতে এমন কিছু ক্যারেক্টার আছে যেগুলি পাতার শিরোনামে ব্যবহার করা অবৈধ। অনুগ্রহ করে ফাইলটি নতুন করে নামকরণ করুন এবং তারপর আপলোড করার চেষ্টা করুন।',
+'filename-toolong' => 'ফাইলের নাম ২৪০ বাইটের বড় হওয়া যাবে না।',
 'badfilename' => 'ফাইলের নামটি পরিবর্তন করে $1" করা হয়েছে।',
+'filetype-mime-mismatch' => '".$1" ফাইল এক্সটেনশনটি MIME থেকে চিহ্নিত ফাইলের ধরনের সাথে মিলছে না ($2)।',
 'filetype-badmime' => '"$1" MIME ধরনের ফাইল আপলোড করা যাবে না।',
 'filetype-bad-ie-mime' => 'এই ফাইলটি আপলোড করা সম্ভব নয় কারণ ইন্টারনেট এক্সপ্লোরার একে "$1" হিসেবে সনাক্ত করতে পারে, যা অননুমোদিত এবং সম্ভাব্য ক্ষতিকারক ফাইল টাইপ।',
 'filetype-unwanted-type' => "'''\".\$1\"''' ফাইল ধরনটি অগ্রহণযোগ্য।
@@ -1441,6 +1481,8 @@ $1",
 'file-too-large' => 'আপনার জমাকৃত ফাইলটি অনেক বড়।',
 'filename-tooshort' => 'ফাইল নামটি খুব ছোট।',
 'filetype-banned' => 'এই ধরনের ফাইল নিষিদ্ধ।',
+'verification-error' => 'এই ফাইলের ফাইল ভ্যালিডেশন উত্তীর্ণ হয়নি।',
+'hookaborted' => 'যে পরিবর্তনটি আপনি করার চেষ্টা করেছিলেন তা এক্সটেনশন দ্বারা বাতিল করা হয়েছে।',
 'illegal-filename' => 'ফাইলের এই নামটি গ্রহণযোগ্য নয়।',
 'overwrite' => 'বিদ্যমান কোনো ফাইল প্রতিস্থাপন গ্রহণযোগ্য নয়।',
 'unknown-error' => 'একটি অজানা ত্রুটি দেখা দিয়েছে।',
@@ -1451,6 +1493,10 @@ $1",
 'emptyfile' => 'আপনি যে ফাইলটি আপলোড করেছেন, তা খালি মনে হচ্ছে। ফাইলের নামে টাইপিং ত্রুটির কারণে এরকম হতে পারে। অনুগ্রহ করে পরীক্ষা করে দেখুন আপনি আসলেই এই ফাইলটি আপলোড করতে চান কি না।',
 'windows-nonascii-filename' => 'এই উইকি বিশেষ ক্যারেক্টারসমৃদ্ধ ফাইলের নাম সমর্থন করে না।',
 'fileexists' => 'এই নামের একটি ফাইল ইতিমধ্যেই বিদ্যমান। অনুগ্রহ করে <strong>[[:$1]]</strong> পরীক্ষা করে দেখুন, যদি আপনি এটি পরিবর্তনের ব্যাপারে নিশ্চিত না হন। [[$1|thumb]]',
+'filepageexists' => 'এই ফাইলের বর্ণনা পাতা এখানে <strong>[[:$1]]</strong> তৈরী করা হয়েছে, কিন্তু এই নামের কোনো ফাইল নেই।
+আপনার লেখা তথ্যগুলো বর্ণনা পাতায় যোগ করা যাচ্ছে না।
+তথ্যটি সংযোজনের জন্য আপনাকে ম্যানুয়ালী এই পাতাটি সম্পাদনা করতে হবে।
+[[$1|thumb]]',
 'fileexists-extension' => 'একই নামের আরেকটি ফাইল আছে: [[$2|thumb]]
 * আপলোড করা ফাইলের নাম: <strong>[[:$1]]</strong>
 * একই নামে বর্তমান ফাইলের নাম: <strong>[[:$2]]</strong>
@@ -1467,6 +1513,8 @@ $1",
 'fileexists-shared-forbidden' => 'অংশীদারী ফাইল ভাণ্ডারে এই নামের একটি ফাইল ইতিমধ্যেই বিদ্যমান।
 আপনি যদি এখনো ফাইলটি আপলোড করতে চান, তবে অনুগ্রহপূর্বক পেছনে গিয়ে একটি নতুন নামে ফাইলটি আপলোড করুন।[[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'এই ফাইলটি নিচের {{PLURAL:$1|ফাইল|ফাইলগুলির}} অনুলিপি:',
+'file-deleted-duplicate' => 'এই ফাইলটির মত একটি ফাইল ([[:$1]]) পূর্বে অপসারণ করা হয়েছে।
+পুনরায় আপলোড করার পূর্বে আপনার উচিত আগের ফাইলটির অপসারণের কারণ জানা।',
 'uploadwarning' => 'আপলোড সতর্কবাণী',
 'uploadwarning-text' => 'অনুগ্রহ করে নিচে ফাইলের বর্ণনা পরিবর্তন করে আবার চেষ্টা করুন।',
 'savefile' => 'সংরক্ষণ',
@@ -1480,6 +1528,8 @@ $1",
 অনুগ্রহ করে file_uploads সেটিং পরীক্ষা করুন।',
 'uploadscripted' => 'এই ফাইলে এমন HTML বা স্ক্রিপ্ট কোড আছে যা একটি ওয়েব ব্রাউজার ভুল বুঝতে পারে।',
 'uploadvirus' => 'এই ফাইলটিতে ভাইরাস আছে! ব্যাখ্যা: $1',
+'uploadjava' => 'এটি একটি ZIP ফরম্যাটের ফাইল, যেখানে একটি জাভা .class ফরম্যাটের ফাইল রয়েছে।
+জাভা ফাইল আপলোডের কোনো অনুমতি নেই, কারণ এই ধরনের ফাইল সিস্টেমে নিরাপত্তা ত্রুটি তৈরী করতে পারে।',
 'upload-source' => 'উৎস ফাইল',
 'sourcefilename' => 'উৎস ফাইলের নাম:',
 'sourceurl' => 'উৎস ইউআরএল:',
@@ -1493,6 +1543,9 @@ $1",
 'upload-success-subj' => 'আপলোড সফল হয়েছে',
 'upload-success-msg' => '[$2] থেকে আপনার আপলোড সফল হয়েছে। এটি এখানে: [[:{{ns:file}}:$1]] পাওয়া যাবে',
 'upload-failure-subj' => 'আপলোড সমস্যা',
+'upload-failure-msg' => 'আপনার আপলোড ফর্ম [$2]-এ একটি সমস্যা হয়েছে:
+
+$1',
 'upload-warning-subj' => 'আপলোড সতর্কীকরণ',
 'upload-warning-msg' => '[$2] থেকে করা আপনার আপলোডে সমস্যা হয়েছে। সমস্যার সমাধানকল্পে আপনাকে সম্ভবত [[Special:Upload/stash/$1|আপলোড ফর্ম]]-এ ফিরে যেতে হবে।',
 
@@ -1529,6 +1582,28 @@ $1",
 'backend-fail-create' => '$1 ফাইলটি তৈরী করা যাচ্ছে না।',
 'backend-fail-maxsize' => '"$1" ফাইলে লেখা যাচ্ছে না কারণ এটি {{PLURAL:$2|এক বাইট|$2 বাইট}} থেকে বড়।',
 'backend-fail-readonly' => '"$1" স্টোরেজ ব্যাকএন্ড থেকে বর্তমানে লেখা যাচ্ছে না। কারণ: "\'\'$2\'\'"',
+'backend-fail-synced' => '"$1" ফাইলটি ইন্টারনাল স্টোরেজ ব্যকএন্ডের সাথে অসামঞ্জস্যপূর্ণ',
+'backend-fail-connect' => 'স্টোরেজ ব্যাকেন্ড "$1" এর সাথে যোগাযোগ করা যাচ্ছে না।',
+'backend-fail-internal' => '"$1" স্টোরেজ ব্যাকেন্ডে কোনো অজানা ত্রুটি হয়েছে।',
+'backend-fail-contenttype' => '"$1"-এ সংরক্ষনের জন্য নির্ধারিত ফাইলের ধরন বুঝতে পারা যাচ্ছে না।',
+'backend-fail-batchsize' => 'স্টোরেজ ব্যকএন্ডে $1টি {{PLURAL:$1|অপারেশনের|অপারেশনগুলোর}} কমান্ড দেয়া হয়েছে; সর্বোচ্চ সীমা হল $2টি {{PLURAL:$1|অপারেশ}}।',
+'backend-fail-usable' => '"$1" ফাইলটিতে লেখা অথবা ফাইলটি পড়া যাচ্ছে না, কারণ সঠিক অনুমতি নেই অথবা ডিরেক্টরীটি নেই।',
+
+# File journal errors
+'filejournal-fail-dbconnect' => '"$1" স্টোরেজ ব্যাকেন্ডের জার্নাল ডাটাবেজের সাথে যুক্ত হওয়া যাচ্ছে না।',
+'filejournal-fail-dbquery' => '"$1" স্টোরেজ ব্যাকেন্ডের জার্নাল ডাটাবেজ আপডেট করা যাচ্ছে না।',
+
+# Lock manager
+'lockmanager-notlocked' => '"$1" আনলক করা যাচ্ছে না; এটি লক করা রয়েছে।',
+'lockmanager-fail-closelock' => '"$1" ফাইলটি লক করা তাই বন্ধ করা যাচ্ছে না।',
+'lockmanager-fail-deletelock' => '"$1" লক করা ফাইলটি অপসারণ সম্ভব নয়।',
+'lockmanager-fail-acquirelock' => '"$1" লক করা ফাইল খুজে পাওয়া যাচ্ছে না।',
+'lockmanager-fail-openlock' => '"$1" লক করা ফাইলটি খোলা সম্ভব নয়।',
+'lockmanager-fail-releaselock' => '"$1" লক করা ফাইলটি ছাড়া যাচ্ছে না।',
+'lockmanager-fail-db-bucket' => '$1 এর লক করা ডাটাবেজের সাথে যোগাযোগ করা যাচ্ছে না।',
+'lockmanager-fail-db-release' => '$1 ডাটাবেজের লক খোলা যাচ্ছে না।',
+'lockmanager-fail-svr-acquire' => '$1 সার্ভারের লক পাওয়া যাচ্ছে না।',
+'lockmanager-fail-svr-release' => '$1 ডাটাবেজের লক খোলা যাচ্ছে না।',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'ফাইলটির জিপ পরীক্ষা করার সময় একটি ত্রুটি দেখা দিয়েছে।',
@@ -1540,18 +1615,38 @@ $1",
 
 # Special:UploadStash
 'uploadstash' => 'আপলোড স্ট্যাশ',
+'uploadstash-summary' => 'এই পাতার মাধ্যমে এমন সকল ফাইল দেখা যাবে যেগুলো আপলোড করা হয়েছে (অথবা আপলোড করা চলছে) কিন্তু এখানো উইকিতে প্রকাশ করা হয়নি। 
+এই ফাইলগুলো যিনি আপলোড করছেন তিনি ছাড়া আর কেউ দেখতে পাচ্ছেন না।',
+'uploadstash-clear' => 'স্ট্যাশড্‌ ফাইল পরিষ্কার করা',
+'uploadstash-nofiles' => 'আপনার কোনো স্ট্যাশড ফাইল নেই।',
+'uploadstash-badtoken' => 'আপনার অনুরোধকৃত কাজটি সম্পন্ন হয়নি, হয়তো আপনার সম্পাদনার অনুমতি মেয়াদ উত্তীর্ণ হয়েছে। পুনরায় চেষ্টা করুন।',
 'uploadstash-errclear' => 'ফাইলগুলো পরিষ্কারকরণ ব্যর্থ হয়েছে।',
 'uploadstash-refresh' => 'ফাইলের তালিকা রিফ্রেশ করুন',
+'invalid-chunk-offset' => 'ত্রুটিপূর্ণ চাংক অফসেট',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'প্রবেশাধিকার নাই',
+'img-auth-nopathinfo' => 'PATH_INFO পাওয়া যাচ্ছে না।
+আপনার সার্ভার থেকে এই তথ্য পাঠানোর জন্য কনফিগার করা হয়নি।
+এটি হয়তো CGI ভিত্তিক এবং img_auth সমর্থন করে না।
+বিস্তারিত দেখুন https://www.mediawiki.org/wiki/Manual:Image_Authorization।',
+'img-auth-notindir' => 'অনুরোধকৃত পাথটি কনফিগার করা আপলোড ডিরেক্টরী নয়।',
+'img-auth-badtitle' => '"$1" থেকে একটি সঠিক শিরনাম তৈরী করা যাচ্ছে না।',
 'img-auth-nologinnWL' => 'আপনি লগইন করেননি এবং "$1" নজরতালিকায় নাই।',
 'img-auth-nofile' => 'ফাইল "$1" নাই।',
+'img-auth-isdir' => 'আপনি "$1" ডিরেক্টরী দেখতে চেষ্ঠা করছেন।
+শুধুমাত্র ফাইল দেখার অনুমতি রয়েছে।',
 'img-auth-streaming' => 'স্ট্রিমিং "$1"।',
+'img-auth-public' => 'ব্যাক্তিগত উইকি থেকে ফাইল আউটপুটের জন্য img_auth.php এর ফাংশনগুলো ব্যবহার করা হয়।
+এই উইকিটি পাবলিক উইকি হিসাবে কনফিগার করা রয়েছে।
+নিরাপত্তার কারণে, img_auth.php ডিজেবল করা রয়েছে।',
 'img-auth-noread' => 'ব্যবহারকারীর "$1" পড়ার প্রবেশাধিকার নাই।',
+'img-auth-bad-query-string' => 'ইউআরএল এর কোয়েরি স্ট্রিংটি সঠিক নয়।',
 
 # HTTP errors
 'http-invalid-url' => 'ভুল ইউআরএল: $1',
+'http-invalid-scheme' => '"$1" যুক্ত ইউআরএল ব্যবহার অনুমদিন নয়।',
+'http-request-error' => 'অজানা কারণে HTTP রিকোয়েস্টটি ব্যার্থ হয়েছে।',
 'http-read-error' => 'HTTP পঠন ত্রুটি।',
 'http-timed-out' => 'HTTP অনুরোধের সময় পার হয়েছে।',
 'http-curl-error' => 'ইউআরএল নিয়ে আসার ক্ষেত্রে ত্রুটি: $1',
@@ -1572,6 +1667,8 @@ $1",
 'upload_source_file' => ' (আপনার কম্পিউটারের একটি ফাইল)',
 
 # Special:ListFiles
+'listfiles-summary' => 'এই বিশেষ পাতাটি আপলোড করা সকল ফাইল প্রদর্শন করে।
+ব্যবহারকারীর মাধ্যমে ফিল্টার করা হলে, ঐ নির্দিষ্ট ব্যবহারকারীর আপলোডকৃত ফাইলগুলোর সাম্প্রতিকতম সংস্করণগুলো দেখা যাবে।',
 'listfiles_search_for' => 'ছবির নাম অনুসন্ধান:',
 'imgfile' => 'ফাইল',
 'listfiles' => 'ছবির তালিকা',
@@ -1602,15 +1699,28 @@ $1",
 'filehist-missing' => 'ফাইল পাওয়া যায়নি',
 'imagelinks' => 'ফাইলের ব্যবহার',
 'linkstoimage' => 'নিচের {{PLURAL:$1|টি পাতা|$1টি পাতা}} থেকে এই ফাইলে সংযোগ আছে:',
+'linkstoimage-more' => 'এই ফাইলের সাথে $1টির বেশি {{PLURAL:$1|পাতার লিংক}} রয়েছে।
+নিচের তালিকায় ফাইলের সাথে যুক্ত {{PLURAL:$1|প্রথম পাতাটির লিংক|প্রথম $1টি পাতার লিংক}} দেখানো হচ্চে।
+এছাড়া একটি [[Special:WhatLinksHere/$2|পূর্ণাঙ্গ তালিকাও]] রয়েছে।',
 'nolinkstoimage' => 'এই ফাইলে সংযোগ করে এমন কোন পাতা নেই।',
 'morelinkstoimage' => 'এই ফাইলের [[Special:WhatLinksHere/$1|আরও লিঙ্ক]] দেখাও।',
 'linkstoimage-redirect' => '$1 (ফাইল পুনঃর্নিদেশ) $2',
+'duplicatesoffile' => 'নিচের {{PLURAL:$1|ফাইলটি|$1 ফাইলগুলো}} এই ফাইলের প্রতিলিপি ([[Special:FileDuplicateSearch/$2|বিস্তারিত দেখুন]]):',
 'sharedupload' => 'এই ফাইলটি $1 থেকে নেওয়া হয়েছে এবং এবং অন্যান্য প্রকল্পেও ব্যবহৃত হতে পারে।',
+'sharedupload-desc-there' => 'এই ফাইলটি $1 থেকে দেখানো হচ্ছে এবং হয়তো এটি অন্যান্য প্রকল্পতেও ব্যবহৃত হয়েছে।
+অনুগ্রহ করে বিস্তারিত জানার জন্য [$2 ফাইলটির বর্ণনা পাতা] দেখুন।',
 'sharedupload-desc-here' => 'এই ফাইলটি $1 থেকে এবং অন্যান্য প্রকল্পে ব্যবহৃত হতে পারে।
 এর [$2 ফাইল বিবরণ পৃষ্ঠা] উপর বর্ণনা নিম্নে দেখানো হলো।',
+'sharedupload-desc-edit' => 'এই ফাইলটি $1 থেকে এবং অন্যান্য প্রকল্পে ব্যবহৃত হতে পারে।
+[$2 ফাইলটির বর্ণনা পাতা] থেকে আপনি ফাইলটি বর্ণনা সম্পাদনা করতে পারেন।',
+'sharedupload-desc-create' => 'This file is from $1 and may be used by other projects.
+Maybe you want to edit the description on its [$2 file description page] there.',
 'filepage-nofile' => 'এই নামের কোন ফাইল নেই।',
+'filepage-nofile-link' => 'এই নামে কোনো ফাইল নেই, কিন্তু আপনি এটি [$1 আপলোড করতে পারেন]।',
 'uploadnewversion-linktext' => 'এই ফাইলটির একটি নতুন সংস্করণ আপলোড করুন',
 'shared-repo-from' => '$1 থেকে',
+'shared-repo' => 'শেয়ার্ড রিপোজিটরী',
+'upload-disallowed-here' => 'দুঃখিত আপনি এই ছবিটি প্রতিস্থাপন করতে পারবেন না।',
 
 # File reversion
 'filerevert' => '$1 পূর্বাবস্থায় ফেরত নিন',
@@ -1681,6 +1791,7 @@ $1",
 'statistics-edits' => '{{SITENAME}} চালু করার পর থেকে পাতার সম্পাদনাসমূহ',
 'statistics-edits-average' => 'প্রতি পাতার গড় সম্পাদনা',
 'statistics-views-total' => 'সর্বোমোট প্রদর্শন',
+'statistics-views-total-desc' => 'অপসারিত হয়েছে এবং বিশেষ পাতার প্রদর্শন এখানে যোগ করা হয়নি',
 'statistics-views-peredit' => 'প্রতি সম্পাদনায় পরিদর্শন',
 'statistics-users' => 'নিবন্ধিত [[Special:ListUsers|ব্যবহারকারী]]',
 'statistics-users-active' => 'সক্রিয় ব্যবহারকারী',
@@ -1698,6 +1809,7 @@ $1",
 <del>কেটে দেওয়া</del> ভুক্তিগুলো ঠিক করা হয়েছে।',
 'double-redirect-fixed-move' => '[[$1]] সরিয়ে নেওয়া হয়েছে।
 এটি এখন [[$2]] এ পুনঃনির্দেশিত হয়েছে।',
+'double-redirect-fixed-maintenance' => '[[$1]] থেকে [[$2]] এর দ্বিপুনঃর্নিদেশ সংশোধন করা হয়েছে।',
 'double-redirect-fixer' => 'পুনঃনির্দেশনা মেরামতকারী',
 
 'brokenredirects' => 'অকার্যকর পুনর্নির্দেশনাসমূহ',
@@ -1715,6 +1827,7 @@ $1",
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|বাইট|বাইট}}',
 'ncategories' => '$1 {{PLURAL:$1|বিষয়শ্রেণী|বিষয়শ্রেণীসমূহ}}',
+'ninterwikis' => '$1 {{PLURAL:$1|ইন্টারউইকি|ইন্টারউইকিসমূহ}}',
 'nlinks' => '$1টি {{PLURAL:$1|সংযোগ|সংযোগসমূহ}}',
 'nmembers' => '$1 {{PLURAL:$1|সদস্য|সদস্যবৃন্দ}}',
 'nrevisions' => '$1 {{PLURAL:$1|সংশোধন|সংশোধনসমূহ}}',
@@ -1733,15 +1846,20 @@ $1",
 'popularpages' => 'জনপ্রিয় পাতাসমূহ',
 'wantedcategories' => 'বাঞ্ছনীয় বিষয়শ্রেণীগুলি',
 'wantedpages' => 'বাঞ্ছনীয় পাতাগুলি',
+'wantedpages-badtitle' => 'ফলাফলে ভুল শিরনাম: $1',
 'wantedfiles' => 'আবশ্যিক ফাইলগুলো',
+'wantedfiletext-cat' => 'নিচের ফাইলগুলো ব্যবহৃত হচ্ছে কিন্তু এগুলো অপসারিত হয়েছে। অন্যান্য রিপোজিটরী থেকে ব্যবহৃত ফাইলগুলো এভাবে প্রদর্শিত হতে পারে। এই ধরনের কোন ফাইল খুজে পেলে <del>অপসারণ করুন</del>। এছাড়া অপসারিত হয়েছে এমন ছবির সংযোগ রয়েছে এমন পাতাসমূহের লিংক পাওয়া যাবে এখানে [[:$1]]।',
+'wantedfiletext-nocat' => 'নিচের ফাইলগুলো ব্যবহৃত হচ্ছে কিন্তু এগুলো অপসারিত হয়েছে। অন্যান্য রিপোজিটরী থেকে ব্যবহৃত ফাইলগুলো এভাবে প্রদর্শিত হতে পারে। এই ধরনের ভূলগুলো শিঘ্রই <del>অপসারিত হবে</del>।',
 'wantedtemplates' => 'আবশ্যিক টেম্পলেটগুলো',
 'mostlinked' => 'যেসব পাতার প্রতি সবচেয়ে বেশি সংযোগ আছে',
 'mostlinkedcategories' => 'যেসব বিষয়শ্রেণীর প্রতি সবচেয়ে বেশি সংযোগ আছে',
 'mostlinkedtemplates' => 'যেসব টেমপ্লেটে সবচেয়ে বেশি সংযোগ আছে',
 'mostcategories' => 'সবচেয়ে বেশী বিষয়শ্রেণী-সমৃদ্ধ নিবন্ধসমূহ',
 'mostimages' => 'যেসব ফাইলের দিকে সবচেয়ে বেশি সংযোগ আছে',
+'mostinterwikis' => 'সবচেয়ে বেশী ইন্টারউইকি লিংক-সমৃদ্ধ নিবন্ধসমূহ',
 'mostrevisions' => 'সবচেয়ে বেশী বার সম্পাদিত নিবন্ধসমূহ',
 'prefixindex' => 'উপসর্গ সহ সমস্ত পাতা',
+'prefixindex-namespace' => 'প্রিফিক্স সম্পবলিত সকল পাতা ($1 নামস্থান)',
 'shortpages' => 'সংক্ষিপ্ত পাতাসমূহ',
 'longpages' => 'দীর্ঘ পাতাসমূহ',
 'deadendpages' => 'যেসব পাতা থেকে কোনো সংযোগ নেই',
@@ -1774,12 +1892,14 @@ $1",
 'pager-newer-n' => '{{PLURAL:$1|নতুনতর ১টি|নতুনতর $1টি}}',
 'pager-older-n' => '{{PLURAL:$1|আরও পুরনো ১টি|আরও পুরনো $1টি}}',
 'suppress' => 'ওভারসাইট',
+'querypage-disabled' => 'কারিগরি কারণে এই বিশেষ পাতাটি আপাতত বন্ধ রয়েছে।',
 
 # Book sources
 'booksources' => 'বইয়ের উৎস',
 'booksources-search-legend' => 'বইয়ের উৎসের জন্য অনুসন্ধান করা হোক',
 'booksources-go' => 'চলো',
 'booksources-text' => 'নতুন ও পুরাতন ব্যবহৃত বই বিক্রি করে, এমন কতগুলি সাইটের সংযোগের তালিকা নিচে দেওয়া হল, যে সাইটগুলিতে আপনার অনুসন্ধানকৃত বইগুলির উপর আরও তথ্য থাকতে পারে:',
+'booksources-invalid-isbn' => 'উল্লেখিত ISBN সঠিক নয়; অনুগ্রহ করে মূল উৎস থেকে আবার পরীক্ষা করুন।',
 
 # Special:Log
 'specialloguserlabel' => 'সম্পাদক:',
@@ -1790,6 +1910,7 @@ $1",
 আপনি লগের ধরন, ব্যবহারকারীর নাম, বা পাতার নাম নির্বাচন করে প্রদর্শনটির আকার কমিয়ে আনতে পারেন।',
 'logempty' => 'মিলে যায় এমন কিছু লগে পাওয়া যায়নি।',
 'log-title-wildcard' => 'এই টেক্সট দিয়ে শুরু হওয়া শিরোনামগুলি অনুসন্ধান করা হোক',
+'showhideselectedlogentries' => 'নির্বাচিত লগগুলো দেখাও/লুকাও',
 
 # Special:AllPages
 'allpages' => 'সব পাতা',
@@ -1810,6 +1931,8 @@ $1",
 'allpages-hide-redirects' => 'পুনর্নির্দেশনাগুলো লুকাও',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'আপনার ওপেন করা পাতাটি ক্যাশ থেকে প্রদর্শিত হচ্ছে, এটি $1 দিনের পুরানো হতে পারে।',
+'cachedspecial-viewing-cached-ts' => 'আপনার ওপেন করা পাতাটি ক্যাশ থেকে প্রদর্শিত হচ্ছে, এটি সম্পূর্ণ নতুন হতে পারে।',
 'cachedspecial-refresh-now' => 'সাম্প্রতিকগুলো প্রদর্শন করো।',
 
 # Special:Categories
@@ -1831,7 +1954,11 @@ $1",
 'linksearch-pat' => 'অনুসন্ধান প্যাটার্ন:',
 'linksearch-ns' => 'নামস্থান:',
 'linksearch-ok' => 'অনুসন্ধান',
+'linksearch-text' => '"*.wikipedia.org" এর মত ওয়াইল্ড কার্ড ব্যবহার করা যেতে পারে।
+নূন্যতম একটি টপ লেভেল ডোমেইন প্রয়োজন, যেমন "*.org".<br />
+যে সকল প্রোটোকল সমর্থন করে: <code>$1</code> (অনুসন্ধান বক্সে এগুলো ব্যবহার করবেন না)।',
 'linksearch-line' => '$2 থেকে $1 এ লিংক করা হয়েছে',
+'linksearch-error' => 'হোস্ট নামের শুরুতে কেবলমাত্র ওয়াইল্ডকার্ড ব্যবহার করা যায়।',
 
 # Special:ListUsers
 'listusersfrom' => 'সেই সব ব্যবহারকারী দেখাও যাদের নাম এই অক্ষর দিয়ে শুরু:',
@@ -1854,6 +1981,10 @@ $1",
 
 # Special:ListGroupRights
 'listgrouprights' => 'দলগত ব্যবহারকারী অধিকার',
+'listgrouprights-summary' => 'এই উইকির ব্যবহারকারীদের একটি গ্রুপগুলোর তালিকা দেখানো হচ্ছে, সাথে গ্রুপের কার্যপরিধিও উল্লেখ করা হয়েছে।
+নির্দিষ্ট গ্রুপের কার্যপরিধি সম্পর্কে জানতে দেখুন [[{{MediaWiki:Listgrouprights-helppage}}|additional information]]।',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">অনুমোদিত অধিকার</span>
+* <span class="listgrouprights-revoked">বাধাপ্রাপ্ত অধিকার</span>',
 'listgrouprights-group' => 'দল',
 'listgrouprights-rights' => 'অধিকারসমূহ',
 'listgrouprights-helppage' => 'Help:দলের অধিকার',
@@ -1862,6 +1993,10 @@ $1",
 'listgrouprights-removegroup' => '{{PLURAL:$2|দল|দলসমূহ}} অপসারণ: $1',
 'listgrouprights-addgroup-all' => 'সমস্ত দল যোগ করুন',
 'listgrouprights-removegroup-all' => 'সমস্ত দল অপসারণ করুন',
+'listgrouprights-addgroup-self' => 'নিজের অ্যকাউন্টে {{PLURAL:$2|দল|দলসমূহ}} সংযোজন: $1',
+'listgrouprights-removegroup-self' => 'নিজের অ্যাকাউন্ট থেকে {{PLURAL:$2|দল|দলসমূহ}} অপসারণ: $1',
+'listgrouprights-addgroup-self-all' => 'নিজের অ্যাকাউন্টে সকল দল সংযোজন',
+'listgrouprights-removegroup-self-all' => 'নিজের অ্যাকাউন্ট থেকে সকল দল অপসারণ',
 
 # E-mail user
 'mailnologin' => 'প্রাপকের ঠিকানা নেই',
@@ -2106,6 +2241,7 @@ $UNWATCHURL
 # Undelete
 'undelete' => 'মুছে ফেলা পাতাগুলি দেখুন',
 'undeletepage' => 'মুছে ফেলা পাতাগুলি দেখুন ও ফিরিয়ে আনুন',
+'undeletepagetitle' => "'''[[:$1|$1]] এর অপসারিত সংস্করণগুলোর সমন্বয়ে দেখানো হচ্ছে'''।",
 'viewdeletedpage' => 'মুছে ফেলা হয়েছে, এমন পাতাগুলো দেখুন',
 'undeletepagetext' => 'নিচের {{PLURAL:$1|পাতা মুছে ফেলা হয়েছে কিন্তু|$1 পাতাগুলি মুছে ফেলা হয়েছে কিন্তু}} এগুলি এখনও আর্কাইভে আছে ও পুনরুদ্ধার করা সম্ভব। আর্কাইভ পর্যায়ক্রমিকভাবে পরিস্কার করা হতে পারে।',
 'undelete-fieldset-title' => 'সংশোধন পুনরুদ্ধার',
@@ -2154,7 +2290,9 @@ $1',
 # Namespace form on various pages
 'namespace' => 'নামস্থান:',
 'invert' => 'ব্যুত্ক্রমে নির্বাচন',
+'tooltip-invert' => 'যে সকল নামস্থানের পাতাগুলোর পরিবর্তনসমূহর দেখতে চাচ্ছেন না সেগুলোর নামের পাশে টিক দিন',
 'namespace_association' => 'সংশ্লিষ্ট নামস্থান',
+'tooltip-namespace_association' => 'এখানে টিক দেয়ার মাধ্যমে সংশ্লিষ্ট নামস্থান এবং আলাপপাতাসমূহ অন্তর্ভুক্ত করছেন',
 'blanknamespace' => '(প্রধান)',
 
 # Contributions
@@ -2262,6 +2400,7 @@ $1',
 'blocklist-userblocks' => 'অ্যাকাউন্ট বাধা লুকাও',
 'blocklist-tempblocks' => 'অস্থায়ী বাধা লুকাও',
 'blocklist-addressblocks' => 'একক আইপি বাধা লুকাও',
+'blocklist-rangeblocks' => 'রেঞ্জ ব্লকসমূহ লুকান',
 'blocklist-timestamp' => 'সময়বার্তা',
 'blocklist-target' => 'লক্ষ্য',
 'blocklist-expiry' => 'মেয়াদোত্তীর্ণ হবে',
@@ -2301,13 +2440,19 @@ $1',
 'block-log-flags-noautoblock' => 'স্বয়ংক্রিয় বাধাদান নিষ্ক্রিয়',
 'block-log-flags-noemail' => 'ই-মেইলে বাধা আছে',
 'block-log-flags-nousertalk' => 'নিজের আলাপের পাতা সম্পাদনা করতে পারবে না',
+'block-log-flags-angry-autoblock' => 'উন্নত অটোব্লক সক্রিয়',
 'block-log-flags-hiddenname' => 'ব্যবহারকারীনাম লুকায়িত',
 'range_block_disabled' => 'প্রশাসকের পক্ষে আইপি ঠিকানার শ্রেণী বাধাদানের ক্ষমতা নিষ্ক্রিয় আছে।',
 'ipb_expiry_invalid' => 'মেয়াদোত্তীর্ণকাল অবৈধ।',
+'ipb_expiry_temp' => 'লুকানো ব্যবহারকারীনাম বাধা চিরস্থায়ী হতে হবে।',
 'ipb_already_blocked' => '"$1" ইতিমধ্যে ব্লক',
+'ipb-needreblock' => '$1 পূর্বেই ব্লক রয়েছেন। আপনি কি সেটিংস পরিবর্তন করতে চান?',
+'ipb-otherblocks-header' => 'অন্যান্য {{PLURAL:$1|বাধাঁ|বাধাঁসমূহ}}',
+'unblock-hideuser' => 'আপনি এই ব্যবহারকারীকে আনব্লক করতে পারবেন না, কারণ এই ব্যবহারকারীদের ব্যবহাকারী নাম লুকানো রয়েছে।',
 'ipb_cant_unblock' => 'ত্রুটি: $1 ব্লক আইডি খুঁজে পাওয়া যায়নি। হয়ত ইতিমধ্যেই এটির উপর থেকে বাধা তুলে নেওয়া হয়েছে।',
 'ipb_blocked_as_range' => 'ত্রুটি: $1 আইপি ঠিকানাটিকে সরাসরি বাধা দেওয়া হয়নি এবং বাধা তুলে নেওয়া যাবে না। তবে ঠিকানাটি $2 সীমার অন্তর্ভুক্ত এবং সেটি থেকে বাধা তুলে নেওয়া সম্ভব।',
 'ip_range_invalid' => 'অবৈধ আইপি শ্রেণী',
+'ip_range_toolarge' => '/$1 এর বড় রেঞ্জব্লক ব্যবহার অনুমদিত নয়।',
 'blockme' => 'আমাকে বাধা দেওয়া হোক',
 'proxyblocker' => 'প্রক্সি বাধাদানকারী',
 'proxyblocker-disabled' => 'এই ফাংশনটি নিষ্ক্রিয়।',
@@ -2315,6 +2460,9 @@ $1',
 'proxyblocksuccess' => 'নিষ্পন্ন হয়েছে।',
 'sorbsreason' => 'আপনার আইপি ঠিকানাটি {{SITENAME}}-এর ব্যবহার করা DNSBL-এ উন্মুক্ত প্রক্সি হিসেবে তালিকাভুক্ত আছে।',
 'sorbs_create_account_reason' => 'আপনার আইপি ঠিকানাটি {{SITENAME}}-এর ব্যবহার করা DNSBL-এ উন্মুক্ত প্রক্সি হিসেবে তালিকাভুক্ত আছে। আপনি কোন অ্যাকাউন্ট সৃষ্টি করতে পারবেন না।',
+'cant-block-while-blocked' => 'আপনি নিজে ব্লক থাকা অবস্থায় অন্যন্য ব্যবহারকারীকে ব্লক করতে পারবেন না।',
+'ipbblocked' => 'আপনি অন্য কোন ব্যবহারকরীকে ব্লক বা আনব্লক করতে পারবেন না, কারণ আপনি নিজেই ব্লক রয়েছেন',
+'ipbnounblockself' => 'আপনি নিজেকে আনব্লক করতে পারবেন না',
 
 # Developer tools
 'lockdb' => 'ডাটাবেজ বন্ধ করে দেওয়া হোক',
@@ -2335,6 +2483,7 @@ $1',
 'unlockdbsuccesstext' => 'ডাটাবেজ খুলে দেওয়া হয়েছে।',
 'lockfilenotwritable' => 'ডাটাবেজ বন্ধ করার ফাইলটি লিখনযোগ্য নয়। ডাটাবেজ বন্ধ করতে বা খুলতে চাইলে ফাইলটিকে ওয়েব সার্ভার কর্তৃক লিখনযোগ্য হতে হবে।',
 'databasenotlocked' => 'ডাটাবেজ বন্ধ নয়।',
+'lockedbyandtime' => '({{GENDER:$1|$1}} $2 এর $3 সময়ে)',
 
 # Move page
 'move-page' => '$1 স্থানান্তর',
@@ -2356,11 +2505,13 @@ $1',
 
 এসব ক্ষেত্রে আপনি চাইলে নিজের হাতে পাতাটিকে সরাতে বা একত্রীকরণ করতে পারেন।",
 'movearticle' => 'যে পাতা সরিয়ে ফেলা হবে',
+'moveuserpage-warning' => "'''সতর্কতা:''' আপনি একটি ব্যবহারকারী পাতা স্থানান্তর করছেন। অনুগ্রহ করে লক্ষ্য করুন যে এর মাধ্যমে কেবলমাত্র পাতাটি স্থানান্তর হবে, কিন্তু পাতার নাম পরিবর্তন হবে ''না''।",
 'movenologin' => 'অ্যাকাউন্টে প্রবেশ করা হয়নি',
 'movenologintext' => 'কোন পাতা সরিয়ে ফেলতে চাইলে আপনাকে অবশ্যই একজন নিবন্ধিত ব্যবহারকারী হতে হবে ও অ্যাকাউন্টে [[Special:UserLogin|প্রবেশ]] করতে হবে।',
 'movenotallowed' => 'আপনার {{SITENAME}}-তে পাতা স্থানান্তরের অনুমতি নেই।',
 'movenotallowedfile' => 'আপনার এই ফাইলটি স্থানান্তরের অনুমতি নেই।',
 'cant-move-user-page' => 'ব্যবহারকারী পাতা (উপপাতা থেকে পৃথক) স্থানান্তরের আপনার অনুমতি নেই।',
+'cant-move-to-user-page' => 'আপনার কোনো পাতা ব্যবহারকারী পাতার স্থানান্তরের অনুমতি নেই (ব্যবহারকারী উপপাতা ব্যতিত)।',
 'newtitle' => 'এই নতুন শিরোনামে',
 'move-watch' => 'এই পাতাটি নজরে রাখুন',
 'movepagebtn' => 'পাতা সরান',
@@ -2377,8 +2528,11 @@ $1',
 'movepage-page-exists' => '$1 পাতাটি ইতিমধ্যেই বিদ্যমান এবং স্বয়ংক্রিয়ভাবে পুনর্লিখন করা সম্ভব নয়।',
 'movepage-page-moved' => '$1 পাতাটি $2 পাতায় স্থানান্তর করা হয়েছে।',
 'movepage-page-unmoved' => '$1 পাতাটি $2 -এ সরিয়ে নেওয়া সম্ভপর নয়।',
+'movepage-max-pages' => 'সর্বোচ্চ $1টি {{PLURAL:$1|উপপাতা}}স্থানান্তর করা হয়েছে এবং এর থেকে বেশি সংখ্যক পাতা সয়ংক্রিয়ভাবে স্থানান্তর সম্ভব নয়।',
 'movelogpage' => 'পাতা স্থানান্তর লগ',
 'movelogpagetext' => 'সরানো পাতাগুলির একটি তালিকা নিচে দেয়া হল।',
+'movesubpage' => '{{PLURAL:$1|উপপাতা|উপপাতাসমূহ}}',
+'movesubpagetext' => 'এই পাতার $1টি {{PLURAL:$1|উপপাতা}} রয়েছে যেগুলো নিচে দেখানো হচ্ছে।',
 'movenosubpage' => 'এই পাতাটির কোনো উপপাতা নেই।',
 'movereason' => 'কারণ:',
 'revertmove' => 'পূর্বাবস্থায় ফেরত নেওয়া হোক',
@@ -2389,8 +2543,21 @@ $1',
 'delete_and_move_confirm' => 'হ্যাঁ, পাতাটি মুছে ফেলা হোক',
 'delete_and_move_reason' => '"[[$1]]" থেকে স্থানান্তরের স্বার্থে মুছে ফেলা হয়েছে',
 'selfmove' => 'উৎস ও গন্তব্য পাতা একই শিরোনামের; কোন পাতা একই শিরোনামের আরেক পাতায় সরানো যাবে না।',
+'immobile-source-namespace' => 'পাতাটি "$1" নামস্থানে স্থানান্তর সম্ভব নয়',
+'immobile-target-namespace' => 'পাতাটি "$1" নামস্থানে স্থানান্তর সম্ভব নয়',
+'immobile-target-namespace-iw' => 'পাতা স্থানান্তরের ক্ষেত্রে ইন্টারউইকি লিংক ব্যবহার করা যাবে না।',
 'immobile-source-page' => 'এই পাতাটির স্থানান্তর সম্ভব নয়।',
 'immobile-target-page' => 'গন্তব্য শিরোনামে স্থানান্তর করা যাবে না।',
+'imagenocrossnamespace' => 'কোনো ফাইল ফাইলনয় এমন নামস্থানে স্থানান্তর সম্ভব নয়',
+'nonfile-cannot-move-to-file' => 'কোনো ফাইলনয় এমন কোনো পাতা ফাইল নামস্থানে স্থানান্তর সম্ভব নয়',
+'imagetypemismatch' => 'নতুন ফাইল এক্সটেনশনটি ফাইলের ধরনের সাথে মিলছে না',
+'imageinvalidfilename' => 'ফাইল নামটি সঠিক নয়',
+'fix-double-redirects' => 'মূল শিরনামকে নির্দেশ করে এমন সকল রিডাইরেক্ট আপডেট করুন',
+'move-leave-redirect' => 'রিডাইরেক্ট উপেক্ষা করুন',
+'protectedpagemovewarning' => "'''সতর্কীকরণ:''' এই পাতাটি বন্ধ করা হয়েছে; কেবলমাত্র প্রশাসক মর্যাদার ব্যবহারকারীরাই এটি স্থানান্তর করতে পারবেন।
+আপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।",
+'semiprotectedpagemovewarning' => "'''নোট:''' এই পাতাটির ব্যবহার নিয়ন্ত্রণ করা হয়েছে তাই নিবন্ধনকৃত ব্যবহারকারী এটি স্থানান্তর করতে পারবেন।
+আপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো:",
 
 # Export
 'export' => 'পাতা রপ্তানি',
@@ -2403,6 +2570,7 @@ $1',
 'exportcuronly' => 'সম্পূর্ণ ইতিহাস নয়, কেবল বর্তমান সংশোধনটি অন্তর্ভুক্ত করা হোক',
 'exportnohistory' => "----
 '''লক্ষ্য করুন:''' কর্মদক্ষতা-সম্পর্কিত কারণের জন্য এই ফর্মের মাধ্যমে কোন পাতার সমগ্র ইতিহাস রপ্তানি করা নিষ্ক্রিয় করা হয়েছে।",
+'exportlistauthors' => 'প্রতি পাতার অবদানকারীর একটি পূর্ণাঙ্গ তালিকা যুক্ত হবে',
 'export-submit' => 'রপ্তানি করা হোক',
 'export-addcattext' => 'এই বিষয়শ্রেণী থেকে পাতা যোগ করা হোক:',
 'export-addcat' => 'যোগ',
@@ -2423,6 +2591,7 @@ $1',
 'allmessages-filter-unmodified' => 'অপরিবর্তিত',
 'allmessages-filter-all' => 'সমস্ত',
 'allmessages-filter-modified' => 'পরিবর্তিত',
+'allmessages-prefix' => 'প্রিফিক্স অনুযায়ী ফিল্টার:',
 'allmessages-language' => 'ভাষা:',
 'allmessages-filter-submit' => 'চলো',
 
@@ -2432,9 +2601,12 @@ $1',
 'thumbnail_error' => 'থাম্বনেইল সৃষ্টি করতে গিয়ে ত্রুটি: $1',
 'djvu_page_error' => 'DjVu পাতা সীমার বাইরে',
 'djvu_no_xml' => 'DjVu ফাইলের জন্য XML আনতে পারা যায়নি।',
+'thumbnail-temp-create' => 'অস্থায়ী থাম্বনেইল ফাইল তৈরী করা সম্ভব নয়',
+'thumbnail-dest-create' => 'নির্ধারিত স্থানে থাম্বনেইল তৈরী করা সম্ভব নয়',
 'thumbnail_invalid_params' => 'থাম্বনেইল প্যারামিটারগুলি অবৈধ',
 'thumbnail_dest_directory' => 'গন্তব্য ডিরেক্টরি তৈরি করা যায়নি',
 'thumbnail_image-type' => 'চিত্রের ধরন সমর্থন করে না',
+'thumbnail_image-missing' => 'ফাইলটি খুজে পাওয়া যাচ্ছে না: $1',
 
 # Special:Import
 'import' => 'পাতা আমদানি',
@@ -2454,6 +2626,7 @@ $1',
 'importstart' => 'পাতা আমদানি করা হচ্ছে...',
 'import-revision-count' => '$1 {{PLURAL:$1|টি সংশোধন|টি সংশোধন}}',
 'importnopages' => 'আমদানি করার মত কোন পাতা নেই।',
+'imported-log-entries' => '$1টি {{PLURAL:$1|লগ এন্ট্রি|লগ এন্ট্রিসমূহ}} আমদানি করা হয়েছে।',
 'importfailed' => 'আমদানি ব্যর্থ: $1',
 'importunknownsource' => 'আমদানি উৎসের ধরন অজানা',
 'importcantopen' => 'আমদানি ফাইল খোলা যায়নি',
@@ -2466,12 +2639,22 @@ $1',
 'importuploaderrorsize' => 'আমদানি ফাইল আপলোড ব্যর্থ। ফাইলটির আকার অনুমোদিত আপলোডের আকারের চেয়ে বড়।',
 'importuploaderrorpartial' => 'আমদানি ফাইল আপলোড ব্যর্থ। ফাইলটি কেবল আংশিকভাবে আপলোড করা হয়েছে।',
 'importuploaderrortemp' => 'আমদানি ফাইলের আপলোড ব্যর্থ। একটি সাময়িক ফোল্ডার হারানো গেছে।',
+'import-parse-failure' => 'XML পার্স করা যায়নি',
 'import-noarticle' => 'ইম্পোর্ট করার মত কোন পাতা নেই!',
+'import-nonewrevisions' => 'পূর্বের সকল সংস্করণ ইম্পোর্ট করা হয়েছে।',
 'xml-error-string' => '$1 যে লাইনে $2, কলামে $3 (বাইট $4): $5',
 'import-upload' => 'XML ডাটা আপলোড',
 'import-token-mismatch' => 'সেশন ডাটা হারিয়ে গিয়েছে।
 অনুগ্রহ করে পুনরায় চেষ্টা করুন।',
 'import-invalid-interwiki' => 'নির্ধারিত উইকি থেকে আমদানী করা যাবে না।',
+'import-error-edit' => '"$1" পাতাটি ইম্পোর্ট করা যায়নি কারণ আপনার এটি সম্পাদনা করার অনুমতি নেই।',
+'import-error-create' => '"$1" পাতাটি ইম্পোর্ট করা যায়নি কারণ আপনার এটি তৈরী করার অনুমতি নেই।',
+'import-error-interwiki' => '"$1" পাতাটি ইম্পোর্ট করা যায়নি কারণ এই নামটি বহিঃসংযোগর জন্য নির্ধারিত (ইন্টারউইকি)।',
+'import-error-special' => '"$1" পাতাটি ইম্পোর্ট করা যায়নি কারণ এটি একটি বিশেষ নামস্থানকে নির্দেশ করে যেটি সম্পাদনার জন্য অনুমোদিত নয়।',
+'import-error-invalid' => '"$1" পাতাটি ইম্পোর্ট করা যায়নি কারণ নামটি সঠিক নয়।',
+'import-options-wrong' => 'ভুল {{PLURAL:$2|অপশন|অপশনসমূহ}}: <nowiki>$1</nowiki>',
+'import-rootpage-invalid' => 'মূল পাতার ভুল শিরনাম দেয়া হয়েছে।',
+'import-rootpage-nosubpage' => 'মূল পাতার "$1" নামস্থানে উপপাতা তৈরী অনুমোদিত নয়।',
 
 # Import log
 'importlogpage' => 'আমদানি লগ',
@@ -2483,6 +2666,12 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'জাভাস্ক্রিপ্ট পরীক্ষা',
+'javascripttest-title' => '$1 পরীক্ষা চলছে',
+'javascripttest-pagetext-noframework' => 'এই পাতাটি জাভাস্ক্রিপ্ট পরীক্ষার জন্য সংরক্ষিত।',
+'javascripttest-pagetext-unknownframework' => 'পরীক্ষার অজানা ফ্রেমওয়ার্ক "$1"।',
+'javascripttest-pagetext-frameworks' => 'অনুগ্রহ করে নিচের কোনো একটি ফ্রেমওয়ার্ক নির্ধারণ করুন: $1',
+'javascripttest-pagetext-skins' => 'পরীক্ষার জন্য একটি স্কীন নির্ধারণ করুন:',
+'javascripttest-qunit-intro' => 'mediawiki.org থেকে [$1 পরীক্ষার ডলুমেন্টেশন] দেখুন।',
 'javascripttest-qunit-heading' => 'মিডিয়াউইকি জাভাস্ক্রিপ্ট কিউইউনিট টেস্ট স্যুট',
 
 # Tooltip help for the actions
@@ -2906,6 +3095,8 @@ $1',
 'exif-planarconfiguration-1' => 'খণ্ড ফরম্যাট',
 'exif-planarconfiguration-2' => 'সমতলীয় ফরম্যাট',
 
+'exif-colorspace-65535' => 'সমন্বয় সম্ভব নয়',
+
 'exif-componentsconfiguration-0' => 'বিদ্যমান নয়',
 
 'exif-exposureprogram-0' => 'অসংজ্ঞায়িত',
@@ -3053,6 +3244,7 @@ $1',
 'exif-gpsdirection-m' => 'চৌম্বক দিক',
 
 'exif-ycbcrpositioning-1' => 'কেন্দ্রীভূত',
+'exif-ycbcrpositioning-2' => 'কো-সাইটেড',
 
 'exif-dc-contributor' => 'অবদানকারী',
 'exif-dc-date' => 'তারিখ',
@@ -3239,6 +3431,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'version-antispam' => 'স্প্যাম প্রতিরোধ',
 'version-skins' => 'আবরণসমূহ (Skin)',
 'version-other' => 'অন্য',
+'version-mediahandlers' => 'মিডিয়া ব্যবস্থাপক',
 'version-hooks' => 'হুক',
 'version-extension-functions' => 'এক্সটেনশনের কাজ',
 'version-parser-extensiontags' => 'পার্সার এক্সটেনশন ট্যাগ',
@@ -3260,6 +3453,8 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'filepath' => 'ফাইলের পাথ',
 'filepath-page' => 'ফাইল:',
 'filepath-submit' => 'চলো',
+'filepath-summary' => 'এই বিশেষ পাতায় ফাইলের পূর্ণাঙ্গ পাথ দেখা যাবে।
+চিত্রগুলো পূর্ণ রেজ্যুলেশনে প্রদর্শিত হবে, অন্যান্য ধরনের ফাইলগুলো তার নির্ধারিত প্রোগ্রামের মাধ্যমে ওপেন হবে।',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'ডুপ্লিকেট ফাইলের জন্য অনুসন্ধান',
@@ -3349,9 +3544,21 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'htmlform-reset' => 'পরিবর্তন বাতিল',
 'htmlform-selectorother-other' => 'অন্য',
 
+# SQLite database support
+'sqlite-has-fts' => '$1 সহ পূর্ণ টেক্সট সার্চ সমর্থন',
+'sqlite-no-fts' => '$1 বাদে পূর্ণ টেক্সট সার্চ সমর্থন',
+
 # New logging system
 'logentry-delete-delete' => '$1 কর্তৃক $3 পাতাটি অপসারিত হয়েছে',
 'logentry-delete-restore' => '$1 কর্তৃক $3 পাতাটি ফিরিয়ে আনা হয়েছে',
+'logentry-delete-event' => '$1 {{PLURAL:$5|একটি লগ ইভেন্টের|$5 লগ ইভেন্টসমূহর}} ভিজিবিলিটি পরিবর্তন করেছেন $3: $4',
+'logentry-delete-revision' => '$1 {{PLURAL:$5|একটি সংস্করণের|$5 সংস্করণসমূহর}} ভিজিবিলিটি পরিবর্তন করেছেন $3: $4',
+'logentry-delete-event-legacy' => '$1 $3টায় লগ ইভেন্টসমূহরে ভিজিবিলিটি পরিবর্তন করেছেন',
+'logentry-delete-revision-legacy' => '$1 $3টায় সংস্করণসমূহরে ভিজিবিলিটি পরিবর্তন করেছেন',
+'logentry-suppress-event' => '$1 গোপনে {{PLURAL:$5|একটি লগ ইভেন্টের|$5 লগ ইভেন্টসমূহর}} ভিজিবিলিটি পরিবর্তন করেছেন $3: $4',
+'logentry-suppress-revision' => '$1 গোপনে {{PLURAL:$5|একটি সংস্করণের|$5 সংস্করণসমূহর}} ভিজিবিলিটি পরিবর্তন করেছেন $3: $4',
+'logentry-suppress-event-legacy' => '$1 গোপনে $3টায় লগ ইভেন্টসমূহরে ভিজিবিলিটি পরিবর্তন করেছেন',
+'logentry-suppress-revision-legacy' => '$1 গোপনে $3টায় সংস্করণসমূহরে ভিজিবিলিটি পরিবর্তন করেছেন',
 'revdelete-content-hid' => 'বিষয়বস্তু লুকায়িত',
 'revdelete-summary-hid' => 'সম্পাদনা সারাংশ লুকায়িত',
 'revdelete-uname-hid' => 'ব্যবহারকারী নাম লুকায়িত',
@@ -3377,27 +3584,29 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'feedback-message' => 'বার্তা:',
 'feedback-cancel' => 'বাতিল',
 'feedback-submit' => 'প্রতিক্রিয়া জমা',
-'feedback-adding' => 'পাতায় à¦ªà§\8dরতিà¦\95à§\8dরিয়া à¦¯à§\8bà¦\97 à¦\95রা à¦¹à¦\9aà§\8dà¦\9bà§\87...',
-'feedback-error1' => 'তà§\8dরà§\81à¦\9fি: à¦\8fপিà¦\86à¦\87 à¦¥à§\87à¦\95ে অজানা ফলাফল এসেছে',
+'feedback-adding' => 'পাতায় প্রতিক্রিয়া যোগ হচ্ছে...',
+'feedback-error1' => 'তà§\8dরà§\81à¦\9fি: à¦\8fপিà¦\86à¦\87 à¦¹à¦¤ে অজানা ফলাফল এসেছে',
 'feedback-error2' => 'ত্রুটি: সম্পাদনা ব্যর্থ',
-'feedback-error3' => 'তà§\8dরà§\81à¦\9fি: à¦\8fপিà¦\86à¦\87 à¦¥à§\87à¦\95ে কোন সাড়া নেই',
-'feedback-thanks' => 'ধনà§\8dযবাদ! à¦\86পনার à¦®à¦¤à¦¾à¦®à¦¤ "[$2 $1]" à¦ªà¦¾à¦¤à¦¾à¦¯à¦¼ করা হয়েছে।',
+'feedback-error3' => 'তà§\8dরà§\81à¦\9fি: à¦\8fপিà¦\86à¦\87 à¦¹à¦¤ে কোন সাড়া নেই',
+'feedback-thanks' => 'ধনà§\8dযবাদ! à¦\86পনার à¦ªà§\8dরতিà¦\95à§\8dরিয়া "[$2 $1]" à¦ªà¦¾à¦¤à¦¾à¦¯à¦¼ à¦ªà§\8bসà§\8dà¦\9f করা হয়েছে।',
 'feedback-close' => 'সম্পন্ন',
-'feedback-bugcheck' => 'à¦\89তà§\8dতম! à¦ªà¦°à¦¿à¦\95à§\8dষা à¦\95রà§\87 à¦¦à§\87à¦\96à§\81ন à¦\85বিলমà§\8dবà§\87  [$1  à¦\9cানা à¦¬à¦¾à¦\97] কিনা।',
-'feedback-bugnew' => 'à¦\86মি à¦ªà¦°à§\80à¦\95à§\8dষা à¦\95রà§\87à¦\9bি। à¦¨à¦¤à§\81ন à¦\8fà¦\95à¦\9fি à¦¬à¦¾à¦\97 à¦°à¦¿à¦ªà§\8bরà§\8dà¦\9f করুন।',
+'feedback-bugcheck' => 'à¦\89তà§\8dতম! à¦¯à¦¾à¦\9aাà¦\87 à¦\95রà§\81ন à¦¯à§\87 à¦\8fà¦\87 [$1  à¦\9cানা à¦¬à¦¾à¦\97à§\87র] à¦\95à§\8bন à¦\8fà¦\95à¦\9fি কিনা।',
+'feedback-bugnew' => 'à¦\86মি à¦¯à¦¾à¦\9aাà¦\87 à¦\95রà§\87à¦\9bি। à¦¨à¦¤à§\81ন à¦¬à¦¾à¦\97 à¦¨à¦¿à¦¬à¦¨à§\8dধন করুন।',
 
 # API errors
 'api-error-badaccess-groups' => 'আপনার এই উইকিতে ফাইল আপলোডের অনুমতি নেই।',
-'api-error-badtoken' => 'à¦\85ভà§\8dযনà§\8dতরà§\80ণ à¦¤à§\8dরà§\81à¦\9fি: à¦\85পà§\8dরযà§\8bà¦\9cà§\8dয টোকেন।',
+'api-error-badtoken' => 'à¦\85ভà§\8dযনà§\8dতরà§\80ণ à¦¤à§\8dরà§\81à¦\9fি: à¦\96ারাপ টোকেন।',
 'api-error-copyuploaddisabled' => 'এই সার্ভারে ইউআরএল-এর মাধ্যমে আপলোড করার সুবিধা নিস্ক্রিয় রয়েছে।',
 '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-popup-title' => 'অনুলিপি {{PLURAL:$1|ফাইল|ফাইল}}',
-'api-error-empty-file' => 'à¦\86পনার à¦\9cমাদানà¦\95à§\83ত à¦«à¦¾à¦\87লà¦\9fি à¦\96ালি।',
-'api-error-emptypage' => 'নতà§\81ন à¦\93 à¦\96ালি à¦ªà¦¾à¦¤à¦¾ à¦¤à§\88রি গ্রহণযোগ্য নয়।',
+'api-error-empty-file' => 'আপনার জমাকৃত ফাইলটি খালি।',
+'api-error-emptypage' => 'নতà§\81ন à¦ªà¦¾à¦¤à¦¾ à¦¤à§\88রি à¦¹à¦\9aà§\8dà¦\9bà§\87, à¦\96ালি à¦ªà¦¾à¦¤à¦¾ গ্রহণযোগ্য নয়।',
 'api-error-fetchfileerror' => 'অভ্যন্তরীণ ত্রুটি: ফাইল নিয়ে আসার সময় কোনো সমস্যা হয়েছিলো।',
-'api-error-file-too-large' => 'আপনার জমাদানকৃত ফাইলটি অনেক বড়।',
+'api-error-fileexists-forbidden' => '"$1" নামের একটি ফাইল রয়েছে, প্রতিস্থাপন সম্ভব নয়।',
+'api-error-fileexists-shared-forbidden' => '"$1" নামে শেয়ার্ড রিপোজিরীতে একটি ফাইল রয়েছে, প্রতিস্থাপন সম্ভব নয়।',
+'api-error-file-too-large' => 'আপনার জমাকৃত ফাইলটি অনেক বড়।',
 'api-error-filename-tooshort' => 'এই ফাইল নামটি খুবই ছোট।',
 'api-error-filetype-banned' => 'এই ধরনের ফাইল নিষিদ্ধ।',
 'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|ফাইল ধরনটি অনুমোদিত নয়|ফাইল ধরনগুলো অনুমোদিত নয়}}। অনুমোদিত {{PLURAL:$3|ফাইলের ধরন|ফাইলের ধরনগুলো}} হল $2।',
@@ -3421,7 +3630,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'api-error-unknown-code' => 'অজানা ত্রুটি: "$1"',
 'api-error-unknown-error' => 'অভ্যন্তরীণ ত্রুটি: আপনার ফাইলটি আপলোড করার সময় কিছু সমস্যা হয়েছে।',
 'api-error-unknown-warning' => 'অজানা সতর্কীকরণ: $1',
-'api-error-unknownerror' => 'অজানা ত্রুটি: "$1"',
+'api-error-unknownerror' => 'অজানা ত্রুটি: "$1"',
 'api-error-uploaddisabled' => 'এই উইকির জন্য আপলোড সুবিধা নিস্ক্রিয় রয়েছে।',
 'api-error-verification-error' => 'সম্ভবত এই ফাইলটি ত্রুটিপূর্ণ অথবা এর এক্সটেনশনটি ভুল।',
 
@@ -3436,4 +3645,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
 'duration-millennia' => '$1 {{PLURAL:$1|সহস্রাব্দ|সহস্রাব্দ}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'যা আছে...',
+'searchsuggest-search' => 'অনুসন্ধান',
 );
index 65e0217..85954d9 100644 (file)
@@ -865,8 +865,6 @@ $2',
 'search-interwiki-caption' => 'বনক প্রকল্পহানি',
 'search-interwiki-default' => '$1 ফলাফলহানি:',
 'search-interwiki-more' => '(আরাকউ)',
-'search-mwsuggest-enabled' => 'পরামর্শল',
-'search-mwsuggest-disabled' => 'পরামর্শ নেই',
 'search-relatedarticle' => 'সাকেই আসে',
 'mwsuggest-disable' => 'AJAXরে থা নাদি',
 'searcheverything-enable' => 'হাব্বি নাঙথাকে বিসারা',
@@ -1737,4 +1735,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'revdelete-unrestricted' => 'ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি নেইকর',
 'newuserlog-byemail' => 'ই-মেইলর মা পেঠাদিয়াসি পাসৱার্ডগ',
 
+# Unknown messages
+'searchsuggest-containing' => 'আসেতা...',
+'searchsuggest-search' => 'বিসারা',
 );
index 6a47be7..80b8567 100644 (file)
@@ -556,7 +556,7 @@ Goulenn : $2",
 'protectedpagetext' => "Prennet eo bet ar bajenn-mañ. N'haller ket kemmañ anezhi ken.",
 'viewsourcetext' => 'Gallout a rit gwelet hag eilañ danvez ar bajenn-mañ',
 'viewyourtext' => "Gallout a rit gwelet hag eilañ mammenn ho '''kemmoù''' d'ar bajenn-mañ :",
-'protectedinterface' => 'Testenn ar bajenn-mañ a dalvez evit etrefas ar meziant. Setu perak eo bet gwarezet ar bajenn.',
+'protectedinterface' => 'Testenn ar bajenn-mañ a dalvez evit etrefas ar meziant er wiki-mañ. Setu perak eo bet gwarezet ar bajenn.',
 'editinginterface' => "'''Diwallit :''' Emaoc'h o kempenn ur bajenn a dalvez da sevel skridoù evit etrefas ar meziant. Ar c'hemmoù graet d'ar bajenn-mañ a cheñcho etrefas an holl implijerien. Mar fell deoc'h skoazellañ evit treiñ traoù, soñjit kentoc'h implijout [//translatewiki.net/wiki/Main_Page?setlang=br translatewiki.net], ar raktres evit lec'helaat MediaWiki.",
 'sqlhidden' => '(Reked SQL kuzhet)',
 'cascadeprotected' => 'Gwarezet eo ar bajenn-mañ; n\'haller ket kemmañ anezhi ken p\'he c\'haver {{PLURAL:$1|er bajenn|e-mesk ar pajennoù}} da-heul zo bet gwarezet en ur zibab an dibarzh "skalierad" :
@@ -834,9 +834,9 @@ Ma'z oc'h un implijer(ez) dizanv ha ma stadit ez eus bet kaset deoc'h kemennaden
 'noarticletext' => 'N\'eus tamm skrid ebet war ar bajenn-mañ evit poent.
 Gallout a rit [[Special:Search/{{PAGENAME}}|klask an titl anezhi]] e pajennoù all,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} klask en oberiadennoù liammet], pe [{{fullurl:{{FULLPAGENAME}}|action=edit}} krouiñ ar bajenn]</span>.',
-'noarticletext-nopermission' => 'N\'eus, evit ar mare, tamm testenn ebet war ar bajenn-mañ.
+'noarticletext-nopermission' => "N'eus, evit ar mare, tamm testenn ebet war ar bajenn-mañ.
 Gallout a rit [[Special:Search/{{PAGENAME}}|klask titl ar bajenn-mañ]] war pajennoù all,
-pe <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} klask er marilhoù kar]</span>.',
+pe <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} klask er marilhoù kar]</span>, met n'oc'h ket aotreet da grouiñ ar bajenn-mañ.",
 'missing-revision' => "N'eus ket eus adwel niv. $1 eus ar bajenn anvet « {{PAGENAME}} ».
 
 C'hoarvezout a ra peurliesañ pa vez heuliet ul liamm istorel dispredet war-zu ur bajenn zo bet dilamet.
@@ -1193,8 +1193,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-interwiki-caption' => 'Raktresoù kar',
 'search-interwiki-default' => "$1 disoc'h :",
 'search-interwiki-more' => "(muioc'h)",
-'search-mwsuggest-enabled' => 'gant kinnigoù',
-'search-mwsuggest-disabled' => 'hep kinnigoù',
 'search-relatedarticle' => "Disoc'hoù kar",
 'mwsuggest-disable' => 'Diweredekaat kinnigoù AJAX',
 'searcheverything-enable' => 'Klask en holl esaouennoù anv',
@@ -1290,7 +1288,7 @@ Setu aze un dalvoudenn ganet dre zegouezh hag a c'hallfec'h implijout : $1",
 'timezoneregion-indian' => 'Meurvor Indez',
 'timezoneregion-pacific' => 'Meurvor Habask',
 'allowemail' => 'Aotren ar posteloù a-berzh implijerien all',
-'prefs-searchoptions' => 'Dibarzhioù klask',
+'prefs-searchoptions' => '!Dibarzhioù klask',
 'prefs-namespaces' => 'Esaouennoù',
 'defaultns' => 'Klask en esaouennoù-anv a-hend-all :',
 'default' => 'dre ziouer',
@@ -1715,7 +1713,7 @@ Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien ar
 'backend-fail-internal' => 'C\'hoarvezet ez eus ur fazi dianav e termenell stokañ ar restr "$1".',
 'backend-fail-contenttype' => 'Dibosupl termeniñ ar seurt danvez da enrollañ e "$1".',
 'backend-fail-batchsize' => 'Pourvezet he deus an dermenell stokañ ur pakad a $1 {{PLURAL:$1|oberiadenn|oberiadenn}}; sevel a ra ar vevenn da $2 {{PLURAL:$2|oberiadenn|oberiadenn}}.',
-'backend-fail-usable' => "Dibosupl skrivañ ar restr $1 rak re skort eo an aotreoù pe mankout a ra kavlec'hioù/endalc'herioù.",
+'backend-fail-usable' => 'Dibosupl skrivañ ar restr "$1" rak re skort eo an aotreoù pe mankout a ra kavlec\'hioù/endalc\'herioù.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'N\'eus ket bet gallet kevreañ ouzh diaz roadennoù ar marilh evit an dermenell stokañ "$1".',
@@ -2811,7 +2809,6 @@ Enrollit ar bajenn war hoc'h urzhiataer ha kargit anezhi amañ.",
 
 # JavaScriptTest
 'javascripttest' => 'Amprouadenn JavaScript',
-'javascripttest-disabled' => "N'eo ket bet gweredekaet an arc'hwel-mañ war ar wiki.",
 'javascripttest-title' => 'Emeur o seveniñ $1 amprouadenn',
 'javascripttest-pagetext-noframework' => 'Miret eo ar bajenn-mañ evit amprouiñ JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Framm amprouiñ "$1" dianav.',
@@ -3898,4 +3895,7 @@ A-hend-all e c'hallit ober gant ar furmskrid eeunaet dindan. Ouzhpennet e vo hoc
 'duration-centuries' => "$1 {{PLURAL:$1|c'hantved|kantved}}",
 'duration-millennia' => '$1 {{PLURAL:$1|milvloaz|milvoaz}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ennañ...',
+'searchsuggest-search' => 'Klask',
 );
index 263acb9..bd52085 100644 (file)
@@ -1300,8 +1300,6 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
 'search-interwiki-caption' => 'Srodni projekti',
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
-'search-mwsuggest-enabled' => 'sa sugestijama',
-'search-mwsuggest-disabled' => 'bez sugestija',
 'search-relatedarticle' => 'Povezano',
 'mwsuggest-disable' => 'Onemogući AJAX prijedloge',
 'searcheverything-enable' => 'Traži u svim imenskim prostorima',
@@ -2895,7 +2893,6 @@ Nedostaje privremeni folder.',
 
 # JavaScriptTest
 'javascripttest' => 'Testiranje JavaScript-e',
-'javascripttest-disabled' => 'Ova funkcija je onemogućena na ovom wikiju.',
 'javascripttest-title' => 'Pokretanje $1 testova',
 'javascripttest-pagetext-noframework' => 'Ova stranica je određena za pokretanje JavaScript testova.',
 'javascripttest-pagetext-unknownframework' => 'Nepoznat radni okvir testiranja"$1".',
@@ -3968,4 +3965,7 @@ Inače, možete ispuniti jednostavan obrazac ispod. Vaš komentar biti će dodan
 'duration-seconds' => '$1 {{PLURAL:$1|sekunda|sekunde}}',
 'duration-days' => '$1 {{PLURAL:$1|dan|dana}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'sadrži...',
+'searchsuggest-search' => 'Traži',
 );
index 97ed470..5d5d4c4 100644 (file)
@@ -844,7 +844,7 @@ Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres]
 o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear-la ara]</span>.',
 'noarticletext-nopermission' => 'Actualment no hi ha text en aquesta pàgina.
-Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines o bé <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres relacionats]</span>.',
+Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines o bé <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres relacionats]</span>, però no teniu permisos per crear la pàgina.',
 'missing-revision' => 'La revisió # $1  de la pàgina anomenada "{{PAGENAME}}" no existeix.
 
 Això és normalment provocat per després d\'un enllaç d\'història antiquat a una pàgina que s\'ha suprimit.
@@ -1208,8 +1208,6 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-caption' => 'Projectes germans',
 'search-interwiki-default' => '$1 resultats:',
 'search-interwiki-more' => '(més)',
-'search-mwsuggest-enabled' => 'amb suggeriments',
-'search-mwsuggest-disabled' => 'cap suggeriment',
 'search-relatedarticle' => 'Relacionat',
 'mwsuggest-disable' => 'Inhabilita els suggeriments en AJAX',
 'searcheverything-enable' => 'Cerca a tots els espais de noms',
@@ -2384,7 +2382,7 @@ al resum a continuació, juntament amb detalls dels usuaris que l'havien editat
 
 Consulteu el [[Special:Log/delete|registre d'esborraments]] per a veure els esborraments i els restauraments més recents.",
 'undelete-header' => "Vegeu [[Special:Log/delete|el registre d'eliminació]] per a veure les pàgines eliminades recentment.",
-'undelete-search-title' => 'Pàgines de cerca suprimit',
+'undelete-search-title' => 'Cerca de pàgines esborrades',
 'undelete-search-box' => 'Cerca pàgines esborrades',
 'undelete-search-prefix' => 'Mostra pàgines que comencin:',
 'undelete-search-submit' => 'Cerca',
@@ -2680,7 +2678,7 @@ Incorporeu-les manualment, si us plau.",
 
 La pàgina de destinació, «[[:$1]]», ja existeix. Voleu eliminar-la per a fer lloc al trasllat?",
 'delete_and_move_confirm' => 'Sí, esborra la pàgina',
-'delete_and_move_reason' => 'Suprimit per donar pas a pas de " [[$1]] "',
+'delete_and_move_reason' => 'S\'ha eliminat per a permetre el reanomenament de " [[$1]] "',
 'selfmove' => "Els títols d'origen i de destinació coincideixen: no és possible de reanomenar una pàgina a si mateixa.",
 'immobile-source-namespace' => 'No es poden moure pàgines de l\'espai de noms "$1"',
 'immobile-target-namespace' => 'No es poden moure pàgines cap a l\'espai de noms "$1"',
@@ -2810,7 +2808,6 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
 
 # JavaScriptTest
 'javascripttest' => 'Proves de JavaScript',
-'javascripttest-disabled' => "No s'ha inhabilitat la funció en el wiki.",
 'javascripttest-title' => "S'estan executant $1 proves",
 'javascripttest-pagetext-noframework' => "Es reserva la pàgina per a l'execució de tests amb JavaScript.",
 'javascripttest-pagetext-unknownframework' => "L'entorn de proves «$1» és desconegut.",
@@ -3829,4 +3826,7 @@ Altrament, podeu fer servir un senzill formulari a continuació. El vostre comen
 'duration-centuries' => '$1 {{PLURAL:$1|segle|segles}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mil·leni|mil·lenis}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'que conté ...',
+'searchsuggest-search' => 'Cerca',
 );
index 17545b0..94a9203 100644 (file)
@@ -756,8 +756,6 @@ $1',
 'search-interwiki-caption' => 'Гергара кхолламаш',
 'search-interwiki-default' => '$1 хилам.:',
 'search-interwiki-more' => '(кхин)',
-'search-mwsuggest-enabled' => 'хьехаршца',
-'search-mwsuggest-disabled' => 'хьехар доцуш',
 'searcheverything-enable' => 'Массо цIера анахь лахар',
 'searchrelated' => 'хlоттаделларг',
 'searchall' => 'массо',
index b7d1060..1761147 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Abastillas
  * @author Dosmiin Barsbold
+ * @author Harvzsf
  * @author Jordz
  * @author Mirzali
  * @author Palang hernan
@@ -723,8 +724,6 @@ Hinumdomi nga ang paggamit sa mga sumpay sa nabigasyon mo-reset sa column.',
 'search-interwiki-caption' => 'Mga kaubang proyekto',
 'search-interwiki-default' => '$1 ka mga resulta:',
 'search-interwiki-more' => '(dugang pa)',
-'search-mwsuggest-enabled' => 'may mga sugyot',
-'search-mwsuggest-disabled' => 'walay mga sugyot',
 'showingresultsheader' => "{{PLURAL:$5|Resulta '''$1''' sa '''$3'''|Mga resulta '''$1 - $2''' of '''$3'''}} sa '''$4'''",
 'nonefound' => "'''Bantayi''': Dili tanang ngalang espasyo (namespaces) ang gipangita by default.
 Sulayi'g prefix ang imong gipangita gamit ang ''all:'' alang mangita sa tanang sulod (apil ang mga panid sa hisgot, plantilya, ubp), o gamita ang gikinahanglang ngalang espasyo isip prefix.",
@@ -1076,7 +1075,7 @@ Puyde nimo usbon ang level sa proteksyon ning panid, pero dili kini makaapekto s
 'linkshere' => "Ang mosunod nga mga panid misumpay sa '''[[:$1]]''':",
 'isredirect' => 'panid sa redirekta',
 'istemplate' => 'transklusyon',
-'isimage' => 'sumpay nga imahen',
+'isimage' => 'sumpay sa payl',
 'whatlinkshere-prev' => '{{PLURAL:$1|miaging|miaging $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|sunod|sunod $1}}',
 'whatlinkshere-links' => '← mga sumpay',
index 14e5809..328ddfe 100644 (file)
@@ -720,7 +720,7 @@ $2
 'summary' => 'کورتەی دەستکاری:',
 'subject' => 'بابەت/سەردێڕ:',
 'minoredit' => 'ئەمە دەستکارییەکی بچووکە',
-'watchthis' => 'ئەم پەڕەیە بخه ژێر چاودێری',
+'watchthis' => 'ئەم پەڕەیە بخە ژێر چاودێری',
 'savearticle' => 'پەڕەکە پاشەکەوت بکە',
 'preview' => 'پێشبینین',
 'showpreview' => 'پێشبینین نیشانبدە',
@@ -1132,8 +1132,6 @@ $1",
 'search-interwiki-caption' => 'پرۆژە خوشکەکان',
 'search-interwiki-default' => '$1 ئەنجام:',
 'search-interwiki-more' => '(زیاتر)',
-'search-mwsuggest-enabled' => 'بە پێشنیارەکانەوە',
-'search-mwsuggest-disabled' => 'بێ پێشنیار',
 'search-relatedarticle' => 'پەیوەست',
 'mwsuggest-disable' => 'پێشنیارەکانی AJAX نیشان مەدە',
 'searcheverything-enable' => 'لە ھەموو بۆشایی‌‌ناوەکان دا بگەڕێ',
@@ -1573,7 +1571,7 @@ $2، ئەو جۆرە {{PLURAL:$3|پەڕگەیە کە ڕێگەی|پەڕگانەی
 'upload-maxfilesize' => 'ئەوپەڕی قەبارەی پەڕگە: $1',
 'upload-description' => 'پێناسەی پەڕگە',
 'upload-options' => 'ھەڵبژاردەکانی  بارکردن',
-'watchthisupload' => 'ئەم پەڕگەیە بخه ژێر چاودێری',
+'watchthisupload' => 'ئەم پەڕگەیە بخە ژێر چاودێری',
 'filewasdeleted' => 'پەڕگەیەک بەم ناوە لەم دواییانەدا بارکرا و بە خێرایی سڕایەوە.
 باشتر وایە پێش هەوڵی دووبارە بۆ بارکردن سەرنجی $1 بدەی.',
 'filename-bad-prefix' => "دەستپێکی ناوی ئەو پەڕگەی باری دەکەی '''\"\$1\"'''، کە ناوێکی ناسێنەر نیە؛ ئەو جۆرە ناوە زۆربەی کات کامێرا دیجیتاڵەکان خۆکار بەکاری‌دەبەن.
@@ -1995,7 +1993,7 @@ $1',
 'removewatch' => 'لەلیستی چاودێری لایبە',
 'removedwatchtext' => 'پەڕەی «[[:$1]]» لە [[Special:Watchlist|لیستی چاودێریەکەت]] لابرا.',
 'watch' => 'چاودێری بکە',
-'watchthispage' => 'ئەم پەڕەیە بخه ژێر چاودێری',
+'watchthispage' => 'ئەم پەڕەیە بخە ژێر چاودێری',
 'unwatch' => 'لابردنی چاودێری',
 'unwatchthispage' => 'ئیتر چاودێری مەکە',
 'notanarticle' => 'پەڕەی بێ ناوەڕۆک',
@@ -2437,7 +2435,7 @@ $1',
 'cant-move-user-page' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکانی بەکارهێنەر (جیاواز لە ژێرلاپەڕەکان).',
 'cant-move-to-user-page' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەیەک بۆ لاپەڕەی بەکارهێنەر (غەیری بۆ ژێرلاپەڕەی بەکارهێنەر).',
 'newtitle' => 'بۆ ناوی نوێی:',
-'move-watch' => 'ئەم پەڕەیە بخه ژێر چاودێری',
+'move-watch' => 'ئەم پەڕەیە بخە ژێر چاودێری',
 'movepagebtn' => 'ئەم پەڕەیە بگوازەوە',
 'pagemovedsub' => 'گواستنەوە بە سەرکەوتوویی جێبەجێ کرا',
 'movepage-moved' => "'''«$1» گوازرایەوە بۆ «$2»'''",
@@ -3331,4 +3329,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|سەدە|سەدە}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ھەزارە|ھەزارە}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'بە لەبەرگرتنەوەی ...',
+'searchsuggest-search' => 'گەڕان',
 );
index b63fe8d..bb267b0 100644 (file)
@@ -591,8 +591,6 @@ Indi pag-ilakip ang pila ka mga suleras.',
 'search-interwiki-caption' => 'Mga utod nga proyekto',
 'search-interwiki-default' => '$1 mga resulta:',
 'search-interwiki-more' => '(mas damu pa)',
-'search-mwsuggest-enabled' => 'may mga suhestiyon',
-'search-mwsuggest-disabled' => 'wala suhestiyon',
 'searchall' => 'tanan',
 'showingresultsheader' => "{{PLURAL:$5|Resulta nga '''$1''' sang '''$3'''|Mga resulta nga '''$1 - $2''' sang '''$3'''}} para sa '''$4'''",
 'nonefound' => "'''Tandaan''': Ang iban lang nga mga ngalan-espasyo ang ginapangita depende sa gintakda.
index 92cc193..8e880cf 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Crimean Turkish (Cyrillic script) (‪къырымтатарджа (Кирилл)‬)
+/** Crimean Turkish (Cyrillic script) (къырымтатарджа (Кирилл)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -871,8 +871,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'search-interwiki-caption' => 'Къардаш лейхалар',
 'search-interwiki-default' => '$1 нетидже:',
 'search-interwiki-more' => '(даа чокъ)',
-'search-mwsuggest-enabled' => 'тевсиелернен',
-'search-mwsuggest-disabled' => 'тевсие ёкъ',
 'search-relatedarticle' => 'Багълы',
 'mwsuggest-disable' => 'AJAX тевсиелерини ишлетме',
 'searcheverything-enable' => 'Бутюн исим фезаларында къыдыр',
@@ -2112,4 +2110,6 @@ $5
 # New logging system
 'newuserlog-byemail' => 'пароль e-mail вастасынен йиберильген',
 
+# Unknown messages
+'searchsuggest-containing' => 'ичинде бу олгъан...',
 );
index 02d032d..6d019af 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Crimean Turkish (Latin script) (‪qırımtatarca (Latin)‬)
+/** Crimean Turkish (Latin script) (qırımtatarca (Latin)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -868,8 +868,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'search-interwiki-caption' => 'Qardaş leyhalar',
 'search-interwiki-default' => '$1 netice:',
 'search-interwiki-more' => '(daa çоq)',
-'search-mwsuggest-enabled' => 'tevsiyelernen',
-'search-mwsuggest-disabled' => 'tevsiye yoq',
 'search-relatedarticle' => 'Bağlı',
 'mwsuggest-disable' => 'AJAX tevsiyelerini işletme',
 'searcheverything-enable' => 'Bütün isim fezalarında qıdır',
@@ -2107,4 +2105,6 @@ Bitirgen soñ "{{int:Watchlistedit-raw-submit}}" yazısına basıñız.
 # New logging system
 'newuserlog-byemail' => 'parol e-mail vastasınen yiberilgen',
 
+# Unknown messages
+'searchsuggest-containing' => 'içinde bu olğan...',
 );
index 369180d..6728120 100644 (file)
@@ -1374,8 +1374,6 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-interwiki-caption' => 'Sesterské projekty',
 'search-interwiki-default' => 'Výsledky z $1:',
 'search-interwiki-more' => '(více)',
-'search-mwsuggest-enabled' => 's návrhy',
-'search-mwsuggest-disabled' => 'bez návrhů',
 'search-relatedarticle' => 'Související',
 'mwsuggest-disable' => 'Vypnout ajaxové napovídání',
 'searcheverything-enable' => 'Hledat ve všech jmenných prostorech',
@@ -2973,7 +2971,6 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 
 # JavaScriptTest
 'javascripttest' => 'Testování JavaScriptu',
-'javascripttest-disabled' => 'Tato funkce nebyla na této wiki povolena.',
 'javascripttest-title' => 'Spouštějí se testy v $1',
 'javascripttest-pagetext-noframework' => 'Tato stránka je vyhrazena pro spouštění testů JavaScriptu.',
 'javascripttest-pagetext-unknownframework' => 'Neznámá testovací knihovna „$1“.',
@@ -4101,4 +4098,6 @@ Jinak můžete využít jednoduchý formulář níže. Váš komentář bude př
 'duration-centuries' => '$1 {{PLURAL:$1|století}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tisíciletí}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'obsahující…',
 );
index d6b834d..5681adc 100644 (file)
@@ -578,8 +578,6 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
 'search-interwiki-caption' => 'Sosterné ùdbë',
 'search-interwiki-default' => 'Skùtczi dlô $1:',
 'search-interwiki-more' => '(wicy)',
-'search-mwsuggest-enabled' => 'z sugestëjama',
-'search-mwsuggest-disabled' => 'bez sugestëjów',
 'searchall' => 'wszëtczé',
 'nonefound' => "'''Bôczënk''':Dlô szëkbë są domëslno przistãpné blós niejedné rumë mionów.
 Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów (zamëkający w se starnë diskùsëji, szablónë, ëtp), abò ùżëje przëdôwka wëbrónegò ruma mionów.",
index 8860d97..9ae45d4 100644 (file)
@@ -1120,8 +1120,6 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
 'search-interwiki-caption' => 'Chwaer-brosiectau',
 'search-interwiki-default' => 'Y canlyniadau o $1:',
 'search-interwiki-more' => '(rhagor)',
-'search-mwsuggest-enabled' => 'gydag awgrymiadau',
-'search-mwsuggest-disabled' => 'dim awgrymiadau',
 'search-relatedarticle' => 'Erthyglau eraill tebyg',
 'mwsuggest-disable' => 'Analluogi awgrymiadau AJAX',
 'searcheverything-enable' => 'Chwilio pob parth',
@@ -2742,7 +2740,6 @@ Mae ffolder dros dro yn eisiau.',
 
 # JavaScriptTest
 'javascripttest' => 'Profi JavaScript',
-'javascripttest-disabled' => 'Ni alluogwyd y swyddogaeth hon ar y wici hwn.',
 'javascripttest-title' => 'Yn cynnal profion $1',
 'javascripttest-pagetext-noframework' => 'Neilltuwyd y dudalen hon at gynnal profion JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Ni nabyddwyd y fframwaith profi "$1".',
@@ -3754,4 +3751,6 @@ Dangosir delweddau ar eu maint llawn, dechreuir ffeiliau o fathau eraill yn unio
 'duration-centuries' => '$1 {{PLURAL:$1|canmlwydd|ganmlwydd|ganmlwydd|canmlwydd|chanmlwydd|canmlwydd}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milflwydd|filflwydd|filflwydd|milflwydd|milflwydd|milflwydd}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'yn cynnwys...',
 );
index 71f0d65..ef746e3 100644 (file)
@@ -1203,8 +1203,6 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-caption' => 'Søsterprojekter',
 'search-interwiki-default' => '{{PLURAL:$1|et resultat|$1 resultater}}:',
 'search-interwiki-more' => '(mere)',
-'search-mwsuggest-enabled' => 'med forslag',
-'search-mwsuggest-disabled' => 'ingen forslag',
 'search-relatedarticle' => 'Relateret',
 'mwsuggest-disable' => 'Slå AJAX-forslag fra',
 'searcheverything-enable' => 'Søg i alle navnerum',
@@ -2791,7 +2789,6 @@ Alle Transwiki import-aktioner protokolleres i [[Special:Log/import|import-logge
 
 # JavaScriptTest
 'javascripttest' => 'Test af JavaScript',
-'javascripttest-disabled' => 'Denne funktion er ikke aktiveret på denne wiki.',
 'javascripttest-title' => 'Kører $1 test',
 'javascripttest-pagetext-noframework' => 'Denne side er reserveret til at teste JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Ukendt testmiljø "$1".',
@@ -3829,4 +3826,6 @@ Ellers kan du bruge den enkle formular nedenfor. Din kommentar vil blive tilføj
 'duration-centuries' => '$1 {{PLURAL:$1|århundrede|århundreder}}',
 'duration-millennia' => '$1 {{PLURAL:$1|årtusind|årtusinder}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'indeholder...',
 );
index 418554c..2e941fe 100644 (file)
  * @author ChrisiPK
  * @author Church of emacs
  * @author DaSch
+ * @author Das Schäfchen
  * @author Duesentrieb
  * @author Filzstift
  * @author Geitost
  * @author Giftpflanze
+ * @author Hoo
  * @author Imre
  * @author Inkowik
  * @author Jan Luca
@@ -535,8 +537,8 @@ $messages = array(
 'newwindow' => '(wird in einem neuen Fenster geöffnet)',
 'cancel' => 'Abbrechen',
 'moredotdotdot' => 'Mehr …',
-'mypage' => 'Eigene Seite',
-'mytalk' => 'Eigene Diskussion',
+'mypage' => 'Meine Seite',
+'mytalk' => 'Meine Diskussion',
 'anontalk' => 'Diskussionsseite dieser IP',
 'navigation' => 'Navigation',
 'and' => '&#32;und',
@@ -546,10 +548,10 @@ $messages = array(
 'qbbrowse' => 'Durchsuchen',
 'qbedit' => 'Bearbeiten',
 'qbpageoptions' => 'Seitenoptionen',
-'qbpageinfo' => 'Seitendaten',
+'qbpageinfo' => 'Kontext',
 'qbmyoptions' => 'Meine Seiten',
 'qbspecialpages' => 'Spezialseiten',
-'faq' => 'Häufige Fragen',
+'faq' => 'Häufig gestellte Fragen',
 'faqpage' => 'Project:FAQ',
 
 # Vector skin
@@ -559,7 +561,7 @@ $messages = array(
 'vector-action-protect' => 'Schützen',
 'vector-action-undelete' => 'Wiederherstellen',
 'vector-action-unprotect' => 'Seitenschutz ändern',
-'vector-simplesearch-preference' => 'Erweiterte Suchvorschläge aktivieren (nur Vector)',
+'vector-simplesearch-preference' => 'Vereinfachte Suchleiste aktivieren (nur Vector)',
 'vector-view-create' => 'Erstellen',
 'vector-view-edit' => 'Bearbeiten',
 'vector-view-history' => 'Versionsgeschichte',
@@ -653,8 +655,8 @@ $1',
 'privacy' => 'Datenschutz',
 'privacypage' => 'Project:Datenschutz',
 
-'badaccess' => 'Keine ausreichenden Rechte',
-'badaccess-group0' => 'Du hast nicht die erforderliche Berechtigung für diese Aktion.',
+'badaccess' => 'Keine ausreichenden Benutzerrechte',
+'badaccess-group0' => 'Du hast nicht die erforderlichen Benutzerrechte für diese Aktion.',
 'badaccess-groups' => 'Diese Aktion ist auf Benutzer beschränkt, die {{PLURAL:$2|der Gruppe|einer der Gruppen}} „$1“ angehören.',
 
 'versionrequired' => 'Version $1 von MediaWiki ist erforderlich.',
@@ -790,7 +792,7 @@ Nutze bitte [//translatewiki.net/ translatewiki.net], das Lokalisierungsprojekt
 $2',
 'namespaceprotected' => "Du hast nicht die erforderliche Berechtigung, um Seiten im Namensraum '''$1''' bearbeiten zu können.",
 'customcssprotected' => 'Du hast nicht die Berechtigung, diese CSS enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.',
-'customjsprotected' => 'Du hast nicht die Berechtigung diese JavaScript enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.',
+'customjsprotected' => 'Du hast nicht die Berechtigung, diese JavaScript enthaltende Seite zu bearbeiten, da es sich hierbei um die persönlichen Einstellungen eines anderen Benutzers handelt.',
 'ns-specialprotected' => 'Spezialseiten können nicht bearbeitet werden.',
 'titleprotected' => "Eine Seite mit diesem Namen kann nicht angelegt werden.
 Die Sperre wurde durch [[User:$1|$1]] mit der Begründung ''„$2“'' eingerichtet.",
@@ -810,12 +812,12 @@ Der Administrator, der den Schreibzugriff sperrte, gab folgenden Grund an: „$3
 # Login and logout pages
 'logouttext' => "'''Du bist nun abgemeldet.'''
 
-Du kannst {{SITENAME}} jetzt anonym weiternutzen, oder dich erneut unter demselben oder einem anderen Benutzernamen [[Special:UserLogin|anmelden]].
+Du kannst {{SITENAME}} jetzt anonym weiternutzen oder dich erneut unter dem selben oder einem anderen Benutzernamen [[Special:UserLogin|anmelden]].
 Beachte, dass einige Seiten noch anzeigen können, dass du angemeldet bist, solange du nicht deinen Browsercache geleert hast.",
 'welcomecreation' => '== Willkommen, $1! ==
 
-Dein Benutzerkonto wurde eingerichtet.
-Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] anzupassen.',
+Dein Benutzerkonto wurde soeben eingerichtet.
+Vergiss nicht, deine [[Special:Preferences|Einstellungen]] für dieses Wiki anzupassen.',
 'yourname' => 'Benutzername:',
 'yourpassword' => 'Passwort:',
 'yourpasswordagain' => 'Passwort wiederholen:',
@@ -827,7 +829,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] anzupass
 'login' => 'Anmelden',
 'nav-login-createaccount' => 'Anmelden / Benutzerkonto erstellen',
 'loginprompt' => 'Zur Anmeldung müssen Cookies aktiviert sein.',
-'userlogin' => 'Anmelden / Erstellen',
+'userlogin' => 'Anmelden / Benutzerkonto anlegen',
 'userloginnocreate' => 'Anmelden',
 'logout' => 'Abmelden',
 'userlogout' => 'Abmelden',
@@ -907,7 +909,7 @@ Bitte warte, bevor du es erneut probierst.',
 
 # E-mail sending
 'php-mail-error-unknown' => 'Unbekannter Fehler mit der Funktion mail() von PHP',
-'user-mail-no-addy' => 'Versuchte eine E-Mail ohne Angabe einer E-Mail-Adresse zu versenden',
+'user-mail-no-addy' => 'Versuchte, eine E-Mail ohne Angabe einer E-Mail-Adresse zu versenden.',
 
 # Change password dialog
 'resetpass' => 'Passwort ändern',
@@ -997,7 +999,7 @@ Temporäres Passwort: $2',
 'showpreview' => 'Vorschau zeigen',
 'showlivepreview' => 'Sofortige Vorschau',
 'showdiff' => 'Änderungen zeigen',
-'anoneditwarning' => "Du bearbeitest diese Seite unangemeldet. Wenn du speicherst, wird deine aktuelle IP-Adresse in der Versionsgeschichte aufgezeichnet und ist damit unwiderruflich '''öffentlich''' einsehbar.",
+'anoneditwarning' => "Du bearbeitest diese Seite unangemeldet. Wenn du sie speicherst, wird deine aktuelle IP-Adresse in der Versionsgeschichte aufgezeichnet und ist damit unwiderruflich '''öffentlich''' einsehbar.",
 'anonpreviewwarning' => "''Du bist nicht angemeldet. Beim Speichern wird deine IP-Adresse in der Versionsgeschichte aufgezeichnet.''",
 'missingsummary' => "'''Hinweis:''' Du hast keine Zusammenfassung angegeben. Wenn du erneut auf „{{int:savearticle}}“ klickst, wird deine Änderung ohne Zusammenfassung übernommen.",
 'missingcommenttext' => 'Dein Abschnitt enthält keinen Text.',
@@ -1007,7 +1009,7 @@ Temporäres Passwort: $2',
 'blockedtitle' => 'Benutzer ist gesperrt',
 'blockedtext' => "'''Dein Benutzername oder deine IP-Adresse wurde gesperrt.'''
 
-Die Sperrung wurde von $1 durchgeführt.
+Die Sperrung wurde vom Administrator $1 durchgeführt.
 Als Grund wurde ''$2'' angegeben.
 
 * Beginn der Sperre: $8
@@ -1016,7 +1018,7 @@ Als Grund wurde ''$2'' angegeben.
 
 Du kannst $1 oder einen der anderen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] kontaktieren, um über die Sperre zu diskutieren.
 Du kannst die „E-Mail an diesen Benutzer“-Funktion nicht nutzen, solange keine gültige E-Mail-Adresse in deinen [[Special:Preferences|Benutzerkonto-Einstellungen]] eingetragen ist oder diese Funktion für dich gesperrt wurde.
-Deine aktuelle IP-Adresse ist $3, und die Sperr-ID ist $5.
+Deine aktuelle IP-Adresse ist $3 und die Sperrkennung lautet $5.
 Bitte füge alle Informationen jeder Anfrage hinzu, die du stellst.",
 'autoblockedtext' => "Deine IP-Adresse wurde automatisch gesperrt, da sie von einem anderen Benutzer genutzt wurde, der von $1 gesperrt wurde.
 Als Grund wurde angegeben:
@@ -1104,7 +1106,7 @@ Eine Speicherung kann den Seiteninhalt zerstören. Dies geschieht bisweilen durc
 'editingsection' => 'Bearbeiten von „$1“ (Abschnitt)',
 'editingcomment' => 'Bearbeiten von „$1“ (Neuer Abschnitt)',
 'editconflict' => 'Bearbeitungskonflikt: $1',
-'explainconflict' => "Jemand anders hat diese Seite geändert, nachdem du angefangen hast sie zu bearbeiten.
+'explainconflict' => "Jemand anders hat diese Seite geändert, nachdem du angefangen hast, sie zu bearbeiten.
 Das obere Textfeld enthält den aktuellen Bearbeitungsstand der Seite.
 Das untere Textfeld enthält deine Änderungen.
 Bitte füge deine Änderungen in das obere Textfeld ein.
@@ -1116,12 +1118,12 @@ Bitte füge deine Änderungen in das obere Textfeld ein.
 'yourdiff' => 'Unterschiede',
 'copyrightwarning' => "'''Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!'''<br />
 Du gibst uns hiermit deine Zusage, dass du den Text '''selbst verfasst''' hast, dass der Text Allgemeingut '''(public domain)''' ist, oder dass der '''Urheber''' seine '''Zustimmung''' gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin.
-<i>Bitte beachte, dass alle {{SITENAME}}-Beiträge automatisch unter der „$2“ stehen (siehe $1 für Details). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann drücke nicht auf „Seite speichern“.</i>",
+<i>Bitte beachte, dass alle {{SITENAME}}-Beiträge automatisch unter der „$2“ stehen (siehe $1 für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.</i>",
 'copyrightwarning2' => "Bitte beachte, dass alle Beiträge zu {{SITENAME}} von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können.
 Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.
 
 Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast
-(siehe $1 für weitere Details). '''ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!'''",
+(siehe $1 für weitere Einzelheiten). '''ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!'''",
 'longpageerror' => "'''Fehler: Der Text, den du zu speichern versuchst, ist {{PLURAL:$1|ein Kilobyte|$1 Kilobyte}} groß. Dies ist größer als das erlaubte Maximum von {{PLURAL:$2|ein Kilobyte|$2 Kilobyte}}.'''
 Er kann nicht gespeichert werden.",
 'readonlywarning' => "'''Achtung: Die Datenbank wurde für Wartungsarbeiten gesperrt, so dass deine Änderungen derzeit nicht gespeichert werden können.
@@ -1187,7 +1189,7 @@ Sie darf nicht mehr als $2 {{PLURAL:$2|Aufruf|Aufrufe}} haben, es {{PLURAL:$1|is
 
 # "Undo" feature
 'undo-success' => 'Die Bearbeitung kann rückgängig gemacht werden.
-Bitte prüfe den Vergleich unten um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.',
+Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.',
 'undo-failure' => 'Die Änderung konnte nicht rückgängig gemacht werden, da der betroffene Abschnitt zwischenzeitlich verändert wurde.',
 'undo-norev' => 'Die Bearbeitung konnte nicht rückgängig gemacht werden, da sie nicht vorhanden ist oder gelöscht wurde.',
 'undo-summary' => 'Änderung $1 von [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) rückgängig gemacht.',
@@ -1416,8 +1418,6 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-interwiki-caption' => 'Schwesterprojekte',
 'search-interwiki-default' => '$1 Ergebnisse:',
 'search-interwiki-more' => '(weitere)',
-'search-mwsuggest-enabled' => 'mit Vorschlägen',
-'search-mwsuggest-disabled' => 'keine Vorschläge',
 'search-relatedarticle' => 'Verwandte',
 'mwsuggest-disable' => 'Vorschläge per Ajax deaktivieren',
 'searcheverything-enable' => 'In allen Namensräumen suchen',
@@ -1497,7 +1497,7 @@ Hier ein zufällig generierter Wert, den du verwenden kannst: $1',
 'savedprefs' => 'Deine Einstellungen wurden gespeichert.',
 'timezonelegend' => 'Zeitzone:',
 'localtime' => 'Ortszeit:',
-'timezoneuseserverdefault' => 'Standardzeit des Wikis nutzen ($1)',
+'timezoneuseserverdefault' => 'Standardzeit dieses Wikis nutzen ($1)',
 'timezoneuseoffset' => 'Andere (Unterschied angeben)',
 'timezoneoffset' => 'Unterschied¹:',
 'servertime' => 'Aktuelle Zeit auf dem Server:',
@@ -1740,7 +1740,7 @@ Stand: $4, $5 Uhr.",
 'rcshowhideliu' => 'Angemeldete Benutzer $1',
 'rcshowhideanons' => 'Unangemeldete Benutzer $1',
 'rcshowhidepatr' => 'Kontrollierte Änderungen $1',
-'rcshowhidemine' => 'Eigene Beiträge $1',
+'rcshowhidemine' => 'Meine Beiträge $1',
 'rclinks' => 'Zeige die letzten $1 Änderungen der letzten $2 Tage.<br />$3',
 'diff' => 'Unterschied',
 'hist' => 'Versionen',
@@ -1806,7 +1806,7 @@ Um ein '''Bild''' in einer Seite zu verwenden, nutze einen Link in der folgenden
 'ignorewarning' => 'Warnung ignorieren und Datei speichern',
 'ignorewarnings' => 'Warnungen ignorieren',
 'minlength1' => 'Dateinamen müssen mindestens einen Buchstaben lang sein.',
-'illegalfilename' => 'Der Dateiname „$1“ enthält mindestens ein nicht erlaubtes Zeichen. Bitte benenne die Datei um und versuche sie erneut hochzuladen.',
+'illegalfilename' => 'Der Dateiname „$1“ enthält mindestens ein nicht erlaubtes Zeichen. Bitte benenne die Datei um und versuche, sie erneut hochzuladen.',
 'filename-toolong' => 'Dateinamen dürfen nicht größer als 240 Byte sein.',
 'badfilename' => 'Der Dateiname wurde in „$1“ geändert.',
 'filetype-mime-mismatch' => 'Dateierweiterung „.$1“ stimmt nicht mit dem MIME-Typ ($2) überein.',
@@ -1816,14 +1816,14 @@ Um ein '''Bild''' in einer Seite zu verwenden, nutze einen Link in der folgenden
 'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|ist ein nicht erlaubter Dateityp|sind nicht erlaubte Dateitypen}}.
 {{PLURAL:$3|Erlaubter Dateityp ist|Erlaubte Dateitypen sind}} $2.",
 'filetype-missing' => 'Die hochzuladende Datei hat keine Erweiterung (z. B. „.jpg“).',
-'empty-file' => 'Die übertragene Datei ist leer',
-'file-too-large' => 'Die übertragene Datei ist zu groß',
-'filename-tooshort' => 'Der Dateiname ist zu kurz',
+'empty-file' => 'Die von dir übertragene Datei hat keinen Inhalt.',
+'file-too-large' => 'Die hochgeladene Datei war zu groß.',
+'filename-tooshort' => 'Der Dateiname ist zu kurz.',
 'filetype-banned' => 'Diese Dateiendung ist gesperrt.',
 'verification-error' => 'Diese Datei hat die Dateiprüfung nicht bestanden.',
-'hookaborted' => 'Der Versuch, die Änderung durchzuführen, ist aufgrund eines Extension-Hooks fehlgeschlagen',
-'illegal-filename' => 'Der Dateiname ist nicht erlaubt',
-'overwrite' => 'Das Überschreiben einer existierenden Datei ist nicht erlaubt',
+'hookaborted' => 'Der Versuch, die Änderung durchzuführen, wurde von einer Parsererweiterung abgebrochen.',
+'illegal-filename' => 'Der Dateiname ist nicht zulässig.',
+'overwrite' => 'Das Überschreiben einer bereits vorhandenen Datei ist nicht erlaubt.',
 'unknown-error' => 'Ein unbekannter Fehler ist aufgetreten.',
 'tmp-create-error' => 'Temporäre Datei konnte nicht erstellt werden',
 'tmp-write-error' => 'Fehler beim Schreiben der temporären Datei',
@@ -1839,7 +1839,7 @@ Die Beschreibungsseite musst du nach dem Hochladen der Datei noch manuell bearbe
 [[$1|thumb]]',
 'fileexists-extension' => 'Eine Datei ähnlichen Namens ist bereits vorhanden: [[$2|thumb]]
 * Name der hochzuladenden Datei: <strong>[[:$1]]</strong>
-* Name der vorhandenen Datei: <strong>[[:$2]]</strong>
+* Name der bereits vorhandenen Datei: <strong>[[:$2]]</strong>
 Bitte wähle einen anderen Namen.',
 'fileexists-thumbnail-yes' => "Bei der Datei scheint es sich um ein Bild verringerter Größe ''(Miniatur)'' zu handeln. [[$1|thumb]]
 Bitte prüfe die Datei <strong>[[:$1]]</strong>.
@@ -1939,7 +1939,7 @@ Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|Syst
 'backend-fail-internal' => 'Im Speicher-Backend „$1“ ist ein unbekannter Fehler aufgetreten.',
 'backend-fail-contenttype' => 'Der Inhaltstyp, der im Pfad „$1“ zu speichernden Datei, konnte nicht bestimmt werden.',
 'backend-fail-batchsize' => 'Eine Stapelverarbeitungsdatei, die {{PLURAL:$1|eine Operation|$1 Operationen}} enthält, wurde an das Speicher-Backend gesandt. Die Begrenzung liegt allerdings bei {{PLURAL:$2|einer Operation|$2 Operationen}}.',
-'backend-fail-usable' => 'Die Datei „$1“ konnte, entweder aufgrund eines nicht vorhandenen Verzeichnisses oder aufgrund unzureichender Berechtigungen, weder abgerufen noch gespeichert werden.',
+'backend-fail-usable' => 'Die Datei „$1“ konnte entweder aufgrund eines nicht vorhandenen Verzeichnisses oder wegen unzureichender Berechtigungen weder abgerufen noch gespeichert werden.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Es konnte keine Verbindung zur Journaldatenbank des Speicher-Backends „$1“ hergestellt werden.',
@@ -1970,17 +1970,17 @@ Sie kann daher keiner ordnungsgemäßen Sicherheitsüberprüfung unterzogen werd
 'uploadstash-summary' => 'Diese Seite ermöglicht den Zugriff auf Dateien, die hochgeladen wurden, bzw. gerade hochgeladen werden, aber noch nicht auf dem Wiki publiziert wurden. Diese Dateien sind, der hochladende Benutzer ausgenommen, noch nicht öffentlich einsehbar.',
 'uploadstash-clear' => 'Die vorab gespeicherten Dateien entfernen',
 'uploadstash-nofiles' => 'Es sind keine vorab gespeicherten Dateien vorhanden.',
-'uploadstash-badtoken' => 'Das Entfernen der vorab gespeicherten Dateien war erfolglos, vielleicht weil die Sitzungsdaten abgelaufen sind. Bitte erneut versuchen.',
+'uploadstash-badtoken' => 'Das Entfernen der vorab gespeicherten Dateien war erfolglos, vielleicht weil deine Sitzungsdaten abgelaufen sind. Bitte versuche es erneut.',
 'uploadstash-errclear' => 'Das Entfernen der vorab gespeicherten Dateien war erfolglos.',
 'uploadstash-refresh' => 'Liste der Dateien aktualisieren',
 'invalid-chunk-offset' => 'Ungültiger Startpunkt',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Zugriff verweigert',
-'img-auth-nopathinfo' => 'PATH_INFO fehlt.
+'img-auth-nopathinfo' => 'Die Angabe PATH_INFO fehlt.
 Der Server ist nicht dafür eingerichtet, diese Information weiterzugeben.
-Sie könnte CGI-gestützt sein und kann daher img_auth nicht ermöglichen.
-Siehe hierzu die Seite https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Sie könnte CGI-gestützt sein und kann daher „img_auth“ (Authentifizierung des Dateiaufrufs) nicht unterstützen.
+Siehe hierzu die Seite https://www.mediawiki.org/wiki/Manual:Image_Authorization (englisch) für weitere Informationen.',
 'img-auth-notindir' => 'Der gewünschte Pfad ist nicht im konfigurierten Uploadverzeichnis.',
 'img-auth-badtitle' => 'Aus „$1“ kann kein gültiger Titel erstellt werden.',
 'img-auth-nologinnWL' => 'Du bist nicht angemeldet und „$1“ ist nicht in der weißen Liste.',
@@ -2008,11 +2008,11 @@ Aus Sicherheitsgründen ist img_auth.php deaktiviert.',
 'upload-curl-error6' => 'URL ist nicht erreichbar',
 'upload-curl-error6-text' => 'Die angegebene URL ist nicht erreichbar. Prüfe sowohl die URL auf Fehler als auch den Online-Status der Seite.',
 'upload-curl-error28' => 'Zeitüberschreitung beim Hochladen',
-'upload-curl-error28-text' => 'Die Seite braucht zu lange für eine Antwort. Prüfe, ob die Seite online ist, warte einen kurzen Moment und versuche es dann erneut. Es kann sinnvoll sein, einen erneuten Versuch zu einem anderen Zeitpunkt zu probieren.',
+'upload-curl-error28-text' => 'Die Seite braucht zu lange, um zu antworten. Prüfe, ob die Seite online ist, warte einen kurzen Moment und versuche es dann erneut. Es kann sinnvoll sein, es zu einem anderen Zeitpunkt erneut zu versuchen.',
 
 'license' => 'Lizenz:',
 'license-header' => 'Lizenz',
-'nolicense' => 'keine Vorauswahl',
+'nolicense' => 'Keine Vorauswahl',
 'license-nopreview' => '(es ist keine Vorschau verfügbar)',
 'upload_source_url' => ' (gültige, öffentlich zugängliche URL)',
 'upload_source_file' => ' (eine Datei auf deinem Computer)',
@@ -2142,7 +2142,7 @@ Vielleicht möchtest du die Beschreibung auf der dortigen [$2 Dateibeschreibungs
 'statistics-edits' => 'Seitenbearbeitungen',
 'statistics-edits-average' => 'Bearbeitungen pro Seite im Durchschnitt',
 'statistics-views-total' => 'Seitenaufrufe gesamt',
-'statistics-views-total-desc' => 'Aufrufe nicht vorhandener Seiten und von Spezialseiten werden nicht berücksichtigt',
+'statistics-views-total-desc' => 'Aufrufe nicht vorhandener Seiten und von Spezialseiten werden nicht berücksichtigt.',
 'statistics-views-peredit' => 'Seitenaufrufe pro Bearbeitung',
 'statistics-users' => 'Registrierte [[Special:ListUsers|Benutzer]]',
 'statistics-users-active' => 'Aktive Benutzer',
@@ -2505,9 +2505,9 @@ Die letzte Änderung stammt von [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int
 
 # Edit tokens
 'sessionfailure-title' => 'Sitzungsfehler',
-'sessionfailure' => 'Es gab ein Problem mit der Übertragung deiner Benutzerdaten.
+'sessionfailure' => 'Es gab ein Problem bei der Übertragung deiner Benutzerdaten.
 Diese Aktion wurde daher sicherheitshalber abgebrochen, um eine falsche Zuordnung deiner Änderungen zu einem anderen Benutzer zu verhindern.
-Bitte gehe zurück und versuche den Vorgang erneut auszuführen.',
+Bitte gehe zurück zur vorherigen Seite, lade sie erneut und versuche, den Vorgang erneut auszuführen.',
 
 # Protect
 'protectlogpage' => 'Seitenschutz-Logbuch',
@@ -2635,7 +2635,7 @@ $1',
 # Contributions
 'contributions' => 'Benutzerbeiträge',
 'contributions-title' => 'Benutzerbeiträge von „$1“',
-'mycontris' => 'Eigene Beiträge',
+'mycontris' => 'Meine Beiträge',
 'contribsub2' => 'Von $1 ($2)',
 'nocontribs' => 'Es wurden keine Benutzerbeiträge mit diesen Kriterien gefunden.',
 'uctop' => '(aktuell)',
@@ -2719,7 +2719,7 @@ Bitte gib den Grund für die Sperre an.',
 'blockipsuccesstext' => 'Der Benutzer / die IP-Adresse [[Special:Contributions/$1|$1]] wurde gesperrt.<br />
 Zur Aufhebung der Sperre siehe die [[Special:BlockList|Liste aller aktiven Sperren]].',
 'ipb-blockingself' => 'Du bist gerade dabei, dich selbst zu sperren! Möchtest du das wirklich tun?',
-'ipb-confirmhideuser' => 'Du bist gerade dabei einen Benutzer im Modus „Benutzer verstecken“ zu sperren. Dies führt dazu, dass der Benutzername in allen Listen und Logbüchern unterdrückt wird. Möchtest du das wirklich tun?',
+'ipb-confirmhideuser' => 'Du bist gerade dabei, einen Benutzer im Modus „Benutzer verstecken“ zu sperren. Dies führt dazu, dass der Benutzername in allen Listen und Logbüchern unterdrückt wird. Möchtest du das wirklich tun?',
 'ipb-edit-dropdown' => 'Sperrgründe bearbeiten',
 'ipb-unblock-addr' => '„$1“ freigeben',
 'ipb-unblock' => 'IP-Adresse/Benutzer freigeben',
@@ -2887,7 +2887,7 @@ Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung
 'movenosubpage' => 'Diese Seite hat keine Unterseiten.',
 'movereason' => 'Grund:',
 'revertmove' => 'zurück verschieben',
-'delete_and_move' => 'Löschen und Verschieben',
+'delete_and_move' => 'Löschen und verschieben',
 'delete_and_move_text' => '== Löschung erforderlich ==
 
 Die Seite „[[:$1]]“ existiert bereits. Möchtest du diese löschen, um die Seite verschieben zu können?',
@@ -3026,7 +3026,6 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript-Test',
-'javascripttest-disabled' => 'Diese Funktion wurde in diesem Wiki nicht aktiviert.',
 'javascripttest-title' => '$1-Tests werden durchgeführt',
 'javascripttest-pagetext-noframework' => 'Diese Seite ist JavaSkript-Tests vorbehalten.',
 'javascripttest-pagetext-unknownframework' => 'Unbekanntes Framework „$1“.',
@@ -3049,7 +3048,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 'tooltip-ca-talk' => 'Diskussion zum Seiteninhalt',
 'tooltip-ca-edit' => 'Seite bearbeiten. Bitte vor dem Speichern die Vorschaufunktion benutzen.',
 'tooltip-ca-addsection' => 'Neuen Abschnitt beginnen',
-'tooltip-ca-viewsource' => 'Diese Seite ist geschützt. Der Quelltext kann angesehen werden.',
+'tooltip-ca-viewsource' => 'Diese Seite ist geschützt. Ihr Quelltext kann dennoch angesehen und kopiert werden.',
 'tooltip-ca-history' => 'Frühere Versionen dieser Seite',
 'tooltip-ca-protect' => 'Diese Seite schützen',
 'tooltip-ca-unprotect' => 'Seitenschutz ändern',
@@ -4040,7 +4039,7 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 'revdelete-restricted' => 'Einschränkungen gelten auch für Administratoren',
 'revdelete-unrestricted' => 'Einschränkungen für Administratoren aufgehoben',
 'logentry-move-move' => '$1 verschob Seite $3 nach $4',
-'logentry-move-move-noredirect' => '$1 verschob Seite $3 nach $4 ohne dabei eine Weiterleitung anzulegen',
+'logentry-move-move-noredirect' => '$1 verschob Seite $3 nach $4, ohne dabei eine Weiterleitung anzulegen',
 'logentry-move-move_redir' => '$1 verschob Seite $3 nach $4 und überschrieb dabei eine Weiterleitung',
 'logentry-move-move_redir-noredirect' => '$1 verschob Seite $3 nach $4 und überschrieb dabei eine Weiterleitung ohne selbst eine Weiterleitung anzulegen',
 'logentry-patrol-patrol' => '$1 markierte Version $4 von Seite $3 als kontrolliert',
@@ -4052,8 +4051,8 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 'newuserlog-byemail' => 'das Passwort wurde per E-Mail versandt',
 
 # Feedback
-'feedback-bugornote' => 'Sofern Du detailliert ein technisches Problem beschreiben möchtest, melde bitte [$1 einen Fehler].
-Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kommentar wird, zusammen mit deinem Benutzernamen und der Version des von Dir verwendeten Webbrowsers sowie Betriebssystems, auf der Seite „[$3 $2]“ hinzugefügt.',
+'feedback-bugornote' => 'Sofern du detailliert ein technisches Problem beschreiben möchtest, melde bitte [$1 einen Fehler].
+Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kommentar wird, zusammen mit deinem Benutzernamen und der Version des von dir verwendeten Webbrowsers sowie Betriebssystems, auf der Seite „[$3 $2]“ hinzugefügt.',
 'feedback-subject' => 'Betreff:',
 'feedback-message' => 'Nachricht:',
 'feedback-cancel' => 'Abbrechen',
@@ -4085,7 +4084,7 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'api-error-filetype-banned' => 'Diese Dateiendung ist gesperrt.',
 'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|ist ein nicht zulässiger Dateityp|sind nicht zulässige Dateitypen}}. {{PLURAL:$3|Ein zulässiger Dateityp ist|Zulässige Dateitypen sind}} $2.',
 'api-error-filetype-missing' => 'Die hochzuladende Datei hat keine Dateiendung.',
-'api-error-hookaborted' => 'Die von dir vorgesehene Anpassung kann nicht durchgeführt werden (Unterbrechung durch eine Programmschnittstelle).',
+'api-error-hookaborted' => 'Der Versuch, die Änderung durchzuführen, wurde von einer Parsererweiterung (API) abgebrochen.',
 'api-error-http' => 'Interner Fehler: Es konnte keine Verbindung zum Server hergestellt werden.',
 'api-error-illegal-filename' => 'Der Dateiname ist nicht erlaubt.',
 'api-error-internal-error' => 'Interner Fehler: Ein unbekannter Fehler ist beim Hochladen der Datei ins Wiki aufgetreten.',
@@ -4119,4 +4118,7 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'duration-centuries' => '$1 {{PLURAL:$1|Jahrhundert|Jahrhunderte}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Jahrtausend|Jahrtausende}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'enthält …',
+'searchsuggest-search' => 'Suchen',
 );
index 2ce7a85..9c631f0 100644 (file)
@@ -364,44 +364,44 @@ $messages = array(
 'editfont-serif' => 'Tipê nustey Serifi',
 
 # Dates
-'sunday' => 'Kırê',
-'monday' => 'Dışeme',
-'tuesday' => 'Sêşeme',
-'wednesday' => 'Çarşeme',
+'sunday' => 'Bazar',
+'monday' => 'Berarek',
+'tuesday' => 'Telete',
+'wednesday' => 'Çeharşeme',
 'thursday' => 'Pancşeme',
 'friday' => 'Êne',
-'saturday' => 'Şeme',
-'sun' => 'Krê',
-'mon' => 'Dşm',
-'tue' => 'Sşm',
+'saturday' => 'Bahdê êni',
+'sun' => 'Baz',
+'mon' => 'Ber',
+'tue' => 'Tlt',
 'wed' => 'Çrş',
-'thu' => 'Pşm',
+'thu' => 'P',
 'fri' => 'Êne',
-'sat' => 'Şem',
+'sat' => 'Bah',
 'january' => 'Çele',
-'february' => 'Şıbate',
-'march' => 'Adar',
-'april' => 'Nisane',
-'may_long' => 'Gulane',
+'february' => 'Zemherı',
+'march' => 'Mert',
+'april' => 'Lisane',
+'may_long' => 'Gulan',
 'june' => 'Heziran',
-'july' => 'Temuz',
+'july' => 'Paliyan',
 'august' => 'Tebaxe',
-'september' => 'Keşkelun',
-'october' => 'Tışrino Verên',
-'november' => 'Tışrino Peyên',
-'december' => 'Kanun',
-'january-gen' => 'Çeley',
-'february-gen' => 'Şıbate',
-'march-gen' => 'Adari',
-'april-gen' => 'Nisane',
-'may-gen' => 'Gulane',
-'june-gen' => 'Hezirani',
-'july-gen' => 'Temuzi',
+'september' => 'Kergan',
+'october' => 'Cıtan',
+'november' => 'Kelverdan',
+'december' => 'Vewran',
+'january-gen' => 'Çele',
+'february-gen' => 'Zemherı',
+'march-gen' => 'Mert',
+'april-gen' => 'Lisan',
+'may-gen' => 'Gulan',
+'june-gen' => 'Heziran',
+'july-gen' => 'Paliyan',
 'august-gen' => 'Tebaxe',
-'september-gen' => 'Keşkeluni',
-'october-gen' => 'Tışrinê Verêni',
-'november-gen' => 'Tışrinê Peyêni',
-'december-gen' => 'Kanuni',
+'september-gen' => 'Kergan',
+'october-gen' => 'Cıtan',
+'november-gen' => 'Kelverdan',
+'december-gen' => 'Vewran',
 'jan' => 'Çel',
 'feb' => 'Şbt',
 'mar' => 'Adr',
@@ -419,7 +419,7 @@ $messages = array(
 'pagecategories' => '{{PLURAL:$1|Kategoriye|Kategoriy}}',
 'category_header' => 'Pelê ke kategoriya "$1" derê',
 'subcategories' => 'Kategoriyê bınêni',
-'category-media-header' => 'Medyawa ke kategoriya "$1" dera',
+'category-media-header' => 'Dosyeyê ke kategoriya da "$1" deyê',
 'category-empty' => "''Ena kategoriye de hewna qet nuştey ya zi medya çıniyê.''",
 'hidden-categories' => '{{PLURAL:$1|Kategoriya nımıtiye|Kategoriyê nımıtey}}',
 'hidden-category-category' => 'Kategoriyê nımıtey',
@@ -427,11 +427,12 @@ $messages = array(
 'category-subcat-count-limited' => 'Na kategoriye de {{PLURAL:$1|ena kategoriya bınêne esta|enê $1 kategoriyê bınêni estê}}.',
 'category-article-count' => '{{PLURAL:$2|Na kategoriye de teyna ena pele esta.|Na kategoriye de $2 ra pêro pia, {{PLURAL:$1|ena pele esta|enê $1 peli estê.}}, be $2 ra pêro pia}}',
 'category-article-count-limited' => '{{PLURAL:$1|Pela cêrêne|$1 Pelê cêrêni}} na kategoriye derê.',
-'category-file-count' => '{{PLURAL:$2|Na kategoriye de tenya dosya cêrêne esta.|Teberê $2 ra pêro, {{PLURAL:$1|dosya cêrêne|$1 dosyê cêrêni}} na kategoriye derê.}}',
+'category-file-count' => '<noinclude>{{PLURAL:$2|Na kategoriye tenya dosyayanê cêrênan muhtewa kena.}}</noinclude>
+*Na kategoriye de $2 dosyayan ra {{PLURAL:$1|yew dosya tenêka esta| $1 dosyey asenê}}.',
 'category-file-count-limited' => '{{PLURAL:$1|Dosya cêrêne|$1 Dosyê cêrêni}} na kategoriye derê.',
-'listingcontinuesabbrev' => 'dewam',
+'listingcontinuesabbrev' => '(dewam)',
 'index-category' => 'Pelê endeksıni',
-'noindex-category' => 'Pelê ke endeksıni niyê',
+'noindex-category' => 'Perê ke ratnena cı çinıya',
 'broken-file-category' => 'Peleye ke linkê Dosyayandê xelata muhtewa kenê',
 'categoryviewer-pagedlinks' => '($1) ($2)',
 
@@ -445,7 +446,7 @@ $messages = array(
 'mypage' => 'Pela mı',
 'mytalk' => 'Verênayışê mı',
 'anontalk' => 'Pela werênayışê nê IPy',
-'navigation' => 'Pusula',
+'navigation' => 'Geyrayış',
 'and' => '&#32;u',
 
 # Cologne Blue skin
@@ -462,11 +463,11 @@ $messages = array(
 # Vector skin
 'vector-action-addsection' => 'Mesel Vırazê',
 'vector-action-delete' => 'Besterne',
-'vector-action-move' => 'Berê',
+'vector-action-move' => 'Wegirê',
 'vector-action-protect' => 'Bıpawe',
 'vector-action-undelete' => 'Esterıtışi peyser bıgê',
 'vector-action-unprotect' => 'Starkerdışi bıvurne',
-'vector-simplesearch-preference' => 'Tewsiyanê cıgeyrayışê raverberdan ake (Tenya vector skin de)',
+'vector-simplesearch-preference' => 'Çuweya cı geyreyış de rehater aktiv ke (Tenya vector skin de)',
 'vector-view-create' => 'Vıraze',
 'vector-view-edit' => 'Bıvurne',
 'vector-view-history' => 'Vurnayışê verêni',
@@ -484,8 +485,8 @@ $messages = array(
 'searchbutton' => 'Cı geyre',
 'go' => 'Şo',
 'searcharticle' => 'Şo',
-'history' => 'Ravêrdena pela',
-'history_short' => 'Ravêrden',
+'history' => 'Verora perer',
+'history_short' => 'Vurnayışê verêni',
 'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
 'printableversion' => 'Asayışo çapkerden',
 'permalink' => 'Gıreyo daimi',
@@ -496,7 +497,7 @@ $messages = array(
 'editthispage' => 'Ena pele bıvurne',
 'create-this-page' => 'Na pele bınuse',
 'delete' => 'Besterne',
-'deletethispage' => 'Ena pele bestere',
+'deletethispage' => 'Ena perer besternê',
 'undelete_short' => '{{PLURAL:$1|Yew vurnayışi|$1 Vurnayışan}} mestere',
 'viewdeleted_short' => '{{PLURAL:$1|Yew vurnayışo esterıte|$1 Vurnayışanê esterıtan}} bımocne',
 'protect' => 'Bıpawe',
@@ -504,7 +505,7 @@ $messages = array(
 'protectthispage' => 'Ena pele bıpawe',
 'unprotect' => 'Starkerdışi bıvurne',
 'unprotectthispage' => 'Starkerdışe ena peler bıvurne',
-'newpage' => 'Pela newi',
+'newpage' => 'Pera newiye',
 'talkpage' => 'Ena pele sero werêne',
 'talkpagelinktext' => 'Mesac',
 'specialpage' => 'Pela xısusiye',
@@ -523,13 +524,13 @@ $messages = array(
 'categorypage' => 'Pela kategoriye bıvêne',
 'viewtalkpage' => 'Werênayışi bıvêne',
 'otherlanguages' => 'Zıwananê binan de',
-'redirectedfrom' => '($1 ra neqıl bi)',
+'redirectedfrom' => '(Pele da $1 ra heteneyê)',
 'redirectpagesub' => 'Pela berdışi',
 'lastmodifiedat' => 'Ena pele tewr peyên roca $2, $1 de biya rocaniye.',
 'viewcount' => 'Ena pele {{PLURAL:$1|rae|$1 rey}} vêniya.',
 'protectedpage' => 'Pela pawıtiye',
-'jumpto' => 'Şo be:',
-'jumptonavigation' => 'pusula',
+'jumpto' => 'Şo:',
+'jumptonavigation' => 'karfiyê',
 'jumptosearch' => 'cı geyre',
 'view-pool-error' => 'Qaytê qısuri mekerên, serverê ma enıka zêde bar gırewto xo ser.
 Hedê xo ra zêde karberi kenê ke seyrê na pele bıkerê.
@@ -541,7 +542,7 @@ $1',
 'pool-errorunknown' => 'Xeta nêzanıtiye',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => 'Heqa {{SITENAME}} de',
+'aboutsite' => 'Heqa de {{SITENAME}}',
 'aboutpage' => 'Project:Heqdê cı',
 'copyright' => 'Zerrek bınê $1 dero.',
 'copyrightpage' => '{{ns:project}}:Heqa telifi',
@@ -552,12 +553,12 @@ $1',
 'edithelp' => 'Peştdariya vurnayışi',
 'edithelppage' => 'Help:Vurnayış',
 'helppage' => 'Help:Estêni',
-'mainpage' => 'Pela Seri',
+'mainpage' => 'Pera Seri',
 'mainpage-description' => 'Pela Seri',
 'policy-url' => 'Project:Terzê hereketi',
-'portal' => 'Portalê cemaeti',
-'portal-url' => 'Project:Portalê cemaeti',
-'privacy' => 'Madeyê dızdine',
+'portal' => 'Portalê şêlıgi',
+'portal-url' => 'Project:Portalê şêlıgi',
+'privacy' => 'Xısusiyeta nımıtin',
 'privacypage' => 'Project:Xısusiyetê nımtışi',
 
 'badaccess' => 'Xeta mısadey',
@@ -573,8 +574,8 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'backlinksubtitle' => '← $1',
 'retrievedfrom' => '"$1" ra ard',
-'youhavenewmessages' => 'To rê estê $1 ($2).',
-'newmessageslink' => 'mesacê newey',
+'youhavenewmessages' => 'To rê $1 esto ($2).',
+'newmessageslink' => 'mesacê şıma',
 'newmessagesdifflink' => 'vurnayışo peyên',
 'youhavenewmessagesfromusers' => 'Zey $1 ra {{PLURAL:$3|zewbi karber|$3 karberi}} ($2) esto.',
 'youhavenewmessagesmanyusers' => '$1 ra tay karberi ($2) dı estê.',
@@ -584,10 +585,10 @@ $1',
 'editsection' => 'bıvurne',
 'editsection-brackets' => '[$1]',
 'editold' => 'bıvurne',
-'viewsourceold' => 'çımey bıvêne',
+'viewsourceold' => 'çımey cı bıvinê',
 'editlink' => 'bıvurne',
 'viewsourcelink' => 'çımey bıvêne',
-'editsectionhint' => 'Qısımi bıvurne: $1',
+'editsectionhint' => 'Leteyo ke bıvuriyo: $1',
 'toc' => 'Sernameyê meselan',
 'showtoc' => 'bımocne',
 'hidetoc' => 'bınımne',
@@ -605,16 +606,16 @@ $1',
 'page-atom-feed' => '"$1" Cıresnayışê atomi',
 'feed-atom' => 'Atom',
 'feed-rss' => 'RSS',
-'red-link-title' => '$1 (pele çıniya)',
+'red-link-title' => '$1 (çınîya)',
 'sort-descending' => 'Ratnayışê qemeyayışi',
 'sort-ascending' => 'Ratnayışê Zeydnayışi',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Per',
-'nstab-user' => 'Pela Karberi',
+'nstab-user' => 'Pera Karberi',
 'nstab-media' => 'Pela Medya',
 'nstab-special' => 'Pela xısusiye',
-'nstab-project' => 'Pela Procey',
+'nstab-project' => 'Pera proci',
 'nstab-image' => 'Dosya',
 'nstab-mediawiki' => 'Mesac',
 'nstab-template' => 'Şablon',
@@ -654,7 +655,7 @@ Ena belki seba yew vurnayışo kıhan ya zi tarixê gırê yew pele esteriya.
 
 Eke wına niyo, belki ''software''i de yew xeta esta.
 Kerem kerê, naye be namey ''URL''i yew [[Special:ListUsers/sysop|karber]]i ra vacê.",
-'missingarticle-rev' => '(tekrar diyayış#: $1)',
+'missingarticle-rev' => '(rewizyon#: $1)',
 'missingarticle-diff' => '(Ferq: $1, $2)',
 'readonly_lag' => 'Daegeh (database) otomatikmen kılit bi, sureo ke  daegehê bınêni resay daegehê serêni.',
 'internalerror' => 'Xeta zerreki',
@@ -693,7 +694,7 @@ Perse: $2',
 'viewsourcetext' => 'To şikinay çımey na pele bıvêne u kopya kerê:',
 'viewyourtext' => "Na pela '''Vurnayışê ke kerdê''' re şıma şenê kopya kerê:",
 'protectedinterface' => 'Na pela qandê nusnerin destegê verri dana u kes xırabin nêqero deye kerda kılit.',
-'editinginterface' => "'''Xo pıpawê:''' Şıma hao jû pela ke seba nuşteyê meqalanê cayanê bırnayeyan dana, vurnenê.
+'editinginterface' => "'''İqaz:''' Şıma hao jû pela ke seba nuşteyê meqalanê cayanê bırnayeyan dana, vurnenê.
 Vurnayışê na pele karberanê binan rê serpela karberi kena ke bımocno.
 Seba çarnayışi, yardımê [//translatewiki.net/wiki/Main_Page?setlang=diq translatewiki.net]i ra procêdoşkerdışi rê diqet kerên.",
 'sqlhidden' => '(SQL pers kerdışê nımıte)',
@@ -735,19 +736,19 @@ Hesabê şıma biyo a.
 'yourdomainname' => 'Nameyê şıma yo meydani',
 'password-change-forbidden' => 'Şıma na wiki de nêşenê parola bıvurnê.',
 'externaldberror' => 'Ya database de xeta esta ya zi heqê şıma çino şıma no hesab bıvurni.',
-'login' => 'Cı kewe',
+'login' => 'Ronıştış akerê',
 'nav-login-createaccount' => 'Dekew de / hesab vıraze',
-'loginprompt' => "Cıkewtena {{SITENAME}}i rê gani ''cookies'' akerdey bê.",
+'loginprompt' => "{{SITENAME}} dı ronıştış akerdışi rê ''çerezan'' aktiv kerdış icab keno.",
 'userlogin' => 'Cı kewe / hesab vıraze',
-'userloginnocreate' => 'Cı kewe',
+'userloginnocreate' => 'Ronıştış akerê',
 'logout' => 'Veciyayış',
 'userlogout' => 'Bıveciye',
 'notloggedin' => 'Hesab akerde niyo',
 'nologin' => "Hesabê şıma çıniyo? '''$1'''.",
 'nologinlink' => 'Yew hesab ake',
-'createaccount' => 'hesab vıraze',
+'createaccount' => 'Hesab vıraze',
 'gotaccount' => "Hesabê şıma esto? '''$1'''.",
-'gotaccountlink' => 'Cı kewe',
+'gotaccountlink' => 'Ronıştış akerê',
 'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
 'createaccountmail' => 'mı rê e-mail sera parola bırışe',
 'createaccountreason' => 'Sebeb:',
@@ -781,7 +782,7 @@ Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe a
 'password-name-match' => 'Parola u nameyê şıma gani zeypê (seypê) nêbo.',
 'password-login-forbidden' => 'No namey karberi u parola karkerdışê cı  kerdo xırab.',
 'mailmypassword' => 'E-mail sera parola newiye bırışe',
-'passwordremindertitle' => 'Qey na keyepel {{SITENAME}} yew parolayo emanet',
+'passwordremindertitle' => "Qandê {{SITENAME}}'i idareten parolaya newiye",
 'passwordremindertext' => 'Yew ten (muhtemelen, şıma na aderesê IP ra $1 ) {{SITENAME}} ($4) newe yew parola waşt. "$2" no name ri emanet yew parola vıraziya "$3". Eke na şıma waşta, hesabê xo akere u newe yew parola bıvıraze. Muddetê parolayê şıma yo emanet {{PLURAL:$5|1 roc|$5 roci}}.
 
 Eke vurnayişê parolayi, şıma nêwaşt ya zi parolayê şıma ameyo şıma vir u şıma hini qayil nşye parolayê xo bıvurni; no mesaj peygoş kere u bıewne gureyê xo.',
@@ -805,7 +806,7 @@ Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
 'cannotchangeemail' => 'E-postay hesabi ena wiki sera nêvurneyêno.',
 'emaildisabled' => 'Na site ra e-posta nêrışêno.',
 'accountcreated' => 'Hesab vıraciya',
-'accountcreatedtext' => 'Qey no $1 karker newe yew hesab vıraziya.',
+'accountcreatedtext' => 'Qandê $1 hesabê karberi vıraziyayo.',
 'createaccount-title' => 'Qey {{SITENAME}} newe yew heab vıraştış',
 'createaccount-text' => 'Kesê, be e-posteyê şıma ra {{SITENAME}} ($4) de, ebe nameyê "$2" u parola "$3" ra yew hesab vıraşto.
 Şıma gani cı kewê u parola xo nıka bıvurnê.',
@@ -882,28 +883,28 @@ Parola vêrdiye: $2',
 # Edit page toolbar
 'bold_sample' => 'Metno qalın',
 'bold_tip' => 'Metno qalın',
-'italic_sample' => 'Herfo Çewt',
-'italic_tip' => 'Herfo çewt',
+'italic_sample' => 'Metno vırandere',
+'italic_tip' => 'Metno vırandere',
 'link_sample' => 'Namey gırê',
 'link_tip' => 'Gıreyê miyani',
-'extlink_sample' => 'http://www.example.com titleya gire',
-'extlink_tip' => 'Çımeyo tewer (http:// prefix)',
+'extlink_sample' => 'http://www.example.com şınasiya adresi',
+'extlink_tip' => 'Greyê teberi (adresi vero http:// dekerê de)',
 'headline_sample' => 'nuştey xeta seri',
-'headline_tip' => 'Ket 2 headline',
+'headline_tip' => '2.ki sewiye sername',
 'nowiki_sample' => 'Non-format nuşte itiya ra bıerz',
-'nowiki_tip' => 'Formatê wiki iptal bık',
+'nowiki_tip' => 'Format kerdışê wiki bıterknê',
 'image_sample' => 'Misal resim.jpg',
-'image_tip' => 'Dosyaya embedi',
+'image_tip' => 'Dosyaya gumın',
 'media_sample' => 'misal.jpg',
 'media_tip' => 'Gırey dosya',
-'sig_tip' => 'İmzay tı u tarix',
-'hr_tip' => 'Çızgiy Horizantoli (use sparingly)',
+'sig_tip' => 'İmza u wext',
+'hr_tip' => 'Çıxiza dimdayi (hend akar mefiye)',
 
 # Edit pages
 'summary' => 'Xulasa:',
 'subject' => 'Mewzu/serrêze:',
 'minoredit' => 'Eno yew vurnayışo qıckeko',
-'watchthis' => 'Ena pele seyr ke',
+'watchthis' => 'Ena perer temase ke',
 'savearticle' => 'Pele qeyd ke',
 'preview' => 'Verqayt',
 'showpreview' => 'Verqayti bımocne',
@@ -946,7 +947,7 @@ Not, [[Special:Preferences|Tercihê karberi]] eke şıma yew e-postayo raşt nê
 
 IP adresiya şıma yo nıkayên $3 u ID şıma yo ke musade nêdaye #$5. Eke şıma yew tehqiqat vırazeni malumatê corênan xo vira mekerê.',
 'blockednoreason' => 'sebeb nidaniyo',
-'whitelistedittext' => 'Eka ti wazene binusi ti gani  $1.',
+'whitelistedittext' => 'Qandê vurnayış kerdışi rê $1.',
 'confirmedittext' => 'Eka ti wazene binusi, adresê xo e-maili confirme bike.
 Adresê xo e-maili [[Special:Preferences|user preferences]] de confirme bike.',
 'nosuchsectiontitle' => 'Eno qısım çıniyo',
@@ -1012,7 +1013,7 @@ Eke şıma servisê proksi yo anonim şuxulneni sebebê ey noyo.'''",
 'edit_form_incomplete' => "'''Qandê form dê vurnayışa tay wastera ma nêreşti; Vurnayışê ke şıma kerdê nêalızyayê, çım ra ravyarnê u fına bıcerbnê.'''",
 'editing' => 'Pela "$1"\'i bıvurnê',
 'creating' => "Pela $1'i vıraze",
-'editingsection' => '$1 vurneno (qısım)',
+'editingsection' => 'Per da $1 de şımaye kenê ke leti bıvurnê',
 'editingcomment' => '$1 vuryeno (qısmo newe)',
 'editconflict' => 'Vurnayişê ke yewbini nêtepışeni: $1',
 'explainconflict' => "Wexta ke şıma pel vurneyene yewna ten zi pel vurna.
@@ -1046,7 +1047,7 @@ Loge peniye cor de este:",
 'templatesusedsection' => '{{PLURAL:$1|Template|Templateyan}}  ke na qısım de xebetniyenê:',
 'template-protected' => '(kılit biyo)',
 'template-semiprotected' => '(nimey ena pele kılit biya)',
-'hiddencategories' => 'Ena pela bınê {{PLURAL:$1|1 hidden category|$1 categoriyan nımne}}:',
+'hiddencategories' => 'Ena per de {{PLURAL:$1|1 kategoriyo nımıte|$1 kategoriyê nımıtey}} muhtewa benê:',
 'edittools' => '<!-- Text here will be shown below edit and upload forms. -->',
 'edittools-upload' => '-',
 'nocreatetitle' => 'Vıraştışê pele mehcuro',
@@ -1057,7 +1058,7 @@ Loge peniye cor de este:",
 'sectioneditnotsupported-text' => 'Destekê vurnayışiê qısımi ena pela vurnayışi de çıniyo.',
 'permissionserrors' => 'Xetayê icazeyi',
 'permissionserrorstext' => 'Qey {{PLURAL:$1|sebebê|sebebê}} cêrini ra icazeyê şıma çin o:',
-'permissionserrorstext-withaction' => 'Desturê to be $2 çıniyo, semedê {{PLURAL:$1|ena sebebi|enê sebeban}} ra:',
+'permissionserrorstext-withaction' => '{{PLURAL:$1|Sebeba|Sebeb da}} cêri ra icazetê $2 çıniyo:',
 'recreate-moveddeleted-warn' => "'''Hişyari: no pel o ke şıma vırazeni vere cû vırazyayo.'''
 
 Diqet bıkeri no vurnayişê şıma re gerek esto:",
@@ -1079,10 +1080,10 @@ Pel ca ra esto.',
 
 No $2 daweti ra gani tay bıbo, na hel {{PLURAL:$1|1 dawet esto|$1 dawet esto}}.',
 'expensive-parserfunction-category' => 'Pelê ke tede zaf fonksiyoni esti',
-'post-expand-template-inclusion-warning' => 'Hişyari: zerreyê şabloni zaf gırdo.
+'post-expand-template-inclusion-warning' => 'Tembe: zerreyê şabloni zaf gırdo.
 Taye şabloni zerre pel de nêmociyayeni.',
 'post-expand-template-inclusion-category' => 'Pelê şabloni ke hed ra veceyi',
-'post-expand-template-argument-warning' => 'Hişyari: No pel de tewr tay yew şablono herayi esto.',
+'post-expand-template-argument-warning' => 'Tembe: No per de tewr tay yew şablono herayi esto.Nê vurnayeni ser çebyay',
 'post-expand-template-argument-category' => 'Pelê ke şablonê eyi qebul niye',
 'parser-template-loop-warning' => 'Gıreyê şabloni ca biyo: [[$1]]',
 'parser-template-recursion-depth-warning' => 'limitê şablonê newekerdışi biyo de ($1)',
@@ -1113,19 +1114,19 @@ Sebebo ke terefê $3 ra diyao ''$2''",
 'currentrev' => 'Halo nıkayên',
 'currentrev-asof' => 'Revizyonanê peniyan, tarixê $1',
 'revisionasof' => 'Verziyonê roca $1ine',
-'revision-info' => 'Tehsis kerdışê roca $1ine be terefê $2',
+'revision-info' => 'Vıraştena cı karber $2 ra rewizyona $1',
 'previousrevision' => '← Çımraviyarnayışo kıhanêr',
-'nextrevision' => 'Tekrar-diyayışo newêr →',
-'currentrevisionlink' => 'Revizyono veror',
+'nextrevision' => 'Rewizyono newên →',
+'currentrevisionlink' => 'Tewr halê rocaniye bımocne',
 'cur' => 'ferq',
 'next' => 'badên',
-'last' => 'pey',
+'last' => 'peyên',
 'page_first' => 'verên',
 'page_last' => 'peyên',
-'histlegend' => "'''Ferqê weçinayışi:''' Qutiya versiyonan mor ke u  ''enter''i pıploxne ya zi makera cêrêner pılpxne.<br /> 
-Lecant: '''({{int:cur}})''' = ferqê versiyonê peni,
-'''({{int:last}})''' = ferqê versiyonê verni, '''{{int:minoreditletter}}''' = vurnayışo werdı.",
-'history-fieldset-title' => 'Tarixê browsey',
+'histlegend' => "'''Ferqê weçinayışi:''' Qutiya versiyonan mor ke u  ''enter''i bıpıloxne ya zi makera cêrêne bıpıloxne.<br /> 
+Lecant: '''({{int:cur}})''' = ferqê versiyonê peni,
+'''({{int:last}})''' = ferqê versiyonê verêni, '''{{int:minoreditletter}}''' = vurnayışo werdi.",
+'history-fieldset-title' => 'Bewni tarixer',
 'history-show-deleted' => 'Tenya esterıt',
 'histfirst' => 'Verênêr',
 'histlast' => 'Peyênêr',
@@ -1213,8 +1214,8 @@ $1",
 $1",
 'revdel-restore' => 'asayışi bıvurne',
 'revdel-restore-deleted' => 'revizyonê wedariyaye',
-'revdel-restore-visible' => 'revizyonanê esani',
-'pagehist' => 'vere cûyê peli',
+'revdel-restore-visible' => 'revizyonê ke asenê',
+'pagehist' => 'Verora perer',
 'deletedhist' => 'tarixê hewna şiyaye',
 'revdelete-hide-current' => '$2 $1 ney çiye ke wexta diyayene wera (wedar dayiş) xeta da: no reviyon nınımiyeno.',
 'revdelete-show-no-access' => '$2 $1 wexta ke ney tarix de mociyayene xeta da: ne çi "vergırewtı" nişane biyo.
@@ -1276,8 +1277,8 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 'difference-title' => 'Pela "$1" ferqê çım ra viyarnayışan',
 'difference-title-multipage' => 'Ferkê pelan dê "$1" u "$2"',
 'difference-multipage' => '(Ferqê pelan)',
-'lineno' => 'Rêza $1i:',
-'compareselectedversions' => 'Verziyonan kontrol bıke',
+'lineno' => 'Xeta $1i:',
+'compareselectedversions' => 'Rewizyonanê weçineyan pêver ke',
 'showhideselectedversions' => 'Revizyonanê weçinıtan bımocne/bınımne',
 'editundo' => 'peyser bia',
 'diff-multi' => '({{PLURAL:$1|Yew revizyono miyanên|$1 revizyonê miyanêni}} terefê {{PLURAL:$2|yew karberi|$2 karberan}} nêmocno)',
@@ -1289,7 +1290,7 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 
 # Search results
 'searchresults' => 'Neticeyê geyrayışi',
-'searchresults-title' => '"$1" dı neticeyê geyrayışi',
+'searchresults-title' => 'Qandê "$1" neticeyê geyrayışi',
 'searchresulttext' => 'Zerrey {{SITENAME}} de heqa cıgeyrayışi de seba melumat gırewtışi, şenay qaytê [[{{MediaWiki:Helppage}}|{{int:help}}]] ke.',
 'searchsubtitle' => 'Tı semedê \'\'\'[[:$1]]\'\'\' cıgeyra. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyaê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra gırê xo esto]])',
 'searchsubtitleinvalid' => "Tı cıgeyra qe '''$1'''",
@@ -1312,7 +1313,7 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'searchprofile-articles' => 'Pelê tedeestey',
 'searchprofile-project' => 'Pelê yardım u projey',
 'searchprofile-images' => 'Multimedya',
-'searchprofile-everything' => 'Hemi',
+'searchprofile-everything' => 'Hemnan',
 'searchprofile-advanced' => 'Raverşiyaye',
 'searchprofile-articles-tooltip' => '$1 de bigêre',
 'searchprofile-project-tooltip' => '$1 de bigêre',
@@ -1320,24 +1321,22 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'searchprofile-everything-tooltip' => 'Tedeestey hemine cı geyre (pelanê mınaqeşey zi tey)',
 'searchprofile-advanced-tooltip' => 'qe cayê nimeyî bigêre',
 'search-result-size' => '$1 ({{PLURAL:$2|1 çekuyo|$2 çekuyê}})',
-'search-result-category-size' => '{{PLURAL:$1|1 eza|$1 ezayan}} ({{PLURAL:$2|1 ketegoriyê bini|$2 kategiryanê binan}}, {{PLURAL:$3|1 dosya|$3 dosyayan}})',
+'search-result-category-size' => '{{PLURAL:$1|1 eza|$1 ezayan}} ({{PLURAL:$2|1 kategoriyê bini|$2 kategirayanê binan}}, {{PLURAL:$3|1 dosya|$3 dosyayan}})',
 'search-result-score' => 'Eleqa: $1%',
 'search-redirect' => '(ber $1)',
 'search-section' => '(qısmê $1)',
-'search-suggest' => 'To ney rê vat: $1',
+'search-suggest' => 'To va: $1',
 'search-interwiki-caption' => 'Projey Bıray',
 'search-interwiki-default' => '$1 neticeyan:',
 'search-interwiki-more' => '(hona)',
-'search-mwsuggest-enabled' => 'ebe teklifan',
-'search-mwsuggest-disabled' => 'weşenayışi çıniyê',
 'search-relatedarticle' => 'Eqreba',
 'mwsuggest-disable' => 'Tewsiyay AJAXi bıgê',
 'searcheverything-enable' => 'cayê nameyê hemi de bigêre',
-'searchrelated' => 'eleqayî',
+'searchrelated' => 'eleqeyın',
 'searchall' => 'pêro',
 'showingresults' => "Heta {{PLURAL:$1|'''1''' netice|'''$1''' neticeyan}} ke pê #'''$2''' başli beno ey bimocne .",
 'showingresultsnum' => "'''$2''' netican ra nata  {{PLURAL:$3|'''1''' netice|'''$3''' neticeyê}} cêrde liste biyê.",
-'showingresultsheader' => "{{PLURAL:$5|Neticeyê '''$1''' of '''$3'''|Neticeyanê '''$1 - $2''' of '''$3'''}} qe '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|Neticeyê '''$1''' of '''$3'''|Neticeyanê '''$1 - $2''' hetê '''$3'''}} qe '''$4'''",
 'nonefound' => "'''Teme''': Teyna tay namecayan cıgeyro beno.
 Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mınaqeşe, templatenan, ucb.) ya zi cıgeyro ser namecay ki tı wazeni.",
 'search-nonefound' => 'Zey cıgeyrayış de şıma netice nêvineya',
@@ -1419,10 +1418,10 @@ Etıya şıma rê yew kılito raştameo ke şıma şenê bıgurenê/bıxebetnê:
 'timezoneregion-america' => 'Amerika',
 'timezoneregion-antarctica' => 'Antarktika',
 'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Esya',
+'timezoneregion-asia' => 'Asya',
 'timezoneregion-atlantic' => 'Okyanuso Atlantik',
 'timezoneregion-australia' => 'Evistiralya',
-'timezoneregion-europe' => 'Ewrope',
+'timezoneregion-europe' => 'Ewropa',
 'timezoneregion-indian' => 'Okyanuso Hind',
 'timezoneregion-pacific' => 'Okyanuso Pasifik',
 'allowemail' => 'Karberê bini wa bışê mı rê e-posta bırışê.',
@@ -1618,7 +1617,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'action-reupload-shared' => 'dosyayê ki ho embarê medyayî de esto ser ay binusne',
 'action-upload_by_url' => 'Ena dosya yew URL ra bar bike',
 'action-writeapi' => 'ser nuşte API gure bike',
-'action-delete' => 'ena pele biestere',
+'action-delete' => 'ena perer besternê',
 'action-deleterevision' => 'nê çımraviyarnayışi bıestere',
 'action-deletedhistory' => 'tarixê ena pel ki estereyî biya, ey bivine',
 'action-browsearchive' => 'pelanê esterıteyan bıgeyre',
@@ -1628,7 +1627,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'action-block' => 'enê karberi vurnayışi ra bıreyne',
 'action-protect' => 'seviyeyê pawitişî se ena pele bivurne',
 'action-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
-'action-import' => 'ena pele yewna wîkî ra import bike',
+'action-import' => 'ena pele yewna wiki ra azere de',
 'action-importupload' => 'ena pele yew dosyayê bar kerdişî ra import bike',
 'action-patrol' => 'vurnayîşê karberanê binî nişan bike patrol biye',
 'action-autopatrol' => 'vurnayîşê xoye nişan bike ke belli biyo patrol biye',
@@ -1649,13 +1648,13 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'recentchanges-label-minor' => 'Eno vurnayışo do qickek o',
 'recentchanges-label-bot' => 'Yew boti xo het ra no vurnayış vıraşto',
 'recentchanges-label-unpatrolled' => 'Eno edît patrol nibiyo',
-'rcnote' => "Bıni dı {{PLURAL:$1|is '''1''' vurnayış|peni '''$1''' vurnayışan estê}} {{PLURAL:$2|roc|'''$2''' roci}}, hetani $5, $4.",
-'rcnotefrom' => "Cêr de vurnayîşê esto ke '''$2''' ra raver  (heta '''$1''' mucnayiyo).",
-'rclistfrom' => '$1 ra vurnayışanê neweyan bımoc',
+'rcnote' => "Bıni dı {{PLURAL:$1|'''1''' vurnayış|peyni de '''$1''' vurnayışi estê}} {{PLURAL:$2|roc|'''$2''' roci}}, hetana $5, $4.",
+'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
+'rclistfrom' => '$1 ra vurnayışanê neweyan bımocne',
 'rcshowhideminor' => 'Vurnayışanê werdiya $1',
 'rcshowhidebots' => 'Bota $1',
-'rcshowhideliu' => 'karberanê qeydına $1',
-'rcshowhideanons' => 'karberanê anoniman $1',
+'rcshowhideliu' => 'Karberanê qeydına $1',
+'rcshowhideanons' => 'Karberanê anoniman $1',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
 'rcshowhidemine' => 'nuştışanê mı $1',
 'rclinks' => 'Peyni $2 rocan de vurnayışa $1  bımocne <br />$3',
@@ -1663,7 +1662,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'hist' => 'verên',
 'hide' => 'Bınımne',
 'show' => 'Bımocne',
-'minoreditletter' => 'w',
+'minoreditletter' => 'q',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
 'unpatrolledletter' => '!',
@@ -1950,7 +1949,7 @@ keyepel nıka zaf meşğulo yew dema herayi de newe ra tesel bıkerê.',
 # File description page
 'file-anchor-link' => 'Dosya',
 'filehist' => 'Ravêrdê dosya',
-'filehist-help' => 'Klik bık ser yew tarih u aye tarih dı versionê dosya bıvin.',
+'filehist-help' => 'bıploxne ser yew tarih u aye tarih dı versionê dosya bıvin.',
 'filehist-deleteall' => 'hemî biestere',
 'filehist-deleteone' => 'bıestere',
 'filehist-revert' => 'reyna biyere',
@@ -1960,9 +1959,9 @@ keyepel nıka zaf meşğulo yew dema herayi de newe ra tesel bıkerê.',
 'filehist-thumbtext' => 'Thumbnail qe versiyonê $1',
 'filehist-nothumb' => 'Thumbnail çin o.',
 'filehist-user' => 'Karber',
-'filehist-dimensions' => 'Dimensiyoni',
+'filehist-dimensions' => 'Ebati',
 'filehist-filesize' => 'Ebatê dosyayî',
-'filehist-comment' => 'Mışewre',
+'filehist-comment' => 'Vacayış',
 'filehist-missing' => 'Dosya nieseno',
 'imagelinks' => 'Gurenayışê dosya',
 'linkstoimage' => 'Ena {{PLURAL:$1|pela|$1 pela}} gıreye ena dosya:',
@@ -2066,7 +2065,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'statistics-mostpopular' => 'Pelayanê ke tewr zafî vînî biye',
 
 'disambiguations' => 'Pelayê ke maneyo bini rê gırey cı esto',
-'disambiguationspage' => 'Template:disambig',
+'disambiguationspage' => 'Template:Maneo bin',
 'disambiguations-text' => "Peleyê ke satır da sıteyên dı pelanê '''maneo bin'''i rê esteyina zeregri mocnenê. Nara satırda dıdın dı zi <br />tiya de [[MediaWiki:Disambiguationspage|Pelaya Maneo do bini ]] gani heme gıreyê şablonê ciya-manayan re gıre dayış icab keno.",
 
 'doubleredirects' => 'Hetenayışê dıletıni',
@@ -2145,7 +2144,7 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'newpages' => 'Pelê newey',
 'newpages-username' => 'Namey Karberi:',
 'ancientpages' => 'Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani',
-'move' => 'Berê',
+'move' => 'Wegirê',
 'movethispage' => 'Ena pele bere',
 'unusedimagestext' => 'Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.
 Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gırê bê, u wına şenê verba gurênayışo feal de tiya hewna lista bê.',
@@ -2155,7 +2154,7 @@ Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gı
 'nopagetitle' => 'wina yew pelê hedefi çin o.',
 'nopagetext' => 'pelê hedefi ke şıma nişane kerdo çin o.',
 'pager-newer-n' => '{{PLURAL:$1|newiyer 1|newiyer $1}}',
-'pager-older-n' => '{{PLURAL:$1|Kıhanyer 1|Kıhanyer $1}}',
+'pager-older-n' => '{{PLURAL:$1|deha kehan 1|deha kehan $1}}',
 'suppress' => 'Çımpawıten',
 'querypage-disabled' => 'Na pelaya xısusi,sebeb de performansi ra qefılneyê.',
 
@@ -2179,13 +2178,13 @@ tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyn
 'showhideselectedlogentries' => 'Qeydê weçinayışê bımocne/bınımne dekerê',
 
 # Special:AllPages
-'allpages' => 'Peli pêro',
+'allpages' => 'Peri pêro',
 'alphaindexline' => '$1 ra $2ine',
 'nextpage' => 'Pela badê cû ($1)',
 'prevpage' => 'Pela verêne ($1)',
 'allpagesfrom' => 'Pelanê ke be ena herfe dest pêkenê bımocne',
 'allpagesto' => 'Pelanê ke be ena herfe qediyenê bımocne:',
-'allarticles' => 'Peli pêro',
+'allarticles' => 'Wesiqey pêro',
 'allinnamespace' => 'Peli pênro ( $1 cayênameyî)',
 'allnotinnamespace' => 'Pelanê hemî ($1 cayênameyî de niyo)',
 'allpagesprev' => 'Verên',
@@ -2233,9 +2232,9 @@ qaydeyê destek biyayeyi: <code>$1</code>',
 
 # Special:ActiveUsers
 'activeusers' => 'Listey karberan de aktivan',
-'activeusers-intro' => 'Ena yew listeye ke karberanê ke $1 {{PLURAL:$1|roc|rocan}} de îştiraq kerdo înan mocneno.',
-'activeusers-count' => 'ney {{PLURAL:$3|rocê peyin de|$3 rocê peyin de}} $1 {{PLURAL:$1|vuriyayiş|vuriyayiş}}',
-'activeusers-from' => 'karber ê ke pê ney destpêkeni ramocın:',
+'activeusers-intro' => 'Ena yew listeya karberê ke $1 {{PLURAL:$1|roc|rocan}} ra tepya iştiraq kerdo ênan mocneno.',
+'activeusers-count' => 'Karberi {{PLURAL:$3|roce peyni de|$3 roca peyni de}} $1 {{PLURAL:$1|vurnayış|vurnayışi}} kerdê',
+'activeusers-from' => 'Enê karberi ra tepya bımocne:',
 'activeusers-hidebots' => 'Botan bınımne',
 'activeusers-hidesysops' => 'İdarekerdoğan bınımne',
 'activeusers-noresult' => 'Karberî çini yo.',
@@ -2253,7 +2252,7 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 'listgrouprights-group' => 'Grup',
 'listgrouprights-rights' => 'Heqqî',
 'listgrouprights-helppage' => 'Help:Heqqanê gruban',
-'listgrouprights-members' => '(lista ezayan)',
+'listgrouprights-members' => '(listey ezayan)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
 'listgrouprights-addgroup' => 'şıma eşkenî hesabê xo re {{PLURAL:$2|grub|gruban}} têare kerî: $1',
@@ -2290,7 +2289,7 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 'emailfrom' => 'Rışten:',
 'emailto' => 'Geren:',
 'emailsubject' => 'Mersel:',
-'emailmessage' => 'Mesaj',
+'emailmessage' => 'E-posta:',
 'emailsend' => 'bıerşawê/bıruşnê',
 'emailccme' => 'kopyayekê mesaji mı re bıerşaw',
 'emailccsubject' => '$2 kopyaya mesaj a ke şıma erşawıto/a $1:',
@@ -2316,9 +2315,9 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem ma tu ri heber dun, zerri [[Special:RecentChanges|list of recent changes]] name pele beno qalın. Tı ri beno qolay çıta vurnaye biyo.',
 'removewatch' => 'Listedê mınê seyr kerdışi ra hewad',
 'removedwatchtext' => 'Ena pela "[[:$1]]" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].',
-'watch' => 'bıgê seyr-kerdış',
+'watch' => 'Temaşe ke',
 'watchthispage' => 'Peler seyr ke',
-'unwatch' => 'Seyr meke',
+'unwatch' => 'Teqib mekerê',
 'unwatchthispage' => 'temaşa kerdışê peli vındarn.',
 'notanarticle' => 'mebhesê peli niyo',
 'notvisiblerev' => 'Revizyon esteriyayo',
@@ -2387,11 +2386,11 @@ qey hemkari u pêşniyazi:
 'historywarning' => "'''Teme:''' Pela ke şıma esterenê tede yew viyarte be teqriben $1 {{PLURAL:$1|versiyon esto|versiyoni estê}}:",
 'confirmdeletetext' => 'Tı ho yew pele u tarixê pele wederneno.
 Tı ra rica keno, tı zani tı ho sekeno, tı zani neticeyanê eno wedarnayışi u tı zani tı ser [[{{MediaWiki:Policy-url}}|poliçe]] kar keno.',
-'actioncomplete' => 'Aksiyon temam biyo',
+'actioncomplete' => 'Xebten temam biyo',
 'actionfailed' => 'kar nêbı',
 'deletedtext' => '"$1" biya wedariya.
 Qe qeydê wedarnayışi, $2 bevinin.',
-'dellogpage' => 'Qeydê besternayışi',
+'dellogpage' => 'Qeydê esterniye',
 'dellogpagetext' => 'listeya cêrıni heme qaydê hewn a kerdeyan o.',
 'deletionlog' => 'qaydê hewnakerdışani',
 'reverted' => 'revizyono verin tepiya anciyayo',
@@ -2422,7 +2421,7 @@ yewna ten pel de vurnayiş kerdo u pel tepiya nêgeriyeno.
 
 oyo ke vurnayişo peyin kerdo: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "kılmnuşteyê vurnayişibi: \"''\$1''\".",
-'revertpage' => 'hetê [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ra vurnayiş biyo u ney vurnayişi tepiya geriyayo u no [[User:$1|$1]] kes o ke cuwa ver revizyon kerdo revizyonê no kesi tepiya anciyayo.',
+'revertpage' => 'Hetê [[Special:Contributions/$2|$2]] ([[User talk:$2|Mesac]]) ra vurnayiş biyo u ney vurnayişi tepiya geriyayo u no [[User:$1|$1]] kes o ke cuwa ver revizyon kerdo revizyonê no kesi tepiya anciyayo.',
 'revertpage-nouser' => '(nameyê karberi veteyo) no keso ke vuriyayiş kerdo vuriyayişê no kesi hetê no [[User:$1|$1]] kesi ra tepiya anciyayo',
 'rollback-success' => 'vurnayişê no kesi $1 tepiya geriyayo u hetê no
 $2 kesi ra cıwa ver o ke revizyon biyo no revizyon tepiya anciyayo.',
@@ -2434,7 +2433,7 @@ no kar semedê dızdiyê hesabi ibtal biyo.
 kerem kerê "tepiya" şiyerê u pel o ke şıma tera ameyî u o pel newe ra bar kerê , newe ra tesel/cereb kerê.',
 
 # Protect
-'protectlogpage' => 'Logê kılit-kerdışi',
+'protectlogpage' => 'Qeydê staryayan',
 'protectlogtext' => 'Şıma vurnayişê gırewtışê/wedarnayışê pawıtişi vinenê.
 Qey malumato ziyede [[Special:ProtectedPages|Peleyê ke star biye]] bewni rê êna .',
 'protectedarticle' => '"[[$1]]" kılit biyo',
@@ -2561,13 +2560,13 @@ $1',
 
 # Contributions
 'contributions' => 'İştiraqê karberi',
-'contributions-title' => '$1 de iştırakê karberi',
+'contributions-title' => 'Dekerdenê karber de $1',
 'mycontris' => 'Dekerdeni',
 'contribsub2' => 'Qandê $1 ($2)',
 'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.',
-'uctop' => '(ser)',
-'month' => 'Aşm ra (u verniyer):',
-'year' => 'Serre ra (u verênêr):',
+'uctop' => '(top)',
+'month' => 'Aşm:',
+'year' => 'Ser:',
 
 'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
 'sp-contributions-newbies-sub' => 'Qe hesebê newe',
@@ -2582,28 +2581,28 @@ $1',
 qê referansi qeydê vernigrewtışi cêr de eşkera biyo:',
 'sp-contributions-blocked-notice-anon' => 'Eno adresê IPi bloke biyo.
 Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
-'sp-contributions-search' => 'Ser iştariqi bıgeyr',
+'sp-contributions-search' => 'Dekerdena cı geyrê',
 'sp-contributions-username' => 'Adresa IP yana namey karberi:',
 'sp-contributions-toponly' => 'Tenya rewizyonanê tewr peyniyan bimocne',
 'sp-contributions-submit' => 'Cı geyre',
 
 # What links here
 'whatlinkshere' => 'Çı tiyay rê gırê beno',
-'whatlinkshere-title' => 'Peleye ke  "$1" re gre biyê',
+'whatlinkshere-title' => 'Per da "$1" rê perê ke gre danê',
 'whatlinkshere-page' => 'Per:',
 'linkshere' => "Ena peleyan grey biya '''[[:$1]]''':",
-'nolinkshere' => "Yew pel zi '''[[:$1]]''' rê link nibeno.",
+'nolinkshere' => "Per da '''[[:$1]]''' rê pera ke gıre dana çıniya.",
 'nolinkshere-ns' => "Ena cayê nameyî de yew pel zi '''[[:$1]]''' rê link nibeno.",
-'isredirect' => 'pele redireksiyon',
-'istemplate' => 'Çarnayışin',
+'isredirect' => 'pera hetenayışi',
+'istemplate' => 'Açarnayene',
 'isimage' => 'gıreyê dosya',
 'whatlinkshere-prev' => '{{PLURAL:$1|veror|veror $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|verni|verni $1}}',
 'whatlinkshere-links' => '← gırey',
-'whatlinkshere-hideredirs' => 'Hetekerdışa $1',
+'whatlinkshere-hideredirs' => 'Hetenayışê $1',
 'whatlinkshere-hidetrans' => 'Açarnayışê $1',
-'whatlinkshere-hidelinks' => '$1 greyan',
-'whatlinkshere-hideimages' => 'gireyê resimî $1',
+'whatlinkshere-hidelinks' => 'Greyê $1',
+'whatlinkshere-hideimages' => 'Gireyê resımi $1',
 'whatlinkshere-filters' => 'Avrêci',
 
 # Block/unblock
@@ -2632,7 +2631,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipbenableautoblock' => 'verniyê IPadresa peyin ê no karberi u wexta ke vurnayişi kerd ê IPadresani otomotik bıger.',
 'ipbsubmit' => 'Ena karber blok bike',
 'ipbother' => 'Waxtê bini:',
-'ipboptions' => '2 seat:2 hours,1 roc:1 day,3 roc:3 days,1 hefte:1 week,2 hefte:2 weeks,1 aşm:1 month,3 aşm:3 months,6 aşm:6 months,1 aşm:1 year,ebedi:infinite',
+'ipboptions' => '2 seat:2 hours,1 roc:1 day,3 roci:3 days,1 hefte:1 week,2 heftey:2 weeks,1 aşm:1 month,3 aşm:3 months,6 aşmi:6 months,1 ser:1 year,ebedi:infinite',
 'ipbotheroption' => 'bini',
 'ipbotherreason' => 'Sebebê bini:',
 'ipbhidename' => 'Nameyê karberî listeyan u vurnayîşan ra binumne',
@@ -2683,16 +2682,16 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipblocklist-empty' => 'Listeyê blokî veng o.',
 'ipblocklist-no-results' => 'Adresa IPya waştiye ya zi namey karberi kılit nêbiyo.',
 'blocklink' => 'kılit ke',
-'unblocklink' => 'ake',
+'unblocklink' => 'bloqi hewad',
 'change-blocklink' => 'kılit-kerdışi bıvurne',
-'contribslink' => 'pêşteni',
+'contribslink' => 'dekerdeni',
 'emaillink' => 'e-poste bırışe',
 'autoblocker' => 'Şıma otomatikmen kılit biy, çıke adresa şımawa \'\'IP\'\'y terefê "[[User:$1|$1]]" gureniyena.
 Sebebê kılit-biyayışê $1\'i: "$2"o',
-'blocklogpage' => 'Protokolê kıliti',
+'blocklogpage' => 'Qeydê bloqi',
 'blocklog-showlog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
 'blocklog-showsuppresslog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
-'blocklogentry' => '[[$1]] block kerd, hetani $2 $3',
+'blocklogentry' => 'Karberê [[$1]] ke bloqe, bloqey cı hetana $2 $3 do bıramo.',
 'reblock-logentry' => 'qey [[$1]]i tarixê qediyayişi $2 $3 pa ninan a eyarê ver-grewtışan vurna.',
 'blocklogtext' => "No kuliyatê kılitkerdış u rakerdışê fealiyetê karberano.
 Adresê IP'ya ke otomatikmen kılit biyê lista de çıniya.
@@ -2814,7 +2813,7 @@ Yewna name bınus.',
 'movepage-page-moved' => 'pelê $1i kırışiya pelê $2i.',
 'movepage-page-unmoved' => 'pelê $1i nêkırışiyeno sernameyê $2i.',
 'movepage-max-pages' => 'tewr ziyed $1 {{PLURAL:$1|peli|peli}} kırışiya u hıni ziyedê ıney otomotikmen nêkırışiyeno.',
-'movelogpage' => 'Logê berdışi',
+'movelogpage' => 'Qeydê berdışi',
 'movelogpagetext' => 'nameyê liste ya ke cêr de yo, pelê vuriyayeyani mocneno',
 'movesubpage' => '{{PLURAL:$1|Subpage|pelê bınıni}}',
 'movesubpagetext' => '{{PLURAL:$1|pelê bınıni yê|pelê bınıni yê}} no $1 peli cer de yo.',
@@ -2960,7 +2959,6 @@ dosyaya emaneti vindbiyo',
 
 # JavaScriptTest
 'javascripttest' => 'Cerbnayışê JavaScripti',
-'javascripttest-disabled' => 'Na kerdin, na wiki sero aktiv nêbiya.',
 'javascripttest-title' => 'Testê $1 gurweyênê',
 'javascripttest-pagetext-noframework' => 'Na pela testanê JavaScripta gurweynayışi re abıryaya.',
 'javascripttest-pagetext-unknownframework' => 'Çerçeweyê "$1" cerbnayışi xırabo.',
@@ -2976,8 +2974,8 @@ dosyaya emaneti vindbiyo',
 'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
 'tooltip-pt-preferences' => 'Tercihê to',
 'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
-'tooltip-pt-mycontris' => 'Listey iştıraqa',
-'tooltip-pt-login' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
+'tooltip-pt-mycontris' => 'Listey iştıraqan',
+'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
 'tooltip-pt-logout' => 'Bıveciyên',
 'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
@@ -2990,22 +2988,22 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-ca-history' => 'Versiyonê verênê ena pele',
 'tooltip-ca-protect' => 'Ena pele kılit ke',
 'tooltip-ca-unprotect' => 'Starkerdışe ena peler bıvurne',
-'tooltip-ca-delete' => 'Ena pele bıestere',
+'tooltip-ca-delete' => 'Ena perer besternê',
 'tooltip-ca-undelete' => 'peli biyarê halê ver hewnakerdışi',
 'tooltip-ca-move' => 'Ena pele bere',
 'tooltip-ca-watch' => 'Ena pela lista mına seyr-kerdışi ri dek',
 'tooltip-ca-unwatch' => 'Ena pele listeya seyir-kerdışi xo ra bıvec',
 'tooltip-search' => 'Zerreyê {{SITENAME}} de cı geyre',
 'tooltip-search-go' => 'Ebe nê namey tami şo yew pela ke esta',
-'tooltip-search-fulltext' => 'Seba nê meqaley pelan seha ke',
-'tooltip-p-logo' => 'Pela seri',
+'tooltip-search-fulltext' => 'Nê  metni peran dı cı geyre',
+'tooltip-p-logo' => 'Pera serên',
 'tooltip-n-mainpage' => 'Şo pela seri',
 'tooltip-n-mainpage-description' => 'Şo pela seri',
-'tooltip-n-portal' => 'Heqa projey de, çı şenay bıkerê, çı koti vêniyeno',
+'tooltip-n-portal' => 'Heqa projey de, kes çı şeno bıkero, çıçiyo koti deyo',
 'tooltip-n-currentevents' => 'Vurnayışanê peyênan de melumatê pey bıvêne',
 'tooltip-n-recentchanges' => 'Wiki de lista vurnayışanê peyênan',
-'tooltip-n-randompage' => 'Pelê da raştamayiye bar ke',
-'tooltip-n-help' => 'Cayê doşkerdışi',
+'tooltip-n-randompage' => 'Şırê pera ke raştameyê',
+'tooltip-n-help' => 'Qande desteg grotışi',
 'tooltip-t-whatlinkshere' => 'Lista pelanê wikiya pêroina ke tiya gırê bena',
 'tooltip-t-recentchangeslinked' => 'Vurnayışê peyênê pelanê ke ena pela ra gırê biyê',
 'tooltip-feed-rss' => 'RSS feed qe ena pele',
@@ -3013,24 +3011,24 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-t-contributions' => 'İştirakanê ena karber bevin',
 'tooltip-t-emailuser' => 'Ena karber ri yew email bışırav',
 'tooltip-t-upload' => 'Dosya bar ke',
-'tooltip-t-specialpages' => 'Lista pelanê xasanê pêroinan',
+'tooltip-t-specialpages' => 'Listeya pelan dê xasa pêron',
 'tooltip-t-print' => 'Nımuney çapkerdışiê ena pele',
 'tooltip-t-permalink' => 'Gırêyo daimi be ena versiyonê pele',
 'tooltip-ca-nstab-main' => 'Pela zerreki bımocne',
 'tooltip-ca-nstab-user' => 'Pela karberi bıvin',
 'tooltip-ca-nstab-media' => 'Pele Mediya bivinên',
 'tooltip-ca-nstab-special' => 'Na yew pelê da xususiya, şıma nêşenê nae bıvurnê',
-'tooltip-ca-nstab-project' => 'pelayê kılit-kerdeyi bıvin',
+'tooltip-ca-nstab-project' => 'Pera proci bıvin',
 'tooltip-ca-nstab-image' => 'Pelay dosya bımocne',
 'tooltip-ca-nstab-mediawiki' => 'Mesacê sistemi bivinên',
-'tooltip-ca-nstab-template' => 'Şabloni bıvêne',
+'tooltip-ca-nstab-template' => 'Şabloni bıvinê',
 'tooltip-ca-nstab-help' => 'Peleyê yardimi bivinên',
 'tooltip-ca-nstab-category' => 'Pele kategoriyan bevinin',
 'tooltip-minoredit' => 'Eno vurnayışê qıçkeko',
 'tooltip-save' => 'Vurnayışanê xo qeyd ke',
 'tooltip-preview' => 'Vurnayışê xo bıvin. Verniyê qeyd kerdışi, vurnayışê xo ena pele dı control bık.',
-'tooltip-diff' => 'Vurnayışe mı bımoc',
-'tooltip-compareselectedversions' => 'Ferqê versiyonan bevinin',
+'tooltip-diff' => 'Metni sero vurnayışan mocneno',
+'tooltip-compareselectedversions' => 'Ena per de ferqê rewziyonan de dı weçinaya bıvinê',
 'tooltip-watch' => 'Eno pele listey tıyo seyir-kerdişi ri dek',
 'tooltip-watchlistedit-normal-submit' => 'Sernuşteya hewad',
 'tooltip-watchlistedit-raw-submit' => 'Listeyê seyri newen ke',
@@ -3042,6 +3040,519 @@ Tı eşkeno yew sebeb bınus.',
 'tooltip-preferences-save' => 'Terciha qeyd ke',
 'tooltip-summary' => 'Yew xulasaya kilm binuse',
 
+# Scripts
+'common.js' => "/**
+ * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
+ * loaded for all users on every wiki page. If possible create a gadget that is
+ * enabled by default instead of adding it here (since gadgets are fully
+ * optimized ResourceLoader modules with possibility to add dependencies etc.)
+ *
+ * Since common.js isn't a gadget, there is no place to declare its
+ * dependencies, so we have to lazy load them with mw.loader.using on demand and
+ * then execute the rest in the callback. In most cases these dependencies will
+ * be loaded (or loading) already and the callback will not be delayed. In case a
+ * dependency hasn't arrived yet it'll make sure those are loaded before this.
+ */
+mw.loader.using( 'mediawiki.util', function() {
+/* Begin of mw.loader.using callback */
+
+/**
+ * Redirect User:Name/skin.js and skin.css to the current skin's pages
+ * (unless the 'skin' page really exists)
+ * @source: http://www.mediawiki.org/wiki/Snippets/Redirect_skin.js
+ * @rev: 2
+ */
+if ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgNamespaceNumber' ) == 2 ) {
+       var titleParts = mw.config.get( 'wgPageName' ).split( '/' );
+       // Make sure there was a part before and after the slash
+       // And that the latter is 'skin.js' or 'skin.css'
+       if ( titleParts.length == 2 ) {
+               var userSkinPage = titleParts.shift() + '/' + mw.config.get( 'skin' );
+               if ( titleParts.slice(-1) == 'skin.js' ) {
+                       window.location.href = mw.util.wikiGetlink( userSkinPage + '.js' );
+               } else if ( titleParts.slice(-1) == 'skin.css' ) {
+                       window.location.href = mw.util.wikiGetlink( userSkinPage + '.css' );
+               }
+       }
+}
+
+/** Map addPortletLink to mw.util 
+ */
+window.addPortletLink = function() {
+    return mw.util.addPortletLink.apply( mw.util, arguments );
+};
+
+/** extract a URL parameter from the current URL **********
+ *
+ * @deprecated: Use mw.util.getParamValue with proper escaping
+ */
+window.getURLParamValue = function() {
+    return mw.util.getParamValue.apply( mw.util, arguments );
+};
+
+/** &withCSS= and &withJS= URL parameters *******
+ * Allow to try custom scripts from MediaWiki space 
+ * without editing personal .css or .js files
+ */
+var extraCSS = mw.util.getParamValue(\"withCSS\");
+if ( extraCSS && extraCSS.match(/^MediaWiki:[^&<>=%]*\\.css\$/) ) {
+    importStylesheet(extraCSS);
+}
+var extraJS = mw.util.getParamValue(\"withJS\");
+if ( extraJS && extraJS.match(/^MediaWiki:[^&<>=%]*\\.js\$/) ) {
+    importScript(extraJS);
+}
+
+
+/* Import more specific scripts if necessary */
+if (wgAction == 'edit' || wgAction == 'submit' || wgPageName == 'Special:Upload') { //scripts specific to editing pages
+    importScript('MediaWiki:Common.js/edit.js');
+}
+else if (mw.config.get('wgPageName') == 'Special:Watchlist') { //watchlist scripts
+    mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=MediaWiki:Common.js/watchlist.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400');
+}
+
+if ( wgNamespaceNumber == 6 ) {
+    importScript('MediaWiki:Common.js/file.js');
+}
+
+/**
+ * WikiMiniAtlas
+ *
+ *  Description: WikiMiniAtlas is a popup click and drag world map.
+ *               This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
+ *               The script itself is located on meta because it is used by many projects.
+ *               See [[Meta:WikiMiniAtlas]] for more information. 
+ *  Maintainers: [[User:Dschwen]]
+ */
+
+mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400');
+
+/* Scripts specific to Internet Explorer */
+if (\$.client.profile().name == 'msie') {
+    /** Internet Explorer bug fix **************************************************
+     *
+     *  Description: Fixes IE horizontal scrollbar bug
+     *  Maintainers: [[User:Tom-]]?
+     */
+    
+    var oldWidth;
+    var docEl = document.documentElement;
+    
+    var fixIEScroll = function() {
+        if (!oldWidth || docEl.clientWidth > oldWidth) {
+            doFixIEScroll();
+        } else {
+            setTimeout(doFixIEScroll, 1);
+        }
+        
+        oldWidth = docEl.clientWidth;
+    };
+    
+    var doFixIEScroll = function () {
+        docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? \"hidden\" : \"\";
+    };
+    
+    document.attachEvent(\"onreadystatechange\", fixIEScroll);
+    document.attachEvent(\"onresize\", fixIEScroll);
+    
+    // In print IE (7?) does not like line-height
+    mw.util.addCSS('@media print { sup, sub, p, .documentDescription { line-height: normal; } }');
+
+    // IE overflow bug
+    mw.util.addCSS('div.overflowbugx { overflow-x: scroll !important; overflow-y: hidden !important; } '
+      + 'div.overflowbugy { overflow-y: scroll !important; overflow-x: hidden !important; }');
+
+    // IE zoomfix
+    // Use to fix right floating div/table inside tables
+    mw.util.addCSS('.iezoomfix div, .iezoomfix table { zoom: 1; }');
+
+    // Import scripts specific to Internet Explorer 6
+    if (\$.client.profile().versionBase == '6') {
+        importScript('MediaWiki:Common.js/IE60Fixes.js');
+    }
+}
+
+/* Fixes for Windows XP font rendering */
+if (navigator.appVersion.search(/windows nt 5/i) != -1) {
+    mw.util.addCSS('.IPA {font-family: \"Lucida Sans Unicode\", \"Arial Unicode MS\";} ' + 
+                   '.Unicode {font-family: \"Arial Unicode MS\", \"Lucida Sans Unicode\";}');
+}
+
+/* Helper script for .hlist class in Common.css
+ * Last updated: September 12, 2012
+ * Maintainer: [[User:Edokter]]
+ */
+if ( \$.client.profile().name == 'msie' ) {
+    /* Add pseudo-selector class to last-child list items in IE 8 */
+    if ( \$.client.profile().versionBase == '8' ) {
+        \$( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
+            .addClass( 'hlist-last-child' );
+    }
+    /* Generate interpuncts and parens for IE < 8 */
+    if ( \$.client.profile().versionBase < '8' ) {
+        var hlists = \$( '.hlist' );
+        hlists.find( 'dt:not(:last-child)' )
+            .append( ': ' );
+        hlists.find( 'dd:not(:last-child)' )
+            .append( '<b>·</b> ' );
+        hlists.find( 'li:not(:last-child)' )
+            .append( '<b>·</b> ' );
+        hlists.find( 'dl dl, ol ol, ul ul' )
+            .prepend( '( ' ).append( ') ' );
+    }
+}
+
+/* Test if an element has a certain class
+ * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
+ *
+ * @deprecated:  Use \$(element).hasClass() instead.
+ */
+
+window.hasClass = ( function() {
+    var reCache = {};
+    return function (element, className) {
+        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp(\"(?:\\\\s|^)\" + className + \"(?:\\\\s|\$)\"))).test(element.className);
+    };
+})();
+
+
+/** Interwiki links to featured articles ***************************************
+ *
+ *  Description: Highlights interwiki links to featured articles (or
+ *               equivalents) by changing the bullet before the interwiki link
+ *               into a star.
+ *  Maintainers: [[User:R. Koot]]
+ */
+
+function LinkFA() {
+    if ( document.getElementById( \"p-lang\" ) ) {
+        var InterwikiLinks = document.getElementById( \"p-lang\" ).getElementsByTagName( \"li\" );
+
+        for ( var i = 0; i < InterwikiLinks.length; i++ ) {
+            if ( document.getElementById( InterwikiLinks[i].className + \"-fa\" ) ) {
+                InterwikiLinks[i].className += \" FA\";
+                InterwikiLinks[i].title = \"This is a featured article in another language.\";
+            } else if ( document.getElementById( InterwikiLinks[i].className + \"-ga\" ) ) {
+                InterwikiLinks[i].className += \" GA\";
+                InterwikiLinks[i].title = \"This is a good article in another language.\";
+            }
+        }
+    }
+}
+
+\$( LinkFA );
+
+
+/** Collapsible tables *********************************************************
+ *
+ *  Description: Allows tables to be collapsed, showing only the header. See
+ *               [[Wikipedia:NavFrame]].
+ *  Maintainers: [[User:R. Koot]]
+ */
+
+var autoCollapse = 2;
+var collapseCaption = \"bınımne\";
+var expandCaption = \"bıvin\";
+
+window.collapseTable = function( tableIndex ){
+    var Button = document.getElementById( \"collapseButton\" + tableIndex );
+    var Table = document.getElementById( \"collapsibleTable\" + tableIndex );
+
+    if ( !Table || !Button ) {
+        return false;
+    }
+
+    var Rows = Table.rows;
+
+    if ( Button.firstChild.data == collapseCaption ) {
+        for ( var i = 1; i < Rows.length; i++ ) {
+            Rows[i].style.display = \"none\";
+        }
+        Button.firstChild.data = expandCaption;
+    } else {
+        for ( var i = 1; i < Rows.length; i++ ) {
+            Rows[i].style.display = Rows[0].style.display;
+        }
+        Button.firstChild.data = collapseCaption;
+    }
+}
+
+function createCollapseButtons(){
+    var tableIndex = 0;
+    var NavigationBoxes = new Object();
+    var Tables = document.getElementsByTagName( \"table\" );
+
+    for ( var i = 0; i < Tables.length; i++ ) {
+        if ( hasClass( Tables[i], \"collapsible\" ) ) {
+
+            /* only add button and increment count if there is a header row to work with */
+            var HeaderRow = Tables[i].getElementsByTagName( \"tr\" )[0];
+            if (!HeaderRow) continue;
+            var Header = HeaderRow.getElementsByTagName( \"th\" )[0];
+            if (!Header) continue;
+
+            NavigationBoxes[ tableIndex ] = Tables[i];
+            Tables[i].setAttribute( \"id\", \"collapsibleTable\" + tableIndex );
+
+            var Button     = document.createElement( \"span\" );
+            var ButtonLink = document.createElement( \"a\" );
+            var ButtonText = document.createTextNode( collapseCaption );
+
+            Button.className = \"collapseButton\";  //Styles are declared in Common.css
+
+            ButtonLink.style.color = Header.style.color;
+            ButtonLink.setAttribute( \"id\", \"collapseButton\" + tableIndex );
+            ButtonLink.setAttribute( \"href\", \"#\" );
+            addHandler( ButtonLink,  \"click\", new Function( \"evt\", \"collapseTable(\" + tableIndex + \" ); return killEvt( evt );\") );
+            ButtonLink.appendChild( ButtonText );
+
+            Button.appendChild( document.createTextNode( \"[\" ) );
+            Button.appendChild( ButtonLink );
+            Button.appendChild( document.createTextNode( \"]\" ) );
+
+            Header.insertBefore( Button, Header.firstChild );
+            tableIndex++;
+        }
+    }
+
+    for ( var i = 0;  i < tableIndex; i++ ) {
+        if ( hasClass( NavigationBoxes[i], \"collapsed\" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], \"autocollapse\" ) ) ) {
+            collapseTable( i );
+        } 
+        else if ( hasClass( NavigationBoxes[i], \"innercollapse\" ) ) {
+            var element = NavigationBoxes[i];
+            while (element = element.parentNode) {
+                if ( hasClass( element, \"outercollapse\" ) ) {
+                    collapseTable ( i );
+                    break;
+                }
+            }
+        }
+    }
+}
+
+\$( createCollapseButtons );
+
+
+/** Dynamic Navigation Bars (experimental) *************************************
+ *
+ *  Description: See [[Wikipedia:NavFrame]].
+ *  Maintainers: UNMAINTAINED
+ */
+
+// set up the words in your language
+var NavigationBarHide = '[' + collapseCaption + ']';
+var NavigationBarShow = '[' + expandCaption + ']';
+
+// shows and hides content and picture (if available) of navigation bars
+// Parameters:
+//     indexNavigationBar: the index of navigation bar to be toggled
+window.toggleNavigationBar = function(indexNavigationBar){
+    var NavToggle = document.getElementById(\"NavToggle\" + indexNavigationBar);
+    var NavFrame = document.getElementById(\"NavFrame\" + indexNavigationBar);
+
+    if (!NavFrame || !NavToggle) {
+        return false;
+    }
+
+    // if shown now
+    if (NavToggle.firstChild.data == NavigationBarHide) {
+        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
+            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
+                NavChild.style.display = 'none';
+            }
+        }
+    NavToggle.firstChild.data = NavigationBarShow;
+
+    // if hidden now
+    } else if (NavToggle.firstChild.data == NavigationBarShow) {
+        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
+            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
+                NavChild.style.display = 'block';
+            }
+        }
+        NavToggle.firstChild.data = NavigationBarHide;
+    }
+}
+
+// adds show/hide-button to navigation bars
+function createNavigationBarToggleButton(){
+    var indexNavigationBar = 0;
+    // iterate over all < div >-elements 
+    var divs = document.getElementsByTagName(\"div\");
+    for (var i = 0; NavFrame = divs[i]; i++) {
+        // if found a navigation bar
+        if (hasClass(NavFrame, \"NavFrame\")) {
+
+            indexNavigationBar++;
+            var NavToggle = document.createElement(\"a\");
+            NavToggle.className = 'NavToggle';
+            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
+            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
+
+            var isCollapsed = hasClass( NavFrame, \"collapsed\" );
+            /*
+             * Check if any children are already hidden.  This loop is here for backwards compatibility:
+             * the old way of making NavFrames start out collapsed was to manually add style=\"display:none\"
+             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
+             * the content visible without JavaScript support), the new recommended way is to add the class
+             * \"collapsed\" to the NavFrame itself, just like with collapsible tables.
+             */
+            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
+                if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
+                    if ( NavChild.style.display == 'none' ) {
+                        isCollapsed = true;
+                    }
+                }
+            }
+            if (isCollapsed) {
+                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
+                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
+                        NavChild.style.display = 'none';
+                    }
+                }
+            }
+            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
+            NavToggle.appendChild(NavToggleText);
+
+            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
+            for(var j=0; j < NavFrame.childNodes.length; j++) {
+                if (hasClass(NavFrame.childNodes[j], \"NavHead\")) {
+                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
+                    NavFrame.childNodes[j].appendChild(NavToggle);
+                }
+            }
+            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
+        }
+    }
+}
+
+\$( createNavigationBarToggleButton );
+
+
+/** Main Page layout fixes *********************************************************
+ *
+ *  Description: Adds an additional link to the complete list of languages available.
+ *  Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
+ */
+
+if (wgPageName == 'Main_Page' || wgPageName == 'Talk:Main_Page') {
+    \$(function () {
+        mw.util.addPortletLink('p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',
+            'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias');
+    });
+}
+
+
+/** Table sorting fixes ************************************************
+  *
+  *  Description: Disables code in table sorting routine to set classes on even/odd rows
+  *  Maintainers: [[User:Random832]]
+  */
+ts_alternate_row_colors = false;
+
+
+/***** uploadwizard_newusers ********
+ * Switches in a message for non-autoconfirmed users at [[Wikipedia:Upload]]
+ *
+ *  Maintainers: [[User:Krimpet]]
+ */
+function uploadwizard_newusers() {
+  if (wgNamespaceNumber == 4 && wgTitle == \"Upload\" && wgAction == \"view\") {
+    var oldDiv = document.getElementById(\"autoconfirmedusers\"),
+        newDiv = document.getElementById(\"newusers\");
+    if (oldDiv && newDiv) {
+      if (typeof wgUserGroups == \"object\" && wgUserGroups) {
+        for (i = 0; i < wgUserGroups.length; i++) {
+          if (wgUserGroups[i] == \"autoconfirmed\") {
+            oldDiv.style.display = \"block\";
+            newDiv.style.display = \"none\";
+            return;
+          }
+        }
+      }
+      oldDiv.style.display = \"none\";
+      newDiv.style.display = \"block\";
+      return;
+    }
+  }
+}
+\$(uploadwizard_newusers);
+
+
+/** IPv6 AAAA connectivity testing 
+
+var __ipv6wwwtest_factor = 100;
+var __ipv6wwwtest_done = 0;
+if ((wgServer != \"https://secure.wikimedia.org\") && (Math.floor(Math.random()*__ipv6wwwtest_factor)==42)) {
+    importScript(\"MediaWiki:Common.js/IPv6.js\");
+}
+**/
+
+/** Magic editintros ****************************************************
+ *
+ *  Description: Adds editintros on disambiguation pages and BLP pages.
+ *  Maintainers: [[User:RockMFR]]
+ */
+
+function addEditIntro( name ) {
+  \$( '.editsection, #ca-edit' ).find( 'a' ).each( function( i, el ) {
+    el.href = \$(this).attr(\"href\") + '&editintro=' + name;
+  });
+}
+
+if (wgNamespaceNumber === 0) {
+  \$(function(){
+    if (document.getElementById('disambigbox')) {
+      addEditIntro('Template:Disambig_editintro');
+    }
+  });
+
+  \$(function(){
+    var cats = document.getElementById('mw-normal-catlinks');
+    if (!cats) {
+      return;
+    }
+    cats = cats.getElementsByTagName('a');
+    for (var i = 0; i < cats.length; i++) {
+      if (cats[i].title == 'Category:Living people' || cats[i].title == 'Category:Possibly living people') {
+        addEditIntro('Template:BLP_editintro');
+        break;
+      }
+    }
+  });
+}
+
+/**
+ * Description: Stay on the secure server as much as possible
+ * Maintainers: [[User:TheDJ]]
+ */
+if ( mw.config.get('wgServer') == 'https://secure.wikimedia.org' ) {
+    /* Old secure server */
+    importScript( 'MediaWiki:Common.js/secure.js');
+} else if( document.location && document.location.protocol  && document.location.protocol == \"https:\" ) {
+  /* New secure servers */
+  importScript('MediaWiki:Common.js/secure new.js');
+}
+
+/**
+  * Description: Fix the toggle for Mobile view
+  * https://bugzilla.wikimedia.org/show_bug.cgi?id=38009
+  * Maintainer: [[User:TheDJ]]
+  */
+mw.loader.using( 'jquery.cookie', function() {
+    \$('a[href\$=\"toggle_view_mobile\"]').click(function(){
+        document.cookie = 'stopMobileRedirect=false; domain=.wikipedia.org;'
+                    + 'path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT;'
+    });
+});
+
+/* End of mw.loader.using callback */
+} );
+/* DO NOT ADD CODE BELOW THIS LINE */",
+
 # Metadata
 'notacceptable' => "formatê ma'lumati no peşkeşwanê wikiyi nêweniyeno.",
 
@@ -3150,9 +3661,9 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'file-info-size' => '$1 × $2 pixelan, ebatê dosya: $3, MIME type: $4',
 'file-info-size-pages' => '$1 × $2 pikse, dergeya dosyay: $3, MIME tipiya cı: $4, $5 {{PLURAL:$5|pela|pela}}',
 'file-nohires' => 'Deha berz agozney cı çıniyo',
-'svg-long-desc' => 'SVG dosya, nominalin $1 × $2 piksels, ebatê dosya: $3',
+'svg-long-desc' => 'Dosyay SVG, zek vanê $1 × $2 piksela, ebatê dosya: $3',
 'svg-long-desc-animated' => 'SVG dosya, nominalin $1 × $2 piksela, ebatê dosya: $3',
-'show-big-image' => 'Resolosyonê temami',
+'show-big-image' => 'Tam agoznayen',
 'show-big-image-preview' => "Verqayd dergiya: $1'i.",
 'show-big-image-other' => 'Zewmi{{PLURAL:$2|Vılêşnayış|Vılêşnayışê}}: $1.',
 'show-big-image-size' => '$1 × $2 piksel',
@@ -3172,7 +3683,7 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'newimages-label' => 'Nameyê dosya ( ya zi parçe ey)',
 'showhidebots' => '(bota $1)',
 'noimages' => 'Çik çini yo.',
-'ilsubmit' => 'Cıgeyre',
+'ilsubmit' => 'Cı geyre',
 'bydate' => 'goreyê zemani',
 'sp-newimages-showfrom' => 'Dosyayê newi ke $2, $1 ra dest pe keni bimocne',
 
@@ -3366,7 +3877,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-gpsaltituderef' => 'çımeyê berziyi',
 'exif-gpsaltitude' => 'berzî',
 'exif-gpstimestamp' => "Wextê GPSyi (se'eta atomiki)",
-'exif-gpssatellites' => 'Satellite yê ke pê peymawıtışi kenî',
+'exif-gpssatellites' => 'Qandê peymıtışi antenê ke vıstê kar',
 'exif-gpsstatus' => 'cayê gırewtoxi',
 'exif-gpsmeasuremode' => 'moda peymawıtışi',
 'exif-gpsdop' => 'karê peymawıtışi',
@@ -3896,7 +4407,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'vurnayışanê eleqadari bıvin',
-'watchlisttools-edit' => 'listey seyrkerdışi bevin u edit bık',
+'watchlisttools-edit' => 'listey taqiban bıvinê u bıvurnê',
 'watchlisttools-raw' => 'Listeyê seyr-kerdışi bıvin',
 
 # Iranian month names
@@ -3963,7 +4474,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 
 # Core parser functions
 'unknown_extension_tag' => 'Etiketê ekstensiyon ê "$1"î nizanyeno',
-'duplicate-defaultsort' => '\'\'\'Teme:\'\'\' Tuşê default sort "$2" sero tuşê default sort "$1"î ra şino.',
+'duplicate-defaultsort' => '\'\'\'Tembe:\'\'\' Hesıbyaye sırmey ratnayış de "$2" sırmey ratnayış de "$1"i nêhesıbneno.',
 
 # Special:Version
 'version' => 'Versiyon',
@@ -4054,7 +4565,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 
 # Special:Tags
 'tags' => 'Etiketê vurnayîşê raştî',
-'tag-filter' => '[[Special:Tags|Tag]] filitre:',
+'tag-filter' => 'Avrêcê [[Special:Tags|Etiketi]]:',
 'tag-filter-submit' => 'Avrêc',
 'tags-title' => 'Etiketan',
 'tags-intro' => 'Eno pel de listeyê eyiketî este ke belki software pê ey edit kenî.',
@@ -4202,4 +4713,7 @@ Ena sita dı newke xırabiya teknik esta.',
 'duration-centuries' => '$1 {{PLURAL:$1|seserre|seserri}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenyum|milenyumi}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'Estên...',
+'searchsuggest-search' => 'Cı geyre',
 );
index 2278e13..1097c46 100644 (file)
@@ -316,7 +316,7 @@ $messages = array(
 'vector-action-protect' => 'Šćitaś',
 'vector-action-undelete' => 'Wótnowiś',
 'vector-action-unprotect' => 'Šćit změniś',
-'vector-simplesearch-preference' => 'Pólěpšone pytańske naraźenja zmóžniś (jano suknja Vector)',
+'vector-simplesearch-preference' => 'Zjadnorjonu pytańsku lejstwu zmóžniś (jano drastwa Vector)',
 'vector-view-create' => 'Napóraś',
 'vector-view-edit' => 'Wobźěłaś',
 'vector-view-history' => 'Wersije a awtory',
@@ -1151,8 +1151,6 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-caption' => 'Sotšine projekty',
 'search-interwiki-default' => '$1 wuslědki:',
 'search-interwiki-more' => '(wěcej)',
-'search-mwsuggest-enabled' => 'z naraźenjami',
-'search-mwsuggest-disabled' => 'žedne naraźenja',
 'search-relatedarticle' => 'swójźbne',
 'mwsuggest-disable' => 'Naraźenja pśez AJAX znjemóžniś',
 'searcheverything-enable' => 'We wšych mjenjowych rumach pytaś',
@@ -2740,7 +2738,6 @@ Wšykne transwiki-importowe akcije protokolěruju se w [[Special:Log/import|log-
 
 # JavaScriptTest
 'javascripttest' => 'JavaScriptowy test',
-'javascripttest-disabled' => 'Toś ta funkcija njejo na toś tom wikiju zmóžnjona.',
 'javascripttest-title' => 'Testy $1 se pśewjeduju',
 'javascripttest-pagetext-noframework' => 'Toś ten bok jo pśewjedowanjeju javascriptowych testow pśewóstajony.',
 'javascripttest-pagetext-unknownframework' => 'Njeznaty wobłuk "$1".',
@@ -3783,4 +3780,7 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'duration-centuries' => '$1 {{PLURAL:$1|stolěśe|stolěśi|stolěśa|stolěśow}}',
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysaca|lěttysace|lěttysacow}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'wopśimujo...',
+'searchsuggest-search' => 'Pytaś',
 );
index 58e5be0..7f9b705 100644 (file)
@@ -965,8 +965,6 @@ Intaai [[Special:BlockList|lis nantaban]] montok lis kawawagu karaja mogoduh om
 'search-interwiki-caption' => 'Taka do purujik',
 'search-interwiki-default' => 'Kootuson $1:',
 'search-interwiki-more' => '(lobi)',
-'search-mwsuggest-enabled' => 'miampai tua do tutok',
-'search-mwsuggest-disabled' => 'ingaa tua do tutok',
 'search-relatedarticle' => 'Kompinaian',
 'searcheverything-enable' => 'Pogihum momoguno oinsanan ngaran:',
 'searchrelated' => 'kompinaian',
index d51332b..2ae08ee 100644 (file)
@@ -1334,8 +1334,6 @@ $1",
 'search-interwiki-caption' => 'Αδελφικά εγχειρήματα',
 'search-interwiki-default' => '$1 αποτελέσματα:',
 'search-interwiki-more' => '(περισσότερα)',
-'search-mwsuggest-enabled' => 'με υποδείξεις',
-'search-mwsuggest-disabled' => 'χωρίς υποδείξεις',
 'search-relatedarticle' => 'Σχετικά',
 'mwsuggest-disable' => 'Απενεργοποίηση των προτάσεων AJAX',
 'searcheverything-enable' => 'Αναζήτηση σε όλες τις περιοχές ονομάτων',
@@ -2924,7 +2922,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'Δοκιμή JavaScript',
-'javascripttest-disabled' => 'Αυτή η λειτουργία έχει απενεργοποιηθεί.',
 'javascripttest-title' => 'Εκτελούνται  $1  δοκιμές',
 'javascripttest-pagetext-noframework' => 'Αυτή η σελίδα είναι δεσμευμένη για την εκτέλεση δοκιμών σε JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Άγνωστο πλαίσιο δοκιμών " $1 ".',
@@ -3946,4 +3943,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|Αιώνα|αιώνες}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Χιλιετία|Χιλιετίες}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'περιέχει...',
+'searchsuggest-search' => 'Αναζήτηση',
 );
index 888a696..132161c 100644 (file)
@@ -118,7 +118,7 @@ $namespaceGenderAliases = array();
  * A list of date format preference keys which can be selected in user
  * preferences. New preference keys can be added, provided they are supported
  * by the language class's timeanddate(). Only the 5 keys listed below are
- * supported by the wikitext converter (DateFormatter.php).
+ * supported by the wikitext converter (parser/DateFormatter.php).
  *
  * The special key "default" is an alias for either dmy or mdy depending on
  * $wgAmericanDates
@@ -207,7 +207,6 @@ $magicWords = array(
        'forcetoc'                => array( 0,    '__FORCETOC__' ),
        'toc'                     => array( 0,    '__TOC__' ),
        'noeditsection'           => array( 0,    '__NOEDITSECTION__' ),
-       'noheader'                => array( 0,    '__NOHEADER__' ),
        'currentmonth'            => array( 1,    'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'           => array( 1,    'CURRENTMONTH1' ),
        'currentmonthname'        => array( 1,    'CURRENTMONTHNAME' ),
@@ -442,7 +441,6 @@ $specialPageAliases = array(
        'Recentchanges'             => array( 'RecentChanges' ),
        'Recentchangeslinked'       => array( 'RecentChangesLinked', 'RelatedChanges' ),
        'Revisiondelete'            => array( 'RevisionDelete' ),
-       'RevisionMove'              => array( 'RevisionMove' ),
        'Search'                    => array( 'Search' ),
        'Shortpages'                => array( 'ShortPages' ),
        'Specialpages'              => array( 'SpecialPages' ),
@@ -800,7 +798,7 @@ XHTML id names.
 'vector-action-protect'          => 'Protect',
 'vector-action-undelete'         => 'Undelete',
 'vector-action-unprotect'        => 'Change protection',
-'vector-simplesearch-preference' => 'Enable enhanced search suggestions (Vector skin only)',
+'vector-simplesearch-preference' => 'Enable simplified search bar (Vector skin only)',
 'vector-view-create'             => 'Create',
 'vector-view-edit'               => 'Edit',
 'vector-view-history'            => 'View history',
@@ -914,8 +912,8 @@ See [[Special:Version|version page]].',
 'newmessagesdifflink'          => 'last change',
 'youhavenewmessagesfromusers'  => 'You have $1 from {{PLURAL:$3|another user|$3 users}} ($2).',
 'youhavenewmessagesmanyusers'  => 'You have $1 from many users ($2).',
-'newmessageslinkplural'        => '{{PLURAL:$1|a new message|new messages}}', # don't rely on the value of $1, it's 1 for singular and 2 for "more than one"
-'newmessagesdifflinkplural'    => 'last {{PLURAL:$1|change|changes}}', # don't rely on the value of $1, it's 1 for singular and 2 for "more than one"
+'newmessageslinkplural'        => '{{PLURAL:$1|a new message|new messages}}',
+'newmessagesdifflinkplural'    => 'last {{PLURAL:$1|change|changes}}',
 'youhavenewmessagesmulti'      => 'You have new messages on $1',
 'newtalkseparator'             => ',&#32;', # do not translate or duplicate this message to other languages
 'editsection'                  => 'edit',
@@ -1753,8 +1751,6 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'search-interwiki-default'         => '$1 results:',
 'search-interwiki-custom'          => '', # do not translate or duplicate this message to other languages
 'search-interwiki-more'            => '(more)',
-'search-mwsuggest-enabled'         => 'with suggestions',
-'search-mwsuggest-disabled'        => 'no suggestions',
 'search-relatedarticle'            => 'Related',
 'mwsuggest-disable'                => 'Disable AJAX suggestions',
 'searcheverything-enable'          => 'Search in all namespaces',
@@ -2207,16 +2203,16 @@ this file is $2.',
 This might be due to a typo in the filename.
 Please check whether you really want to upload this file.',
 'windows-nonascii-filename'   => 'This wiki does not support filenames with special characters.',
-'fileexists'                  => "A file with this name exists already, please check <strong>[[:$1]]</strong> if you are not sure if you want to change it.
-[[$1|thumb]]",
-'filepageexists'              => "The description page for this file has already been created at <strong>[[:$1]]</strong>, but no file with this name currently exists.
+'fileexists'                  => 'A file with this name exists already, please check <strong>[[:$1]]</strong> if you are not sure if you want to change it.
+[[$1|thumb]]',
+'filepageexists'              => 'The description page for this file has already been created at <strong>[[:$1]]</strong>, but no file with this name currently exists.
 The summary you enter will not appear on the description page.
 To make your summary appear there, you will need to manually edit it.
-[[$1|thumb]]",
-'fileexists-extension'        => "A file with a similar name exists: [[$2|thumb]]
+[[$1|thumb]]',
+'fileexists-extension'        => 'A file with a similar name exists: [[$2|thumb]]
 * Name of the uploading file: <strong>[[:$1]]</strong>
 * Name of the existing file: <strong>[[:$2]]</strong>
-Please choose a different name.",
+Please choose a different name.',
 'fileexists-thumbnail-yes'    => "The file seems to be an image of reduced size ''(thumbnail)''.
 [[$1|thumb]]
 Please check the file <strong>[[:$1]]</strong>.
@@ -2795,38 +2791,38 @@ There may be [[{{MediaWiki:Listgrouprights-helppage}}|additional information]] a
 'listgrouprights-removegroup-self-all' => 'Remove all groups from own account',
 
 # E-mail user
-'mailnologin'          => 'No send address',
-'mailnologintext'      => 'You must be [[Special:UserLogin|logged in]] and have a valid e-mail address in your [[Special:Preferences|preferences]] to send e-mail to other users.',
-'emailuser'            => 'E-mail this user',
-'emailuser-title-target' => 'E-mail this {{GENDER:$1|user}}',
+'mailnologin'              => 'No send address',
+'mailnologintext'          => 'You must be [[Special:UserLogin|logged in]] and have a valid e-mail address in your [[Special:Preferences|preferences]] to send e-mail to other users.',
+'emailuser'                => 'E-mail this user',
+'emailuser-title-target'   => 'E-mail this {{GENDER:$1|user}}',
 'emailuser-title-notarget' => 'E-mail user',
-'emailuser-summary'    => '', # do not translate or duplicate this message to other languages
-'emailpage'            => 'E-mail user',
-'emailpagetext'        => 'You can use the form below to send an e-mail message to this user.
+'emailuser-summary'        => '', # do not translate or duplicate this message to other languages
+'emailpage'                => 'E-mail user',
+'emailpagetext'            => 'You can use the form below to send an e-mail message to this user.
 The e-mail address you entered in [[Special:Preferences|your user preferences]] will appear as the "From" address of the e-mail, so the recipient will be able to reply directly to you.',
-'usermailererror'      => 'Mail object returned error:',
-'defemailsubject'      => '{{SITENAME}} e-mail from user "$1"',
-'usermaildisabled'     => 'User e-mail disabled',
-'usermaildisabledtext' => 'You cannot send e-mail to other users on this wiki',
-'noemailtitle'         => 'No e-mail address',
-'noemailtext'          => 'This user has not specified a valid e-mail address.',
-'nowikiemailtitle'     => 'No e-mail allowed',
-'nowikiemailtext'      => 'This user has chosen not to receive e-mail from other users.',
-'emailnotarget'        => 'Non-existent or invalid username for recipient.',
-'emailtarget'          => 'Enter username of recipient',
-'emailusername'        => 'Username:',
-'emailusernamesubmit'  => 'Submit',
-'email-legend'         => 'Send an e-mail to another {{SITENAME}} user',
-'emailfrom'            => 'From:',
-'emailto'              => 'To:',
-'emailsubject'         => 'Subject:',
-'emailmessage'         => 'Message:',
-'emailsend'            => 'Send',
-'emailccme'            => 'E-mail me a copy of my message.',
-'emailccsubject'       => 'Copy of your message to $1: $2',
-'emailsent'            => 'E-mail sent',
-'emailsenttext'        => 'Your e-mail message has been sent.',
-'emailuserfooter'      => 'This e-mail was sent by $1 to $2 by the "E-mail user" function at {{SITENAME}}.',
+'usermailererror'          => 'Mail object returned error:',
+'defemailsubject'          => '{{SITENAME}} e-mail from user "$1"',
+'usermaildisabled'         => 'User e-mail disabled',
+'usermaildisabledtext'     => 'You cannot send e-mail to other users on this wiki',
+'noemailtitle'             => 'No e-mail address',
+'noemailtext'              => 'This user has not specified a valid e-mail address.',
+'nowikiemailtitle'         => 'No e-mail allowed',
+'nowikiemailtext'          => 'This user has chosen not to receive e-mail from other users.',
+'emailnotarget'            => 'Non-existent or invalid username for recipient.',
+'emailtarget'              => 'Enter username of recipient',
+'emailusername'            => 'Username:',
+'emailusernamesubmit'      => 'Submit',
+'email-legend'             => 'Send an e-mail to another {{SITENAME}} user',
+'emailfrom'                => 'From:',
+'emailto'                  => 'To:',
+'emailsubject'             => 'Subject:',
+'emailmessage'             => 'Message:',
+'emailsend'                => 'Send',
+'emailccme'                => 'E-mail me a copy of my message.',
+'emailccsubject'           => 'Copy of your message to $1: $2',
+'emailsent'                => 'E-mail sent',
+'emailsenttext'            => 'Your e-mail message has been sent.',
+'emailuserfooter'          => 'This e-mail was sent by $1 to $2 by the "E-mail user" function at {{SITENAME}}.',
 
 # User Messenger
 'usermessage-summary'  => 'Leaving system message.',
@@ -3525,7 +3521,6 @@ Please try again.',
 # JavaScriptTest
 'javascripttest'                           => 'JavaScript testing',
 'javascripttest-backlink'                  => '< $1', # do not translate or duplicate this message to other languages
-'javascripttest-disabled'                  => 'This function has not been enabled on this wiki.',
 'javascripttest-title'                     => 'Running $1 tests',
 'javascripttest-pagetext-noframework'      => 'This page is reserved for running JavaScript tests.',
 'javascripttest-pagetext-unknownframework' => 'Unknown testing framework "$1".',
@@ -3752,7 +3747,7 @@ This is probably caused by a link to a blacklisted external site.',
 'pageinfo-views'               => 'Number of views',
 'pageinfo-watchers'            => 'Number of page watchers',
 'pageinfo-redirects-name'      => 'Redirects to this page',
-'pageinfo-redirects-value'     => '$1',
+'pageinfo-redirects-value'     => '$1', # only translate this message to other languages if you have to change it
 'pageinfo-subpages-name'       => 'Subpages of this page',
 'pageinfo-subpages-value'      => '$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})',
 'pageinfo-firstuser'           => 'Page creator',
@@ -3813,29 +3808,29 @@ $1',
 'nextdiff'     => 'Newer edit →',
 
 # Media information
-'mediawarning'           => "'''Warning''': This file type may contain malicious code.
+'mediawarning'                => "'''Warning''': This file type may contain malicious code.
 By executing it, your system may be compromised.",
-'imagemaxsize'           => "Image size limit:<br />''(for file description pages)''",
-'thumbsize'              => 'Thumbnail size:',
-'widthheight'            => '$1 × $2', # only translate this message to other languages if you have to change it
-'widthheightpage'        => '$1 × $2, $3 {{PLURAL:$3|page|pages}}',
-'file-info'              => 'file size: $1, MIME type: $2',
-'file-info-size'         => '$1 × $2 pixels, file size: $3, MIME type: $4',
-'file-info-size-pages'   => '$1 × $2 pixels, file size: $3, MIME type: $4, $5 {{PLURAL:$5|page|pages}}',
-'file-nohires'           => 'No higher resolution available.',
-'svg-long-desc'          => 'SVG file, nominally $1 × $2 pixels, file size: $3',
-'svg-long-desc-animated' => 'Animated SVG file, nominally $1 × $2 pixels, file size: $3',
-'show-big-image'         => 'Full resolution',
-'show-big-image-preview' => 'Size of this preview: $1.',
-'show-big-image-other'   => 'Other {{PLURAL:$2|resolution|resolutions}}: $1.',
-'show-big-image-size'    => '$1 × $2 pixels',
-'file-info-gif-looped'   => 'looped',
-'file-info-gif-frames'   => '$1 {{PLURAL:$1|frame|frames}}',
-'file-info-png-looped'   => 'looped',
-'file-info-png-repeat'   => 'played $1 {{PLURAL:$1|time|times}}',
-'file-info-png-frames'   => '$1 {{PLURAL:$1|frame|frames}}',
-'file-no-thumb-animation'=> '\'\'\'Note: Due to technical limitations, thumbnails of this file will not be animated.\'\'\'',
-'file-no-thumb-animation-gif' => '\'\'\'Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.\'\'\'',
+'imagemaxsize'                => "Image size limit:<br />''(for file description pages)''",
+'thumbsize'                   => 'Thumbnail size:',
+'widthheight'                 => '$1 × $2', # only translate this message to other languages if you have to change it
+'widthheightpage'             => '$1 × $2, $3 {{PLURAL:$3|page|pages}}',
+'file-info'                   => 'file size: $1, MIME type: $2',
+'file-info-size'              => '$1 × $2 pixels, file size: $3, MIME type: $4',
+'file-info-size-pages'        => '$1 × $2 pixels, file size: $3, MIME type: $4, $5 {{PLURAL:$5|page|pages}}',
+'file-nohires'                => 'No higher resolution available.',
+'svg-long-desc'               => 'SVG file, nominally $1 × $2 pixels, file size: $3',
+'svg-long-desc-animated'      => 'Animated SVG file, nominally $1 × $2 pixels, file size: $3',
+'show-big-image'              => 'Full resolution',
+'show-big-image-preview'      => 'Size of this preview: $1.',
+'show-big-image-other'        => 'Other {{PLURAL:$2|resolution|resolutions}}: $1.',
+'show-big-image-size'         => '$1 × $2 pixels',
+'file-info-gif-looped'        => 'looped',
+'file-info-gif-frames'        => '$1 {{PLURAL:$1|frame|frames}}',
+'file-info-png-looped'        => 'looped',
+'file-info-png-repeat'        => 'played $1 {{PLURAL:$1|time|times}}',
+'file-info-png-frames'        => '$1 {{PLURAL:$1|frame|frames}}',
+'file-no-thumb-animation'     => "'''Note: Due to technical limitations, thumbnails of this file will not be animated.'''",
+'file-no-thumb-animation-gif' => "'''Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.'''",
 
 # Special:NewFiles
 'newimages'             => 'Gallery of new files',
@@ -4698,7 +4693,7 @@ You can also [[Special:EditWatchlist|use the standard editor]].',
 'version-svn-revision'                  => '(r$2)', # only translate this message to other languages if you have to change it
 'version-license'                       => 'License',
 'version-poweredby-credits'             => "This wiki is powered by '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others'              => '[{{SERVER}}{{SCRIPTPATH}}/CREDITS others]',
+'version-poweredby-others'              => 'others',
 'version-license-info'                  => 'MediaWiki 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.
 
 MediaWiki 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.
@@ -4877,7 +4872,7 @@ This site is experiencing technical difficulties.',
 
 # Feedback
 'feedback-bugornote' => 'If you are ready to describe a technical problem in detail please [$1 report a bug].
-Otherwise, you can use the easy form below. Your comment will be added to the page "[$3 $2]", along with your username and what browser you are using.',
+Otherwise, you can use the easy form below. Your comment will be added to the page "[$3 $2]", along with your username.',
 'feedback-subject'   => 'Subject:',
 'feedback-message'   => 'Message:',
 'feedback-cancel'    => 'Cancel',
@@ -4891,6 +4886,10 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'feedback-bugcheck'  => 'Great! Just check that it is not already one of the [$1 known bugs].',
 'feedback-bugnew'    => 'I checked. Report a new bug',
 
+# Search suggestions
+'searchsuggest-search'     => 'Search',
+'searchsuggest-containing' => 'containing...',
+
 # API errors
 'api-error-badaccess-groups'              => 'You are not permitted to upload files to this wiki.',
 'api-error-badtoken'                      => 'Internal error: Bad token.',
index b01b0d9..fdc0ffb 100644 (file)
@@ -1344,8 +1344,6 @@ Detaloj troveblos en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'search-interwiki-caption' => 'Kunprojektoj',
 'search-interwiki-default' => '$1 rezultoj:',
 'search-interwiki-more' => '(plu)',
-'search-mwsuggest-enabled' => 'kun sugestoj',
-'search-mwsuggest-disabled' => 'sen sugestoj',
 'search-relatedarticle' => 'Relataj',
 'mwsuggest-disable' => 'Malŝalti AJAX-sugestojn',
 'searcheverything-enable' => 'Traserĉi ĉiujn nomspacojn',
@@ -2954,7 +2952,6 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
 
 # JavaScriptTest
 'javascripttest' => 'Ĝavoskripta testado',
-'javascripttest-disabled' => 'Ĉi tiu funkcio estas malŝaltita en ĉi tiu vikio.',
 'javascripttest-title' => 'Irigante $1 testoj',
 'javascripttest-pagetext-noframework' => 'Ĉi tiu paĝo estas konservita por funkciigi testojn de JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Nekonta test-framo "$1".',
@@ -4003,4 +4000,7 @@ Aŭ vi povas uzi la facilan formularon sube. Via komento estos aldonita al la pa
 'duration-centuries' => '$1 {{PLURAL:$1|jarcento|jarcentoj}}',
 'duration-millennia' => '$1 {{PLURAL:$1|jarmilo|jarmiloj}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'enhavas...',
+'searchsuggest-search' => 'Serĉi',
 );
index 5a47d98..0ea0ac8 100644 (file)
@@ -80,6 +80,7 @@
  * @author Urhixidur
  * @author VegaDark
  * @author Vivaelcelta
+ * @author Waldir
  * @author Wilfredor
  * @author XalD
  * @author XanaG
@@ -515,7 +516,7 @@ $messages = array(
 'vector-action-protect' => 'Proteger',
 'vector-action-undelete' => 'Restaurar',
 'vector-action-unprotect' => 'Cambiar protección',
-'vector-simplesearch-preference' => 'Activar sugerencias de búsqueda mejoradas (piel Vector solamente)',
+'vector-simplesearch-preference' => 'Activar la barra de búsqueda simplificada (sólo con la apariencia Vector)',
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Editar',
 'vector-view-history' => 'Ver historial',
@@ -1026,7 +1027,7 @@ Puedes [[Special:Search/{{PAGENAME}}|buscar el título de esta página]] en otra
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros],
 o [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.',
 'noarticletext-nopermission' => 'Actualmente no hay texto en esta página.
-Puedes [[Special:Search/{{PAGENAME}}|buscar este título de página]] en otras páginas, o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros relacionados]</span>, pero no tienespermiso para crear esta página.',
+Puedes [[Special:Search/{{PAGENAME}}|buscar este título de página]] en otras páginas, o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros relacionados]</span>, pero no tienes permiso para crear esta página.',
 'missing-revision' => 'La revisión #$1 de la página «{{PAGENAME}}» no existe.
 
 Esto suele deberse a seguir un enlace obsoleto hacia el historial de una página que ya ha sido borrada.
@@ -1391,8 +1392,6 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 'search-interwiki-caption' => 'Proyectos hermanos',
 'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(más)',
-'search-mwsuggest-enabled' => 'con sugerencias',
-'search-mwsuggest-disabled' => 'sin sugerencias',
 'search-relatedarticle' => 'Relacionado',
 'mwsuggest-disable' => 'Desactivar AJAX al realizar búsquedas',
 'searcheverything-enable' => 'Buscar en todos los espacios de nombres',
@@ -3011,7 +3010,6 @@ No hay un directorio temporal.',
 
 # JavaScriptTest
 'javascripttest' => 'Pruebas de JavaScript',
-'javascripttest-disabled' => 'Esta función no ha sido activada en este wiki.',
 'javascripttest-title' => 'Pruebas de $1 en ejecución',
 'javascripttest-pagetext-noframework' => 'Esta página está reservada para ejecutar pruebas de JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Marco de pruebas desconocido "$1".',
@@ -4092,4 +4090,7 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 'duration-centuries' => '$1 {{PLURAL:$1|siglo|siglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'conteniendo...',
+'searchsuggest-search' => 'Buscar',
 );
index af1d974..a5dddb8 100644 (file)
@@ -17,6 +17,7 @@
  * @author KalmerE.
  * @author Ker
  * @author Kyng
+ * @author Morel
  * @author Oop
  * @author Pikne
  * @author Silvar
@@ -667,8 +668,11 @@ Palun proovi mõne minuti pärast uuesti.',
 'protectedpagetext' => 'See lehekülg on lukustatud, et muudatusi ei tehtaks.',
 'viewsourcetext' => 'Saad vaadata ja kopeerida lehekülje lähteteksti:',
 'viewyourtext' => "Saad vaadata ja kopeerida sellel leheküljel tehtud '''enda muudatuste '''lähteteksti:",
-'protectedinterface' => 'Sellel leheküljel on tarkvara kasutajaliidese tekst. Kuritahtliku muutmise vältimiseks on lehekülg lukustatud.',
-'editinginterface' => "'''Hoiatus:''' Redigeerid tarkvara kasutajaliidese tekstiga lehekülge. Muudatused siin mõjutavad kõikide kasutajate kasutajaliidest. Tõlkijad, palun kaaluge MediaWiki lokaliseerimisprojekti [//translatewiki.net/wiki/Main_Page?setlang=et translatewiki.net] kasutamist.",
+'protectedinterface' => 'Sellel leheküljel on selle viki tarkvara kasutajaliidese tekst. Väärtarvituse vältimiseks on lehekülg kaitstud.
+Et lisada ja muuta tõlkeid kõigi vikide jaoks, kasuta palun MediaWiki lokaliseerimisprojekti [//translatewiki.net/ translatewiki.net].',
+'editinginterface' => "'''Hoiatus:''' Redigeerid tarkvara kasutajaliidese tekstiga lehekülge.
+Muudatused siin mõjutavad kõikide selle viki kasutajate kasutajaliidest.
+Et lisada ja muuta tõlkeid kõigi vikide jaoks, kasuta palun MediaWiki lokaliseerimisprojekti [//translatewiki.net/ translatewiki.net].",
 'sqlhidden' => '(SQL päring peidetud)',
 'cascadeprotected' => 'See lehekülg on muutmise eest kaitstud, sest see on osa {{PLURAL:$1|järgmisest leheküljest|järgmistest lehekülgedest}}, mis on kaskaadkaitse all:
 $2',
@@ -939,9 +943,8 @@ Kui sattusid siia kogemata, klõpsa võrgulehitseja ''tagasi''-nupule.",
 'noarticletext' => 'Käesoleval leheküljel hetkel teksti ei ole.
 Võid [[Special:Search/{{PAGENAME}}|otsida pealkirjaks olevat fraasi]] teistelt lehtedelt,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uurida asjassepuutuvaid logisid] või [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduva lehekülje ise luua]</span>.',
-'noarticletext-nopermission' => 'Sellel leheküljel ei ole teksti.
-Sa võid [[Special:Search/{{PAGENAME}}|otsida lehekülje nime]] teistelt lehekülgedelt
-või <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} otsida lehekülje nime logidest]</span>.',
+'noarticletext-nopermission' => 'Sellel leheküljel pole praegu teksti.
+Saad [[Special:Search/{{PAGENAME}}|otsida selle lehekülje pealkirja]] teistelt lehekülgedelt või <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} otsida seonduvatest logidest]</span>, aga sul pole õigust seda lehekülge alustada.',
 'missing-revision' => 'Lehekülje "{{PAGENAME}}" redaktsiooni $1 pole.
 
 Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin asunud lehekülg on kustutatud.
@@ -1297,8 +1300,6 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 'search-interwiki-caption' => 'Sõsarprojektid',
 'search-interwiki-default' => '$1 tulemused:',
 'search-interwiki-more' => '(veel)',
-'search-mwsuggest-enabled' => 'ettepanekutega',
-'search-mwsuggest-disabled' => 'ettepanekuid ei ole',
 'search-relatedarticle' => 'Seotud',
 'mwsuggest-disable' => 'Ära näita otsinguvihjeid',
 'searcheverything-enable' => 'Otsi kõigist nimeruumidest',
@@ -1810,7 +1811,7 @@ Kui probleem ei kao, võta ühendust [[Special:ListUsers/sysop|administraatoriga
 'backend-fail-create' => 'Faili $1 ei saa kirjutada.',
 'backend-fail-maxsize' => 'Faili $1 ei saa kirjutada, sest see on {{PLURAL:$2|ühest baidist|$2 baidist}} suurem.',
 'backend-fail-contenttype' => 'Faili, mida soovitakse talletada asukohas "$1", sisutüüpi saanud kindlaks teha.',
-'backend-fail-usable' => 'Faili $1 ei saa ebapiisavate õiguste või puuduvate kataloogide/konteinerite tõttu kirjutada.',
+'backend-fail-usable' => 'Faili $1 ei saa ebapiisavate õiguste või puuduvate kataloogide/konteinerite tõttu lugeda ega kirjutada.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Rada "$1" ei saa lukust lahti teha, sest see pole lukus.',
@@ -2823,8 +2824,8 @@ Viimasel juhul saab kasutada ka linki, näiteks lehekülje "[[{{MediaWiki:Mainpa
 'allmessagesname' => 'Nimi',
 'allmessagesdefault' => 'Vaikimisi tekst',
 'allmessagescurrent' => 'Praegune tekst',
-'allmessagestext' => 'See on loend kõikidest kättesaadavatest süsteemi sõnumitest MediaWiki: nimeruumis.
-Kui soovid MediaWiki tarkvara tõlkimises osaleda siis vaata lehti [//www.mediawiki.org/wiki/Localisation MediaWiki lokaliseerimine] ja [//translatewiki.net translatewiki.net].',
+'allmessagestext' => 'See on loend kõikidest olemasolevatest süsteemisõnumitest MediaWiki nimeruumis.
+Kui soovid MediaWiki tarkvara tõlkimises osaleda, siis vaata lehti [//www.mediawiki.org/wiki/Localisation MediaWiki lokaliseerimine] ja [//translatewiki.net translatewiki.net].',
 'allmessagesnotsupportedDB' => "Seda lehekülge ei saa kasutada, sest '''\$wgUseDatabaseMessages''' ei tööta.",
 'allmessages-filter-legend' => 'Filter',
 'allmessages-filter' => 'Muutmisoleku filter:',
@@ -2911,7 +2912,6 @@ Palun ürita uuesti.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScripti katsetamine',
-'javascripttest-disabled' => 'See funktsioon pole selles vikis lubatud.',
 'javascripttest-title' => '$1-katse käitus',
 'javascripttest-pagetext-noframework' => 'Seda lehekülge hoitakse JavaScripti katsete jaoks.',
 'javascripttest-pagetext-unknownframework' => 'Tundmatu katseraamistik "$1".',
@@ -3923,4 +3923,7 @@ Kui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajan
 'duration-centuries' => '$1 {{PLURAL:$1|sajandi}}',
 'duration-millennia' => '$1 {{PLURAL:$1|aastatuhande}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'sisalduv...',
+'searchsuggest-search' => 'Otsi',
 );
index d563bf1..a422903 100644 (file)
@@ -1076,8 +1076,6 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'search-interwiki-caption' => 'Beste proiektuak',
 'search-interwiki-default' => '$1(r)en emaitzak:',
 'search-interwiki-more' => '(gehiago)',
-'search-mwsuggest-enabled' => 'iradokizunekin',
-'search-mwsuggest-disabled' => 'ez dago gomendiorik',
 'search-relatedarticle' => 'Erlazionatua',
 'mwsuggest-disable' => 'AJAX gomendioak ezgaitu',
 'searcheverything-enable' => 'Bilatu izen-tarte guztietan',
@@ -3295,4 +3293,7 @@ Irudiak bereizmen handienean daude, bestelako fitxategi motak beraiei esleitutak
 'feedback-cancel' => 'Utzi',
 'feedback-submit' => 'Feedbacka bidali',
 
+# Unknown messages
+'searchsuggest-containing' => 'edukian...',
+'searchsuggest-search' => 'Bilatu',
 );
index 5d53e45..9070352 100644 (file)
@@ -673,15 +673,15 @@ $1',
 'disclaimers' => 'تکذیب‌نامه‌ها',
 'disclaimerpage' => 'Project:تکذیب‌نامهٔ عمومی',
 'edithelp' => 'راهنمای ویرایش‌کردن',
-'edithelppage' => 'Help:چگونه صفحه‌ها را ویرایش کنیم',
+'edithelppage' => 'Help:ویرایش',
 'helppage' => 'Help:محتویات',
 'mainpage' => 'صفحهٔ اصلی',
 'mainpage-description' => 'صفحهٔ اصلی',
 'policy-url' => 'Project:سیاست‌ها',
 'portal' => 'ورودی کاربران',
 'portal-url' => 'Project:ورودی کاربران',
-'privacy' => 'سیاست حفظ اسرار',
-'privacypage' => 'Project:سیاست حفظ اسرار',
+'privacy' => 'سیاست محرمانگی',
+'privacypage' => 'Project:سیاست محرمانگی',
 
 'badaccess' => 'خطای دسترسی',
 'badaccess-group0' => 'شما اجازهٔ اجرای عملی را که درخواست کرده‌اید ندارید.',
@@ -697,9 +697,9 @@ $1',
 'youhavenewmessages' => '$1 دارید ($2).',
 'newmessageslink' => 'پیام‌های جدید',
 'newmessagesdifflink' => 'آخرین تغییر',
-'youhavenewmessagesfromusers' => 'شما  $1  از  {{PLURAL:$3| کاربر دیگر| $3  کاربر}} دارید ( $2 ).',
-'youhavenewmessagesmanyusers' => 'شما  $1  از تعدادی کاربر دارید ( $2 ).',
-'newmessageslinkplural' => '{{PLURAL:$1|پیام جدید |پیام جدید}}',
+'youhavenewmessagesfromusers' => 'شما از {{PLURAL:$3| کاربر دیگر| $3  کاربر}} $1 دارید ($2).',
+'youhavenewmessagesmanyusers' => 'شما از تعدادی کاربر $1 دارید ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|پیام جدید|پیام جدید}}',
 'newmessagesdifflinkplural' => '{{formatnum:$1}} {{PLURAL:$1|تغییر|تغییرات}} اخیر',
 'youhavenewmessagesmulti' => 'پیام‌های جدیدی در $1 دارید.',
 'editsection' => 'ویرایش',
@@ -818,10 +818,11 @@ $1',
 'protectedpagetext' => 'این صفحه برای جلوگیری از ویرایش محافظت شده‌است.',
 'viewsourcetext' => 'می‌توانید متن مبدأ این صفحه را مشاهده کنید یا از آن نسخه بردارید:',
 'viewyourtext' => "می‌توانید کد مبدأ '''ویرایش‌هایتان''' در این صفحه را ببینید و کپی کنید:",
-'protectedinterface' => 'این صفحه ارائه‌دهندهٔ متنی برای واسط کاربر این نرم‌افزار است و به منظور پیشگیری از خرابکاری محافظت شده‌است.',
-'editinginterface' => "'''هشدار:''' صفحه‌ای را که ویرایش می‌کنید شامل متنی است که در واسط کاربر این نرم‌افزار به کار رفته‌است.
+'protectedinterface' => 'این صفحه ارائه‌دهندهٔ متنی برای واسط کاربر این نرم‌افزار در این ویکی است و به منظور پیشگیری از خرابکاری محافظت شده‌است.
+برای افزودن یا تغییر دادن ترجمه برای همهٔ ویکی‌ها، لطفاً از [//translatewiki.net/ translatewiki.net]، پروژهٔ محلی‌سازی مدیاویکی، استفاده کنید.',
+'editinginterface' => "'''هشدار:''' صفحه‌ای که ویرایش می‌کنید شامل متنی است که در واسط کاربر این نرم‌افزار به کار رفته‌است.
 تغییر این صفحه منجر به تغییر ظاهر واسط کاربر این نرم‌افزار برای دیگر کاربران خواهد شد.
-براÛ\8c ØªØ±Ø¬Ù\85Ù\87 Ù\84Ø·Ù\81اÙ\8b Ø§Ø² [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] (پرÙ\88Ú\98Ù\87Ù\94 ØªØ±Ø¬Ù\85Ù\87Ù\94 Ù\85دÛ\8cاÙ\88Û\8cÚ©Û\8c) استفاده کنید.",
+براÛ\8c Ø§Ù\81زÙ\88دÙ\86 Û\8cا ØªØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ù\86 ØªØ±Ø¬Ù\85Ù\87 Ø¨Ø±Ø§Û\8c Ù\87Ù\85Ù\87Ù\94 Ù\88Û\8cÚ©Û\8câ\80\8cÙ\87اØ\8c Ù\84Ø·Ù\81اÙ\8b Ø§Ø² [//translatewiki.net/ translatewiki.net]Ø\8c Ù¾Ø±Ù\88Ú\98Ù\87Ù\94 Ù\85Ø­Ù\84Û\8câ\80\8cسازÛ\8c Ù\85دÛ\8cاÙ\88Û\8cÚ©Û\8cØ\8c استفاده کنید.",
 'sqlhidden' => '(دستور اس‌کیوال پنهان شده)',
 'cascadeprotected' => 'این صفحه در مقابل ویرایش محافظت شده‌است چون در {{PLURAL:$1|صفحهٔ|صفحه‌های}} محافظت‌شدهٔ زیر که گزینهٔ «آبشاری» در {{PLURAL:$1|آن|آن‌ها}} انتخاب شده قرار گرفته‌است:
 $2',
@@ -854,7 +855,7 @@ $2',
 فراموش نکنید که [[Special:Preferences|ترجیحات {{SITENAME}}]] را برای خود تغییر دهید.',
 'yourname' => 'نام کاربری:',
 'yourpassword' => 'گذرواژه:',
-'yourpasswordagain' => 'گذرواژه را دوباره وارد کنید',
+'yourpasswordagain' => 'تکرار گذرواژه:',
 'remembermypassword' => 'گذرواژه را (تا حداکثر $1 {{PLURAL:$1|روز|روز}}) در این رایانه به خاطر بسپار',
 'securelogin-stick-https' => 'پس از ورود به سامانه به HTTPS متصل بمان',
 'yourdomainname' => 'دامنهٔ شما:',
@@ -871,8 +872,8 @@ $2',
 'nologin' => 'حساب کاربری ندارید؟ $1.',
 'nologinlink' => 'یک حساب کاربری جدید بسازید',
 'createaccount' => 'ایجاد حساب کاربری',
-'gotaccount' => "حساب کاربری دارید؟ '''$1'''.",
-'gotaccountlink' => 'وارد شوید',
+'gotaccount' => 'حساب کاربری دارید؟ $1.',
+'gotaccountlink' => 'به سامانه وارد شوید',
 'userlogin-resetlink' => 'جزئیات ورود را فراموش کرده‌اید؟',
 'createaccountmail' => 'با رایانامه',
 'createaccountreason' => 'دلیل:',
@@ -904,7 +905,7 @@ $2',
 لطفاً دوباره امتحان کنید.',
 'wrongpasswordempty' => 'گذرواژه‌ای که وارد کرده‌اید، خالی است.
 لطفاً دوباره تلاش کنید.',
-'passwordtooshort' => 'گذرواژه باید دست‌کم {{PLURAL:$1|$1 حرف|$1 حرف}} داشته باشد.',
+'passwordtooshort' => 'گذرواژه باید دست‌کم {{PLURAL:$1|۱ حرف|$1 حرف}} داشته باشد.',
 'password-name-match' => 'گذرواژهٔ شما باید با نام کاربری شما تفاوت داشته باشد.',
 'password-login-forbidden' => 'استفاده از این نام کاربری و گذرواژه ممنوع است.',
 'mailmypassword' => 'گذرواژهٔ جدید با رایانامه فرستاده شود',
@@ -923,7 +924,7 @@ $2',
 'eauthentsent' => 'یک نامه برای تأیید نشانی رایانامه به نشانی موردنظر ارسال شد.
 قبل از اینکه نامهٔ دیگری قابل ارسال به این نشانی باشد، باید دستورهایی که در آن نامه آمده است را جهت تأیید این مساله که این نشانی متعلق به شماست، اجرا کنید.',
 'throttled-mailpassword' => 'یک یادآور گذرواژه در $1 {{PLURAL:$1|ساعت|ساعت}} گذشته برای شما فرستاده شده‌است.
-برای جلوگیری از سوءاستفاده هر  $1 ساعت تنها یک یادآوری فرستاده می‌شود.',
+برای جلوگیری از سوءاستفاده هر $1 {{PLURAL:$1|ساعت|ساعت}} تنها یک یادآوری فرستاده می‌شود.',
 'mailerror' => 'خطا در فرستادن رایانامه: $1',
 'acct_creation_throttle_hit' => 'بازدیدکنندگان این ویکی که از نشانی آی‌پی شما استفاده می‌کنند در روز گذشته {{PLURAL:$1|یک حساب کاربری|$1 حساب کاربری}} ساخته‌اند، که بیشترین تعداد مجاز در آن بازهٔ زمانی است.
 به همین خاطر، بازدیدکنندگانی که از این نشانی آی‌پی استفاده می‌کنند نمی‌توانند در حال حاضر حساب جدیدی بسازند.',
@@ -1006,8 +1007,8 @@ $2
 'passwordreset-emailerror-capture' => 'رایانامهٔ یادآور همانطور که در زیر مشاهده می‌فرمایید ایجاد شد ولی ارسال آن به کاربر موفقیت‌آمیز نبود: $1',
 
 # Special:ChangeEmail
-'changeemail' => 'تغییر آدرس پست رایانامه',
-'changeemail-header' => 'تغییر آدرس ایمیل حساب کاربری',
+'changeemail' => 'تغییر نشانی رایانامه',
+'changeemail-header' => 'تغییر نشانی رایانامهٔ حساب کاربری',
 'changeemail-text' => 'این فرم را تکمیل کنید تا آدرس رایانامه‌تان تغییر یابد. برای این که این تغییر را تأیید کنید لازم است گذرواژهٔ خود را وارد کنید.',
 'changeemail-no-info' => 'برای دسترسی مستقیم به این صفحه شما باید به سامانه وارد شده باشید.',
 'changeemail-oldemail' => 'نشانی رایانامهٔ کنونی:',
@@ -1112,7 +1113,7 @@ $2
 یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} این صفحه را ویرایش کنید]</span>.',
 'noarticletext-nopermission' => 'این صفحه هم‌اکنون متنی ندارد.
 شما می‌توانید در دیگر صفحه‌ها [[Special:Search/{{PAGENAME}}|این عنوان را جستجو کنید]]،
-یا <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} سیاهه‌های مرتبط را بگردید]</span>.',
+یا <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} سیاهه‌های مرتبط را بگردید]</span> ولی شما اجازه ایجاد این صفحه را ندارید.',
 'missing-revision' => 'ویرایش #$1 از صفحهٔ "{{PAGENAME}}" موجود نیست.
 
 معمولاً در اثر پیوند به تاریخچهٔ به‌روز نشدهٔ صفحهٔ حذف شده است.
@@ -1249,7 +1250,7 @@ $2
 'expansion-depth-exceeded-warning' => 'صفحه حداکثر عمق بسط دادن تجاوز کرد',
 'parser-unstrip-loop-warning' => 'حلقه در دستور unstrip پیدا شد',
 'parser-unstrip-recursion-limit' => 'از حداکثر ارجاع در دستور unstrip تجاوز شد ($1)',
-'converter-manual-rule-error' => 'خطا در ساختار کتابچهٔ مبدل زبان',
+'converter-manual-rule-error' => 'خطا در قوانین مبدل دستی زبان',
 
 # "Undo" feature
 'undo-success' => 'این ویرایش را می‌توان خنثی کرد.
@@ -1270,7 +1271,7 @@ $2
 'currentrev' => 'نسخهٔ فعلی',
 'currentrev-asof' => 'نسخهٔ کنونی تا $1',
 'revisionasof' => 'نسخهٔ $1',
-'revision-info' => 'Ù\88Û\8cراÛ\8cØ´ Ø¯Ø± تاریخ $1 توسط $2',
+'revision-info' => 'Ù\86سخÙ\87Ù\94 تاریخ $1 توسط $2',
 'previousrevision' => '→ نسخهٔ قدیمی‌تر',
 'nextrevision' => 'نسخهٔ جدیدتر ←',
 'currentrevisionlink' => 'نمایش نسخهٔ فعلی',
@@ -1279,8 +1280,8 @@ $2
 'last' => 'قبلی',
 'page_first' => 'نخست',
 'page_last' => 'واپسین',
-'histlegend' => 'شرح: (فعلی) = تفاوت با نسخهٔ فعلی،
-(قبلی) = تفاوت با نسخهٔ قبلی، جز = ویرایش جزئی',
+'histlegend' => "انتخاب تفاوت: دکمه‌های گرد کنار ویرایش‌هایی که می‌خواهید با هم مقایسه کنید را علامت بزنید و دکمهٔ Enter را بزنید یا دکمهٔ پایین را فشار دهید.<br />
+اختصارات: '''({{int:cur}})''' = تفاوت با نسخهٔ فعلی، '''({{int:last}})''' = تفاوت با نسخهٔ قبلی، '''({{int:minoreditletter}})''' = ویرایش جزئی.",
 'history-fieldset-title' => 'مرور تاریخچه',
 'history-show-deleted' => 'فقط حذف‌شده',
 'histfirst' => 'قدیمی‌ترین',
@@ -1290,7 +1291,7 @@ $2
 
 # Revision feed
 'history-feed-title' => 'تاریخچهٔ ویرایش‌ها',
-'history-feed-description' => 'تاریخچهٔ ویرایشهای صفحه در ویکی',
+'history-feed-description' => 'تاریخچهٔ ویرایش‌های این صفحه در ویکی',
 'history-feed-item-nocomment' => '$1 در $2',
 'history-feed-empty' => 'صفحهٔ درخواست شده وجود ندارد.
 ممکن است که از ویکی حذف یا اینکه نامش تغییر داده شده باشد.
@@ -1299,20 +1300,20 @@ $2
 # Revision deletion
 'rev-deleted-comment' => '(خلاصه ویرایش حذف شد)',
 'rev-deleted-user' => '(نام کاربری حذف شد)',
-'rev-deleted-event' => '(مورد پاک شد)',
+'rev-deleted-event' => '(مورد از سیاهه پاک شده)',
 'rev-deleted-user-contribs' => '[نام کاربری یا نشانی آی‌پی حذف شده - ویرایش مخفی شده در مشارکت‌ها]',
 'rev-deleted-text-permission' => "این ویرایش از این صفحه '''حذف شده‌است'''.
 ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
 'rev-deleted-text-unhide' => "این ویرایش از این صفحه '''حذف شده‌است'''.
 ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.
-شما به عنوان یک مدیر کماکان می‌توانید در صورت تمایل [$1 این نسخه را ببینید].",
+شما کماکان می‌توانید در صورت تمایل [$1 این نسخه را ببینید].",
 'rev-suppressed-text-unhide' => "این ویرایش از این صفحه '''فرونشانده شده‌است'''.
 ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.
-شما به عنوان یک مدیر کماکان می‌توانید در صورت تمایل [$1 این نسخه را ببینید].",
+شما کماکان می‌توانید در صورت تمایل [$1 این نسخه را ببینید].",
 'rev-deleted-text-view' => "این ویرایش از این صفحه '''حذف شده‌است'''.
-شما به عنوان یک مدیر می‌توانید آن را ببینید؛ ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
+شما می‌توانید آن را ببینید؛ ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
 'rev-suppressed-text-view' => "این ویرایش از این صفحه '''فرونشانی شده‌است'''.
-شما به عنوان یک مدیر می‌توانید آن را ببینید؛ ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.",
+شما می‌توانید آن را ببینید؛ ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.",
 'rev-deleted-no-diff' => "شما نمی‌توانید این تفاوت را مشاهده کنید زیرا یکی از دو نسخه '''حذف شده‌است'''.
 ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
 'rev-suppressed-no-diff' => "شما نمی‌توانید این تفاوت را مشاهده کنید زیرا یکی از نسخه‌ها '''حذف شده‌است'''.",
@@ -1321,11 +1322,11 @@ $2
 شما کماکان می‌توانید در صورت تمایل [$1 این تفاوت را ببینید].",
 'rev-suppressed-unhide-diff' => "یکی از نسخه‌های این تفاوت '''فرونشانی شده‌است'''.
 ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page=سیاههٔ فرونشانی{{FULLPAGENAMEE}}}}] موجود باشد.
-شما به عنوان یک مدیر کماکان می‌توانید در صورت تمایل [$1 این تفاوت را ببینید].",
+شما کماکان می‌توانید در صورت تمایل [$1 این تفاوت را ببینید].",
 'rev-deleted-diff-view' => "یکی از نسخه‌های این تفاوت '''حذف شده‌است'''.
-شما به عنوان یک مدیر کماکان می‌توانید این تفاوت را ببینید؛ ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
+شما می‌توانید این تفاوت را ببینید؛ ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
 'rev-suppressed-diff-view' => "یکی از نسخه‌های این تفاوت '''فرونشانی شده‌است'''.
-شما به عنوان یک مدیر کماکان می‌توانید این تفاوت را ببینید؛ ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.",
+شما می‌توانید این تفاوت را ببینید؛ ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.",
 'rev-delundel' => 'نمایش/نهفتن',
 'rev-showdeleted' => 'نمایش',
 'revisiondelete' => 'حذف/احیای نسخه‌ها',
@@ -1333,7 +1334,7 @@ $2
 'revdelete-nooldid-text' => 'شما نسخه‌های هدف را برای انجام این عمل مشخص نکرده‌اید یا این نسخه‌ها وجود ندارند، یا این که شما می‌خواهید آخرین نسخه را پنهان کنید.',
 'revdelete-nologtype-title' => 'نوع سیاهه مشخص نشده‌است',
 'revdelete-nologtype-text' => 'شما هیچ نوع سیاهه‌ای را برای این کار مشخص نکردید.',
-'revdelete-nologid-title' => 'مدخل غیرمجاز در سیاهه',
+'revdelete-nologid-title' => 'مورد غیرمجاز در سیاهه',
 'revdelete-nologid-text' => 'شما یا رویدادی را در سیاههٔ هدف مشخص نکردید یا موردی را مشخص کردید که وجود ندارد.',
 'revdelete-no-file' => 'پروندهٔ مشخص شده وجود ندارد.',
 'revdelete-show-file-confirm' => 'آیا مطمئن هستید که می‌خواهید یک نسخهٔ حذف شده از پروندهٔ «<nowiki>$1</nowiki>» مورخ $2 ساعت $3 را ببینید؟',
@@ -1483,8 +1484,6 @@ $1",
 'search-interwiki-caption' => 'پروژه‌های خواهر',
 'search-interwiki-default' => '$1 نتیجه:',
 'search-interwiki-more' => '(بیشتر)',
-'search-mwsuggest-enabled' => 'با پیشنهاد',
-'search-mwsuggest-disabled' => 'هیچ پیشنهادی وجود ندارد',
 'search-relatedarticle' => 'مرتبط',
 'mwsuggest-disable' => 'پیشنهادهای مبتنی بر AJAX را غیرفعال کن',
 'searcheverything-enable' => 'جستجو در تمام فضاهای نام',
@@ -2685,7 +2684,7 @@ $NEWPAGE
 'undeleterevision-missing' => 'نسخه نامعتبر یا مفقود است.
 ممکن است پیوندتان نادرست باشد یا اینکه نسخه از بایگانی حذف یا بازیابی شده باشد .',
 'undelete-nodiff' => 'نسخهٔ قدیمی‌تری یافت نشد.',
-'undeletebtn' => 'احیا شود',
+'undeletebtn' => 'احیا',
 'undeletelink' => 'نمایش/احیا',
 'undeleteviewlink' => 'نمایش',
 'undeletereset' => 'از نو',
@@ -3133,7 +3132,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'آزمایش جاوا اسکریپت',
-'javascripttest-disabled' => 'این عملکرد در این ویکی فعال نشده‌است.',
 'javascripttest-title' => 'در حال اجرای آزمایش‌های $1',
 'javascripttest-pagetext-noframework' => 'این صفحه برای اجرای آزمایش‌های جاوا اسکریپت کنار گذاشته شده‌است.',
 'javascripttest-pagetext-unknownframework' => 'چارچوب آزمایشی ناشناخته «$1».',
@@ -3906,7 +3904,7 @@ $5
 'size-gigabytes' => '$1 گیگابایت',
 
 # Live preview
-'livepreview-loading' => 'در حال بارشدن…',
+'livepreview-loading' => 'در حال بارگیری…',
 'livepreview-ready' => 'بارشدن… آماده!',
 'livepreview-failed' => 'پیش‌نمایش زنده به مشکل برخورد! لطفاً از پیش‌نمایش عادی استفاده کنید',
 'livepreview-error' => 'ارتباط به مشکل برخورد: $1 "$2" از پیش‌نمایش عادی استفاده کنید.',
@@ -4240,4 +4238,7 @@ $5
 'duration-centuries' => '$1 قرن',
 'duration-millennia' => '{{PLURAL:$1|هزار سال |$1 هزار سال}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'صفحه‌های دربردارنده...',
+'searchsuggest-search' => 'جستجو',
 );
index d2f5e76..4d467cd 100644 (file)
@@ -684,10 +684,11 @@ Joku muu on saattanut poistaa sen.',
 'protectedpagetext' => 'Tämä sivu on suojattu muutoksilta.',
 'viewsourcetext' => 'Voit tarkastella ja kopioida tämän sivun lähdekoodia:',
 'viewyourtext' => "Voit tarkastella ja kopioida lähdekoodin '''tekemistäsi muutoksista''' tähän sivuun:",
-'protectedinterface' => 'Tämä sivu sisältää ohjelmiston käyttöliittymätekstiä ja on suojattu häiriköinnin estämiseksi.',
+'protectedinterface' => 'Tämä sivu sisältää ohjelmiston käyttöliittymätekstiä ja on suojattu häiriköinnin estämiseksi.
+Viestien kääntäminen tulisi tehdä [//translatewiki.net/ translatewiki.netissä] – MediaWikin kotoistusprojektissa.',
 'editinginterface' => "'''Varoitus:''' Muokkaat sivua, joka sisältää ohjelmiston käyttöliittymätekstiä.
-Muutokset tähän sivuun vaikuttavat muiden käyttäjien käyttöliittymän ulkoasuun.
-Viestien kääntäminen tulisi tehdä [//translatewiki.net/wiki/Main_Page?setlang=fi translatewiki.netissä] – MediaWikin kotoistusprojektissa.",
+Muutokset tähän sivuun vaikuttavat muiden käyttäjien käyttöliittymän ulkoasuun tässä wikissä.
+Viestien kääntäminen tulisi tehdä [//translatewiki.net/ translatewiki.netissä] – MediaWikin kotoistusprojektissa.",
 'sqlhidden' => '(SQL-kysely piilotettu)',
 'cascadeprotected' => 'Tämä sivu on suojattu muokkauksilta, koska se on sisällytetty alla {{PLURAL:$1|olevaan laajennetusti suojattuun sivuun|oleviin laajennetusti suojattuihin sivuihin}}:
 $2',
@@ -697,9 +698,9 @@ $2',
 'ns-specialprotected' => 'Toimintosivuja ei voi muokata.',
 'titleprotected' => "Käyttäjä [[User:$1|$1]] on suojannut tämän sivunimen, ja sivua ei voi luoda.
 Syynä on: ''$2''.",
-'filereadonlyerror' => 'Tiedostoa "$1" ei voi muuttaa, koska jaettu mediavarasto "$2" on "vain luku" -tilassa.
+'filereadonlyerror' => 'Tiedostoa $1 ei voi muuttaa, koska jaettu mediavarasto $2 on vain luku -tilassa.
 
-Lukituksen asettanut ylläpitäjä on antanut seuraavan syyn toimenpiteelle: "$3".',
+Lukituksen asettanut ylläpitäjä on antanut seuraavan syyn toimenpiteelle: $3.',
 'invalidtitle-knownnamespace' => 'Virheellinen sivunimi, nimiavaruus "$2" ja teksti "$3"',
 'invalidtitle-unknownnamespace' => 'Virheellinen sivunimi, tuntematon nimiavaruus numero $1 ja teksti $2',
 'exception-nologin' => 'Et ole kirjautuneena',
@@ -955,8 +956,7 @@ Voit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]
 tai [{{fullurl:{{FULLPAGENAME}}|action=edit}} muokata tätä sivua]</span>.',
 'noarticletext-nopermission' => 'Tällä hetkellä tällä sivulla ei ole tekstiä.
-Voit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta
-tai <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]</span>',
+Voit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta tai <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]</span>, mutta sinulla ei ole oikeutta luoda tätä sivua.',
 'missing-revision' => 'Muutosta #$1 sivulla "{{PAGENAME}}" ei ole olemassa.
 
 Tämä yleensä johtuu vanhentuneesta historialinkistä sivulle, joka on poistettu.
@@ -981,7 +981,8 @@ Alla on viimeisin estolokin tapahtuma:',
 'userinvalidcssjstitle' => "'''Varoitus:''' Tyyliä nimeltä ”$1” ei ole olemassa. Muista, että käyttäjän määrittelemät .css- ja .js-sivut alkavat pienellä alkukirjaimella, esim. {{ns:user}}:Matti Meikäläinen/vector.css eikä {{ns:user}}:Matti Meikäläinen/Vector.css.",
 'updated' => '(Päivitetty)',
 'note' => "'''Huomautus:'''",
-'previewnote' => "'''Tämä on vasta sivun esikatselu. Tekemiäsi muokkauksia ei ole vielä tallennettu!'''",
+'previewnote' => "'''Tämä on vasta sivun esikatselu.'''
+Tekemiäsi muutoksia ei ole vielä tallennettu.",
 'continue-editing' => 'Jatka muokkaamista',
 'previewconflict' => 'Tämä esikatselu näyttää miltä muokkausalueella oleva teksti näyttää tallennettuna.',
 'session_fail_preview' => "'''Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.''' Yritä uudelleen. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään.",
@@ -1199,7 +1200,9 @@ Sinulla ei ole oikeutta siihen.',
 'revdelete-only-restricted' => 'Virhe piilotettaessa $1 kello $2 päivättyä kohdetta: Et voi poistaa kohteita ylläpitäjien näkyviltä valitsematta myös jotain muuta näkyvyysasetusta.',
 'revdelete-reason-dropdown' => '*Yleiset poistosyyt
 ** Tekijänoikeusrikkomus
-** Sopimattomat henkilötiedot',
+** Sopimattomat henkilötiedot
+** Sopimaton käyttäjätunnus
+** Mahdollinen kunnianloukkaus',
 'revdelete-otherreason' => 'Muu syy tai tarkennus',
 'revdelete-reasonotherlist' => 'Muu syy',
 'revdelete-edit-reasonlist' => 'Muokkaa poistosyitä',
@@ -1240,9 +1243,9 @@ Uuden ja vanhan sivun muutoksien pitää muodostaa jatkumo – ne eivät saa men
 'mergelogpagetext' => 'Alla on loki viimeisimmistä muutoshistorioiden yhdistämisistä.',
 
 # Diffs
-'history-title' => 'Sivun "$1" muutoshistoria',
-'difference-title' => 'Ero sivun ”$1” versioiden välillä',
-'difference-title-multipage' => 'Erot sivujen "$1" ja "$2" välillä',
+'history-title' => 'Sivun $1 muutoshistoria',
+'difference-title' => 'Ero sivun $1 versioiden välillä',
+'difference-title-multipage' => 'Erot sivujen $1 ja $2 välillä',
 'difference-multipage' => '(Sivujen välinen eroavaisuus)',
 'lineno' => 'Rivi $1:',
 'compareselectedversions' => 'Vertaile valittuja versioita',
@@ -1298,8 +1301,6 @@ $1 {{int:pipe-separator}} $2',
 'search-interwiki-caption' => 'Sisarprojektit',
 'search-interwiki-default' => 'Tulokset osoitteesta $1:',
 'search-interwiki-more' => '(lisää)',
-'search-mwsuggest-enabled' => 'näytä ehdotukset',
-'search-mwsuggest-disabled' => 'ilman ehdotuksia',
 'search-relatedarticle' => 'Hae samankaltaisia sivuja',
 'mwsuggest-disable' => 'Älä näytä ehdotuksia AJAXilla',
 'searcheverything-enable' => 'Hae kaikista nimiavaruuksista',
@@ -1318,7 +1319,7 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'powersearch-field' => 'Etsi',
 'powersearch-togglelabel' => 'Muuta valintaa',
 'powersearch-toggleall' => 'Valitse kaikki',
-'powersearch-togglenone' => 'Valitse ei mitään',
+'powersearch-togglenone' => 'Poista valinnat',
 'search-external' => 'Ulkoinen haku',
 'searchdisabled' => 'Tekstihaku on poistettu toistaiseksi käytöstä suuren kuorman vuoksi. Voit käyttää alla olevaa Googlen hakukenttää sivujen etsimiseen, kunnes haku tulee taas käyttöön. <small>Huomaa, että ulkopuoliset kopiot {{GRAMMAR:genitive|{{SITENAME}}}} sisällöstä eivät välttämättä ole ajan tasalla.</small>',
 
@@ -1808,7 +1809,7 @@ $1',
 'backend-fail-internal' => 'Tuntematon virhe taustajärjestelmässä "$1".',
 'backend-fail-contenttype' => 'Tiedostoa ei voitu tallentaa kohteeseen $1, koska tiedostomuotoa ei voitu määrittää.',
 'backend-fail-batchsize' => 'Taustajärjestelmälle on annettu $1 {{PLURAL:$1|tiedostotoiminto|toimintoa}}; enimmäismäärä on $2 {{PLURAL:$2|tiedostotoiminto|toimintoa}}.',
-'backend-fail-usable' => 'Ei voitu luoda tiedostoa $1, koska käyttöoikeudet eivät riittäneet tai hakemisto puuttuu.',
+'backend-fail-usable' => 'Tiedostoa $1 ei voitu lukea tai luoda, koska käyttöoikeudet eivät riittäneet tai hakemisto puuttuu.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Kohteen $1 lukitusta ei voitu poistaa, koska se ei ole lukittu.',
@@ -2043,7 +2044,7 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|tavu|tavua}}',
 'ncategories' => '$1 {{PLURAL:$1|luokka|luokkaa}}',
-'ninterwikis' => '$1 {{PLURAL:$1|interwiki-linkki|interwiki-linkkiä}}',
+'ninterwikis' => '$1 {{PLURAL:$1|kielilinkki|kielilinkkiä}}',
 'nlinks' => '$1 {{PLURAL:$1|linkki|linkkiä}}',
 'nmembers' => '$1 {{PLURAL:$1|jäsen|jäsentä}}',
 'nrevisions' => '$1 {{PLURAL:$1|muutos|muutosta}}',
@@ -2072,7 +2073,7 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 'mostlinkedtemplates' => 'Viitatuimmat mallineet',
 'mostcategories' => 'Luokitelluimmat sivut',
 'mostimages' => 'Viitatuimmat tiedostot',
-'mostinterwikis' => 'Sivut joilla on eniten kielilinkkejä',
+'mostinterwikis' => 'Sivut, joilla on eniten kielilinkkejä',
 'mostrevisions' => 'Muokatuimmat sivut',
 'prefixindex' => 'Kaikki sivut katkaisuhaulla',
 'prefixindex-namespace' => 'Kaikki sivut etuliitteellä (nimiavaruus $1)',
@@ -2145,11 +2146,11 @@ Voit rajoittaa listaa valitsemalla lokityypin, käyttäjän tai sivun johon muut
 'allpagesprefix' => 'Katkaisuhaku',
 'allpagesbadtitle' => 'Annettu otsikko oli kelvoton tai siinä oli wikien välinen etuliite.',
 'allpages-bad-ns' => '{{GRAMMAR:inessive|{{SITENAME}}}} ei ole nimiavaruutta ”$1”.',
-'allpages-hide-redirects' => 'Piilota ohjaussivut',
+'allpages-hide-redirects' => 'Piilota ohjaukset',
 
 # SpecialCachedPage
-'cachedspecial-viewing-cached-ttl' => 'Katselet arkistoitua versiota tästä sivusta, joka voi olla jopa $1 vanha.',
-'cachedspecial-viewing-cached-ts' => 'Katselet arkistoitua versiota tästä sivusta, joka ei välttämättä ole sivun viimeisin versio.',
+'cachedspecial-viewing-cached-ttl' => 'Tarkastelet arkistoitua versiota tästä sivusta, joka voi olla jopa $1 vanha.',
+'cachedspecial-viewing-cached-ts' => 'Tarkastelet arkistoitua versiota tästä sivusta, joka ei välttämättä ole sivun viimeisin versio.',
 'cachedspecial-refresh-now' => 'Näytä uusin versio.',
 
 # Special:Categories
@@ -2359,7 +2360,7 @@ Sivulla $2 on lista viimeaikaisista poistoista.',
 'rollback' => 'palauta aiempaan versioon',
 'rollback_short' => 'Palautus',
 'rollbacklink' => 'palauta',
-'rollbacklinkcount' => 'palauta {{PLURAL:$1|muokkaus|$1 muokkausta}}',
+'rollbacklinkcount' => 'palauta {{PLURAL:$1|muutos|$1 muutosta}}',
 'rollbacklinkcount-morethan' => 'palauta yli $1 {{PLURAL:$1|muutos|muutosta}}',
 'rollbackfailed' => 'Palautus epäonnistui',
 'cantrollback' => 'Aiempaan versioon ei voi palauttaa, koska viimeisin kirjoittaja on sivun ainoa tekijä.',
@@ -2576,7 +2577,7 @@ Alla on viimeisin estolokin tapahtuma:',
 'ipb-confirm' => 'Vahvista esto',
 'badipaddress' => 'IP-osoite on väärin muotoiltu.',
 'blockipsuccesssub' => 'Esto onnistui',
-'blockipsuccesstext' => 'Käyttäjä tai IP-osoite [[Special:Contributions/$1|$1]] on estetty.<br />
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] on estetty.<br />
 Voimassa olevat estot näkyvät [[Special:BlockList|estolistasta]].',
 'ipb-blockingself' => 'Olet estämässä itseäsi. Oletko varma, että haluat tehdä niin?',
 'ipb-confirmhideuser' => 'Olet estämässä käyttäjää ”piilota käyttäjä” -toiminnon kanssa.  Tämä piilottaa käyttäjän nimen kaikissa luetteloissa ja lokitapahtumissa.  Oletko varma, että haluat tehdä näin?',
@@ -2861,6 +2862,7 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 'import-error-interwiki' => 'Sivua $1 ei voitu tuoda, koska sen nimi on varattu ulkoisen linkittämisen (interwiki).',
 'import-error-special' => 'Sivua $1 ei tuoda, koska se kuuluu nimitilaan, joka ei salli sivuja.',
 'import-error-invalid' => 'Sivua $1 ei tuoda, koska sen nimi ei kelpaa.',
+'import-options-wrong' => '{{PLURAL:$2|Väärä asetus|Väärät asetukset}}: <nowiki>$1</nowiki>',
 
 # Import log
 'importlogpage' => 'Tuontiloki',
@@ -2872,7 +2874,6 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScriptin testaus',
-'javascripttest-disabled' => 'Tämä toiminto ei ole käytössä tässä wikissä.',
 'javascripttest-title' => 'Suoritetaan $1-testejä.',
 'javascripttest-pagetext-noframework' => 'Tämä sivu on varattu JavaScript-testien suorittamiseen.',
 'javascripttest-pagetext-unknownframework' => 'Tuntematon testausalusta $1.',
@@ -3011,17 +3012,23 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 # Info page
 'pageinfo-title' => 'Tietoja sivusta $1',
 'pageinfo-header-basic' => 'Perustiedot',
-'pageinfo-header-edits' => 'Muokkaushistoria',
+'pageinfo-header-edits' => 'Muutoshistoria',
 'pageinfo-header-restrictions' => 'Sivun suojaus',
 'pageinfo-header-properties' => 'Sivun ominaisuudet',
+'pageinfo-default-sort' => 'Oletuslajitteluavain',
+'pageinfo-length' => 'Sivun pituus (tavuina)',
+'pageinfo-article-id' => 'Sivun tunniste',
 'pageinfo-views' => 'Katselukertojen määrä',
 'pageinfo-watchers' => 'Sivun tarkkailijoiden lukumäärä',
 'pageinfo-redirects-name' => 'Sivulle johtavat ohjaukset',
 'pageinfo-subpages-name' => 'Sivun alasivut',
-'pageinfo-firstuser' => 'Sivun luoja',
+'pageinfo-firstuser' => 'Sivun tekijä',
 'pageinfo-lastuser' => 'Viimeisin muokkaaja',
 'pageinfo-edits' => 'Muokkausten kokonaismäärä',
 'pageinfo-authors' => 'Sivun eri muokkaajien kokonaismäärä',
+'pageinfo-restriction' => 'Sivun suojaus ({{lcfirst:$1}})',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Piilotettu luokka|Piilotetut luokat}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Sisällytetty malline|Sisällytetyt mallineet}} ($1)',
 
 # Skin names
 'skinname-standard' => 'Perus',
@@ -3919,4 +3926,7 @@ Muussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi
 'duration-centuries' => '$1 {{PLURAL:$1|vuosisata|vuosisataa}}',
 'duration-millennia' => '$1 {{PLURAL:$1|vuosituhat|vuosituhatta}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'sisältää...',
+'searchsuggest-search' => 'Hae',
 );
index fbab491..9aa854e 100644 (file)
@@ -1071,8 +1071,6 @@ Tú hevur ikki atgongd til hann.',
 'search-interwiki-caption' => 'Líknandi verkætlanir',
 'search-interwiki-default' => '$1 úrslit:',
 'search-interwiki-more' => '(meira)',
-'search-mwsuggest-enabled' => 'við uppskotum',
-'search-mwsuggest-disabled' => 'ongi uppskot',
 'search-relatedarticle' => 'Líknandi',
 'mwsuggest-disable' => 'Slá AJAX uppskot frá',
 'searcheverything-enable' => 'Leita í øllum navnaøkjum',
@@ -2262,4 +2260,6 @@ Hendan váttanarkoda fer úr gildi tann $4.',
 'api-error-unclassified' => 'Ein ókendur feilur hendi.',
 'api-error-unknown-code' => 'Ókendur feilur: "$1"',
 
+# Unknown messages
+'searchsuggest-search' => 'Leita',
 );
index 3a176a9..614efec 100644 (file)
@@ -1385,8 +1385,6 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'search-interwiki-caption' => 'Projets frères',
 'search-interwiki-default' => 'Résultats sur $1 :',
 'search-interwiki-more' => '(plus)',
-'search-mwsuggest-enabled' => 'avec suggestions',
-'search-mwsuggest-disabled' => 'sans suggestions',
 'search-relatedarticle' => 'Relaté',
 'mwsuggest-disable' => 'Désactiver les suggestions AJAX',
 'searcheverything-enable' => 'Rechercher dans tous les espaces de noms',
@@ -3018,7 +3016,6 @@ Un dossier temporaire est manquant.",
 
 # JavaScriptTest
 'javascripttest' => 'Test de JavaScript',
-'javascripttest-disabled' => "Cette fonction n'a pas été activée sur ce wiki.",
 'javascripttest-title' => 'Exécution des tests $1',
 'javascripttest-pagetext-noframework' => "Cette page est réservée pour l'exécution des tests JavaScript.",
 'javascripttest-pagetext-unknownframework' => 'Structure "$1" inconnue.',
@@ -4079,10 +4076,10 @@ Les images sont montrées dans leur pleine résolution, les autres fichiers sont
 'logentry-suppress-revision' => "$1 a secrètement modifié la visibilité {{PLURAL:$5|d'une révision|de $5 révisions}} sur la page $3: $4",
 'logentry-suppress-event-legacy' => '$1 a secrètement modifié la visibilité des événements du journal sur $3',
 'logentry-suppress-revision-legacy' => '$1 a secrètement modifié la visibilité des révisions sur la page $3',
-'revdelete-content-hid' => 'contenu caché',
+'revdelete-content-hid' => 'contenu masqué',
 'revdelete-summary-hid' => 'résumé de modification caché',
 'revdelete-uname-hid' => "nom d'utilisateur caché",
-'revdelete-content-unhid' => 'contenu démasqué',
+'revdelete-content-unhid' => 'contenu révélé',
 'revdelete-summary-unhid' => 'résumé de modification démasqué',
 'revdelete-uname-unhid' => "nom d'utilisateur démasqué",
 'revdelete-restricted' => 'restrictions appliquées aux administrateurs',
@@ -4167,4 +4164,7 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'duration-centuries' => '$1 {{PLURAL:$1|siècle|siècles}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millénaire|millénaires}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'contenant...',
+'searchsuggest-search' => 'Rechercher',
 );
index d62107b..f5f2a13 100644 (file)
@@ -1345,8 +1345,6 @@ Notâd bien que l’usâjo des lims de navigacion tornerat inicialisar cela colo
 'search-interwiki-caption' => 'Projèts frâres',
 'search-interwiki-default' => 'Rèsultats dessus $1 :',
 'search-interwiki-more' => '(més)',
-'search-mwsuggest-enabled' => 'avouéc consèlys',
-'search-mwsuggest-disabled' => 'sen consèlys',
 'search-relatedarticle' => 'Raportâ',
 'mwsuggest-disable' => 'Dèsactivar los consèlys AJAX',
 'searcheverything-enable' => 'Rechèrchiér dens tôs los èspâços de noms',
@@ -2985,7 +2983,6 @@ Volyéd tornar èprovar.',
 
 # JavaScriptTest
 'javascripttest' => 'Èprôva de JavaScript',
-'javascripttest-disabled' => 'Cela fonccion-que est pas étâye activâye sur ceti vouiqui.',
 'javascripttest-title' => 'Èprôves de $1 en cors',
 'javascripttest-qunit-intro' => 'Vêde la [$1 documentacion de les èprôves] dessus mediawiki.org.',
 'javascripttest-qunit-heading' => 'Suita d’èprôva QUnit de JavaScript dessus MediaWiki',
@@ -4113,4 +4110,7 @@ Les émâges sont montrâs dens lor plêna rèsolucion, los ôtros fichiérs son
 'duration-centuries' => '$1 sièclo{{PLURAL:$1||s}}',
 'duration-millennia' => '$1 milènèro{{PLURAL:$1||s}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'que contint...',
+'searchsuggest-search' => 'Rechèrchiér',
 );
index fd91b54..9b454ed 100644 (file)
@@ -1026,8 +1026,6 @@ A nawigatsjuun links saat ales weder turag üüb di ual stant.',
 'search-interwiki-caption' => 'Süsterprujäkte',
 'search-interwiki-default' => '$1 resultoote:',
 'search-interwiki-more' => '(widere)',
-'search-mwsuggest-enabled' => 'ma forsliike',
-'search-mwsuggest-disabled' => 'niinj forsliike',
 'search-relatedarticle' => 'früne',
 'mwsuggest-disable' => 'forsliike per Ajax deaktiviire',
 'searcheverything-enable' => 'Onj ål noomerüme säke',
index 6187ec1..67b0505 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Simplified Gan script (‪赣语(简体)‬)
+/** Simplified Gan script (赣语(简体)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -767,8 +767,6 @@ $2',
 'search-interwiki-caption' => '姊妹计划',
 'search-interwiki-default' => '$1只结果:',
 'search-interwiki-more' => '(更多)',
-'search-mwsuggest-enabled' => '有建议',
-'search-mwsuggest-disabled' => '冇建议',
 'searchrelated' => '相关',
 'searchall' => '所有',
 'showingresults' => '底下从第<b>$2</b>条显示起先𠮶<b>$1</b>条结果:',
@@ -2241,6 +2239,7 @@ $3
 'version-hook-subscribedby' => '订阅人',
 'version-version' => '(版本 $1)',
 'version-license' => '许可证',
+'version-poweredby-credits' => "个只 Wiki 由 '''[//www.mediawiki.org/ MediaWiki]''' 驱动,版权所有 © 2001-$1 $2。",
 'version-software' => '装正𠮶软件',
 'version-software-version' => '版本',
 
@@ -2270,4 +2269,6 @@ $3
 # Special:Tags
 'tag-filter' => '[[Special:Tags|标签]]过滤器:',
 
+# Unknown messages
+'searchsuggest-search' => '寻吖',
 );
index bf73fb7..b07988d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Traditional Gan script (‪贛語(繁體)‬)
+/** Traditional Gan script (贛語(繁體)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index cf837a4..9541cfd 100644 (file)
@@ -908,8 +908,6 @@ Feuch is [[Special:Search|lorg duilleagan ùra iomachaidh air an uici]]",
 'search-interwiki-caption' => 'Pròiseactan co-cheangailte',
 'search-interwiki-default' => 'Toraidhean $1:',
 'search-interwiki-more' => '(barrachd)',
-'search-mwsuggest-enabled' => 'le molaidhean',
-'search-mwsuggest-disabled' => 'gun mholaidhean',
 'search-relatedarticle' => 'Co-cheangailte',
 'searchrelated' => 'co-cheangailte',
 'searchall' => 'a h-uile',
@@ -1534,4 +1532,6 @@ Bidh an fheadhainn eile falaichte a ghnàth.
 # Special:Tags
 'tag-filter' => 'Criathrag [[Special:Tags|Tag]]:',
 
+# Unknown messages
+'searchsuggest-containing' => 'anns a bheil...',
 );
index bc04e17..5705d2a 100644 (file)
@@ -593,7 +593,7 @@ Pode conter un ou máis caracteres dos que non se poden empregar nos títulos.',
 'querypage-no-updates' => 'Neste momento están desactivadas as actualizacións nesta páxina. O seu contido non se modificará.',
 'wrong_wfQuery_params' => 'Parámetros incorrectos para wfQuery()<br />
 Función: $1<br />
-Dúbida: $2',
+Pescuda: $2',
 'viewsource' => 'Ver o código fonte',
 'viewsource-title' => 'Ver o código fonte de "$1"',
 'actionthrottled' => 'Acción limitada',
@@ -1268,8 +1268,6 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'search-interwiki-caption' => 'Proxectos irmáns',
 'search-interwiki-default' => 'Resultados en $1:',
 'search-interwiki-more' => '(máis)',
-'search-mwsuggest-enabled' => 'con suxestións',
-'search-mwsuggest-disabled' => 'sen suxestións',
 'search-relatedarticle' => 'Relacionado',
 'mwsuggest-disable' => 'Deshabilitar as suxestións AJAX',
 'searcheverything-enable' => 'Procurar en todos os espazos de nomes',
@@ -2910,7 +2908,6 @@ Gárdeo no seu disco duro e cárgueo aquí.',
 
 # JavaScriptTest
 'javascripttest' => 'Proba de JavaScript',
-'javascripttest-disabled' => 'Esta función está desactivada neste wiki.',
 'javascripttest-title' => 'Executando probas de $1',
 'javascripttest-pagetext-noframework' => 'Esta páxina está reservada para executar probas do JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Descoñécese a infraestrutura dixital "$1" de probas.',
@@ -3993,4 +3990,6 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'que conteña...',
 );
index d1a0703..525a060 100644 (file)
@@ -398,6 +398,10 @@ Di maximal Wartezyt fir e Lock isch umme',
 'youhavenewmessages' => 'Du hesch $1 ($2).',
 'newmessageslink' => 'nöji Nachrichte',
 'newmessagesdifflink' => 'Unterschid',
+'youhavenewmessagesfromusers' => 'Du hesch $1 vu {{PLURAL:$3|eme andere Benutzer|$3 Benutzer}} ($2).',
+'youhavenewmessagesmanyusers' => 'Du hesch $1 vu vil Benutzer ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|e neji Nochricht|neji Nochrichte}}',
+'newmessagesdifflinkplural' => 'letschti {{PLURAL:$1|Änderig|Änderige}}',
 'youhavenewmessagesmulti' => 'Si hen neui Nochrichte: $1',
 'editsection' => 'ändere',
 'editold' => 'Ändre',
@@ -489,6 +493,7 @@ Wänn s des nit isch, hesch villicht e Fähler in dr Software gfunde. Bitte mäl
 'badarticleerror' => 'D Aktion konn uf denne Artikel nit ongwendet werre.',
 'cannotdelete' => 'D Syte oder d Datei „$1“ cha nit glescht wäre. Si isch villicht scho vu eber anderem glescht wore.',
 'cannotdelete-title' => 'Syte „$1“ cha nit glescht wäre',
+'delete-hook-aborted' => 'D Leschig isch ohni Erchlärung dur e Schnittstell abbroche wore.',
 'badtitle' => 'Ugültiger Titel',
 'badtitletext' => 'Dr Titel vu dr agforderte Syte isch nit giltig gsi, leer, oder e nit giltig Sprochgleich vun eme andre Wiki.',
 'perfcached' => 'Die Informatione chemme us em Zwischespycher un sin derwyl villicht nit aktuäll. Maximal {{PLURAL:$1|ei Ergebnis isch|$1 Ergebnis sin}} im Cache verfiegbar.',
@@ -505,7 +510,7 @@ Abfrog: $2',
 'viewsourcetext' => 'Quelltext vo dere Syte:',
 'viewyourtext' => "Du chasch dr Quälltext vu '''Dyre Bearbeitig''' vu däre Syte aaluege un kopiere:",
 'protectedinterface' => 'In däre Syte het s Text fir s Sproch-Interface vu dr Software un si isch gsperrt, zum Missbruch z verhindre.',
-'editinginterface' => "'''Obacht:''' Du bisch e Syten am Verändere, wu zum User.Interface ghert. Wänn Du die Syte veränderesch, no änderet sich s User-Interface au fir di andere Benutzer. Fir Ibersetzige lueg bitte, eb Du doodefir s [//translatewiki.net/wiki/Main_Page?setlang=gsw Translatewiki] witt bruuche, s MediaWiki-Lokalisierigsprojäkt.",
+'editinginterface' => "'''Obacht:''' Du bisch e Syten am Verändere, wu zum User.Interface ghert. Wänn Du die Syte veränderesch, no änderet sich s User-Interface au fir di andere Benutzer vu däm Wiki. Fir Ibersetzige lueg bitte, eb Du doodefir s [//translatewiki.net/wiki/Main_Page?setlang=gsw Translatewiki] witt bruuche, s MediaWiki-Lokalisierigsprojäkt.",
 'sqlhidden' => '(SQL-Abfrog verschteckt)',
 'cascadeprotected' => 'Die Syte isch fir s Bearbeite gsperrt. Si isch yybunde in {{PLURAL:$1|die Syte, wu do chunnt|die Syte, wu do chemme}} , wu mit ere Kaskadesperroption gschitzt {{PLURAL:$1|isch|sin}}:
 $2',
@@ -520,6 +525,8 @@ Die Sperri isch dur [[User:$1|$1]] yygrichtet wore mit dr Begrindig ''„$2“''
 Dr Administrator, wu dr Schrybzuegriff gsperrt het, het dää Grund aagee: „$3“.',
 'invalidtitle-knownnamespace' => 'Nit-gültige Titel mit Namensruum „$2“ un Text „$3“',
 'invalidtitle-unknownnamespace' => 'Ungültige Titel mit unbekannte Namensruumnummer $1 un Text „$2“',
+'exception-nologin' => 'Nit aagmäldet',
+'exception-nologin-text' => 'Fir die Syte oder Aktion muesch aagmäldet syy.',
 
 # Virus scanner
 'virus-badscanner' => "Fählerhafti Konfiguration: Virescanner, wu nid bekannt isch: ''$1''",
@@ -541,6 +548,7 @@ Vergiss nid, dyni [[Special:Preferences|{{SITENAME}}-Yystellige]] aazpasse.',
 'remembermypassword' => 'Uf däm Computer duurhaft aamälde (Maximal fir $1 {{PLURAL:$1|Tag|Täg}})',
 'securelogin-stick-https' => 'Noch em Aamälde mit HTTPS verbunde blybe',
 'yourdomainname' => 'Dyyni Domäne',
+'password-change-forbidden' => 'Du chasch uf däm Wiki kei Passwerter ändere.',
 'externaldberror' => 'Entwäder s lit e Fähler bi dr externe Authentifizierung vor, oder Du derfsch Dyy extern Benutzerkonto nid aktualisiere.',
 'login' => 'Aamälde',
 'nav-login-createaccount' => 'Aamälde / Konto aalege',
@@ -711,7 +719,7 @@ Temporär Passwort: $2',
 'hr_tip' => 'Horizontali Linie (sparsam verwende)',
 
 # Edit pages
-'summary' => 'Zämefassig:',
+'summary' => 'Zämmefassig:',
 'subject' => 'Beträff:',
 'minoredit' => 'Numen es birebitzeli gänderet',
 'watchthis' => 'Dä Artikel beobachte',
@@ -778,7 +786,11 @@ Wänn do nid hesch welle aane goh, no druck in Dyynem Browser uf '''Zruck'''.",
 oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} die Syte bearbeite]</span>.',
 'noarticletext-nopermission' => 'In däre Syte het s zur Zyt no kei Text.
 Du chasch dää Titel uf andre Syte [[Special:Search/{{PAGENAME}}|sueche]]
-oder <span class="plainlinks">in dr zuegherige [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbiecher sueche].</span>',
+oder <span class="plainlinks">in dr zuegherige [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbiecher sueche].</span> Du derfsch aber die Syte nit aalege.',
+'missing-revision' => 'D Version $1 vu dr Syte mit Name „{{PAGENAME}}“ git s nit.
+
+Dää Fähler chunnt normalerwyys dur e veraltete Link zue dr Versionsgschicht vun ere Syte, wu in dr Zwischezyt glescht woren isch.
+Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech] bschaue.',
 'userpage-userdoesnotexist' => 'S Benutzerkonto „<nowiki>$1</nowiki>“ git s nit. Bitte prief, eb Du die Syte wirkli wit aalege/bearbeite.',
 'userpage-userdoesnotexist-view' => 'S Benutzerkonto „$1“ isch nit registriert.',
 'blocked-notice-logextract' => 'Dää Benutzer isch zur Zyt gsperrt.
@@ -903,6 +915,7 @@ S {{PLURAL:$2|derf nid meh wie ein Ufruef|derfe nid meh wie $1 Ufruef}} gee.',
 'expansion-depth-exceeded-warning' => 'Die Syte het d Expansionsdiefi überschritte.',
 'parser-unstrip-loop-warning' => 'Zirkelbezug festgstellt',
 'parser-unstrip-recursion-limit' => 'Rekursionsgränz bim Ufflöse überschritte ($1)',
+'converter-manual-rule-error' => 'Bi dr manuälle Sprochkonvertierigsregle isch e Fähler entdeckt wore.',
 
 # "Undo" feature
 'undo-success' => 'Zum die Änderig ruckgängig z mache, kontrollier bitte d Bearbeitig in dr Verglichsaasicht un druck derno uf „Syte spichere“.',
@@ -1035,7 +1048,8 @@ Bitte prief d Logbiecher.',
 'revdelete-only-restricted' => 'Fähler bim Uusblände vum Byytrag vum $2, $1: Du chasch kei Yyträg vor Adminischtratore unterdrucke, ohni ass Du au eini vu dr andere Unterdruckigsoptione uusgwehlt hesch.',
 'revdelete-reason-dropdown' => '*Gängigi Leschgrind
 **Urheberrächtsverletzig
-**Falschi Information iber Persone',
+**Falschi Information iber Persone
+**Informatione, wu villicht anderi belaidige',
 'revdelete-otherreason' => 'Andere/Zuesätzlige Grund:',
 'revdelete-reasonotherlist' => 'Andere Grund',
 'revdelete-edit-reasonlist' => 'Leschgrind bearbeite',
@@ -1086,6 +1100,10 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
 'editundo' => 'rückgängig',
 'diff-multi' => '({{PLURAL:$1|Ei Version|$1 Versione}} vu {{PLURAL:$2|eim Benutzer|$2 Benutzer}}, {{PLURAL:$1|wu derzwische lyt, wird|wu derzwische lige, wäre}} nit aazeigt)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Ei Version|$1 Versione}} vu meh {{PLURAL:$2|eim Benutzer|$2 Benutzer}}, {{PLURAL:$1|wu derzwische lyt un nit aazeigt wird|wu derzwische lige un nit aazeigt wäre}})',
+'difference-missing-revision' => '{{PLURAL:$2|Ei Version|$2 Versione}} vui däre Unterschidsaazeig ($1) {{PLURAL:$2|isch|sin}} nit gfunde wore.
+
+Dää Fähler chunnt normalerwyys dur e veraltete Link zue dr Versionsgschicht vun ere Syte, wu in dr Zwischezyt glescht woren isch.
+Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech] bschaue.',
 
 # Search results
 'searchresults' => 'Suech-Ergäbnis',
@@ -1128,8 +1146,6 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
 'search-interwiki-caption' => 'Schweschterprojäkt',
 'search-interwiki-default' => '$1 Ergebniss:',
 'search-interwiki-more' => '(meh)',
-'search-mwsuggest-enabled' => 'mit Vorschleg',
-'search-mwsuggest-disabled' => 'kei Vorschleg',
 'search-relatedarticle' => 'Verwandti',
 'mwsuggest-disable' => 'Vorschleg per Ajax deaktiviere',
 'searcheverything-enable' => 'In alle Namensryym sueche',
@@ -1349,6 +1365,7 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'right-writeapi' => 'D writeAPI verwände',
 'right-delete' => 'Syte lesche',
 'right-bigdelete' => 'Syte lesche mit grosse Versionsgschichte',
+'right-deletelogentry' => 'Einzelni Logbuech-Yytreg lesche un widerhärstelle',
 'right-deleterevision' => 'Lesche un Widerherstelle vu einzelne Versione',
 'right-deletedhistory' => 'Gleschti Versione in der Versionsgschicht aaluege, ohni dr zuegherig Text',
 'right-deletedtext' => 'Gleschti Text un Versionsunterschid zwische gleschte Versionen aaluege',
@@ -1634,7 +1651,7 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
 'backend-fail-internal' => 'Im Spycher-Backend „$1“ isch e nit bekannte Fähler ufträtte.',
 'backend-fail-contenttype' => 'Dr Inhaltstyp vu dr Datei, wu im Pfad „$1“ gspycheret soll wäre, het nit chenne bstimmt wäre.',
 'backend-fail-batchsize' => 'E Bygiverarbeitigsdatei, wu s {{PLURAL:$1|ei Operation|$1 Operatione}} din het, isch an s Spycher-Backend gschickt wore. D Gränz lyt aber bi {{PLURAL:$2|eire Operation|$2 Operatione}}.',
-'backend-fail-usable' => 'D Datei $1 het nit chönne gspyycheret werde, entweder wyl kei Verzeichniss vorhande isch oder wyl kei Berächtigung hesch.',
+'backend-fail-usable' => 'D Datei „$1“ het nit chönne abgruefe oder gspyycheret werde, entweder wyl kei Verzeichniss vorhande isch oder wyl kei Berächtigung hesch.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'S het kei Verbindig chenne härgstellt würe zue dr Journaldatebank vum Spycher-Backend „$1“.',
@@ -1649,6 +1666,7 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
 'lockmanager-fail-releaselock' => 'D Sperri fir „$1“ het nit chenne frejgee wäre.',
 'lockmanager-fail-db-bucket' => 'Mit em Sammelabruef $1 hän nit gnue Verbindige zue Sperrdatebanke chenne härgstellt wäre.',
 'lockmanager-fail-db-release' => 'D Sperrine uf dr Datebank $1 hän nit chenne frejgee wäre.',
+'lockmanager-fail-svr-acquire' => 'D Sperrine uf em Server $1 hän nit chenne abgruefe wäre.',
 'lockmanager-fail-svr-release' => 'D Sperrine uf em Server $1 hän nit chenne frejgee wäre.',
 
 # ZipDirectoryReader
@@ -1762,6 +1780,7 @@ Villicht witt d Bschryybig uf dr dertige [$2 Dateibschryybigssyte] bearbeite.',
 'uploadnewversion-linktext' => 'E nöui Version vo dere Datei ufelade',
 'shared-repo-from' => 'vu $1',
 'shared-repo' => 'eme gmeinsame Repositorium',
+'upload-disallowed-here' => 'Leider chasch des Bild nit iberschryybe.',
 
 # File reversion
 'filerevert' => 'Zrucksetze vu „$1“',
@@ -1869,6 +1888,7 @@ In jedere Zyylete het s Link zue dr erschte un dr zwote Wyterleitig un s Ziil vu
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}',
 'ncategories' => '$1 {{PLURAL:$1|Kategori|Kategorie}}',
+'ninterwikis' => '{{PLURAL:$1|Ei Interwikilink|$1 Interwikilink}}',
 'nlinks' => '$1 {{PLURAL:$1|Link|Links}}',
 'nmembers' => '$1 {{PLURAL:$1|Syte|Sytene}}',
 'nrevisions' => '$1 {{PLURAL:$1|Revision|Revisione}}',
@@ -1897,6 +1917,7 @@ In jedere Zyylete het s Link zue dr erschte un dr zwote Wyterleitig un s Ziil vu
 'mostlinkedtemplates' => 'Am meischten yybouti Vorlage',
 'mostcategories' => 'Sytene mit de meischte Kategorië',
 'mostimages' => 'Am meischte verlinkti Dateie',
+'mostinterwikis' => 'Syte mit de meischte Interwikilink',
 'mostrevisions' => 'Syte mit de meischte Bearbeitige',
 'prefixindex' => 'Alli Syte (mit Präfix)',
 'prefixindex-namespace' => 'Alli Syte mit Präfix (Nameruum $1)',
@@ -1950,6 +1971,7 @@ Bitte gib Acht, ass anderi Netzsyte die Datei mit ere diräkte URL chenne verlin
 D Aazeig cha dur d Uuswahl vun eme Protokoll, eme Benutzername oder eme Sytename yygschränkt wäre (Acht gee uf d Gross- un Chleischrybig).',
 'logempty' => 'Kei Yyträg gfunde, wu passe.',
 'log-title-wildcard' => 'Titel fangt aa mit',
+'showhideselectedlogentries' => 'Uusgwehlti Logbuechyytreg aazeige/verstecke',
 
 # Special:AllPages
 'allpages' => 'alli Sytene',
@@ -2039,6 +2061,8 @@ Zuesätzligi Informatione iber einzelni Rächt git s [[{{MediaWiki:Listgrouprigh
 'mailnologin' => 'Du bisch nid aagmäldet oder hesch keis Mail aaggä',
 'mailnologintext' => 'Du muesch [[Special:UserLogin|aagmäldet syy]] un e bstätigti E-Mail-Adräss in Dyyne [[Special:Preferences|Yystellige]] aagee ha, fir dass epper anderem es E-Mail chasch schicke.',
 'emailuser' => 'Es Mail schrybe',
+'emailuser-title-target' => 'E-Mail an {{GENDER:$1|dää Benutzer|die Benutzeri}} schicke',
+'emailuser-title-notarget' => 'E-Mail an Benutzer',
 'emailpage' => 'E-Mail an Benutzer',
 'emailpagetext' => 'Du chasch im Benutzer mit däm Formular e E-Mail schicke.
 As Absender wird d E-Mail-Adräss us Dyyne [[Special:Preferences|Yystellige]] yytrait, ass dr Benutzer Dir cha Antwort gee.',
@@ -2180,6 +2204,8 @@ Im $2 het s e Lischt vu dr letschte Leschige.',
 'rollback' => 'Zrucksetze vu dr Änderige',
 'rollback_short' => 'Zrucksetze',
 'rollbacklink' => 'Zrüggsetze',
+'rollbacklinkcount' => '{{PLURAL:$1|Ei Version|$1 Versione}} zrucksetze',
+'rollbacklinkcount-morethan' => 'Meh wie {{PLURAL:$1|ei Version|$1 Versione}} zrucksetze',
 'rollbackfailed' => 'S Zrucksetze het nit funktioniert',
 'cantrollback' => 'D Änderig cha nit zruckgsetzt wäre, wel s keini friejere Autore git.',
 'alreadyrolled' => 'Cha d Änderig uf [[:$1]] wu vu [[User:$2|$2]] ([[User talk:$2|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) gmacht wore sin, zruckneh, wel e andere Benutzer in dr Zwischenzyt s scho zruckgsetzt het oder suscht ebis an däre Syte gänderet het.
@@ -2646,6 +2672,7 @@ Alli Transwiki-Import-Aktione werde im [[Special:Log/import|Import-Logbuech]] pr
 'import-interwiki-templates' => 'Mit allene Vorlage',
 'import-interwiki-submit' => 'Import',
 'import-interwiki-namespace' => 'Ziilnamensruum:',
+'import-interwiki-rootpage' => 'Ziilstammsyte (optional):',
 'import-upload-filename' => 'Dateiname:',
 'import-comment' => 'Grund:',
 'importtext' => 'Datei iber d Spezialsyte [[Special:Export|Exportfunktion]] us em Quellwiki exportiere.
@@ -2678,6 +2705,9 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
 'import-error-interwiki' => 'D Syte „$1“ isch nit importiert wore, wel dr Name vun ere fir externi Link (Interwiki) reserviert isch.',
 'import-error-special' => 'D Syte „$1“ isch nit importiert wore, wel si zuen eme bsundere Namensruum ghert, wu kei Syte megli sin.',
 'import-error-invalid' => 'Syte „$1“ isch nit importiert wore, wel dr Name vun ere nit giltig isch.',
+'import-options-wrong' => 'Falschi {{PLURAL:$2|Option|Optione}}: <nowiki>$1</nowiki>',
+'import-rootpage-invalid' => 'Dää Stammsytename isch nit giltig.',
+'import-rootpage-nosubpage' => 'Im Namensruum „$1“ vu dr Stammsyte sin kei Untersyte erlaubt.',
 
 # Import log
 'importlogpage' => 'Import-Logbuech',
@@ -2689,7 +2719,6 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript-Tescht',
-'javascripttest-disabled' => 'Die Funktion isch in däm Wiki nit aktiviert wore.',
 'javascripttest-title' => '$1-Tescht wäre durgfiert',
 'javascripttest-pagetext-noframework' => 'Die Syte isch reserviert fir JavaSkript-Tescht.',
 'javascripttest-pagetext-unknownframework' => 'Nit bekannt Framework „$1“.',
@@ -2789,14 +2818,38 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
 'spambot_username' => 'MediaWiki Spam-Syyferig',
 'spam_reverting' => 'Letschti Version ohni Links zue $1 widerhärgstellt.',
 'spam_blanking' => 'In allene Versione het s Links zue $1 gha, sufer gmacht.',
+'spam_deleting' => 'Alli Versione mit eme Link zue $1 sin glescht woret.',
 
 # Info page
 'pageinfo-title' => 'Informatione zue „$1“',
+'pageinfo-header-basic' => 'Basisinformatione',
 'pageinfo-header-edits' => 'Bearbeitige',
+'pageinfo-header-restrictions' => 'Syteschutz',
+'pageinfo-header-properties' => 'Syteneigeschafte',
+'pageinfo-display-title' => 'Aazeigtitel',
+'pageinfo-default-sort' => 'Standardsortierkriterium',
+'pageinfo-length' => 'Sytelengi (in Byte)',
+'pageinfo-article-id' => 'Syten-ID',
+'pageinfo-robot-policy' => 'Suechmaschinestatus',
+'pageinfo-robot-index' => 'Indizierbar',
+'pageinfo-robot-noindex' => 'Nit indizierbar',
 'pageinfo-views' => 'Aazahl Sytenufruef',
 'pageinfo-watchers' => 'Aazahl vu Beobachter',
+'pageinfo-redirects-name' => 'Wyterleitige zue däre Syte',
+'pageinfo-subpages-name' => 'Untersyte vu däre Syte',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|Wyterleitig|Wyterleitige}}; $3 {{PLURAL:$3|anderi Syte}})',
+'pageinfo-firstuser' => 'Aagleit vu',
+'pageinfo-firsttime' => 'Aagleit am',
+'pageinfo-lastuser' => 'Letschte Bearbeiter',
+'pageinfo-lasttime' => 'Datum vu dr letschte Bearbeitig',
 'pageinfo-edits' => 'Aazahl Bearbeitige',
 'pageinfo-authors' => 'Aazahl vu unterschidlige Autore',
+'pageinfo-recent-edits' => 'Aazahl vu dr letschte Bearbeitige (innerhalb vu $1)',
+'pageinfo-recent-authors' => 'Aazahl vu unterschidlige Autore',
+'pageinfo-restriction' => 'Syteschutz ({{lcfirst:$1}})',
+'pageinfo-magic-words' => '{{PLURAL:$1|Magischs Wort|Magischi Werter}} ($1)',
+'pageinfo-hidden-categories' => 'Versteckti {{PLURAL:$1|Kategori|Kategorie}} ($1)',
+'pageinfo-templates' => 'Yybundeni {{PLURAL:$1|Vorlag|Vorlage}} ($1)',
 
 # Patrolling
 'markaspatrolleddiff' => 'Als patrulyrt markyre',
@@ -2839,6 +2892,7 @@ $1',
 'file-info-size-pages' => '$1 × $2 Pixel, Dateigreßi: $3, MIME-Typ: $4, $5 {{PLURAL:$5|Syte| Syte}}',
 'file-nohires' => 'Kei höcheri Uflösig verfüegbar.',
 'svg-long-desc' => 'SVG-Datei, Basisgrößi: $1 × $2 Pixel, Dateigrößi: $3',
+'svg-long-desc-animated' => 'Animierti SVG-Datei, Basisgreßi $1 × $2 Pixel, Dateigreßi: $3',
 'show-big-image' => 'Originalgrößi',
 'show-big-image-preview' => 'Greßi vu däre Vorschau: $1.',
 'show-big-image-other' => 'Wyteri {{PLURAL:$2|Ufflösig|Ufflösige}}: $1.',
@@ -2848,6 +2902,8 @@ $1',
 'file-info-png-looped' => 'Ändlosschlupf',
 'file-info-png-repeat' => 'het $1 {{PLURAL:$1|Mol|Mol}} gspilt',
 'file-info-png-frames' => '$1 {{PLURAL:$1|Ramme|Ramme}}',
+'file-no-thumb-animation' => "'''Hiiwyys: Wäge tächnische Bschränkige wäre Vorschaubilder vu däre Datei nit animiert.'''",
+'file-no-thumb-animation-gif' => "'''Hiiwyys: Wäge tächnische Bschränkige wäre Vorschaubilder vu hochuufgleste GIF-Dateien wie däre nit animiert.'''",
 
 # Special:NewFiles
 'newimages' => 'Gallery vo noie Bilder',
@@ -3641,10 +3697,12 @@ Sunscht chasch au s eifach Formular unte nutze. Dyy Kommentar wird, zämme mit D
 'api-error-empty-file' => 'D Datei, wu Du uffeglade hesch, isch läär.',
 'api-error-emptypage' => 'S isch nit erlaubt, neji lääri Syte aazlege.',
 'api-error-fetchfileerror' => 'Intärne Fähler: Bim Abruefe vu dr Datei isch e Fähler ufträtte.',
+'api-error-fileexists-forbidden' => 'S git scho ne Datei mit Name „$1“, si cha nit iberschryybe wäre.',
+'api-error-fileexists-shared-forbidden' => 'S git scho ne Datei mit Name „$1“ im gmeinsame Dateirepositorium, si cha wäge däm nit iberschrybe wäre.',
 'api-error-file-too-large' => 'D Datei, wu Du ibertrait hesch, isch z groß.',
 'api-error-filename-tooshort' => 'Dr Dateiname isch z churz.',
 'api-error-filetype-banned' => 'Dää Dateityp isch gsperrt.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|isch e Dateiformat, wu nit erlaubt isch|sin Dateitype, wu nit erlaubt sin}}.  Erlaubt {{PLURAL:$3|isch s Dateiformat|sin d Dateiformat}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|isch e Dateiformat, wu nit erlaubt isch|sin Dateitype, wu nit erlaubt sin}}. Erlaubt {{PLURAL:$3|isch s Dateiformat|sin d Dateiformat}} $2.',
 'api-error-filetype-missing' => 'D Datei het kei Dateinameerwyterig.',
 'api-error-hookaborted' => 'D Änderig, wu Du versuecht hesch, isch wäg eme Erwyterigs-Hooks abbroche wore.',
 'api-error-http' => 'Intärne Fähler: S het kei Verbindig zum Server chenne härgstellt wäre.',
@@ -3680,4 +3738,7 @@ Sunscht chasch au s eifach Formular unte nutze. Dyy Kommentar wird, zämme mit D
 'duration-centuries' => '$1 {{PLURAL:$1|Johrhundert|Johrhundert}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Jahrtöusert|Jahrtöusert}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'din het s …',
+'searchsuggest-search' => 'Suechi',
 );
index 67fd0e8..f968b2e 100644 (file)
@@ -1180,8 +1180,6 @@ $1",
 'search-interwiki-caption' => 'બંધુ પ્રકલ્પ',
 'search-interwiki-default' => '$1 પરીણામો:',
 'search-interwiki-more' => '(વધુ)',
-'search-mwsuggest-enabled' => 'સુઝાવ સહિત',
-'search-mwsuggest-disabled' => 'સુઝાવ વિના',
 'search-relatedarticle' => 'શોધ સંબંધિત',
 'mwsuggest-disable' => 'AJAX સુઝાવો નિષ્ક્રીય કરો',
 'searcheverything-enable' => 'નામસ્થળોમાં શોધો:',
@@ -2813,7 +2811,6 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 
 # JavaScriptTest
 'javascripttest' => 'જાવા સ્ક્રીપ્ટ પરીક્ષણ',
-'javascripttest-disabled' => 'આ સૂત્ર (ફંકશન) આ વિકિ પર કાર્યરત કરાયેલું નથી.',
 'javascripttest-title' => '$1 પરીક્ષણ જારી',
 'javascripttest-pagetext-noframework' => 'આ પાનું જાવા સ્ક્રીપ્ટ ચલાવવા આરક્ષિત છે.',
 'javascripttest-pagetext-unknownframework' => 'અજાણ ચકાસણી ફ્રેમવર્ક "$1".',
@@ -3807,4 +3804,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|શતાબ્દી|શતાબ્દીઓ}}',
 'duration-millennia' => '$1 {{PLURAL:$1|સહસ્ત્રાબ્દી|સહસ્ત્રાબ્દીઓ}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ધરાવતી...',
+'searchsuggest-search' => 'શોધો',
 );
index d8882df..77f285f 100644 (file)
@@ -10,6 +10,7 @@
  * @author Agbad
  * @author Amire80
  * @author Drorsnir
+ * @author Hoo
  * @author Ijon
  * @author Ofekalef
  * @author Ofrahod
@@ -510,7 +511,7 @@ $messages = array(
 'vector-action-protect' => 'הגנה',
 'vector-action-undelete' => 'ביטול מחיקה',
 'vector-action-unprotect' => 'שינוי הגנה',
-'vector-simplesearch-preference' => '×\94פע×\9cת ×\94צע×\95ת ×\94×\97×\99פ×\95ש ×\94×\9eש×\95פר×\95ת (בעיצוב וקטור בלבד)',
+'vector-simplesearch-preference' => '×\94פע×\9cת ×¡×¨×\92×\9c ×\97×\99פ×\95ש ×\9eפ×\95ש×\98 (בעיצוב וקטור בלבד)',
 'vector-view-create' => 'יצירה',
 'vector-view-edit' => 'עריכה',
 'vector-view-history' => 'הצגת היסטוריה',
@@ -1389,8 +1390,6 @@ $1",
 'search-interwiki-caption' => 'מיזמי אחות',
 'search-interwiki-default' => 'תוצאות ב{{GRAMMAR:תחילית|$1}}:',
 'search-interwiki-more' => '(עוד)',
-'search-mwsuggest-enabled' => 'עם הצעות',
-'search-mwsuggest-disabled' => 'ללא הצעות',
 'search-relatedarticle' => 'קשור',
 'mwsuggest-disable' => 'ביטול הצעות AJAX',
 'searcheverything-enable' => 'חיפוש בכל מרחבי השם',
@@ -3026,7 +3025,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'בדיקת JavaScript',
-'javascripttest-disabled' => 'תכונה זו לא הופעלה באתר הוויקי הזה.',
 'javascripttest-title' => 'הרצת בדיקות $1',
 'javascripttest-pagetext-noframework' => 'דף זה שמור להרצת בדיקות JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'סביבת הבדיקות "$1" אינה ידועה.',
@@ -3949,7 +3947,7 @@ $5
 'version-version' => '(גרסה $1)',
 'version-license' => 'רישיון',
 'version-poweredby-credits' => "אתר הוויקי הזה מופעל על ידי '''[//www.mediawiki.org/ מדיה־ויקי]''', © 2001–$1 $2.",
-'version-poweredby-others' => '[{{SERVER}}{{SCRIPTPATH}}/CREDITS אחרים]',
+'version-poweredby-others' => 'אחרים',
 'version-license-info' => "מדיה־ויקי היא תוכנה חופשית; באפשרותכם להפיץ אותה מחדש ו/או לשנות אותה לפי תנאי הרישיון הציבורי הכללי של גנו המפורסם על ידי המוסד לתוכנה חופשית: גרסה 2 של רישיון זה, או (לפי בחירתכם) כל גרסה מאוחרת יותר.
 
 מדיה־ויקי מופצת בתקווה שהיא תהיה שימושית, אך '''ללא כל הבטחה לאחריות'''; אפילו לא אחריות משתמעת של '''יכולת להיסחר''' או '''התאמה למטרה מסוימת'''. ראו את הרישיון הציבורי הכללי של גנו לפרטים נוספים.
@@ -4162,4 +4160,7 @@ $5
 'duration-centuries' => '{{PLURAL:$1|מאה שנה|מאתיים שנה|$1 מאות שנים}}',
 'duration-millennia' => '{{PLURAL:$1|אלף שנה|אלפיים שנה|$1 אלפי שנים}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'כולל...',
+'searchsuggest-search' => 'חיפוש',
 );
index 3e3ecf9..0f978d6 100644 (file)
@@ -442,6 +442,10 @@ $1',
 'youhavenewmessages' => 'आपके लिए $1 है। ($2)',
 'newmessageslink' => 'नए सन्देश',
 'newmessagesdifflink' => 'पिछला बदलाव',
+'youhavenewmessagesfromusers' => 'आपके लिये {{PLURAL:$3|एक अन्य सदस्य का सन्देश है|$3 अन्य सदस्यों के सन्देश हैं}}। ($2)',
+'youhavenewmessagesmanyusers' => 'आपके लिये $1 हैं। ($2)',
+'newmessageslinkplural' => '{{PLURAL:$1|एक नया सन्देश|नये सन्देश}}',
+'newmessagesdifflinkplural' => 'अंतिम {{PLURAL:$1|परिवर्तन}}',
 'youhavenewmessagesmulti' => '$1 पर आपके लिए नया संदेश है',
 'editsection' => 'सम्पादन',
 'editold' => 'सम्पादन',
@@ -567,6 +571,7 @@ $2',
 इसके लिये निम्न कारण दिया गया है: "\'\'$2\'\'"',
 'invalidtitle-knownnamespace' => '"$2" नामस्थान और "$3" नाम वाला गलत शीर्षक',
 'invalidtitle-unknownnamespace' => 'अज्ञात नामस्थान संख्या $1 और नाम "$2" वाला गलत शीर्षक',
+'exception-nologin' => 'लॉग इन नहीं किया है',
 
 # Virus scanner
 'virus-badscanner' => "गलत जमाव: अज्ञात वायरस जाँचक: ''$1''",
@@ -586,6 +591,7 @@ $2',
 'remembermypassword' => 'इस ब्राउज़र पर मेरा लॉगिन याद रखें (अधिकतम $1 {{PLURAL:$1|दिन|दिनों}} के लिए)',
 'securelogin-stick-https' => 'प्रवेश के बाद HTTPS से जुड़े रहें',
 'yourdomainname' => 'आपका डोमेन:',
+'password-change-forbidden' => 'आप इस विकि पर कूटशब्द नहीं बदल सकते हैं।',
 'externaldberror' => 'या तो प्रमाणिकरण डाटाबेस में त्रुटि हुई है या फिर आपको अपना बाह्य खाता अपडेट करने की अनुमति नहीं है।',
 'login' => 'लॉग इन',
 'nav-login-createaccount' => 'सत्रारंभ / खाता खोलें',
@@ -1191,8 +1197,6 @@ $1",
 'search-interwiki-caption' => 'अन्य प्रकल्प',
 'search-interwiki-default' => '$1 के परिणाम:',
 'search-interwiki-more' => '(और)',
-'search-mwsuggest-enabled' => 'सुझाव सहित',
-'search-mwsuggest-disabled' => 'सुझाव नहीं',
 'search-relatedarticle' => 'सम्बंधित',
 'mwsuggest-disable' => 'AJAX सुझाव बंद करें',
 'searcheverything-enable' => 'सभी नामस्थानों में खोजें',
@@ -3855,4 +3859,6 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|शताब्दी}}',
 'duration-millennia' => '$1 {{PLURAL:$1|सहस्राब्दी}}',
 
+# Unknown messages
+'searchsuggest-search' => 'खोज',
 );
index 261937c..1fa9898 100644 (file)
@@ -1056,8 +1056,6 @@ Ii baat ke dhyan me rakhna ki navigation jorr ke kaam me laae se ii column reset
 'search-interwiki-caption' => 'Saathe ke project',
 'search-interwiki-default' => '$1 ke result:',
 'search-interwiki-more' => '(aur)',
-'search-mwsuggest-enabled' => 'bichar ke saathe',
-'search-mwsuggest-disabled' => 'koi bichar nai hae',
 'search-relatedarticle' => 'sambandh rakkhe hai',
 'mwsuggest-disable' => 'AJAX sughao ke beasar karo',
 'searcheverything-enable' => 'Sab namespaces me khojo',
@@ -3027,4 +3025,6 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
 'revdelete-unrestricted' => 'sysops se hatawa gae rukawat',
 'newuserlog-byemail' => 'password ke e-mail se bheja gais hai',
 
+# Unknown messages
+'searchsuggest-search' => 'Khojo',
 );
index e34ebfd..c4310df 100644 (file)
@@ -1074,8 +1074,6 @@ Ang mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-caption' => 'Mga Utod proyekto',
 'search-interwiki-default' => '$1 mga resulta:',
 'search-interwiki-more' => '(damu)',
-'search-mwsuggest-enabled' => 'may suhestiyon',
-'search-mwsuggest-disabled' => 'wala suhestiyon',
 'search-relatedarticle' => 'Konektado',
 'mwsuggest-disable' => 'Untaton ang mga suhestiyon sang AJAX',
 'searcheverything-enable' => 'Pangitaon sa tanan nga espasyo sang pangalan',
index bc1fbfe..de468d8 100644 (file)
@@ -1310,8 +1310,6 @@ Primijetite da uporaba navigacijskih poveznica resetira Vaše izbore u stupcu.',
 'search-interwiki-caption' => 'Sestrinski projekti',
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
-'search-mwsuggest-enabled' => 's prijedlozima',
-'search-mwsuggest-disabled' => 'nema prijedloga',
 'search-relatedarticle' => 'Povezano',
 'mwsuggest-disable' => 'Isključi AJAX prijedloge',
 'searcheverything-enable' => 'Traži u svim imenskim prostorima',
@@ -2859,7 +2857,6 @@ Snimite je na svoje računalo i postavite je ovdje.',
 
 # JavaScriptTest
 'javascripttest' => 'Testiranje JavaScripta',
-'javascripttest-disabled' => 'Ova funkcija nije omogućena na ovom wikiprojektu.',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Moja suradnička stranica',
@@ -3922,4 +3919,7 @@ Inače, možete ispuniti jednostavan obrazac u nastavku. Vaš komentar biti će
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'sadrži....',
+'searchsuggest-search' => 'Traži',
 );
index a9c2d02..f85af3b 100644 (file)
@@ -310,7 +310,7 @@ $messages = array(
 'vector-action-protect' => 'škitać',
 'vector-action-undelete' => 'Wobnowić',
 'vector-action-unprotect' => 'Škit wotstronić',
-'vector-simplesearch-preference' => 'Polěpšene pytanske namjety zmóžnić (jenož šat Vector)',
+'vector-simplesearch-preference' => 'Zjednorjenu pytansku lajstu zmóžnić (jenož drasta Vector)',
 'vector-view-create' => 'Wutworić',
 'vector-view-edit' => 'Wobdźěłać',
 'vector-view-history' => 'Stawizny',
@@ -1148,8 +1148,6 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'search-interwiki-caption' => 'Sotrowske projekty',
 'search-interwiki-default' => '$1 wuslědki:',
 'search-interwiki-more' => '(dalše)',
-'search-mwsuggest-enabled' => 'z namjetami',
-'search-mwsuggest-disabled' => 'žane namjety',
 'search-relatedarticle' => 'Přiwuzne',
 'mwsuggest-disable' => 'Namjety AJAX znjemóžnić',
 'searcheverything-enable' => 'We wšěch mjenowych rumach pytać',
@@ -2736,7 +2734,6 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
 
 # JavaScriptTest
 'javascripttest' => 'JavaScriptowy test',
-'javascripttest-disabled' => 'Tuta funkcija njeje na tutym wikiju zmóžnjena.',
 'javascripttest-title' => 'Testy $1 so přewjedu',
 'javascripttest-pagetext-noframework' => 'Tuta strona je za přewjedźenje javascriptowych testow přewostajena.',
 'javascripttest-pagetext-unknownframework' => 'Njeznaty wobłuk "$1".',
@@ -3773,4 +3770,7 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'duration-centuries' => '$1 {{PLURAL:$1|lětstotk|lětstotkaj|lětstotki|lětstotkow}}',
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysacaj|lěttysacy|lěttysacow}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'wobsahuje...',
+'searchsuggest-search' => 'Pytać',
 );
index a2a5394..6be61f7 100644 (file)
@@ -905,8 +905,6 @@ Lejand : ({{MediaWiki:Cur}}) = diferans ak vèsyon kounye a, ({{MediaWiki:Last}}
 'search-interwiki-caption' => 'Pwojè frè, ki ansanm oubyen ki ap deplwaye ansanm',
 'search-interwiki-default' => 'Rezilta yo pou $1 :',
 'search-interwiki-more' => '(plis)',
-'search-mwsuggest-enabled' => 'ak sijesyon, kèk lide',
-'search-mwsuggest-disabled' => 'san lide, san endikasyon',
 'nonefound' => "'''Remak''' : sèl kèk espas non chache nan sityasyon nòmal.
 Eseye mete prefiks ''all:'' devan tèm rechèche ou an pou chache nan tout kontni a (sa conprann paj diskisyon yo, modèl yo, etc.) oubyen itilize espas non ou ta renmen pou prefiks.",
 'powersearch' => 'Fouye fon',
index 3c2e2ce..80d67b9 100644 (file)
@@ -687,7 +687,7 @@ Lekérdezés: $2',
 'viewsourcetext' => 'Megtekintheted és másolhatod a lap forrását:',
 'viewyourtext' => "Megtekintheted és kimásolhatod a '''saját szerkesztéseidet''' az alábbi lapra:",
 'protectedinterface' => 'Ez a lap a szoftver felületéhez szolgáltat szöveget, és a visszaélések elkerülése miatt le van zárva.',
-'editinginterface' => "'''Vigyázat:''' egy olyan lapot szerkesztesz, ami a MediaWiki szoftver felületéhez tartozik. A lap megváltoztatása hatással lesz más szerkesztők számára is. Fordításra inkább használd a MediaWiki fordítására indított kezdeményezést, a [//translatewiki.net/wiki/Main_Page?setlang=hu translatewiki.net-et].",
+'editinginterface' => "'''Vigyázat:''' egy olyan lapot szerkesztesz, ami a MediaWiki szoftver felületéhez tartozik. A lap megváltoztatása hatással lesz a kinézetre, ahogy más szerkesztők látják a lapot. Fordításra inkább használd a MediaWiki fordítására indított kezdeményezést, a [//translatewiki.net/wiki/Main_Page?setlang=hu translatewiki.net-et].",
 'sqlhidden' => '(rejtett SQL lekérdezés)',
 'cascadeprotected' => 'Ez a lap szerkesztés elleni védelemmel lett ellátva, mert a következő {{PLURAL:$1|lapon|lapokon}} be van kapcsolva a „kaszkádolt” védelem:
 $2',
@@ -1311,8 +1311,6 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
 'search-interwiki-caption' => 'Társlapok',
 'search-interwiki-default' => '$1 találat',
 'search-interwiki-more' => '(több)',
-'search-mwsuggest-enabled' => 'javaslatokkal',
-'search-mwsuggest-disabled' => 'javaslatok nélkül',
 'search-relatedarticle' => 'Kapcsolódó',
 'mwsuggest-disable' => 'AJAX-alapú keresési javaslatok letiltása',
 'searcheverything-enable' => 'Keresés az összes névtérben',
@@ -2917,7 +2915,6 @@ Mentsd el a számítógépedre, majd töltsd fel ide.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript tesztelés',
-'javascripttest-disabled' => 'Ez a funkció nincs engedélyezve ebben a wikiben.',
 'javascripttest-title' => '$1 tesztek futtatása',
 'javascripttest-pagetext-noframework' => 'Ez az oldal JavaStript tesztek futtatására van fenntartva.',
 'javascripttest-pagetext-unknownframework' => 'Ismeretlen teszt keretrendszer: $1.',
@@ -3959,4 +3956,7 @@ A képek teljes méretben jelennek meg, más fájltípusok közvetlenül a hozz
 'duration-centuries' => '{{PLURAL:$1|egy|$1}} évszázad',
 'duration-millennia' => '{{PLURAL:$1|egy|$1}} évezred',
 
+# Unknown messages
+'searchsuggest-containing' => 'tartalmazza…',
+'searchsuggest-search' => 'Keresés',
 );
index 135e150..5197d9a 100644 (file)
@@ -1199,8 +1199,6 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'search-interwiki-caption' => 'Projectos fratres',
 'search-interwiki-default' => 'Resultatos de $1:',
 'search-interwiki-more' => '(plus)',
-'search-mwsuggest-enabled' => 'con suggestiones',
-'search-mwsuggest-disabled' => 'sin suggestiones',
 'search-relatedarticle' => 'Connexe',
 'mwsuggest-disable' => 'Disactivar suggestiones via AJAX',
 'searcheverything-enable' => 'Cercar in tote le spatios de nomines',
@@ -2866,7 +2864,6 @@ Salveguarda lo in tu computator e incarga lo hic.',
 
 # JavaScriptTest
 'javascripttest' => 'Test de JavaScript',
-'javascripttest-disabled' => 'Iste function non ha essite activate in iste wiki.',
 'javascripttest-title' => 'Execution de $1 tests',
 'javascripttest-pagetext-noframework' => 'Iste pagina es reservate pro le execution de tests de JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Structura de test "$1" incognite.',
@@ -3937,4 +3934,7 @@ Si non, tu pote usar le formulario facile hic infra. Tu commento essera addite a
 'duration-centuries' => '$1 {{PLURAL:$1|seculo|seculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennio|millennios}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'continente...',
+'searchsuggest-search' => 'Cercar',
 );
index cd02b48..f3c69c6 100644 (file)
@@ -1340,8 +1340,6 @@ Pastikan bahwa perubahan ini tetap mempertahankan kontinuitas versi terdahulu ha
 'search-interwiki-caption' => 'Proyek lain',
 'search-interwiki-default' => 'Hasil $1:',
 'search-interwiki-more' => '(selanjutnya)',
-'search-mwsuggest-enabled' => 'dengan saran',
-'search-mwsuggest-disabled' => 'tidak ada saran',
 'search-relatedarticle' => 'Berkaitan',
 'mwsuggest-disable' => 'Non-aktifkan saran AJAX',
 'searcheverything-enable' => 'Cari di semua ruang nama',
@@ -2919,7 +2917,6 @@ Simpan ke komputer Anda dan unggah ke sini.',
 
 # JavaScriptTest
 'javascripttest' => 'Pengujian JavaScript',
-'javascripttest-disabled' => 'Fungsi ini belum diaktifkan di wiki ini.',
 'javascripttest-title' => '$1 pengujian sedang berjalan',
 'javascripttest-pagetext-noframework' => 'Halaman ini disediakan untuk pengujian JavaScript yang sedang berjalan.',
 'javascripttest-pagetext-unknownframework' => 'Pengujian kerangka kerja "$1" tidak diketahui',
@@ -3989,4 +3986,7 @@ Jika tidak, Anda dapat menggunakan formulir mudah di bawah ini. Komentar Anda ak
 'duration-centuries' => '{{PLURAL:$1||}}$1 abad',
 'duration-millennia' => '{{PLURAL:$1||}}$1 milenium',
 
+# Unknown messages
+'searchsuggest-containing' => 'isian ...',
+'searchsuggest-search' => 'Cari',
 );
index fcc45d6..78fd4f8 100644 (file)
@@ -732,8 +732,6 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 'search-interwiki-caption' => 'Orürü nwanne nwanyị',
 'search-interwiki-default' => '$1 nke ziri:',
 'search-interwiki-more' => '(dikarírí)',
-'search-mwsuggest-enabled' => 'ma okwu',
-'search-mwsuggest-disabled' => 'adighi okwu',
 'search-relatedarticle' => 'Nwanne',
 'searcheverything-enable' => 'Chọwa na ébé nílé',
 'searchrelated' => 'nke kọlu',
@@ -1684,4 +1682,6 @@ Nke ozor gí zonari na áká onwe ha.
 'htmlform-reset' => 'Emekwàlà gbanwere',
 'htmlform-selectorother-other' => 'Nke ozor',
 
+# Unknown messages
+'searchsuggest-search' => 'Chọwa',
 );
index dad3fa1..e721dc4 100644 (file)
@@ -273,7 +273,7 @@ $1',
 'copyrightpage' => '{{ns:project}}:Dagiti Karbengan-Panagipablaak',
 'currentevents' => 'Agdama a paspasamak',
 'currentevents-url' => 'Project:Agdama a paspasamak',
-'disclaimers' => 'Dagiti karbengan ken rebbeng',
+'disclaimers' => 'Dagiti renunsia',
 'disclaimerpage' => 'Project:Sapasap ti karbengan ken rebbeng',
 'edithelp' => 'Tulong ti panag-urnos',
 'edithelppage' => 'Help:Panag-urnos',
@@ -321,9 +321,9 @@ $1',
 'feed-invalid' => 'Saan a mabalin a kita ti maala a pakan.',
 'feed-unavailable' => 'Awan dagiti magun-od a sindikasion ti pakan',
 'site-rss-feed' => '$1 Pakan ti RSS',
-'site-atom-feed' => '$1 Pakan ti Atomo',
+'site-atom-feed' => '$1 Pakan ti Atom',
 'page-rss-feed' => '"$1" Pakan ti RSS',
-'page-atom-feed' => 'Pakan nga Atomo ti "$1"',
+'page-atom-feed' => 'Pakan nga Atom ti "$1"',
 'red-link-title' => '$1 (awan ti panid)',
 'sort-descending' => 'Ilasin nga agpababa',
 'sort-ascending' => 'Ilasin nga agpangato',
@@ -401,8 +401,8 @@ Awan ti intedna a palawag.',
 'badtitle' => 'Madi a titulo',
 'badtitletext' => 'Ti nakiddaw a titulo ti panid ket imbalido, blanko, wenno maysa a saan nga husto a naisilpo a titulo nga inter-lengguahe wenno inter-wiki a titulo.
 Adda ngata nagyan a maysa wenno ad-adu pay a kababalin a saan a mausar iti titulo.',
-'perfcached' => 'Ti sumaganad a data ket naidulin ken mabalin a saan a napabaro. Ti kaadu {{PLURAL:$1|iti maysa a nagbanagant|dagiti $1 a nagbanagan}} ket magun-od idiay nagidulinan.',
-'perfcachedts' => 'Ti sumaganad a data 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.',
+'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. 
 Saan a mipasaradiwa ita dagiti datos ditoy.',
 'wrong_wfQuery_params' => 'Kamali a parametro iti wfQuery()<br />
@@ -719,10 +719,8 @@ tapno maawanan ti panakaulaw kadagiti sabali a di am-ammo nga agar-aramat.",
 Mabalinmo ti [[Special:Search/{{PAGENAME}}|agsapul iti kastoy a titulo ti panid]] kadagiti sabsabali a pampanid,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbirukka],
 wenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} urnosem daytoy a panid].',
-'noarticletext-nopermission' => 'Awan pay ti  nagyanna daytoy a panid.
-Mabalinmo ti [[Special:Search/{{PAGENAME}}|agsapul iti kastoy a titulo ti panid]] iti sabsabali a pampanid,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbirukka],
-wenno <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbirukka kadagiti maikabagian a listaan]</span>.',
+'noarticletext-nopermission' => 'Awan ti agdama  a linaon daytoy a panid.
+Mabalinmo ti [[Special:Search/{{PAGENAME}}|agbiruk para iti titulo ti daytoy a panid]] kadagiti dadduma 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.',
 'missing-revision' => 'Ti panagbalbaliw ti #$1 tipanid a nanaganan ti "{{PAGENAME}}" ket awan.
 
 Daytoy ket kadawyan a gapuanan babaen ti samaganad a panilpo ti baak a pakasaritaan iti maysa a panid a naikkaten.
@@ -808,7 +806,7 @@ Ti naudi a naikabil a listaan ket adda dita baba tapno usaren a reperensia:",
 'titleprotectedwarning' => "'''Ballaag:  Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan a karbengan ]] ket nasken ti makapartuat iti daytoy.'''
 Ti kinaudi a naikabil iti listaan ket naikabil dita baba tapno usaren a reperensia:",
 'templatesused' => '{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panid:',
-'templatesusedpreview' => '{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a nausar iti daytoy a panagpadas:',
+'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)',
@@ -1049,7 +1047,7 @@ Usaren ti radio a buton a tukol ti pinagtipon iti laeng panagbaliw a naaramid id
 'showhideselectedversions' => 'Ipakita/ilemmeng dagiti napili a nabaliwan',
 'editundo' => 'ibabawi',
 'diff-multi' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|Dagiti $1 nga agtennga a panangbalbaliw}} babaen {{PLURAL:$2|ti agararamat|dagiti $2 nga agararamat}} ti 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}} 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.
 
 Daytoy ket kadawyan a gapuanan babaen ti sumaganad a nabaak a panilpo tipaggiddiatan ti maysa a panid a naikkaten.
@@ -1096,8 +1094,6 @@ Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete
 'search-interwiki-caption' => 'Dagiti kakabsat a gandat',
 'search-interwiki-default' => '$1 dagiti nagbanagan:',
 'search-interwiki-more' => '(adu pay)',
-'search-mwsuggest-enabled' => 'addaan dagiti singasing',
-'search-mwsuggest-disabled' => 'awanan dagiti singasing',
 'search-relatedarticle' => 'Mainaig',
 'mwsuggest-disable' => 'Pagsardengen dagiti AJAX a naisingasing',
 'searcheverything-enable' => 'Agbirukka kadagiti amin a nagan ti lugar',
@@ -1168,7 +1164,7 @@ Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 'columns' => 'Tuk-tukol:',
 'searchresultshead' => 'Biruken',
 'resultsperpage' => 'Nabirukan ti tunggal maysa a panid:',
-'stub-threshold' => 'Pangruggian ti <a href="#" class="stub">pungol a panilpo</a>panagporma (bytes):',
+'stub-threshold' => 'Pangruggian ti <a href="#" class="stub">pungol a panilpo</a>panagporma (dagiti byte):',
 'stub-threshold-disabled' => 'Nabaldado',
 'recentchangesdays' => 'Alaldaw nga ipakita dagiti kinaudi a binalbaliwan:',
 'recentchangesdays-max' => 'Kabayag nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}',
@@ -1197,7 +1193,7 @@ Adda ditoy ti pugto a pateg a mausarmo: $1',
 'timezoneregion-indian' => 'Taaw Indiano',
 'timezoneregion-pacific' => 'Taaw Pasipiko',
 'allowemail' => 'Pakabaelam ti e-surat a naggapu kadagiti sabali nga agar-aramat',
-'prefs-searchoptions' => 'Pagpilian ti panagbiruk',
+'prefs-searchoptions' => 'Biruken',
 'prefs-namespaces' => 'Nagan ti luglugar',
 'defaultns' => 'Wenno no saan agbirukka kadagitoy a nagan ti luglugar:',
 'default' => 'kasisigud',
@@ -1366,7 +1362,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 
 # User rights log
 'rightslog' => 'Listaan dagiti karbengan ti agar-aramat',
-'rightslogtext' => 'Listaan daytoy kadagiti sinukatan a karbengan ti agararamat.',
+'rightslogtext' => 'Listaan daytoy kadagiti sinukatan a karbengan ti agar-aramat.',
 'rightslogentry' => 'sinukatan ti panagkameng iti bunggoy ti $1 manipud $2 iti $3',
 'rightslogentry-autopromote' => 'naautomatiko a naipangato a naggapo iti $2 idiay $3',
 'rightsnone' => '(awan)',
@@ -1422,7 +1418,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'rcnotefrom' => "Makita dita baba dagiti sinukatan manipud idi '''$2''' (agingga iti '''$1''' ti naipakita).",
 'rclistfrom' => 'Ipakita dagiti kabarbaro a sinukatan a mangrugi manipud idi $1',
 'rcshowhideminor' => '$1 dagiti bassit a panag-urnos',
-'rcshowhidebots' => '$1 dagiti bots',
+'rcshowhidebots' => '$1 dagiti bot',
 'rcshowhideliu' => '$1 dagiti nakastrek nga agar-aramat',
 'rcshowhideanons' => '$1 dagiti di am-ammo nga agar-aramat',
 'rcshowhidepatr' => '$1 dagiti napatrulian a panag-urnos',
@@ -1603,7 +1599,7 @@ No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administr
 '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 tipapeles idiay $1.',
+'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-alreadyexists' => 'Ti papeles $1 ket addan.',
@@ -1785,13 +1781,13 @@ Baka kayatmo nga urnosen ti bukodna a deskripsionna idiay [$2 deskripsion ti pap
 ** Panagsalungasing iti karbengan ti panagkopia
 ** Nadoble a papeles',
 'filedelete-edit-reasonlist' => 'Unosen dagiti rason ti panagikkat',
-'filedelete-maintenance' => 'Saan nga agnayon a naibaldado ti pinagikkat ken pinagisubli dagiti papeles iti dagdama a panagsimpa.',
+'filedelete-maintenance' => 'Ti panagikkat ken panagisubli kadagiti papaeles ket nabaldado iti las-ud ti panagtartaripatu.',
 'filedelete-maintenance-title' => 'Saan a maikkat daytoy a papeles',
 
 # MIME search
 'mimesearch' => 'Pagbiruk ti MIME',
-'mimesearch-summary' => 'Daytoy a panid ket pakabaelan na ti panagsagat ti papeles iti kita da a MIME.
-Ikabil: kita ti nagyan/apo a kita, e.g. <code>image/jpeg</code>.',
+'mimesearch-summary' => 'Daytoy a panid ket pakabaelanna ti panagsagat ti papeles iti MIME a kitada.
+Ikabil: kita ti nagyan/apo a kita, a kas ti <code>image/jpeg</code>.',
 'mimetype' => 'Kita ti MIME:',
 'download' => 'Ikarga nga agpababa',
 
@@ -1839,9 +1835,8 @@ Laglagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkate
 'disambiguations' => 'Dagiti panid a nakasilpo kadagiti panangilawlawag',
 'disambiguationspage' => 'Template:Panangilawlawag',
 'disambiguations-text' => "Dagiti sumaganad a panid ket aglaon ti saan a basbasit ngem maysa a panilpo iti '''panangilawlawag a panid'''.
-Dagitoy ket mabalinno a nasken nga isilpo kadagiti embes a nasaysayaat a panid.<br />
-Ti panid ket matrato a kas panangilawlawag a panid no agusar ti plantilia a nakasilpo idiay
- [[MediaWiki:Disambiguationspage]]",
+Dagitoy ket embes a nasken a maisilpoda kadagiti maitutop a panid.<br />
+Ti panid ket matrato a kas panangilawlawag a panid no agusar ti plantilia a nakasilpo manipud idiay [[MediaWiki:Disambiguationspage]].",
 
 'doubleredirects' => 'Dagiti namindua a naibaw-ing',
 'doubleredirectstext' => 'Daytoy a panid ket ilistana dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.
@@ -2119,7 +2114,7 @@ Mailistanto ditoy dagiti pinagsukat daytoy a panid iti masakbayan agraman ti kan
 'created' => 'naaramid',
 'enotif_subject' => 'Ti {{SITENAME}} a panid a $PAGETITLE ket $CHANGEDORCREATED ni $PAGEEDITOR',
 '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 pinagsukat.',
+'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,
 
@@ -2155,10 +2150,10 @@ Ti makunkunam ken no masapulmo pay ti tulong:
 # Delete
 'deletepage' => 'Ikkaten ti panid',
 'confirm' => 'Pasingkedan',
-'excontent' => "ti linaon ket: '$1'",
-'excontentauthor' => 'ti linaonna ket: "$1" (ken ti laeng nakaaramid ket ni "[[Special:Contributions/$2|$2]]")',
-'exbeforeblank' => 'ti linaon sakbay a nablanko ket: "$1"',
-'exblank' => 'blanko ti panid',
+'excontent' => "ti linaon idi ket: '$1'",
+'excontentauthor' => 'ti linaonna idi ket: "$1" (ken ti laeng nakaaramid idi ket ni "[[Special:Contributions/$2|$2]]")',
+'exbeforeblank' => 'ti linaon sakbay idi nablanko ket: "$1"',
+'exblank' => 'blanko idi ti panid',
 '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}}:",
@@ -2382,10 +2377,10 @@ Ti naudi a listaan ti panakaserra ket adda dita baba ta usaren a reperensia:',
 'whatlinkshere-prev' => '{{PLURAL:$1|kallabes|kallabes $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|sumaruno|sumaruno $1}}',
 'whatlinkshere-links' => '← silsilpo',
-'whatlinkshere-hideredirs' => '$1 a panangibaw-ing',
-'whatlinkshere-hidetrans' => '$1 a mairamraman',
-'whatlinkshere-hidelinks' => '$1 a pampanilpo',
-'whatlinkshere-hideimages' => '$1 a pampanilpo ti imahen',
+'whatlinkshere-hideredirs' => '$1 dagiti baw-ing',
+'whatlinkshere-hidetrans' => '$1 dagiti mailaklak-am',
+'whatlinkshere-hidelinks' => '$1 dagiti silpo',
+'whatlinkshere-hideimages' => '$1 dagiti silpo ti imahen',
 'whatlinkshere-filters' => 'Dagiti sagat',
 
 # Block/unblock
@@ -2636,7 +2631,7 @@ Ti kinaudi a naikabil ti listaan ket adda iti baba tapno mausar a reperensia:",
 Pangngaasi nga agpilika ti sabali a nagan.',
 
 # Export
-'export' => 'Agipan dagiti panid',
+'export' => 'Agipan kadagiti panid',
 'exporttext' => 'Maipanmo ti testo ken pakasaritaan ti inurnos iti maysa a panid wenno pampanid a nabalkut ti XML.
 Daytoy ket mabalin a maikabil iti sabali a wiki nga agususar ti MediaWiki nga usaren ti [[Special:Import|pinagala ti panid]].
 
@@ -2654,8 +2649,8 @@ No iti kinaudi a kaso mabalinmo nga usaren ti panilpo, a kas pagarigan [[{{#Spec
 'export-addnstext' => 'Nayunan dagiti panid a naggapu idiay nagan ti lugar:',
 'export-addns' => 'Inayon',
 'export-download' => 'Idulin a kas papeles',
-'export-templates' => 'Ikabil dagiti plantilia',
-'export-pagelinks' => 'Ikkam dagiti nakasilpo a panid iti  kauneg a:',
+'export-templates' => 'Mangiraman kadagiti plantilia',
+'export-pagelinks' => 'Mangiraman kadagiti nakasilpo a panid iti  kauneg ti:',
 
 # Namespace 8 related
 'allmessages' => 'Dagiti mensahe ti sistema',
@@ -2689,14 +2684,14 @@ Pangngaasi a bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Local
 'thumbnail_image-missing' => 'Daytoy a papeles ket  kasla napukaw: $1',
 
 # Special:Import
-'import' => 'Agala dagiti panid',
+'import' => 'Agala kadagiti panid',
 'importinterwiki' => 'Agala ti transwiki',
 'import-interwiki-text' => 'Agpili ka ti wiki ken titulo ti panid nga alaem.
 Dagit panagbaliw a petsa ken dagiti nagan ti mannurat ket maipreserba.
 Amin a transwiki nga alaem ket mailista idiay [[Special:Log/import|listaan ti pinagala]].',
 'import-interwiki-source' => 'Taudan ti wiki/panid:',
 'import-interwiki-history' => 'Kopiaen amin dagiti bersion ti pakasaritaan daytoy a panid',
-'import-interwiki-templates' => 'Ikabil amin dagiti plantilia',
+'import-interwiki-templates' => 'Iraman amin dagiti plantilia',
 'import-interwiki-submit' => 'Agala',
 'import-interwiki-namespace' => 'Pangipanan ti nagan ti lugar:',
 'import-interwiki-rootpage' => 'Papanan a ramut ti panid (mapili):',
@@ -2749,7 +2744,6 @@ Pangngaasi ta padasem manen.',
 
 # JavaScriptTest
 'javascripttest' => 'Subsubokan ti JavaScript',
-'javascripttest-disabled' => 'Daytoy a pamay-an ket saan pay a napakabaelan iti daytoy a wiki.',
 '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".',
@@ -2762,7 +2756,7 @@ Pangngaasi ta padasem manen.',
 'tooltip-pt-userpage' => 'Daytoy ti panid mo',
 '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 ti pinagurnos a naggapu ditoy nga IP a pagtaengan',
+'tooltip-pt-anontalk' => 'Pakitungtungan a maipapan ti panagurnos a naggapu ditoy nga IP a pagtaengan',
 'tooltip-pt-preferences' => 'Dagiti kaykayatmo',
 'tooltip-pt-watchlist' => 'Listaan dagiti panid a sipsiputem ti panagsuksutda',
 'tooltip-pt-mycontris' => 'Listaan dagiti naaramidmo',
@@ -2778,13 +2772,13 @@ Mabalinmo a kitaen ti taudanna.',
 '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 a panid sakbay a naikkat.',
+'tooltip-ca-undelete' => 'Isubli dagiti inurnos ti 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-search-go' => 'Inka idiay panid nga adda kastoy a naganna no adda',
-'tooltip-search-fulltext' => 'Birukem dagiti panid daytoy a testo',
+'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',
@@ -2796,13 +2790,13 @@ Mabalinmo a kitaen ti taudanna.',
 '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-feed-rss' => 'RSS a pakan para iti daytoy a panid',
-'tooltip-feed-atom' => 'Atomo a pakan para itoy a panid',
+'tooltip-feed-atom' => 'Atom a pakan para iti daytoy a panid',
 'tooltip-t-contributions' => 'Kitaen ti listaan dagiti naaramidan daytoy nga agar-aramat',
 'tooltip-t-emailuser' => 'Patulodan ti e-surat daytoy nga agar-aramat',
 'tooltip-t-upload' => 'Agipan iti papeles',
 'tooltip-t-specialpages' => 'Listaan ti amin nga espesial a pampanid',
 'tooltip-t-print' => 'Maimaldit a bersion ti panid',
-'tooltip-t-permalink' => 'Permanente a silpo idiay binaliwan daytoy a panid',
+'tooltip-t-permalink' => 'Agnanayon a silpo ti daytoy a panagbaliw 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',
@@ -2945,7 +2939,7 @@ No usarem daytoy, baka makompromiso ti sistema.",
 'newimages-summary' => 'Daytoy nga espesial a panid ket ipakitana ti kinaudi a pinag-ipan kadagiti papeles.',
 'newimages-legend' => 'Sagat',
 'newimages-label' => 'Nagan ti papeles (wenno paset na) :',
-'showhidebots' => '($1 bots)',
+'showhidebots' => '($1 dagiti bot)',
 'noimages' => 'Awan ti makita.',
 'ilsubmit' => 'Biruken',
 'bydate' => 'babaen ti petsa',
@@ -3064,9 +3058,9 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-gaincontrol' => 'Scene control',
 'exif-contrast' => 'Contrast',
 'exif-saturation' => 'Saturation',
-'exif-sharpness' => 'Sharpness',
+'exif-sharpness' => 'Kalawag',
 'exif-subjectdistancerange' => 'Nasakup a kaadayo ti suheto',
-'exif-imageuniqueid' => 'Unique image ID',
+'exif-imageuniqueid' => 'Naisangsangayan nga ID ti imahen',
 'exif-gpsversionid' => 'Etiketa a bersion ti GPS',
 'exif-gpslatituderef' => 'Amianan wenno Abagatan a Latitude',
 'exif-gpslatitude' => 'Latitude',
@@ -3074,11 +3068,11 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-gpslongitude' => 'Longitude',
 'exif-gpsaltituderef' => 'Reperensia ti kangato',
 'exif-gpsaltitude' => 'Kangato',
-'exif-gpstimestamp' => 'GPS time (atomic clock)',
-'exif-gpssatellites' => 'Dagiti satellites a naaramat iti measurement',
+'exif-gpstimestamp' => 'GPS nga oras (atomiko a pagurasan)',
+'exif-gpssatellites' => 'Dagiti satelite a naaramat para iti panagrukod',
 'exif-gpsstatus' => 'Receiver status',
 'exif-gpsmeasuremode' => 'Panagrukod a moda',
-'exif-gpsdop' => 'Measurement precision',
+'exif-gpsdop' => 'Kasayaat ti panagrukod',
 'exif-gpsspeedref' => 'Speed unit',
 'exif-gpsspeed' => 'Kapaspas ti GPS receiver',
 'exif-gpstrackref' => 'Reperensia iti direksion ti panaggunay',
@@ -3151,7 +3145,7 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 '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-disclaimer' => 'Dagiti karbengan ken rebbeng',
+'exif-disclaimer' => 'Renunsia',
 'exif-contentwarning' => 'Ballaag ti nagyan',
 'exif-giffilecomment' => 'Komentario ti GIF a papeles',
 'exif-intellectualgenre' => 'Kita ti banag',
@@ -3392,7 +3386,7 @@ no kadamdama ka a nangaramid ti pakabilangam, aguray ka pay ti mano a minutos a
 'confirmemail_sent' => 'Naipatuloden ti pammasingked nga e-surat.',
 'confirmemail_oncreate' => 'Ti pakasingkedan a kodigo ket naipatulod dita e-surat a pagtaengam.
 Daytoy a kodigo ket saan a masapul ti sumrek, ngem masapulmo nga ited sakbay ka nga agpabalin kadagiti e-surat a langa ti wiki.',
-'confirmemail_sendfailed' => 'Ti {{SITENAME}} ket saan a makaipatulod ti pammasingke a surat.
+'confirmemail_sendfailed' => 'Ti {{SITENAME}} ket saan a makaipatulod ti pammasingked a surat.
 Pangngaasi a kitaem ti e-surat a pagtaengam para kadagiti imbalido a karakter.
 
 Insubli ti nangisurat: $1',
@@ -3562,9 +3556,9 @@ Mabalinmo pay nga [[Special:EditWatchlist|usaren ti dati a panagurnos]].',
 'version-license' => 'Lisensia',
 'version-poweredby-credits' => "Daytoy a wiki ket pinaandar ti '''[//www.mediawiki.org/ MediaWiki]''', karbengan a kopia © 2001-$1 $2.",
 'version-poweredby-others' => 'dadduma pay',
-'version-license-info' => 'Ti MediaWiki ket nawaya a software; maiwaras mo 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  ania man a bersion.
+'version-license-info' => 'Ti MediaWiki ket nawaya a software; 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  ania man a bersion.
 
-Ti MediaWiki ket naiwarwaras nga addaan 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.
+Ti 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.
 
 Naka-awat ka kuman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU Sapasap a  Publiko a Lisensia] a nairaman iti daytoy a programa; no saan, agsurat ka 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-software' => 'Naikabil a software',
@@ -3579,7 +3573,7 @@ Naka-awat ka kuman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU Sapasap a
 'filepath-page' => 'Papeles:',
 'filepath-submit' => 'Inkan',
 'filepath-summary' => 'Daytoy nga espesial a panid ket agisubli ti kompleto a dalan ti papeles.
-Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti papeles ket mangrugi da a idiay nakairamanan da a programa.',
+Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti papeles ket dagus a mangrugida idiay nakairamananda a programa.',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Agbiruk kadagiti duplikado a papeles',
@@ -3630,7 +3624,7 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'tag-filter' => '[[Special:Tags|Ti etiketa]] a sagat:',
 'tag-filter-submit' => 'Sagat',
 'tags-title' => 'Dagiti etiketa',
-'tags-intro' => 'Daytoy a panid ket ilista na dagiti etiketa nga usaren ti software nga agmarka ti panag-urnos, ken dagiti kayat da a saoen.',
+'tags-intro' => 'Daytoy a panid ket ilistana dagiti etiketa nga usaren ti software nga agmarka ti panag-urnos, ken dagiti kayatda a saoen.',
 'tags-tag' => 'Nagan ti etiketa',
 'tags-display-header' => 'Tabas dagiti listaan ti panagsukat',
 'tags-description-header' => 'Napno a panangipalpalawag iti kayatna a saoen.',
@@ -3761,7 +3755,7 @@ Nupay kasta, mau-sarmo ti nakabuklan dita baba. Ti komentario nga itedmo ket mai
 'api-error-unknown-code' => 'Di amamo a biddut: "$1"',
 'api-error-unknown-error' => 'Kinauneg a biddut: Addaan ti dakes a napasamak idi inpadas mo ti agipan ti papeles mo.',
 'api-error-unknown-warning' => 'Di am-ammo a ballaag: $1',
-'api-error-unknownerror' => 'Di amamo a biddut: "$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.',
 
@@ -3776,4 +3770,7 @@ Nupay kasta, mau-sarmo ti nakabuklan dita baba. Ti komentario nga itedmo ket mai
 'duration-centuries' => '$1 {{PLURAL:$1|siglo|sig-siglo}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|mil-milenio}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'naglaon ti...',
+'searchsuggest-search' => 'Biruken',
 );
index 2703227..395b33c 100644 (file)
@@ -24,26 +24,26 @@ $messages = array(
 'tog-newpageshidepatrolled' => 'Керда оагӀувна дагарленач дӀанийсаяь хувцамаш къайладаккха',
 'tog-extendwatchlist' => 'Шераяь теркама дагарле, массадола хувцамаш чулоацаш',
 'tog-usenewrc' => 'Керда хувцами теркама дагарлеи хувцамаш тоабъе (JavaScript)',
-'tog-numberheadings' => 'Ð\9aеÑ\80Ñ\82еÑ\80а-деÑ\88а Ñ\82аÑ\8cÑ\80аÑ\85Ñ\8c Ñ\88ий Ð»Ð¾Ó\80амаÑ\86а Ð¾Ñ\82Ñ\82ае',
-'tog-showtoolbar' => 'Ð\93Ó\80алаÑ\82нийcдаÑ\80а Ñ\8eкÑ\8aе Ð»Ð°ÐºÑ\85еÑ\80а Ð³Ó\80иÑ\80Ñ\81ий гартакх хьахьокха (JavaScript)',
+'tog-numberheadings' => 'Ð\9aоÑ\80Ñ\82аленаÑ\88Ñ\82 Ð°Ð»Ð°Ð½Ð·Ð° Ñ\82аÑ\8cÑ\80аÑ\85Ñ\8cал Ð´е',
+'tog-showtoolbar' => 'Ð\93Ó\80алаÑ\82нийcдаÑ\80а Ñ\8eкÑ\8aе Ð»Ð°ÐºÑ\85еÑ\80а Ð³Ó\80оÑ\80Ñ\81ан гартакх хьахьокха (JavaScript)',
 'tog-editondblclick' => 'Шозза цлицакацa oагӀув хувца (JavaScript)',
 'tog-editsection' => 'ХӀара дакъа "хувца" яха Ӏинк хьахьокха',
 'tog-editsectiononrightclick' => 'Декъам хувца кертмугӀа аьтта цлицака я (JavaScript)',
 'tog-showtoc' => 'Кортанче хьокха (кхьаннена дукхагӀа кертмугӀанаш йoлa оагӀувна)',
-'tog-rememberpassword' => '(Ñ\83кÑ\85 $1 {{PLURAL:$1|ден|деноÑ\88к}}) Ð¼Ð°Ñ\80а Ñ\81а Ñ\87Ñ\83валаÑ\80а/Ñ\87Ñ\83Ñ\8fлаÑ\80а Ð´Ð°Ð³Ð°Ð»Ð¾Ð°Ñ\86а Ð´ÐµÐ·Ð°Ñ\88 Ð´Ð°Ñ\86',
-'tog-watchcreations' => 'Аз яь йола оагӀувнаш теркама дагарче йолач чуяьккха',
-'tog-watchdefault' => 'Аз хийца йола оагӀувнаш теркама дагарче йолач чуяьккха',
-'tog-watchmoves' => 'Аз цӀи хийца йола оагӀувнаш теркама дагарче йолач чуяьккха',
-'tog-watchdeletion' => 'Аз дӀаяьккха йола оагӀувнаш теркама дагарче йолач чуяьккха',
+'tog-rememberpassword' => '(укх $1 {{PLURAL:$1|ден|деношк}}) мара са чувалара/ялара дагалоаца дезаш дац',
+'tog-watchcreations' => 'Аз яь йола оагӀувнаш теркама дагарле йолач чуяьккха',
+'tog-watchdefault' => 'Аз хийца йола оагӀувнаш теркама дагарле йолач чуяьккха',
+'tog-watchmoves' => 'Аз цӀи хийца йола оагӀувнаш теркама дагарле йолач чуяьккха',
+'tog-watchdeletion' => 'Аз дӀаяьккха йола оагӀувнаш теркама дагарле йолач чуяьккха',
 'tog-minordefault' => 'Теркамза хувцамаш лоархӀамза белгалде',
 'tog-previewontop' => 'ГӀалатнийсдара кора хьалхе бӀаргтассам оттае',
 'tog-previewonfirst' => 'ГӀалатнийсдаре дехьавоалаш/йоалаш бӀаргтассам хьахьокха',
 'tog-nocache' => 'Укхазара оагӀувнаший лочкъараш дӀадоаде',
-'tog-enotifwatchlistpages' => 'ОагӀувний хувцамах теркама дагарчера лаьца, д-хоамнец хоам бе',
+'tog-enotifwatchlistpages' => 'ОагӀувний хувцамахи теркама дагарленахи лаьца, д-хоамнец хоам бе',
 'tog-enotifusertalkpages' => 'Са дувцама оагӀув тӀа хувцамаш хилача, д-хоамнец хоам бе',
 'tog-enotifminoredits' => 'Геттара зӀамига хувцамаш хилача, д-хоамнец хоам бе',
 'tog-enotifrevealaddr' => 'ЗӀы хоамаш тӀа са хоамни моттиг хьахьокха',
-'tog-shownumberswatching' => 'Ший теркама дагарченгахь оагӀув чулаьца бола дакъалаьцархой таьрах хьахьокха',
+'tog-shownumberswatching' => 'Ший теркама дагарленгах оагӀув чулаьца бола дакъалаьцархой таьрах хьахьокха',
 'tog-oldsig' => 'Дола кулгайоазув:',
 'tog-fancysig' => 'Ший кулга яздара массахоамбаккхам (ший лоӀаме Ӏинка йоацаш)',
 'tog-externaleditor' => 'Арена гӀалатнийсдарца болх бе (ший болх ховш болачара мара мегаш дац, хьамлоархIара ший-тайпара оттам эша; [//www.mediawiki.org/wiki/Manual:External_editors хьажа эша])',
@@ -59,7 +59,7 @@ $messages = array(
 'tog-watchlisthidepatrolled' => 'Теркама дагарчера дӀанийсъя хувцамаш къайлаяьккха',
 'tog-ccmeonemails' => 'Аз дакъалаьцархошоа дахта каьхаташ са д-хоамни тӀа хьатӀадайта',
 'tog-diffonly' => 'Диста кIал йоалаж йола оагӀувна дакъа ма хьокха',
-'tog-showhiddencats' => 'Къайла цатегаш хьахьокха',
+'tog-showhiddencats' => 'Къайла катагаш хьахьокха',
 
 'underline-always' => 'Массаза',
 'underline-never' => 'ЦӀаккха',
@@ -121,19 +121,19 @@ $messages = array(
 'dec' => 'Чант.',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|ЦаÑ\82ег|ЦаÑ\82егаш}}',
-'category_header' => '"$1" Ð¦Ð°Ñ\82егÑ\87Ñ\83 оагӀувнаш',
-'subcategories' => 'Чурацатегаш',
-'category-media-header' => '"$1" Ð¦Ð°Ñ\82егÑ\87Ñ\83 паьлаш',
-'category-empty' => "''Укх цатегчоа цхьаккха оагӀувнаш е паьлаш яц.''",
-'hidden-categories' => '{{PLURAL:$1|Къайла цатег|Къайла цатегаш}}',
-'hidden-category-category' => 'Къайла цатегаш',
-'category-subcat-count' => '{{PLURAL:$2|Йола цатег тӀехьара бухцатег чулоаца.|{{PLURAL:$1|$1 бухцатег хьахьекха я|$1 бухцатегаш хьахьекха я}} $2 йолачара.}}',
-'category-subcat-count-limited' => 'Укх цатегий {{PLURAL:$1|$1 кӀалцатег|$1 кӀалцатегаш}}.',
+'pagecategories' => '{{PLURAL:$1|Ð\9aаÑ\82аг|Ð\9aаÑ\82агаш}}',
+'category_header' => '"$1" Ð\9aаÑ\82агаÑ\87аÑ\80 оагӀувнаш',
+'subcategories' => 'Чуракатагаш',
+'category-media-header' => '"$1" Ð\9aаÑ\82агаÑ\87аÑ\80 паьлаш',
+'category-empty' => "''Укх катагчоа цхьаккха оагӀувнаш е паьлаш яц.''",
+'hidden-categories' => '{{PLURAL:$1|Къайла катаг|Къайла катагаш}}',
+'hidden-category-category' => 'Къайла катагаш',
+'category-subcat-count' => '{{PLURAL:$2|Йола катаг тӀехьара бухкатаг чулоаца.|{{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-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-file-count-limited' => 'Укх катагач {{PLURAL:$1|$1 паьл|$1 паьлаш}}.',
 'listingcontinuesabbrev' => 'дӀахо',
 'index-category' => 'ДIахьожаман оагӀувнаш',
 'noindex-category' => 'ДIахьожаманза оагӀувнаш',
@@ -181,18 +181,18 @@ $messages = array(
 'errorpagetitle' => 'ГӀалат',
 'returnto' => '$1 оагӀув тӀа юхавалар/ялар',
 'tagline' => 'Кечал укхазара я {{SITENAME}}',
-'help' => 'Ð\9dовкÑ\8a\81Ñ\82ал',
+'help' => 'Ð\9aÑ\83Ñ\86Ñ\82оÑ\85кам',
 'search' => 'Лахаp',
 'searchbutton' => 'Хьалаха',
 'go' => 'Дехьавала',
 'searcharticle' => 'Дехьавала',
 'history' => 'искар',
 'history_short' => 'Искар',
-'updatedmarker' => 'Со Ñ\85анаÑ\87а Ð´ÐµÐ½Ñ\86а Ñ\85Ñ\83вÑ\86амаÑ\88 Ñ\85иннaй',
+'updatedmarker' => 'Со Ñ\85анаÑ\87а Ð´ÐµÐ½Ñ\86а Ñ\85Ñ\83вÑ\86амаÑ\88 Ñ\85иннaд',
 'printableversion' => 'Каьхатзарбане доржам',
 'permalink' => 'Даим латта Ӏинк',
 'print' => 'Каьхат арадаккха',
-'view' => 'БӀаргтассар',
+'view' => 'БӀаргтассам',
 'edit' => 'Хувца',
 'create' => 'Хьаде',
 'editthispage' => 'Ер оагӀув хувца',
@@ -220,9 +220,9 @@ $messages = array(
 'projectpage' => 'Хьахьоадайтама оагӀуве бӀаргтасса',
 'imagepage' => 'Паьла оагӀув тӀа бӀаргтасса',
 'mediawikipage' => 'Xоаман оагӀув хьахьокха',
-'templatepage' => 'ЧӀабла оагӀув тӀа бӀаргтасса',
-'viewhelppage' => 'Ð\93Ó\80о Ð´еха',
-'categorypage' => 'ЦаÑ\82ега оагӀув тӀа бӀаргтасса',
+'templatepage' => 'ЧÓ\80абала Ð¾Ð°Ð³Ó\80Ñ\83в Ñ\82Ó\80а Ð±Ó\80аÑ\80гÑ\82аÑ\81Ñ\81а',
+'viewhelppage' => 'Ð\9aÑ\83Ñ\86Ñ\82оÑ\85кам Ð±еха',
+'categorypage' => 'Ð\9aаÑ\82ага оагӀув тӀа бӀаргтасса',
 'viewtalkpage' => 'Дувцамага бӀаргтасса',
 'otherlanguages' => 'Кхыча меттал',
 'redirectedfrom' => '($1 тӀера хьадейта да)',
@@ -233,6 +233,7 @@ $messages = array(
 'jumpto' => 'Укхаза дехьавала/яла:',
 'jumptonavigation' => 'никътохкарг',
 'jumptosearch' => 'леха',
+'pool-timeout' => 'ЧIегатохара сабаран ха чакхаяьннай',
 'pool-queuefull' => 'Хаттарий цӀа хьалдизад',
 'pool-errorunknown' => 'Довзаш доаца гӀалат',
 
@@ -245,8 +246,8 @@ $messages = array(
 'currentevents-url' => 'Project:ХӀанзара хоамаш',
 'disclaimers' => 'Бокъонах юхавалаp',
 'disclaimerpage' => 'Project:Бокъонах юхавалаp',
-'edithelp' => 'Ð¥Ñ\83вÑ\86ама Ð½Ð¾Ð²ÐºÑ\8aоÑ\81Ñ\82ал',
-'edithelppage' => 'Help:ГӀалатнийсдара новкъoстал',
+'edithelp' => 'Ð¥Ñ\83вÑ\86ама ÐºÑ\83Ñ\86Ñ\82оÑ\85кам',
+'edithelppage' => 'Help:ГӀалатнийсдар',
 'helppage' => 'Help:Чулоацам',
 'mainpage' => 'Кертера оагӀув',
 'mainpage-description' => 'Кертера оагӀув',
@@ -271,7 +272,7 @@ $messages = array(
 'youhavenewmessagesmulti' => 'Оаш $1чу керда хоамаш дӀайийцад',
 'editsection' => 'хувца',
 'editold' => 'хувца',
-'viewsourceold' => 'xÑ\8cадоагÓ\80а ÐºÑ\8aайладоагÓ\80а тӀа бӀаргтасса',
+'viewsourceold' => 'xÑ\8cайоагÓ\80а ÐºÑ\8aайлоÑ\80г тӀа бӀаргтасса',
 'editlink' => 'хувца',
 'viewsourcelink' => 'xьайоагӀа къайлорг тӀа бӀаргтасса',
 'editsectionhint' => 'Декъам хувца: $1',
@@ -295,16 +296,16 @@ $messages = array(
 'nstab-user' => 'Дакъалаьцархо',
 'nstab-media' => 'Медифаг',
 'nstab-special' => 'ГӀулакха оагӀув',
-'nstab-project' => 'Хьахьоадайтамах лаьца',
+'nstab-project' => 'Хьахоадайтамах лаьца',
 'nstab-image' => 'Паьл',
 'nstab-mediawiki' => 'Хоам',
 'nstab-template' => 'ЧIабал',
-'nstab-help' => 'Ð\9dовкÑ\8a\81Ñ\82ал',
-'nstab-category' => 'ЦаÑ\82ег',
+'nstab-help' => 'Ð\9aÑ\83Ñ\86Ñ\82оÑ\85кам',
+'nstab-category' => 'Ð\9aаÑ\82аг',
 
 # Main script and global functions
 'nosuchaction' => 'Цу тайпара дулархIам бац',
-'nosuchspecialpage' => 'Изза мо гӀооагӀув яц',
+'nosuchspecialpage' => 'Ð\98зза Ð¼Ð¾ Ð³Ó\80он Ð¾Ð°Ð³Ó\80Ñ\83в Ñ\8fÑ\86',
 
 # General errors
 'error' => 'ГӀалат',
@@ -317,6 +318,7 @@ $messages = array(
 'missingarticle-rev' => '(бӀаргоагӀув № $1)',
 'internalerror' => 'Чура гӀалат',
 'internalerror_info' => 'Чура гӀалат: $1',
+'cannotdelete-title' => 'ОагIув дIаяккха йиш яц "$1"',
 'badtitle' => 'Мегаш йоаца цӀи',
 'badtitletext' => 'Дехаш дола оагӀувни цӀи, нийса яц, яьсса я е меттаюкъара е массаюкъара цӀи харцахь я. ЦӀера юкъе мегаш доаца харакъаш нийсаденна хила мегаш да.',
 'viewsource' => 'БIаргтассам',
@@ -334,23 +336,25 @@ $messages = array(
 'yourdomainname' => 'Шун цӀеноагӀув:',
 'login' => 'Чувала/яла',
 'nav-login-createaccount' => 'ЦӀи яьккха/Ший oагӀув ела',
-'loginprompt' => 'УкÑ\85 Ð±Ð¾Ð»Ñ\85aоагÓ\80Ñ\83ваца доттагӀал лаца, шун "cookies" йийла хьалдеза.',
+'loginprompt' => 'УкÑ\85 Ð±ÐµÐ»Ñ\85аÑ\86Ñ\85Ñ\8cоагIоца доттагӀал лаца, шун "cookies" йийла хьалдеза.',
 'userlogin' => 'ЦӀи яьккха/ОагӀув ела',
 'userloginnocreate' => 'Чувала/яла',
 'logout' => 'Аравала/яла',
 'userlogout' => 'Аравала/яла',
 'notloggedin' => 'Оаш шоай цӀи хьааьннадац',
-'nologin' => "ТеÑ\80кама Ð¹Ð¾Ð°Ð·Ñ\83в Ñ\8fц? '''$1'''.",
-'nologinlink' => 'Ð\9bаÑ\80Ñ\85Iама Ð¹Ð¾Ð°Ð·Ñ\83в Ð´Ðµ',
+'nologin' => "Ð\9bеламе Ð´IаÑ\8fздаÑ\80 Ð´Ð°ц? '''$1'''.",
+'nologinlink' => 'Ð\9bеламе Ð´IаÑ\8fздаÑ\80 ÐºÑ\85олла',
 'createaccount' => 'Керда дакъалаьцархо кхолла',
 'gotaccount' => "Укхаза дӀаязабенна дий шо? '''$1'''.",
 'gotaccountlink' => 'Чувала/яла',
 'userlogin-resetlink' => 'Чувала/яла цӀии дIоагӀаи дийцаденнадий?',
-'createaccountmail' => 'Ð\94\85оамнеÑ\86',
+'createaccountmail' => 'Ð\9aÑ\8aайладIоагIа Ð´-Ñ\85оамнеÑ\86 Ñ\85Ñ\8cадайÑ\82а',
 'createaccountreason' => 'Бахьан:',
 'badretype' => 'Оаша яьккха дIоагIий цIераш шоайл таралуш яц.',
 'loginerror' => 'Дакъалаьцархочун цIи нийса яц',
 'mailmypassword' => 'Керда къайладIоагӀа хьаэца',
+'mailerror' => 'Хоам дIабохьийташ гIалат даьннад: $1',
+'emailconfirmlink' => 'Доаржален хоамни хьожадорг дIачIоагIаде',
 'loginlanguagelabel' => 'Мотт: $1',
 
 # Change password dialog
@@ -370,14 +374,14 @@ $messages = array(
 'bold_tip' => 'Сома яздам',
 'italic_sample' => 'Кулга яздам',
 'italic_tip' => 'Кулга яздам',
-'link_sample' => 'Ó\80инка ÐºÐµÑ\80Ñ\82мÑ\83гÓ\80',
+'link_sample' => 'Ó\80инка ÐºÐ¾Ñ\80Ñ\82але',
 'link_tip' => 'ЧураӀинк',
-'extlink_sample' => 'Ó\80инка ÐºÐµÑ\80Ñ\82доÑ\88 http://www.example.com',
-'extlink_tip' => 'Арена Ӏинка (http:// тамагӀахь дийца ма ле)',
-'headline_sample' => 'KертмугӀa яздама',
-'headline_tip' => '2-гÓ\80а ÐºÐµÑ\80Ñ\82мÑ\83гÓ\80a Ð»Ð°Ð³Ó\80а',
+'extlink_sample' => 'Ó\80инка ÐºÐ¾Ñ\80Ñ\82але http://www.example.com',
+'extlink_tip' => 'Арен Ӏинка (http:// тамагӀах дийца ма ле)',
+'headline_sample' => 'Кортален яздам',
+'headline_tip' => '2-гÓ\80а Ð»Ð°Ð³Ó\80аÑ\80лен ÐºÐ¾Ñ\80Ñ\82але',
 'nowiki_sample' => 'Укхаза кийчаде дезаш доаца яздам оттаде',
-'nowiki_tip' => 'Масса-бӀасоттамахь теркам ма бе',
+'nowiki_tip' => 'Масса-бустамлорг теркамза дита',
 'image_tip' => 'Чуяьккха паьла',
 'media_tip' => 'Паьла Ӏинк',
 'sig_tip' => 'Шун кулгаяздар а, хӀанзара ха а',
@@ -385,7 +389,7 @@ $messages = array(
 
 # Edit pages
 'summary' => 'Хувцамий белгалдер',
-'subject' => 'Ð\91Ó\80агал/кеÑ\80Ñ\82мÑ\83гÓ\80:',
+'subject' => 'Ð\91Ó\80агал/коÑ\80Ñ\82але:',
 'minoredit' => 'ЗӀамига хувцам',
 'watchthis' => 'Укх оагӀува теркам бе',
 'savearticle' => 'ОагӀув хьаязъе',
@@ -395,7 +399,7 @@ $messages = array(
 'showdiff' => 'Даь хувцамаш',
 'anoneditwarning' => 'Зем хила! Шо кхы чудаьннадац. Шун IP-моттиг укх хийца оагӀув искаречу дӀаяздаь хургья.',
 'summary-preview' => 'Лоацам ба:',
-'subject-preview' => 'Кортяздам:',
+'subject-preview' => 'Кортале хургья:',
 'blockedtitle' => 'Дакъалаьцархо чӀега бела ва/я',
 'blockednoreason' => 'бахьан доацаш да',
 'loginreqlink' => 'чувала/яла',
@@ -537,8 +541,6 @@ $messages = array(
 'search-interwiki-caption' => 'Гаргалон хьахьоадайтамаш',
 'search-interwiki-default' => '$1 толамчаш:',
 'search-interwiki-more' => '(кха)',
-'search-mwsuggest-enabled' => ' Хьехамашца',
-'search-mwsuggest-disabled' => ' Хьехамаш боацаш',
 'search-relatedarticle' => 'шоайл дола',
 'searchrelated' => 'гаргара',
 'searchall' => 'деррига',
index fcb4db1..d0eef7b 100644 (file)
@@ -893,9 +893,8 @@ Ef þú ert óþekktur notandi og finnst að óviðkomandi athugasemdum hafa ver
 'noarticletext' => 'Enginn texti er á þessari síðu enn sem komið er.
 Þú getur [[Special:Search/{{PAGENAME}}|leitað í öðrum síðum]],
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} leitað í tengdum skrám], eða [{{fullurl:{{FULLPAGENAME}}|action=edit}} breytt henni sjálfur]</span>.',
-'noarticletext-nopermission' => 'Enginn texti er á þessari síðu enn sem komið er.
-Þú getur [[Special:Search/{{PAGENAME}}|leitað í öðrum síðum]],
-eða <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} leitað í tengdum skrám]</span>.',
+'noarticletext-nopermission' => 'Það er enginn texti á þessari síðu eins og er.
+Þú getur [[Special:Search/{{PAGENAME}}|leitað að þessum titli]] í öðrum síðum, eða <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} leitað í tengdum skrám]</span>, en þú hefur ekki réttindi til þess að stofna þessa síðu.',
 'missing-revision' => 'Útgáfa #$1 síðunnar „{{PAGENAME}}" er ekki til.
 
 Þetta gerist oftast þegar úreld breytingarskrá tengir á síðu sem hefur verið eytt. Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} eyðingarskránni].',
@@ -1210,8 +1209,6 @@ Sjáðu til þess að þessi breyting sameini breytingarskrárnar samfellt.',
 'search-interwiki-caption' => 'Systurverkefni',
 'search-interwiki-default' => '$1 útkomur:',
 'search-interwiki-more' => '(fleiri)',
-'search-mwsuggest-enabled' => 'með uppástungum',
-'search-mwsuggest-disabled' => 'engar uppástungur',
 'search-relatedarticle' => 'Tengt',
 'mwsuggest-disable' => 'Gera AJAX-uppástungur óvirkar',
 'searcheverything-enable' => 'Leita í öllum nafnrýmum',
@@ -2194,7 +2191,7 @@ Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar, og
 'enotif_anon_editor' => 'ónefndur notandi $1',
 'enotif_body' => 'Kæri $WATCHINGUSERNAME,
 
-Það lítur út fyrir að þú hafir ný skilaboð á {{SITENAME}} $PAGETITLE.
+Það lítur út fyrir að þú hafir ný skilaboð á {{SITENAME}} síðunni $PAGETITLE.
 Hún hefur verið $CHANGEDORCREATED $PAGEEDITDATE af 
 $PAGEEDITOR. Breytingarágripið var:
 
@@ -2206,7 +2203,7 @@ $PAGEEDITOR. Breytingarágripið var:
 
 $NEWPAGE
 
-Til þess að hafa samband við $PAGEEDITOR, heimsóttu:
+Til þess að hafa samband við $PAGEEDITOR, smelltu á:
 
    $PAGEEDITOR_WIKI
 
@@ -2218,12 +2215,12 @@ Kveðja,
 
 --
 
-Til þess að breyta stillingum um hvenær þú færð sendar tilkynningar, heimsóttu:
+Til þess að breyta stillingum um hvenær þú færð sendar tilkynningar, smelltu á:
 
 {{canonicalurl:{{#special:Preferences}}}}
 
 
-Til þess að hætta að fylgjast með $PAGETITLE, heimsóttu:
+Til þess að hætta að fylgjast með $PAGETITLE, smelltu á:
 
 $UNWATCHURL',
 
@@ -2796,7 +2793,6 @@ Vinsamlegast reyndu aftur.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript prófun',
-'javascripttest-disabled' => 'Þessi möguleiki hefur ekki verið virkjaður á þessum wiki.',
 'javascripttest-pagetext-skins' => 'Veldu þema sem á að keyra prófanirnar á:',
 
 # Tooltip help for the actions
@@ -3724,4 +3720,7 @@ Ef ekki, þá getur þú notað einfalt eyðublað hér fyrir neðan. Athugasemd
 'duration-centuries' => '$1 {{PLURAL:$1|öld|aldir}}',
 'duration-millennia' => '$1 {{PLURAL:$1|árþúsund}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'sem innihalda ...',
+'searchsuggest-search' => 'Leita',
 );
index 3243623..4d00ce4 100644 (file)
@@ -1269,8 +1269,6 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'search-interwiki-caption' => 'Progetti fratelli',
 'search-interwiki-default' => 'Risultati da $1:',
 'search-interwiki-more' => '(altro)',
-'search-mwsuggest-enabled' => 'con suggerimenti',
-'search-mwsuggest-disabled' => 'senza suggerimenti',
 'search-relatedarticle' => 'Risultati correlati',
 'mwsuggest-disable' => 'Disattiva suggerimenti AJAX',
 'searcheverything-enable' => 'Cerca in tutti i namespace',
@@ -2856,7 +2854,6 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 
 # JavaScriptTest
 'javascripttest' => 'Sperimentazione JavaScript',
-'javascripttest-disabled' => 'Questa funzione non è abilitata su questo wiki.',
 'javascripttest-title' => 'In esecuzione test per $1',
 'javascripttest-pagetext-noframework' => "Questa pagina è riservata all'esecuzione di test di JavaScript.",
 'javascripttest-pagetext-unknownframework' => 'Framework di test sconosciuto "$1".',
@@ -3932,4 +3929,7 @@ Le immagini vengono mostrate alla massima risoluzione disponibile, per gli altri
 'duration-centuries' => '$1 {{PLURAL:$1|secolo|secoli}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennio|millenni}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'contenente...',
+'searchsuggest-search' => 'Ricerca',
 );
index 18c6f50..d95303c 100644 (file)
@@ -519,7 +519,7 @@ $messages = array(
 'vector-action-delete' => '削除',
 'vector-action-move' => '移動',
 'vector-action-protect' => '保護',
-'vector-action-undelete' => '復帰',
+'vector-action-undelete' => '復å\85\83',
 'vector-action-unprotect' => '保護再設定',
 'vector-simplesearch-preference' => '検索語の提案機能を拡張(ベクター外装のみ)',
 'vector-view-create' => '作成',
@@ -541,7 +541,7 @@ $messages = array(
 'searcharticle' => '表示',
 'history' => 'ページの履歴',
 'history_short' => '履歴',
-'updatedmarker' => '最後の訪問以降に更新されました',
+'updatedmarker' => '最終閲覧以降に変更されました',
 'printableversion' => '印刷用バージョン',
 'permalink' => 'この版への固定リンク',
 'print' => '印刷',
@@ -552,7 +552,7 @@ $messages = array(
 'create-this-page' => 'このページを作成',
 'delete' => '削除',
 'deletethispage' => 'このページを削除',
-'undelete_short' => '{{PLURAL:$1|$1 ç·¨é\9b\86}}ã\82\92復帰',
+'undelete_short' => '{{PLURAL:$1|$1 ç·¨é\9b\86}}ã\82\92復å\85\83',
 'viewdeleted_short' => '{{PLURAL:$1|削除された $1 編集}}を閲覧',
 'protect' => '保護',
 'protect_change' => '設定変更',
@@ -579,11 +579,11 @@ $messages = array(
 'viewtalkpage' => '議論を表示',
 'otherlanguages' => '他言語版',
 'redirectedfrom' => '($1から転送)',
-'redirectpagesub' => 'リダイレクトページ',
-'lastmodifiedat' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81\8cæ\9c\80å¾\8cã\81«æ\9b´æ\96°ã\81\95ã\82\8cã\81\9fã\81®は $1 $2 です。',
+'redirectpagesub' => '転送ページ',
+'lastmodifiedat' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®æ\9c\80çµ\82æ\9b´æ\96°æ\97¥æ\99\82は $1 $2 です。',
 'viewcount' => 'このページは {{PLURAL:$1|$1 回}}アクセスされました。',
 'protectedpage' => '保護されたページ',
-'jumpto' => '移動',
+'jumpto' => '移動:',
 'jumptonavigation' => '案内',
 'jumptosearch' => '検索',
 'view-pool-error' => '申し訳ありませんが、現在サーバーに過大な負荷がかかっています。
@@ -644,9 +644,9 @@ $1',
 'hidetoc' => '非表示',
 'collapsible-collapse' => '折り畳む',
 'collapsible-expand' => '展開する',
-'thisisdeleted' => '$1ã\82\92é\96²è¦§ã\81¾ã\81\9fã\81¯å¾©å¸°しますか?',
+'thisisdeleted' => '$1ã\82\92é\96²è¦§ã\81¾ã\81\9fã\81¯å¾©å\85\83しますか?',
 'viewdeleted' => '$1を閲覧しますか?',
-'restorelink' => '{{PLURAL:$1|削除された $1 編集}}',
+'restorelink' => '{{PLURAL:$1|削除された$1編集}}',
 'feedlinks' => 'フィード:',
 'feed-invalid' => 'フィード形式の指定が正しくありません。',
 'feed-unavailable' => 'フィードの配信は利用できません',
@@ -654,6 +654,8 @@ $1',
 'site-atom-feed' => '$1のAtomフィード',
 'page-rss-feed' => '「$1」のRSSフィード',
 'page-atom-feed' => '「$1」のAtomフィード',
+'feed-atom' => 'Atom',
+'feed-rss' => 'RSS',
 'red-link-title' => '$1(存在しないページ)',
 'sort-descending' => '降順に並べ替え',
 'sort-ascending' => '昇順に並べ替え',
@@ -762,6 +764,8 @@ $2',
 'filereadonlyerror' => 'ファイルリポジトリ「$2」が読み取り専用の状態にあるため、ファイル「$1」を変更できません。
 
 読み取り専用に設定した管理者からの説明:「$3」',
+'invalidtitle-knownnamespace' => '名前空間名「$2」と名前「$3」の組み合わせはページ名として無効です',
+'invalidtitle-unknownnamespace' => '不明な名前空間番号 $1 と名前「$2」の組み合わせはページ名として無効です',
 'exception-nologin' => 'ログインしていません',
 'exception-nologin-text' => 'このページまたは操作には、このウィキへのログインが必要です。',
 
@@ -808,9 +812,9 @@ $2',
 'loginerror' => 'ログインのエラー',
 'createaccounterror' => 'アカウントを作成できませんでした: $1',
 'nocookiesnew' => '利用者アカウントは作成されましたが、ログインしていません。
-{{SITENAME}}ではログインにCookieを使用します。
\81\94使ç\94¨ã\81®ã\83\96ã\83©ã\82¦ã\82¶ã\81§ã\81¯Cookieが無効になっています。
-Cookieを有効にしてから、新しい利用者名とパスワードでログインしてください。',
+{{SITENAME}}では利用者のログインに Cookie を使用します。
\81\94使ç\94¨ã\81®ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81§ã\81¯ Cookie が無効になっています。
+Cookie を有効にしてから、新しい利用者名とパスワードでログインしてください。',
 'nocookieslogin' => '{{SITENAME}}ではログインにCookieを使用します。
 Cookieを無効にしているようです。
 Cookieを有効にしてから、もう一度試してください。',
@@ -1008,7 +1012,7 @@ $2
 ただし、[[Special:Preferences|個人設定]]で有効なメールアドレスが登録されていない場合、またはメール送信機能の使用がブロックされている場合、「この利用者にメールを送信」の機能は使えません。
 現在ご使用中のIPアドレスは$3、このブロックIDは#$5です。
 お問い合わせの際には、上記の情報を必ず書いてください。",
-'autoblockedtext' => "ã\81\94使ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯ã\80\81$1ã\81«ã\82\88ã\81£ã\81¦æ\8a\95稿ã\82\92ã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81\9få\88©ç\94¨è\80\85ã\81«ã\82\88ã\81£ã\81¦ä½¿ç\94¨ã\81\95ã\82\8cã\81\9fã\81\9fã\82\81ã\81«自動的にブロックされています。
+'autoblockedtext' => "ã\81\93ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯ã\80\81$1ã\81«ã\82\88ã\82\8aã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81\9få\88©ç\94¨è\80\85ã\81«ã\82\88ã\81£ã\81¦ä½¿ç\94¨ã\81\95ã\82\8cã\81\9fã\81\9fã\82\81ã\80\81自動的にブロックされています。
 理由は次の通りです。
 
 :''$2''
@@ -1017,12 +1021,12 @@ $2
 * ブロック解除予定:$6
 * 意図されているブロック対象者:$7
 
-$1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのについて問い合わせることができます。
+$1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロックについて問い合わせることができます。
 
 ただし、[[Special:Preferences|個人設定]]に正しいメールアドレスが登録されていない場合、またはメール送信がブロックされている場合、メール送信機能が使えないことに注意してください。
 
 現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。
\81\8aå\95\8fã\81\84å\90\88ã\82\8fã\81\9bã\81®é\9a\9bã\81«ã\81¯ã\80\81ã\81\93の情報を必ず書いてください。",
\81\8aå\95\8fã\81\84å\90\88ã\82\8fã\81\9bã\81®é\9a\9bã\81¯ã\80\81ä¸\8aè¨\98の情報を必ず書いてください。",
 'blockednoreason' => '理由が設定されていません',
 'whitelistedittext' => 'このページを編集するには$1する必要があります。',
 'confirmedittext' => 'ページの編集を始める前にメールアドレスの確認をする必要があります。
@@ -1149,7 +1153,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'sectioneditnotsupported-text' => 'このページでは節単位編集はサポートされません。',
 'permissionserrors' => '認証エラー',
 'permissionserrorstext' => 'あなたにはこの操作を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです:',
-'permissionserrorstext-withaction' => 'あなたには「$2」を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです',
+'permissionserrorstext-withaction' => 'あなたには「$2」を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです:',
 'recreate-moveddeleted-warn' => "'''警告:以前削除されたページを再作成しようとしています。'''
 
 このページの編集を続行するのが適切かどうかご確認ください。
@@ -1203,7 +1207,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 $3が示した理由:''$2''",
 
 # History pages
-'viewpagelogs' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«é\96¢ã\81\99ã\82\8b記録を閲覧',
+'viewpagelogs' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®記録を閲覧',
 'nohistory' => 'このページには編集履歴がありません。',
 'currentrev' => '最新版',
 'currentrev-asof' => '$1時点における最新版',
@@ -1224,7 +1228,7 @@ $3が示した理由:''$2''",
 'histfirst' => '最古',
 'histlast' => '最新',
 'historysize' => '({{PLURAL:$1|$1バイト}})',
-'historyempty' => '(空)',
+'historyempty' => '(空)',
 
 # Revision feed
 'history-feed-title' => '変更履歴',
@@ -1266,21 +1270,21 @@ $3が示した理由:''$2''",
 この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
 'rev-delundel' => '表示/非表示',
 'rev-showdeleted' => '表示',
-'revisiondelete' => 'ç\89\88ã\81®å\89\8aé\99¤ã\81¨å¾©å¸°',
+'revisiondelete' => 'ç\89\88ã\81®å\89\8aé\99¤ã\81¨å¾©å\85\83',
 'revdelete-nooldid-title' => '無効な対象版',
 'revdelete-nooldid-text' => 'この操作の対象となる版を指定していないか、指定した版が存在していないか、あるいは最新版を非表示しようとしています。',
 'revdelete-nologtype-title' => '記録の種類を指定していません',
 'revdelete-nologtype-text' => 'この操作を実行する記録の種類を指定していません。',
 'revdelete-nologid-title' => '無効な記録項目',
-'revdelete-nologid-text' => 'この操作の対象となる記録項目を指定していないか、あるいは指定した項目が存在しません。',
+'revdelete-nologid-text' => 'この操作の対象となる記録項目を指定していないか、あるいは指定した項目が存在しません。',
 'revdelete-no-file' => '指定されたファイルは存在しません。',
 'revdelete-show-file-confirm' => '本当にファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を閲覧しますか?',
 'revdelete-show-file-submit' => 'はい',
 'revdelete-selected' => "'''[[:$1]] の{{PLURAL:$2|選択された版}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|選択された記録項目}}:'''",
-'revdelete-text' => "'''削除された版や記録はページの履歴や記録に表示され続けますが、一般の利用者はその内容にアクセスできなくなります。'''
-追å\8a ã\81®å\88¶é\99\90ã\81\8cã\81\8bã\81\91ã\82\89ã\82\8cã\81ªã\81\84é\99\90ã\82\8aã\80\81{{SITENAME}}ã\81®ä»\96ã\81®ç®¡ç\90\86è\80\85ã\82\82ã\81\93ã\82\8cã\81¨å\90\8cã\81\98ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤ã\82¹ã\82\92使ç\94¨ã\81\97ã\81¦é\9a ã\81\95ã\82\8cã\81\9få\86\85容ã\81«ã\82¢ã\82¯ã\82»ã\82¹ã\81\97ã\81\9fã\82\8aã\80\81復å\85\83ã\81\97ã\81\9fã\82\8aできます。",
-'revdelete-confirm' => 'この操作を意図して行っていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に沿って行っていることを確認してください。',
+'logdelete-selected' => "'''{{PLURAL:$1|選択された記録項目}}:'''",
+'revdelete-text' => "'''削除された版や記録項目は引き続きページの履歴や記録に表示されますが、一般利用者はその内容の一部を取得できなくなります。'''
+追å\8a ã\81®å\88¶é\99\90ã\81\8cã\81\8bã\81\91ã\82\89ã\82\8cã\81ªã\81\84é\99\90ã\82\8aã\80\81{{SITENAME}}ã\81®ä»\96ã\81®ç®¡ç\90\86è\80\85ã\81¯å\90\8cã\81\98ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤ã\82¹ã\82\92使ã\81£ã\81¦é\9d\9e表示ã\81®å\86\85容ã\81®å\8f\96å¾\97ã\82\84復å\85\83ã\81\8cできます。",
+'revdelete-confirm' => 'この操作を行おうとしていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に従っていること、を確認してください。',
 'revdelete-suppress-text' => "秘匿は、'''以下の場合に限って'''使用すべきです:
 * 名誉毀損の恐れのある記述
 * 非公開個人情報
@@ -1399,7 +1403,7 @@ $1",
 'prevn-title' => '前の{{PLURAL:$1|$1結果}}',
 'nextn-title' => '次の{{PLURAL:$1|$1結果}}',
 'shown-title' => 'ページあたり{{PLURAL:$1|$1件の結果}}を表示',
-'viewprevnext' => '($1{{int:pipe-separator}}$2)($3)を表示',
+'viewprevnext' => '($1{{int:pipe-separator}}$2) ($3 件) を表示',
 'searchmenu-legend' => '検索オプション',
 'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります'''",
 'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成する'''",
@@ -1424,8 +1428,6 @@ $1",
 'search-interwiki-caption' => '姉妹プロジェクト',
 'search-interwiki-default' => '$1の結果:',
 'search-interwiki-more' => '(続き)',
-'search-mwsuggest-enabled' => '検索候補を表示',
-'search-mwsuggest-disabled' => '検索候補を表示しない',
 'search-relatedarticle' => '関連',
 'mwsuggest-disable' => 'Ajaxによる検索候補の提示を無効にする',
 'searcheverything-enable' => 'すべての名前空間を検索',
@@ -1440,7 +1442,7 @@ $1",
 'powersearch' => '高度な検索',
 'powersearch-legend' => '高度な検索',
 'powersearch-ns' => '名前空間を指定して検索:',
-'powersearch-redir' => 'リダイレクトを表示',
+'powersearch-redir' => '転送ページを含める',
 'powersearch-field' => '検索対象',
 'powersearch-togglelabel' => 'チェックを入れる:',
 'powersearch-toggleall' => 'すべて',
@@ -1540,7 +1542,9 @@ $1",
 'username' => '利用者名:',
 'uid' => '利用者 ID:',
 'prefs-memberingroups' => '所属{{PLURAL:$1|グループ}}:',
+'prefs-memberingroups-type' => '$1',
 'prefs-registration' => '登録日時:',
+'prefs-registration-date-time' => '$1',
 'yourrealname' => '本名:',
 'yourlanguage' => '使用言語:',
 'yourvariant' => 'コンテンツ言語変種:',
@@ -1604,6 +1608,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'userrights-notallowed' => 'あなたのアカウントには利用者権限を追加または除去する権限がありません。',
 'userrights-changeable-col' => '変更できるグループ',
 'userrights-unchangeable-col' => '変更できないグループ',
+'userrights-irreversible-marker' => '$1*',
 
 # Groups
 'group' => 'グループ:',
@@ -1613,7 +1618,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'group-sysop' => '管理者',
 'group-bureaucrat' => 'ビューロクラット',
 'group-suppress' => '秘匿者',
-'group-all' => '(全員)',
+'group-all' => '(全員)',
 
 'group-user-member' => '{{GENDER:$1|登録利用者}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|自動承認された利用者}}',
@@ -1640,7 +1645,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'right-move-subpages' => '下位ページを含めてページを移動',
 'right-move-rootuserpages' => '利用者ページ本体を移動',
 'right-movefile' => 'ファイルを移動',
-'right-suppressredirect' => 'リダイレクトを残さずにページを移動',
+'right-suppressredirect' => '転送ページを作成せずにページを移動',
 'right-upload' => 'ファイルをアップロード',
 'right-reupload' => '既存のファイルに上書き',
 'right-reupload-own' => '自分自身がアップロードした既存のファイルに上書き',
@@ -1654,12 +1659,12 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'right-writeapi' => '書き込みAPIを使用',
 'right-delete' => 'ページを削除',
 'right-bigdelete' => '大きな履歴があるページを削除',
-'right-deletelogentry' => 'ç\89¹å®\9aã\81®è¨\98é\8c²é \85ç\9b®ã\82\92å\89\8aé\99¤/復帰',
-'right-deleterevision' => 'ã\83\9aã\83¼ã\82¸ã\81®ç\89¹å®\9aã\81®ç\89\88ã\82\92å\89\8aé\99¤/復帰',
+'right-deletelogentry' => 'ç\89¹å®\9aã\81®è¨\98é\8c²é \85ç\9b®ã\82\92å\89\8aé\99¤/復å\85\83',
+'right-deleterevision' => 'ã\83\9aã\83¼ã\82¸ã\81®ç\89¹å®\9aã\81®ç\89\88ã\82\92å\89\8aé\99¤/復å\85\83',
 'right-deletedhistory' => '削除された履歴項目(関連する本文を除く)を閲覧',
 'right-deletedtext' => '削除された本文と削除された版間の差分を閲覧',
 'right-browsearchive' => '削除されたページを検索',
-'right-undelete' => 'ã\83\9aã\83¼ã\82¸ã\82\92復帰',
+'right-undelete' => 'ã\83\9aã\83¼ã\82¸ã\82\92復å\85\83',
 'right-suppressrevision' => '管理者から隠された版を確認/復元',
 'right-suppressionlog' => '非公開記録を閲覧',
 'right-block' => '他の利用者の編集をブロック',
@@ -1694,9 +1699,9 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 # User rights log
 'rightslog' => '利用者権限変更記録',
 'rightslogtext' => '以下は利用者権限の変更記録です。',
-'rightslogentry' => '$1の所属グループを $2 から $3 に変更しました',
+'rightslogentry' => '$1 の所属グループを $2 から $3 に変更しました',
 'rightslogentry-autopromote' => '$2 から $3 に自動的に昇格しました',
-'rightsnone' => '(なし)',
+'rightsnone' => '(なし)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'このページの閲覧',
@@ -1718,7 +1723,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'action-deleterevision' => 'この版の削除',
 'action-deletedhistory' => 'このページの削除履歴の閲覧',
 'action-browsearchive' => '削除されたページの検索',
-'action-undelete' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¾©å¸°',
+'action-undelete' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¾©å\85\83',
 'action-suppressrevision' => '隠された版の確認と復元',
 'action-suppressionlog' => 'この非公開記録の閲覧',
 'action-block' => 'この利用者の編集ブロック',
@@ -1754,7 +1759,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'rcshowhideanons' => '匿名利用者を$1',
 'rcshowhidepatr' => '巡回された編集を$1',
 'rcshowhidemine' => '自分の編集を$1',
-'rclinks' => '最近$2日間の更新$1件以内を表示<br />$3',
+'rclinks' => '最近 $2 日間の更新を最大 $1 件表示<br />$3',
 'diff' => '差分',
 'hist' => '履歴',
 'hide' => '非表示',
@@ -1766,6 +1771,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 人の利用者}}がウォッチしています]',
 'rc_categories' => 'カテゴリを限定(「|」で区切る)',
 'rc_categories_any' => 'すべて',
+'rc-change-size' => '$1',
 'rc-change-size-new' => '変更後は $1 {{PLURAL:$1|バイト}}',
 'newsectionsummary' => '/* $1 */ 新しい節',
 'rc-enhanced-expand' => '詳細を表示(JavaScript が必要)',
@@ -1790,7 +1796,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'upload-tryagain' => '修正したファイル解説を投稿',
 'uploadnologin' => 'ログインしていません',
 'uploadnologintext' => 'ファイルをアップロードするには[[Special:UserLogin|ログイン]]する必要があります。',
-'upload_directory_missing' => 'アップロード先ディレクトリ($1)が見つからないため、ウェブサーバーによる作成ができませんでした。',
+'upload_directory_missing' => 'アップロード先ディレクトリ ($1) が見つかりませんでした。ウェブ サーバーによる作成もできませんでした。',
 'upload_directory_read_only' => 'アップロード先ディレクトリ($1)には、ウェブサーバーが書き込めません。',
 'uploaderror' => 'アップロードのエラー',
 'upload-recreate-warning' => "'''警告:その名前のファイルは、以前に削除または移動されています。'''
@@ -1980,6 +1986,7 @@ $1',
 'lockmanager-fail-releaselock' => '「$1」用のロックを解放できませんでした。',
 'lockmanager-fail-db-bucket' => 'バケット $1 で十分な数のロックデータベースに接触できませんでした。',
 'lockmanager-fail-db-release' => 'データベース $1 上のロックを解放できませんでした。',
+'lockmanager-fail-svr-acquire' => 'サーバー $1 上でロックを取得できませんでした。',
 'lockmanager-fail-svr-release' => 'サーバー $1 上のロックを解放できませんでした。',
 
 # ZipDirectoryReader
@@ -2130,7 +2137,7 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 ** 著作権侵害
 ** 重複ファイル',
 'filedelete-edit-reasonlist' => '削除理由を編集',
-'filedelete-maintenance' => 'ã\83¡ã\83³ã\83\86ã\83\8aã\83³ã\82¹ä¸­ã\81®ã\81\9fã\82\81ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\89\8aé\99¤ã\81¨å¾©å¸°は一時的に無効化されています。',
+'filedelete-maintenance' => 'ã\83¡ã\83³ã\83\86ã\83\8aã\83³ã\82¹ä¸­ã\81®ã\81\9fã\82\81ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\89\8aé\99¤ã\81¨å¾©å\85\83は一時的に無効化されています。',
 'filedelete-maintenance-title' => 'ファイルを削除できません',
 
 # MIME search
@@ -2144,7 +2151,7 @@ contenttype/subtypeの形式で入力してください(例:<code>image/jpeg
 'unwatchedpages' => 'ウォッチされていないページ',
 
 # List redirects
-'listredirects' => 'リダイレクトの一覧',
+'listredirects' => '転送ページの一覧',
 
 # Unused templates
 'unusedtemplates' => '使われていないテンプレート',
@@ -2158,7 +2165,7 @@ contenttype/subtypeの形式で入力してください(例:<code>image/jpeg
 
 # Random redirect
 'randomredirect' => 'おまかせリダイレクト',
-'randomredirect-nopages' => '「$1」名前空間にリダイレクトはありません。',
+'randomredirect-nopages' => '「$1」名前空間に転送ページはありません。',
 
 # Statistics
 'statistics' => '統計',
@@ -2169,7 +2176,7 @@ contenttype/subtypeの形式で入力してください(例:<code>image/jpeg
 'statistics-header-hooks' => 'その他の統計',
 'statistics-articles' => '記事数',
 'statistics-pages' => '総ページ数',
-'statistics-pages-desc' => 'ã\82¦ã\82£ã\82­å\86\85ã\81®ã\80\81ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\80\81ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81ªã\81©ã\82\92å\90«ã\82\80すべてのページです。',
+'statistics-pages-desc' => 'ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\80\81転é\80\81ã\83\9aã\83¼ã\82¸ã\81ªã\81©ã\82\92å\90«ã\82\80ã\80\81ã\82¦ã\82£ã\82­å\86\85ã\81®すべてのページです。',
 'statistics-files' => 'アップロードされたファイル数',
 'statistics-edits' => '{{SITENAME}}の開設以降の編集回数の総計',
 'statistics-edits-average' => '1ページあたりの編集回数',
@@ -2188,16 +2195,16 @@ contenttype/subtypeの形式で入力してください(例:<code>image/jpeg
 [[MediaWiki:Disambiguationspage]] にリンクがあるテンプレートを使用しているページを、曖昧さ回避ページと見なします。",
 
 'doubleredirects' => '二重転送',
-'doubleredirectstext' => 'ã\81\93ã\82\8cã\81¯ä»\96ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81®ä¸\80覧ã\81§す。
-各行には、最初のリダイレクト、その転送先のリダイレクト、さらにその転送先、それぞれへのリンクが表示されています。多くの場合、最終の転送先が正しい転送先であり、最初のリダイレクトは直接最後の転送先に向けるべきです。
-<del>打ち消し線</del>が入った項目は既に解決しています。',
+'doubleredirectstext' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81§ã\81¯ã\80\81転é\80\81ã\83\9aã\83¼ã\82¸ã\81¸ã\81®è»¢é\80\81ã\83\9aã\83¼ã\82¸ã\82\92å\88\97æ\8c\99ã\81\97ã\81¾す。
+最初の転送ページ、その転送先にある転送ページ、さらにその転送先にあるページ、それぞれへのリンクを各行に表示しています。多くの場合は最終的な転送先が「正しい」転送先であり、最初の転送ページの転送先は最終的な転送先に直接向けるべきです。
+<del>取り消し線</del>が入った項目は解決済みです。',
 'double-redirect-fixed-move' => '[[$1]]を移動しました。
 今後は[[$2]]に転送されます。',
 'double-redirect-fixed-maintenance' => '[[$1]]から[[$2]]への二重転送を修正します。',
 'double-redirect-fixer' => '転送修正係',
 
 'brokenredirects' => '迷子のリダイレクト',
-'brokenredirectstext' => '以ä¸\8bã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81å­\98å\9c¨ã\81\97ã\81ªã\81\84ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81§ã\81\99ï¼\9a',
+'brokenredirectstext' => '以ä¸\8bã\81¯ã\80\81å­\98å\9c¨ã\81\97ã\81ªã\81\84ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81®ä¸\80覧ã\81§ã\81\99:',
 'brokenredirects-edit' => '編集',
 'brokenredirects-delete' => '削除',
 
@@ -2230,7 +2237,7 @@ contenttype/subtypeの形式で入力してください(例:<code>image/jpeg
 'popularpages' => '人気のページ',
 'wantedcategories' => 'カテゴリページが存在しないカテゴリ',
 'wantedpages' => 'ページが存在しないリンク',
-'wantedpages-badtitle' => 'çµ\90æ\9e\9cã\81«æ­£ã\81\97ã\81\8fã\81ªã\81\84ã\83\9aã\83¼ã\82¸å\90\8dã\81\8cå\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ï¼\9a$1',
+'wantedpages-badtitle' => 'çµ\90æ\9e\9cã\81\8cã\80\81ç\84¡å\8a¹ã\81ªã\83\9aã\83¼ã\82¸å\90\8dã\82\92å\90«ã\82\93ã\81§ã\81\84ã\81¾ã\81\99$1',
 'wantedfiles' => 'ファイル情報ページが存在しないファイル',
 'wantedfiletext-cat' => '以下のファイルは使用されていますが存在しません。外部リポジトリ由来のファイルは、存在していてもここに列挙される場合があります。その場合は<del>取り消し線</del>が付きます。さらに、存在しないファイルを埋め込んでいるページは[[:$1]]に列挙されます。',
 'wantedfiletext-nocat' => '以下のファイルは使用されていますが存在しません。外部リポジトリ由来のファイルは、存在していてもここに列挙される場合があります。その場合は<del>取り消し線</del>が付きます。',
@@ -2295,15 +2302,15 @@ contenttype/subtypeの形式で入力してください(例:<code>image/jpeg
 記録の種類、実行した利用者(大文字小文字は区別)、影響を受けたページ(大文字小文字は区別)による絞り込みができます。',
 'logempty' => '該当する記録はありません。',
 'log-title-wildcard' => 'この文字列で始まるページ名を検索',
-'showhideselectedlogentries' => '選択した記録項目を表示/非表示',
+'showhideselectedlogentries' => '選択した記録項目を表示/非表示',
 
 # Special:AllPages
 'allpages' => '全ページ',
 'alphaindexline' => '$1から$2まで',
 'nextpage' => '次のページ ($1)',
 'prevpage' => '前のページ ($1)',
-'allpagesfrom' => '最初に表示するページ',
-'allpagesto' => '最後に表示するページ',
+'allpagesfrom' => '最初に表示するページ:',
+'allpagesto' => '最後に表示するページ:',
 'allarticles' => '全ページ',
 'allinnamespace' => '全ページ ($1名前空間)',
 'allnotinnamespace' => '全ページ ($1名前空間以外)',
@@ -2433,7 +2440,7 @@ contenttype/subtypeの形式で入力してください(例:<code>image/jpeg
 'watchnologintext' => 'ウォッチリストを変更するためには、[[Special:UserLogin|ログイン]]している必要があります。',
 'addwatch' => 'ウォッチリストに追加',
 'addedwatchtext' => "ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¨ä»\98å±\9eã\81®ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81«å¤\89æ\9b´ã\81\8cã\81\82ã\81£ã\81\9fé\9a\9bã\81«ã\81¯ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¡¨ç¤ºã\81\95ã\82\8cã\81¾ã\81\99ã\80\82ã\81¾ã\81\9fã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\81¯[[Special:RecentChanges|æ\9c\80è¿\91ã\81®æ\9b´æ\96°ã\81®ä¸\80覧]]ã\81«'''太å­\97'''ã\81§è¡¨ç¤ºã\81\95ã\82\8cã\80\81è¦\8bã\81¤ã\81\91ã\82\84ã\81\99ã\81\8fã\81ªã\82\8aます。",
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¾ã\81\9fã\81¯ã\81\9dã\81®ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\81¨ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¡¨ç¤ºã\81\95ã\82\8cã\81¾ã\81\99ã\80\82ã\81¾ã\81\9fã\80\81[[Special:RecentChanges|æ\9c\80è¿\91ã\81®æ\9b´æ\96°ã\81®ä¸\80覧]]ã\81§ã\81¯'''太å­\97'''ã\81§è¡¨ç¤ºã\81\95ã\82\8cます。",
 'removewatch' => 'ウォッチリストから除去',
 'removedwatchtext' => 'ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]から除去しました。',
 'watch' => 'ウォッチ',
@@ -2514,9 +2521,9 @@ $UNWATCHURL
 'actioncomplete' => '操作を完了しました',
 'actionfailed' => '操作に失敗しました',
 'deletedtext' => '「$1」は削除されました。
-最近の削除に関しては、$2を参照してください。',
+最近の削除については、$2を参照してください。',
 'dellogpage' => '削除記録',
-'dellogpagetext' => '以下は、最近の削除と復帰の一覧です。',
+'dellogpagetext' => '以下は最近の削除と復元の一覧です。',
 'deletionlog' => '削除記録',
 'reverted' => '以前の版への差し戻し',
 'deletecomment' => '理由:',
@@ -2628,24 +2635,24 @@ $2による直前の版へ変更されました。',
 # Undelete
 'undelete' => '削除されたページを表示',
 'undeletepage' => '削除されたページの表示と復元',
-'undeletepagetitle' => "'''以下は[[:$1|$1]]の削除された版です'''。",
+'undeletepagetitle' => "'''以下は[[:$1|$1]]の削除された版です'''。",
 'viewdeletedpage' => '削除されたページを表示',
 'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ|&#32;$1 件の削除されたページ}}は、保存版に残っているため復元できます。
 保存版は定期的に消去される可能性があります。',
 'undelete-fieldset-title' => '削除された版の復元',
 'undeleteextrahelp' => "すべての版を復元する場合は、どのボックスにもチェックを入れていない状態で'''''{{int:undeletebtn}}'''''をクリックしてください。
\89¹å®\9aã\81®ç\89\88ã\82\92復帰ã\81\99ã\82\8bå ´å\90\88ã\81¯ã\80\81復帰する版のボックスにチェックを入れた状態で'''''{{int:undeletebtn}}'''''をクリックしてください。",
\89¹å®\9aã\81®ç\89\88ã\82\92復å\85\83ã\81\99ã\82\8bå ´å\90\88ã\81¯ã\80\81復å\85\83する版のボックスにチェックを入れた状態で'''''{{int:undeletebtn}}'''''をクリックしてください。",
 'undeleterevisions' => '保存版に$1{{PLURAL:$1|版}}あります',
-'undeletehistory' => 'ã\83\9aã\83¼ã\82¸ã\81®å¾©å¸°ã\82\92è¡\8cã\81\86ã\81¨ã\80\81ã\81\99ã\81¹ã\81¦ã\81®ç\89\88ã\81\8c履歴ã\81«å¾©å¸°ã\81\97ます。
-削除されたあとに同じ名前で新しくページが作成されていた場合、復帰した版はそれに先行する履歴として現れます。',
-'undeleterevdel' => '復帰した結果、版指定削除されているページまたはファイルの版が最新となる場合、復帰は実行されません。
-このような場合、版指定削除されていない版が最新となるようにチェックするか、その版の版指定削除を解除する必要があります。',
+'undeletehistory' => 'ã\83\9aã\83¼ã\82¸ã\82\92復å\85\83ã\81\99ã\82\8bã\81¨ã\80\81ã\81\99ã\81¹ã\81¦ã\81®ç\89\88ã\81\8c履歴ã\81«å¾©å\85\83ã\81\95ã\82\8cます。
+削除後に同じ名前で新しいページが作成されている場合、復元された版はそれに先行する履歴として表示されます。',
+'undeleterevdel' => '版指定削除されている版がページまたはファイルの最新版となるような復元はできません。
+この場合、版指定削除されている最新版のチェックを外すか、その版指定削除を解除する必要があります。',
 'undeletehistorynoadmin' => 'このページは削除されています。
 削除の理由は、削除前にこのページを編集していた利用者の詳細情報と共に、以下に表示されています。
 管理者以外の利用者には、削除された各版の本文への制限がかけられています。',
 'undelete-revision' => '削除されたページ「$1」の $4 $5 時点での $3 による版:',
-'undeleterevision-missing' => '正しくないまたは存在しない版です。
\96\93é\81\95ã\81£ã\81\9fã\83ªã\83³ã\82¯ã\82\92ã\81\9fã\81©ã\81£ã\81\9fã\81\8bã\80\81ã\81\93ã\81®ç\89\88ã\81¯æ\97¢ã\81«å¾©å¸°されたか、もしくは保存版から除去された可能性があります。',
+'undeleterevision-missing' => '無効または存在しない版です。
\96\93é\81\95ã\81£ã\81\9fã\83ªã\83³ã\82¯ã\82\92ã\81\9fã\81©ã\81£ã\81\9fã\81\8bã\80\81ã\81\93ã\81®ç\89\88ã\81¯æ\97¢ã\81«å¾©å\85\83されたか、もしくは保存版から除去された可能性があります。',
 'undelete-nodiff' => 'これより前の版はありません。',
 'undeletebtn' => '復元',
 'undeletelink' => '閲覧/復元',
@@ -2655,26 +2662,26 @@ $2による直前の版へ変更されました。',
 'undeletecomment' => '理由:',
 'undeletedrevisions' => '{{PLURAL:$1|$1版}}を復元しました',
 'undeletedrevisions-files' => '{{PLURAL:$1|$1版}}と{{PLURAL:$2|$2ファイル}}を復元しました',
-'undeletedfiles' => '{{PLURAL:$1|$1ã\83\95ã\82¡ã\82¤ã\83«}}ã\82\92復帰しました',
-'cannotundelete' => '復帰に失敗しました。
-ä»\96ã\81®èª°ã\81\8bã\81\8cã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92æ\97¢ã\81«å¾©å¸°した可能性があります。',
+'undeletedfiles' => '{{PLURAL:$1|$1ã\83\95ã\82¡ã\82¤ã\83«}}ã\82\92復å\85\83しました',
+'cannotundelete' => '復å\85\83に失敗しました。
+ä»\96ã\81®èª°ã\81\8bã\81\8cã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92æ\97¢ã\81«å¾©å\85\83した可能性があります。',
 'undeletedpage' => "'''$1を復元しました。'''
 
\9c\80è¿\91ã\81®å\89\8aé\99¤ã\81¨å¾©å¸°の記録については[[Special:Log/delete|削除記録]]を参照してください。",
\9c\80è¿\91ã\81®å\89\8aé\99¤ã\81¨å¾©å\85\83の記録については[[Special:Log/delete|削除記録]]を参照してください。",
 'undelete-header' => '最近削除されたページは[[Special:Log/delete|削除記録]]で確認できます。',
 'undelete-search-title' => '削除されたページの検索',
 'undelete-search-box' => '削除されたページを検索',
-'undelete-search-prefix' => '表示を開始するページ名',
+'undelete-search-prefix' => '表示を開始するページ名:',
 'undelete-search-submit' => '検索',
 'undelete-no-results' => '削除の保存版に、一致するページが見つかりませんでした。',
-'undelete-filename-mismatch' => 'ファイルの時刻印$1の版を復帰できません:ファイル名が一致しません。',
-'undelete-bad-store-key' => 'ファイルの時刻印$1の版を復帰できません:削除前にファイルが失われています。',
+'undelete-filename-mismatch' => 'ファイルの $1 時点の版を復元できません: ファイル名が一致しません。',
+'undelete-bad-store-key' => 'ファイルの $1 時点の版を復元できません: 削除前にファイルが失われています。',
 'undelete-cleanup-error' => '未使用の保存版のファイル「$1」の削除中にエラーが発生しました。',
-'undelete-missing-filearchive' => 'データベースに存在しないため、ID $1を持つファイルの保存版を復元できません。
\97¢ã\81«å¾©å¸°されている可能性があります。',
-'undelete-error' => 'ã\83\9aã\83¼ã\82¸ã\81®å¾©å¸°エラー',
-'undelete-error-short' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81®å¾©å¸°ã\82¨ã\83©ã\83¼ï¼\9a$1',
-'undelete-error-long' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81®å¾©å¸°ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9fï¼\9a
+'undelete-missing-filearchive' => 'データベースに存在しないため、ファイルの保存版 ID $1 を復元できません。
\97¢ã\81«å¾©å\85\83されている可能性があります。',
+'undelete-error' => 'ã\83\9aã\83¼ã\82¸ã\81®å¾©å\85\83エラー',
+'undelete-error-short' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81®å¾©å\85\83ã\82¨ã\83©ã\83¼: $1',
+'undelete-error-long' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81®å¾©å\85\83中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f:
 
 $1',
 'undelete-show-file-confirm' => '$2$3の版からファイル「<nowiki>$1</nowiki>」の削除版を本当に表示しますか?',
@@ -2684,8 +2691,8 @@ $1',
 'namespace' => '名前空間:',
 'invert' => '選択したものを除く',
 'tooltip-invert' => '選択した名前空間(チェックされている場合は、関連付けられた名前空間も)のページの変更を非表示にするには、このボックスにチェックを入れる',
-'namespace_association' => '対応付けられた名前空間',
-'tooltip-namespace_association' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ã\81«é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81¦ã\81\84ã\82\8bトークページまたは対象の名前空間も含めるには、このボックスにチェックを入れる',
+'namespace_association' => '関連付けられた名前空間',
+'tooltip-namespace_association' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ã\81«é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9fトークページまたは対象の名前空間も含めるには、このボックスにチェックを入れる',
 'blanknamespace' => '(標準)',
 
 # Contributions
@@ -2695,14 +2702,14 @@ $1',
 'contribsub2' => '利用者: $1 ($2)',
 'nocontribs' => 'これらの条件に一致する変更は見つかりませんでした。',
 'uctop' => '(最新)',
-'month' => 'これ以前の月',
-'year' => 'これ以前の年',
+'month' => 'これ以前の月:',
+'year' => 'これ以前の年:',
 
-'sp-contributions-newbies' => '新しい利用者からの投稿のみ表示',
+'sp-contributions-newbies' => '新規利用者の投稿のみ表示',
 'sp-contributions-newbies-sub' => '新規利用者のみ',
 'sp-contributions-newbies-title' => '新規利用者の投稿記録',
 'sp-contributions-blocklog' => 'ブロック記録',
-'sp-contributions-deleted' => 'å\88©ç\94¨è\80\85ã\81®å\89\8aé\99¤ã\81\95ã\82\8cã\81\9fæ\8a\95稿è¨\98é\8c²',
+'sp-contributions-deleted' => 'å\89\8aé\99¤ã\81\95ã\82\8cã\81\9fæ\8a\95稿ã\81®ä¸\80覧',
 'sp-contributions-uploads' => 'アップロード',
 'sp-contributions-logs' => '記録',
 'sp-contributions-talk' => 'トーク',
@@ -2712,7 +2719,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'このIPアドレスは現在ブロックされています。
 参考のために最近のブロック記録項目を以下に表示します:',
 'sp-contributions-search' => '投稿の検索',
-'sp-contributions-username' => 'IPアドレスまたは利用者名',
+'sp-contributions-username' => 'IPアドレスまたは利用者名:',
 'sp-contributions-toponly' => '最新版の編集のみを表示',
 'sp-contributions-submit' => '検索',
 
@@ -2729,7 +2736,7 @@ $1',
 'whatlinkshere-prev' => '{{PLURAL:$1|前|前の$1件}}',
 'whatlinkshere-next' => '{{PLURAL:$1|次|次の$1件}}',
 'whatlinkshere-links' => '← リンク',
-'whatlinkshere-hideredirs' => 'リダイレクトを$1',
+'whatlinkshere-hideredirs' => '転送ページを$1',
 'whatlinkshere-hidetrans' => '参照読み込みを$1',
 'whatlinkshere-hidelinks' => 'リンクを$1',
 'whatlinkshere-hideimages' => '画像リンクを$1',
@@ -2742,10 +2749,10 @@ $1',
 'blockip' => '利用者をブロック',
 'blockip-title' => '利用者のブロック',
 'blockip-legend' => '利用者をブロック',
-'blockiptext' => '以下のフォームを使用して、指定した利用者やIPアドレスからの書き込みアクセスをブロックできます。
-このような措置は、荒らしからの防御のためにのみ行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。
-以下にブロックの理由を具体的に書いてください(例えば、荒らされたページへの言及など)。',
-'ipadressorusername' => 'IPアドレスまたは利用者名',
+'blockiptext' => '以下のフォームを使用して、指定したIPアドレスまたは利用者からの書き込みアクセスをブロックできます。
+このような措置は、荒らしからの防御の目的のみに行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。
+以下にブロックの理由を具体的に書いてください (例えば、荒らされたページへの言及など)。',
+'ipadressorusername' => 'IPアドレスまたは利用者名:',
 'ipbexpiry' => '有効期限:',
 'ipbreason' => '理由:',
 'ipbreasonotherlist' => 'その他の理由',
@@ -2757,18 +2764,18 @@ $1',
 ** 威圧的な態度/嫌がらせ
 ** 複数アカウントの不正利用
 ** 不適切な利用者名',
-'ipb-hardblock' => 'ã\83­ã\82°ã\82¤ã\83³å\88©ç\94¨è\80\85ã\81«ã\82\88ã\82\8bã\81\93ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8bã\82\89ã\81®ç·¨é\9b\86ã\82\92ä¸\8d許å\8f¯',
+'ipb-hardblock' => 'ã\81\93ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8bã\82\89ã\81®ã\83­ã\82°ã\82¤ã\83³å\88©ç\94¨è\80\85ã\81®ç·¨é\9b\86ã\82\92ç¦\81æ­¢',
 'ipbcreateaccount' => 'アカウント作成を禁止',
-'ipbemailban' => 'メール送信を止',
-'ipbenableautoblock' => 'この利用者が最後に使用したIPアドレスと、後に編集しようとしたIPアドレスを自動的にブロック',
+'ipbemailban' => 'メール送信を止',
+'ipbenableautoblock' => 'この利用者が最後に使用したIPアドレスと、ブロック後に編集を試みた際のIPアドレスを自動的にブロック',
 'ipbsubmit' => 'この利用者をブロック',
 'ipbother' => 'その他の期間:',
 'ipboptions' => '2時間:2 hours,1日:1 day,3日:3 days,1週間:1 week,2週間:2 weeks,1か月:1 month,3か月:3 months,6か月:6 months,1年:1 year,無期限:infinite',
 'ipbotheroption' => 'その他',
 'ipbotherreason' => '他の、または追加の理由:',
 'ipbhidename' => '利用者名を編集履歴や各種一覧から秘匿する',
-'ipbwatchuser' => 'この利用者の利用者ページとトークページをウォッチする',
-'ipb-disableusertalk' => 'ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bé\96\93ã\81«è\87ªå\88\86ã\81®ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86ã\81\99ã\82\8bã\81®ã\82\92ä¸\8d許å\8f¯',
+'ipbwatchuser' => 'この利用者の利用者ページとトークページをウォッチ',
+'ipb-disableusertalk' => 'ã\83\96ã\83­ã\83\83ã\82¯ä¸­ã\81®ã\81\93ã\81®å\88©ç\94¨è\80\85è\87ªèº«ã\81«ã\82\88ã\82\8bã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ç·¨é\9b\86ã\82\92ç¦\81æ­¢',
 'ipb-change-block' => 'これらの設定で、利用者を再びブロック',
 'ipb-confirm' => 'ブロックの確認',
 'badipaddress' => '無効なIPアドレス',
@@ -2783,8 +2790,8 @@ $1',
 'ipb-blocklist' => '現在有効なブロックを表示',
 'ipb-blocklist-contribs' => '$1の投稿の一覧',
 'unblockip' => 'ブロックを解除',
-'unblockiptext' => '以ä¸\8bã\81®ã\83\95ã\82©ã\83¼ã\83 ã\81§å\88©ç\94¨è\80\85ã\81¾ã\81\9fã\81¯IPã\82¢ã\83\89ã\83¬ã\82¹ã\81®æ\8a\95稿ã\83\96ã\83­ã\83\83ã\82¯ã\82\92解除できます。',
-'ipusubmit' => 'この投稿ブロックを解除',
+'unblockiptext' => '以ä¸\8bã\81®ã\83\95ã\82©ã\83¼ã\83 ã\82\92使ç\94¨ã\81\97ã\81¦ã\80\81以å\89\8dã\83\96ã\83­ã\83\83ã\82¯ã\81\97ã\81\9fIPã\82¢ã\83\89ã\83¬ã\82¹ã\81¾ã\81\9fã\81¯å\88©ç\94¨è\80\85ã\81\8bã\82\89ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\82¢ã\82¯ã\82»ã\82¹ã\82\92ã\83\96ã\83­ã\83\83ã\82¯解除できます。',
+'ipusubmit' => 'このブロックを解除',
 'unblocked' => '[[User:$1|$1]]のブロックを解除しました',
 'unblocked-range' => '$1のブロックは解除されています',
 'unblocked-id' => 'ブロック$1は除去されました',
@@ -2854,16 +2861,16 @@ $1のブロックの理由は「''$2''」です。",
 'blockme' => '自分をブロック',
 'proxyblocker' => 'プロキシブロック係',
 'proxyblocker-disabled' => 'この機能は無効になっています。',
-'proxyblockreason' => 'ã\81\94使ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯å\85¬é\96\8bã\83\97ã\83­ã\82­ã\82·ã\81§ã\81\82ã\82\8bã\81\9fã\82\81æ\8a\95稿ブロックされています。
-使用中のインターネットサービスプロバイダー、または所属組織の技術担当者に連絡して、これが深刻なセキュリティ問題であることを伝えてください。',
+'proxyblockreason' => 'ã\81\93ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯å\85¬é\96\8bã\83\97ã\83­ã\82­ã\82·ã\81§ã\81\82ã\82\8bã\81\9fã\82\81ブロックされています。
+ご使用中のインターネットサービスプロバイダーまたは所属組織の技術担当者に連絡して、これが深刻なセキュリティ問題であることを伝えてください。',
 'proxyblocksuccess' => '完了。',
 'sorbs' => 'DNSBL',
 'sorbsreason' => 'ご使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。',
 'sorbs_create_account_reason' => 'ご使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
 アカウント作成はできません',
 'cant-block-while-blocked' => 'ブロックされている間は、他の利用者をブロックできません。',
-'cant-see-hidden-user' => '投稿ブロックしようとした利用者は、既にブロックされ隠されています。
-hideuser権限を持っていないため、この利用者のブロックを閲覧または編集できません。',
+'cant-see-hidden-user' => 'ブロックしようとしている利用者は、既にブロックされ隠されています。
+あなたには hideuser 権限がないため、この利用者のブロックの閲覧/編集はできません。',
 'ipbblocked' => '自分自身をブロックしているため、他の利用者のブロックやブロック解除はできません',
 'ipbnounblockself' => '自分自身のブロックは解除できません',
 
@@ -2904,10 +2911,10 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 よく閲覧されるページや、他の多くのページからリンクされているページを移動すると予期しない結果が起こるかもしれません。ページの移動に伴う影響をよく考えてから踏み切るようにしてください。",
 'movepagetext-noredirectfixer' => "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
 移動元のページは移動先への転送ページになります。
-自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。
+自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重転送]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。
 つながるべき場所にリンクがつながるよう維持するのは移動した人の責任です。
 
-移動先が既に存在する場合は、そのページが空またはリダイレクトで、かつ過去の版を持たない場合を除いて移動'''できません'''。
+移動先が既に存在する場合は、そのページが空または転送ページで、かつ過去の版を持たない場合を除いて移動'''できません'''。
 つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
 
 '''警告!'''
@@ -2931,8 +2938,8 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'movepagebtn' => 'ページを移動',
 'pagemovedsub' => '移動に成功しました',
 'movepage-moved' => "'''「$1」は「$2」へ移動されました'''",
-'movepage-moved-redirect' => 'リダイレクトが作成されました。',
-'movepage-moved-noredirect' => 'リダイレクトは作成されませんでした。',
+'movepage-moved-redirect' => '転送ページを作成しました。',
+'movepage-moved-noredirect' => '転送ページは作成されませんでした。',
 'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。
 別の名前を選択してください。',
 'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
@@ -2971,7 +2978,7 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'imagetypemismatch' => '新しいファイルの拡張子がファイルのタイプと一致していません',
 'imageinvalidfilename' => '対象ファイル名が無効です',
 'fix-double-redirects' => 'このページへのリダイレクトがあればそのリダイレクトを修正',
-'move-leave-redirect' => '移動元にリダイレクトを作成する',
+'move-leave-redirect' => '移動元に転送ページを作成する',
 'protectedpagemovewarning' => "'''警告:'''このページは保護されているため、管理者権限を持つ利用者のみが移動できます。
 参考として以下に最後の記録を表示します:",
 'semiprotectedpagemovewarning' => "'''注意:'''このページは保護されているため、登録利用者のみが移動できます。
@@ -3096,7 +3103,6 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript をテスト中',
-'javascripttest-disabled' => 'この機能はこのウィキでは有効にされていません。',
 'javascripttest-title' => '$1 のテストの実行',
 'javascripttest-pagetext-noframework' => 'このページは JavaScript のテストを実行するために予約されています。',
 'javascripttest-pagetext-unknownframework' => '未知のテストフレームワーク「$1」。',
@@ -3251,6 +3257,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'pageinfo-views' => '閲覧回数',
 'pageinfo-watchers' => 'ページをウォッチリストに入れている人数',
 'pageinfo-redirects-name' => 'このページへのリダイレクト',
+'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'このページの下位ページ数',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|リダイレクト}}、$3 {{PLURAL:$3|非リダイレクト}})',
 'pageinfo-firstuser' => 'ページ作成者',
@@ -3260,6 +3267,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'pageinfo-edits' => '総編集回数',
 'pageinfo-authors' => '総投稿者数',
 'pageinfo-recent-edits' => '最近の編集回数 (過去 $1)',
+'pageinfo-recent-authors' => '最近の投稿者数',
 'pageinfo-restriction' => 'ページ保護 ({{lcfirst:$1}})',
 'pageinfo-magic-words' => 'マジック {{PLURAL:$1|ワード}} ($1)',
 'pageinfo-hidden-categories' => '隠し{{PLURAL:$1|カテゴリ}} ($1)',
@@ -3294,7 +3302,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 
 # Image deletion
 'deletedrevision' => '古い版 $1 を削除しました',
-'filedeleteerror-short' => 'ファイル削除エラー:$1',
+'filedeleteerror-short' => 'ファイルの削除エラー: $1',
 'filedeleteerror-long' => 'ファイルの削除中にエラーが発生しました:
 
 $1',
@@ -3931,9 +3939,9 @@ $5
 'confirm-unwatch-top' => 'このページをウォッチリストから除去しますか?',
 
 # Separators for various lists, etc.
-'semicolon-separator' => '',
+'semicolon-separator' => ';&#32;',
 'comma-separator' => '、',
-'colon-separator' => '',
+'colon-separator' => ':&#32;',
 'pipe-separator' => '&#32;|&#32;',
 'word-separator' => '&#32;',
 'parentheses' => '($1)',
@@ -3959,7 +3967,7 @@ $5
 # Auto-summaries
 'autosumm-blank' => 'ページの白紙化',
 'autosumm-replace' => '内容を「$1」で置換',
-'autoredircomment' => '[[$1]]へのリダイレクト',
+'autoredircomment' => '[[$1]]への転送ページ',
 'autosumm-new' => 'ページの作成:「$1」',
 
 # Size units
@@ -3992,11 +4000,11 @@ $5
 'watchlistedit-normal-legend' => 'ウォッチリストからページ名を除去',
 'watchlistedit-normal-explain' => 'ウォッチリストに入っているページ名を以下に表示しています。
 ページを除去するには、隣のボックスにチェックを入れて「{{int:watchlistedit-normal-submit}}」をクリックしてください。
\81¾ã\81\9fã\80\81[[Special:EditWatchlist/raw|ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92ã\81\9dã\81®ã\81¾ã\81¾編集]]も使用できます。',
\81¾ã\81\9fã\80\81[[Special:EditWatchlist/raw|ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92ã\83\86ã\82­ã\82¹ã\83\88ã\81§編集]]も使用できます。',
 'watchlistedit-normal-submit' => 'ページを除去',
 'watchlistedit-normal-done' => 'ウォッチリストから {{PLURAL:$1|$1 件のページ}}を削除しました:',
-'watchlistedit-raw-title' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92ã\81\9dã\81®ã\81¾ã\81¾編集',
-'watchlistedit-raw-legend' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92ã\81\9dã\81®ã\81¾ã\81¾編集',
+'watchlistedit-raw-title' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92ã\83\86ã\82­ã\82¹ã\83\88ã\81§編集',
+'watchlistedit-raw-legend' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92ã\83\86ã\82­ã\82¹ã\83\88ã\81§編集',
 'watchlistedit-raw-explain' => '以下に、ウォッチリストに含まれるページ名を列挙しています。この一覧で追加や除去ができます。
 1行に1ページ名です。
 完了したら、「{{int:Watchlistedit-raw-submit}}」をクリックしてください。
@@ -4010,7 +4018,7 @@ $5
 # Watchlist editing tools
 'watchlisttools-view' => '関連する変更を閲覧',
 'watchlisttools-edit' => 'ウォッチリストの閲覧と編集',
-'watchlisttools-raw' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92ã\81\9dã\81®ã\81¾ã\81¾編集',
+'watchlisttools-raw' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92ã\83\86ã\82­ã\82¹ã\83\88ã\81§編集',
 
 # Iranian month names
 'iranian-calendar-m1' => 'ファルヴァルディーン',
@@ -4214,13 +4222,13 @@ MediaWikiは、有用であることを期待して配布されていますが
 
 # New logging system
 'logentry-delete-delete' => '$1 がページ「$3」を削除しました',
-'logentry-delete-restore' => '$1 ã\81\8cã\83\9aã\83¼ã\82¸ã\80\8c$3ã\80\8dã\82\92復帰しました',
-'logentry-delete-event' => '$1 が$3の{{PLURAL:$5|$5件の記録項目}}の閲覧レベルを変更しました:$4',
+'logentry-delete-restore' => '$1 ã\81\8cã\83\9aã\83¼ã\82¸ã\80\8c$3ã\80\8dã\82\92復å\85\83しました',
+'logentry-delete-event' => '$1 が$3の{{PLURAL:$5|記録項目$5件}}の閲覧レベルを変更しました:$4',
 'logentry-delete-revision' => '$1 がページ「$3」の{{PLURAL:$5|$5版}}の閲覧レベルを変更しました:$4',
 'logentry-delete-event-legacy' => '$1 が「$3」の記録項目の閲覧レベルを変更しました',
 'logentry-delete-revision-legacy' => '$1 がページ「$3」の版の閲覧レベルを変更しました',
 'logentry-suppress-delete' => '$1 がページ「$3」を隠蔽しました',
-'logentry-suppress-event' => '$1 が$3の{{PLURAL:$5|$5件の記録項目}}の閲覧レベルを見えない形で変更しました:$4',
+'logentry-suppress-event' => '$1 が$3の{{PLURAL:$5|記録項目$5件}}の閲覧レベルを見えない形で変更しました:$4',
 'logentry-suppress-revision' => '$1 がページ「$3」の{{PLURAL:$5|$5版}}の閲覧レベルを見えない形で変更しました:$4',
 'logentry-suppress-event-legacy' => '$1 が$3で記録項目の閲覧レベルを見えない形で変更しました',
 'logentry-suppress-revision-legacy' => '$1 がページ「$3」の版の閲覧レベルを見えない形で変更しました',
@@ -4312,4 +4320,7 @@ MediaWikiは、有用であることを期待して配布されていますが
 'duration-centuries' => '$1 {{PLURAL:$1|世紀}}',
 'duration-millennia' => '$1{{PLURAL:$1|,000 年}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'この語句を全文検索',
+'searchsuggest-search' => '検索',
 );
index 00c4950..21202a4 100644 (file)
@@ -723,8 +723,6 @@ Lejen: '''({{int:cur}})''' = difrans wid lietis rivijan, '''({{int:last}})''' =
 'search-interwiki-caption' => 'Sista prajek',
 'search-interwiki-default' => '$1 rizoltdem:',
 'search-interwiki-more' => '(muo)',
-'search-mwsuggest-enabled' => 'wid sojeshan',
-'search-mwsuggest-disabled' => 'nuo sojeshan',
 'nonefound' => "'''Nuot''': Onggl som niemspies saach bai difaalt.
 Chrai priifix yu kwieri wid ''all:'' fi saach aal kantent (inkluudn taak piej, templit, esechra), ar yuuz di dizaya niemspies fi priifix.",
 'powersearch' => 'Advans saach',
index 62ae858..023872e 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Anggoro
  * @author Helix84
+ * @author Hoo
  * @author Kaganer
  * @author Meursault2004
  * @author NoiX180
@@ -1022,8 +1023,6 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-interwiki-caption' => 'Proyèk-proyèk kagandhèng',
 'search-interwiki-default' => 'Pituwas $1:',
 'search-interwiki-more' => '(luwih akèh)',
-'search-mwsuggest-enabled' => 'mawa sugèsti',
-'search-mwsuggest-disabled' => 'ora ana sugèsti',
 'search-relatedarticle' => 'Kagandhèng',
 'mwsuggest-disable' => 'Patènana sugèsti AJAX',
 'searcheverything-enable' => 'Golèki ing kabèh bilik-jeneng',
@@ -2591,7 +2590,6 @@ Simpen nèng komputer Sampéyan lan unggaha nèng kéné.',
 
 # JavaScriptTest
 'javascripttest' => 'Panjajalan JavaScript',
-'javascripttest-disabled' => 'Fungsi iki durung diurubaké nèng wiki iki.',
 'javascripttest-title' => 'Nglakokaké pangujian $1',
 'javascripttest-pagetext-noframework' => 'Kaca iki disadhiyakaké kanggo nglakokaké panjajalan JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Rangka kerja panjajalan ora dingertèni "$1".',
@@ -3340,7 +3338,7 @@ Panjenengan uga bisa [[Special:EditWatchlist|nganggo éditor standar panjenengan
 'version-version' => '(Vèrsi $1)',
 'version-license' => 'Lisènsi',
 'version-poweredby-credits' => "Wiki iki disengkuyung déning '''[//www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
-'version-poweredby-others' => '[{{SERVER}}{{SCRIPTPATH}}/KRÈDIT liyané]',
+'version-poweredby-others' => 'liyané',
 'version-software' => "''Software'' wis diinstalasi",
 'version-software-product' => 'Prodhuk',
 'version-software-version' => 'Vèrsi',
@@ -3547,4 +3545,7 @@ Utawa, Sampéyan bisa nganggo pormulir gampang ngisor. Tanggepan Sampéyan bakal
 'duration-centuries' => '$1 {{PLURAL:$1|abad|abad}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milénium|milénium}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ngisi...',
+'searchsuggest-search' => 'Golèk',
 );
index 83aa23e..657d2fc 100644 (file)
@@ -854,8 +854,8 @@ $2
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} მოძებნოთ შესაბამისი ჟურნალები],
 ან [{{fullurl:{{FULLPAGENAME}}|action=edit}} დაიწყოთ ამ გვერდის რედაქტირება]</span>.',
 'noarticletext-nopermission' => 'ამ დროისთვის ეს გვერდი ცარიელია.
\83¥á\83\95á\83\94á\83\9c á\83¨á\83\94á\83\92á\83\98á\83«á\83\9aá\83\98á\83\90á\83\97 [[Special:Search/{{PAGENAME}}|á\83\9bá\83\9dá\83«á\83\94á\83\91á\83\9cá\83\9dá\83\97 á\83\94á\83¡ á\83¡á\83\98á\83¢á\83§á\83\95á\83\90]] სხვა გვერდებზე,
\83\90á\83\9c <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} á\83¨á\83\94á\83¡á\83\90á\83\91á\83\90á\83\9bá\83\98á\83¡ á\83\9fá\83£á\83 á\83\9cá\83\90á\83\9aá\83\94á\83\91á\83¨á\83\98]</span>',
\83\97á\83¥á\83\95á\83\94á\83\9c á\83¨á\83\94á\83\92á\83\98á\83«á\83\9aá\83\98á\83\90á\83\97 [[Special:Search/{{PAGENAME}}|á\83\9bá\83\9dá\83«á\83\94á\83\91á\83\9cá\83\9dá\83\97 á\83\94á\83¡ á\83¡á\83\90á\83\97á\83\90á\83£á\83 á\83\98]] სხვა გვერდებზე,
\83\90á\83\9c <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} á\83\9bá\83\9dá\83«á\83\94á\83\91á\83\9cá\83\9dá\83\97 á\83\9fá\83£á\83 á\83\9cá\83\90á\83\9aá\83\94á\83\91á\83\98á\83¡ á\83¨á\83\94á\83¡á\83\90á\83\91á\83\90á\83\9bá\83\98á\83¡á\83\98 á\83©á\83\90á\83\9cá\83\90á\83¬á\83\94á\83 á\83\94á\83\91á\83\98].</span> á\83\97á\83¥á\83\95á\83\94á\83\9c á\83\90á\83  á\83\92á\83\90á\83¥á\83\95á\83\97 á\83\90á\83\9b á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\98á\83¡ á\83\9cá\83\94á\83\91á\83\90á\83 á\83\97á\83\95á\83\90.',
 'userpage-userdoesnotexist' => 'ანგარიში «<nowiki>$1</nowiki>» არ არსებობს. დარწმუნდით, რომ მართლაც გსურთ ამ ანგარიშის შექმნა ან შესწორება.Убедитесь, что вы действительно желаете создать или изменить эту страницу.',
 'userpage-userdoesnotexist-view' => 'მომხმარებელი „$1“ არ არის დარეგისტრირებული.',
 'blocked-notice-logextract' => 'ეს მომხმარებელი უკვე დაიბლოკა.
@@ -1207,8 +1207,6 @@ $1",
 'search-interwiki-caption' => 'დობილი პროექტები',
 'search-interwiki-default' => 'შედეგები $1-დან:',
 'search-interwiki-more' => '(გაგრძელება)',
-'search-mwsuggest-enabled' => 'რჩევებით',
-'search-mwsuggest-disabled' => 'რჩევების გარეშე',
 'search-relatedarticle' => 'დაკავშირებული',
 'mwsuggest-disable' => 'გათიშეთ AJAX დახმარებები',
 'searcheverything-enable' => 'ძიება სახელთა ყველა სივრცეებში',
@@ -2822,7 +2820,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript-ის ტესტირება',
-'javascripttest-disabled' => 'ეს ფუნქცია ამ ვიკიში არ ჩართულა.',
 'javascripttest-title' => 'მიმდინარეობს $1-ის ტესტირება',
 'javascripttest-pagetext-noframework' => 'ეს გვერდი დარეგისტრირებულია JavaScript-ის ტესტების გასაშვებად.',
 'javascripttest-pagetext-unknownframework' => '„$1-ის“ ტესტირების უცნობი გარემო.',
@@ -3960,4 +3957,7 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'duration-centuries' => '$1 {{PLURAL:$1|საუკუნე|საუკუნე}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ათასწლეული|ათასწლეული}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'შეიცავს...',
+'searchsuggest-search' => 'ძიება',
 );
index f96d2ff..0c10a6f 100644 (file)
@@ -45,6 +45,8 @@ $messages = array(
 'tog-underline' => 'Derrer izdayen:',
 'tog-justify' => 'Err tehri ger wawalen kif-kif',
 'tog-hideminor' => 'Ffer ibeddlen ifessasen deg yibeddlen imaynuten',
+'tog-hidepatrolled' => 'Ffer ibeddlen iεessan deg yibeddlen imaynuten',
+'tog-newpageshidepatrolled' => 'Ffer isebtaren iɛessan gar umuɣ n isebtaren imaynuten',
 'tog-extendwatchlist' => 'Ssemɣer umuɣ n uɛessi iwakken ad muqleɣ akk n wayen zemreɣ ad beddleɣ',
 'tog-usenewrc' => 'Sselhu ibeddlen ifessasen (JavaScript)',
 'tog-numberheadings' => 'Izwal ɣur-sen imḍanen mebla ma serseɣ-iten',
@@ -67,6 +69,7 @@ $messages = array(
 'tog-enotifminoredits' => 'Azen-iyi-d e-mail ma llan ibeddlen ifessasen',
 'tog-enotifrevealaddr' => 'Ssken e-mail inu asmi yettwazen email n talɣut',
 'tog-shownumberswatching' => 'Ssken geddac yellan n yimseqdacen iɛessasen',
+'tog-oldsig' => 'Azmul yellan :',
 'tog-fancysig' => 'ǧǧ azmul am yettili (war azday awurman)',
 'tog-externaleditor' => 'Sseqdec ambeddel n berra d ameslugen',
 'tog-externaldiff' => 'Sseqdec ambeddel n berra iwakken ad ẓreɣ imgerraden',
@@ -76,13 +79,25 @@ $messages = array(
 'tog-watchlisthideown' => 'Ffer ibeddlen inu seg wumuɣ n uɛessi inu',
 'tog-watchlisthidebots' => 'Ffer ibeddlen n iboṭiyen seg wumuɣ n uɛessi inu',
 'tog-watchlisthideminor' => 'Ffer ibeddlen ifessasen seg wumuɣ n uɛessi inu',
+'tog-watchlisthideliu' => 'Ffer ibeddlen n iseqdacen yelan deg umuɣ n tiḍefri',
+'tog-watchlisthideanons' => 'Ffer ibeddlen n iseqdacen udrigen deg umuɣ n tiḍefri',
+'tog-watchlisthidepatrolled' => 'Ffer ibeddlen iɛessan deg umuɣ n tiḍefri',
 'tog-ccmeonemails' => 'Azen-iyi-d email n wayen uzneɣ i imseqdacen wiyaḍ',
 'tog-diffonly' => 'Ur temliḍ-iyi-d ara ayen yellan seddaw imgerraden',
+'tog-showhiddencats' => 'Beqqeḍ taggayin yeffren',
+'tog-norollbackdiff' => 'Ur beqqeḍ ara "diff" ma yella usemmet',
 
 'underline-always' => 'Daymen',
 'underline-never' => 'Abaden',
 'underline-default' => 'Browser/Explorateur ameslugen',
 
+# Font style option in Special:Preferences
+'editfont-style' => 'Aɣanib n tasefsit n taɣzut ubeqqeḍ :',
+'editfont-default' => 'Tasefsit n iminig s lexṣas',
+'editfont-monospace' => 'Tasefsit s lqedd usbiḍ',
+'editfont-sansserif' => 'Tasefsit "Sans-serif"',
+'editfont-serif' => 'Tasefsit "Serif"',
+
 # Dates
 'sunday' => 'Ačer',
 'monday' => 'Arim',
@@ -146,9 +161,13 @@ $messages = array(
 'category-subcat-count' => 'Taggayt agi tesɛa {{PLURAL:$2|adu-taggayt|$2 adu-taggayin, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}}}} ddaw agi.',
 'category-subcat-count-limited' => 'Taggayt agi tesɛa {{PLURAL:$1|adu-taggayt agi|tid $1 adu-taggayin agi}} ddaw-agi.',
 'category-article-count' => 'Taggayt agi tesɛa {{PLURAL:$2|asebter agi|$2 isebtaren, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}} ddaw-agi}}.',
+'category-article-count-limited' => '{{PLURAL:$1|Asebter agi yella|$1 isebtar agi llan}} deg taggayt agi.',
 'category-file-count' => 'Taggayt agi tesɛa {{PLURAL:$2|afaylu agi|$2 ifuyla, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}} ddaw-agi}}.',
+'category-file-count-limited' => '{{PLURAL:$1|Afaylu agi yella|$1 ifuyla agi llan}} deg taggayt agi.',
 'listingcontinuesabbrev' => 'asartu',
+'index-category' => 'Isebtar s umatar',
 'noindex-category' => 'Asebter agi ur d-yerna ara deg umatar',
+'broken-file-category' => 'Isebtar s iseɣwan n ifuyla iṛzan',
 
 'about' => 'Awal ɣef...',
 'article' => 'Ayen yella deg usebter',
@@ -177,6 +196,9 @@ $messages = array(
 'vector-action-delete' => 'Mḥu',
 'vector-action-move' => 'Smimeḍ',
 'vector-action-protect' => 'Mmesten',
+'vector-action-undelete' => 'Uɣaled',
+'vector-action-unprotect' => 'Beddel amesten',
+'vector-simplesearch-preference' => 'Sermed isumar n unadi i silɣen (i "Vector" kan)',
 'vector-view-create' => 'Snulfu',
 'vector-view-edit' => 'Ẓẓiẓreg',
 'vector-view-history' => 'Ẓeṛ amazray',
@@ -199,13 +221,16 @@ $messages = array(
 'updatedmarker' => 'yettubeddel segmi tarzeft taneggarut inu',
 'printableversion' => 'Tasiwelt iwakken ad timprimiḍ',
 'permalink' => 'Azday ur yettbeddil ara',
-'print' => 'Imprimi',
+'print' => 'Siggez',
+'view' => 'Ẓeṛ',
 'edit' => 'Beddel',
 'create' => 'Snulfu',
 'editthispage' => 'Beddel asebter-agi',
+'create-this-page' => 'Snulfu asebter-agi',
 'delete' => 'Mḥu',
 'deletethispage' => 'Mḥu asebter-agi',
 'undelete_short' => 'Fakk amḥay n {{PLURAL:$1|yiwen ubeddel|$1 yibeddlen}}',
+'viewdeleted_short' => 'Ẓeṛ {{PLURAL:$1|yiwen abeddel yettumḥan|$1 Ibeddlen yettumḥan}}',
 'protect' => 'Ḥrez',
 'protect_change' => 'beddel tiḥḥerzi',
 'protectthispage' => 'Ḥrez asebter-agi',
@@ -238,6 +263,14 @@ $messages = array(
 'jumpto' => 'Neggez ar:',
 'jumptonavigation' => 'ẓer isebtar',
 'jumptosearch' => 'anadi',
+'view-pool-error' => 'Suref-aɣ, iqeddacen iwziren tura.
+Aṭas iseqdacen tnadin ad ẓṛen asebter agi.
+Ilaq ad arǧuḍ imir uqbel ad εreḍeḍ tikkelt nniḍen .
+
+$1',
+'pool-timeout' => 'Amenḍar iɛedda deg taganit n uzekṛun',
+'pool-queuefull' => 'Adras n umahil yečuṛ',
+'pool-errorunknown' => 'Anezri warisem',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'Awal ɣef {{SITENAME}}',
@@ -253,6 +286,7 @@ $messages = array(
 'helppage' => 'Help:Agbur',
 'mainpage' => 'Asebter amenzawi',
 'mainpage-description' => 'Asebter amenzawi',
+'policy-url' => 'Project:Ilugan',
 'portal' => 'Awwur n timetti',
 'portal-url' => 'Project:Awwur n timetti',
 'privacy' => 'Tudert tusligt',
@@ -260,11 +294,12 @@ $messages = array(
 
 'badaccess' => 'Agul n turagt',
 'badaccess-group0' => 'Ur tettalaseḍ ara ad texedmeḍ tigawt i tseqsiḍ.',
-'badaccess-groups' => 'Tigawt i steqsiḍ, llan ala imseqdacen seg yiwen n yiderman n $1 i zemren a t-xedmen.',
+'badaccess-groups' => 'Tigawt id steqsiḍ t-uffar kan i iseqdacen n {{PLURAL:$2|ugraw|igrawen}} : $1.',
 
 'versionrequired' => 'Yessefk ad tesɛiḍ tasiwelt $1 n MediaWiki',
 'versionrequiredtext' => 'Yessefk ad tesɛiḍ tasiwelt $1 n MediaWiki iwakken ad tesseqdceḍ asebter-agi. Ẓer [[Special:Version|tasiwelt n usebter]].',
 
+'ok' => 'Seɣbel',
 'retrievedfrom' => 'Yettwaddem seg "$1"',
 'youhavenewmessages' => 'Ɣur-k $1 ($2).',
 'newmessageslink' => 'Izen amaynut',
@@ -279,14 +314,21 @@ $messages = array(
 'toc' => 'Agbur',
 'showtoc' => 'Ssken',
 'hidetoc' => 'Ffer',
+'collapsible-collapse' => 'Seggelmes',
+'collapsible-expand' => 'Beqqeḍ',
 'thisisdeleted' => 'Ẓer neɣ err $1 am yella?',
 'viewdeleted' => 'Ẓer $1?',
 'restorelink' => '{{PLURAL:$1|Yiwen abeddel yettumḥan|$1 Ibeddlen yettumḥan}}',
 'feedlinks' => 'Asuddem:',
 'feed-invalid' => 'Anaw n usuddem mačči ṣaḥiḥ.',
+'feed-unavailable' => 'Isuddman RSS ur yestufan ara',
+'site-rss-feed' => 'Asuddem RSS n $1',
 'site-atom-feed' => 'Taneflit Atom n $1',
+'page-rss-feed' => 'Asuddem RSS n « $1 »',
 'page-atom-feed' => 'Taneflit Atom n "$1"',
 'red-link-title' => '$1 (ulac asebter)',
+'sort-descending' => 'Afran akaray',
+'sort-ascending' => 'Afran aseffes',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Amagrad',
@@ -333,16 +375,24 @@ Umata, wagi yeḍra mi neḍfeṛ azday ɣer yiwen diff aqbur naɣ ɣer amazray
 Ma mačči d-tajṛut agi, ihi d-taniwit deg uhil.
 Ilaq ad εeggenem yiwen [[Special:ListUsers/sysop|anedbal]] war ad ttum asefkem URL n uzday.',
 'missingarticle-rev' => '(uṭṭun n lqem : $1)',
+'missingarticle-diff' => '(Diff: $1, $2)',
 'readonly_lag' => 'Database d tamsekkert (weḥdes) axaṭer kra n serveur ɛeṭṭlen',
 'internalerror' => 'Agul zdaxel',
+'internalerror_info' => 'Anezri agensan : $1',
+'fileappenderrorread' => 'Ulamek an ɣeṛ « $1 »  mi taguri',
+'fileappenderror' => 'Ulamek an seffes « $1 » ar « $2 ».',
 'filecopyerror' => 'Ur yezmir ara ad yexdem alsaru n ufaylu "$1" ar "$2".',
 'filerenameerror' => 'Ur yezmir ara ad ibeddel isem ufaylu "$1" ar "$2".',
 'filedeleteerror' => 'Ur yezmir ara ad yemḥu afaylu "$1".',
+'directorycreateerror' => 'Ulamek an snulfu akaram « $1 ».',
 'filenotfound' => 'Ur yezmir ara ad yaf afaylu "$1".',
+'fileexistserror' => 'Ulamek an aru afaylu « $1 » : afaylu agi yesnulfad yakan.',
 'unexpected' => 'Agul: "$1"="$2".',
 'formerror' => 'Agul: ur yezmir ara ad yazen talɣa',
 'badarticleerror' => 'Ur yezmir ara ad yexdem tigawt-agi deg usebter-agi.',
-'cannotdelete' => 'Ur yezmir ara ad yemḥu asebter neɣ afaylu i tebɣiḍ. (Ahat amdan wayeḍ yemḥa-t.)',
+'cannotdelete' => 'Ulamek ad yemḥu asebter naɣ afaylu « $1 ».
+Ahat amdan wayeḍ yemḥa-t.',
+'cannotdelete-title' => 'Ulamek an kkes  asebter « $1 »',
 'badtitle' => 'Azwel ur yelhi',
 'badtitletext' => 'Asebter i testeqsiḍ fell-as mačči ṣaḥiḥ, d ilem, neɣ yella ugul deg wezday seg wikipedia s tutlayt tayeḍ neɣ deg wezday n wiki nniḍen. Ahat tesɛa asekkil ur yezmir ara ad yettuseqdac deg wezwel.',
 'perfcached' => 'Talɣut deg ukessar seg lkac u waqila mačči d tasiwelt taneggarut. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
@@ -352,31 +402,51 @@ Ilaq ad εeggenem yiwen [[Special:ListUsers/sysop|anedbal]] war ad ttum asefkem
 Tawuri: $1<br />
 Query: $2',
 'viewsource' => 'Ẓer aɣbalu',
+'viewsource-title' => 'Ẓeṛ aɣbalu n $1',
+'actionthrottled' => 'Tigawt tesɛa talast',
+'actionthrottledtext' => 'Iwakken an ewwet mgal tira yerkan (SPAM), tigawt agi tesɛa talast n amḍan n tikwalt deg akud awezzlan. talast agi t-ɛedda.
+Ɛred tikkelt nniḍen deg kra n dqiqa.',
 'protectedpagetext' => 'Asebter-agi d amsekker.',
 'viewsourcetext' => 'Tzemreḍ ad twaliḍ u txedmeḍ alsaru n uɣbalu n usebter-agi:',
+'viewyourtext' => 'Tzemṛeḍ ad ẓṛeḍ dɣa ad nɣeleḍ agbur n "ibeddlen inek/inem" deg usebter agi :',
 'protectedinterface' => 'Asebter-agi d amsekker axaṭer yettuseqdac i weḍris n software.',
 'editinginterface' => "'''Aɣtal:''' Aqla-k tettbeddileḍ asebter i yettuseqdac i weḍris n software. Tagmett n software i tt-ẓren yimseqdacen wiyaḍ ad tbeddel akk d ibeddlen inek.",
 'sqlhidden' => '(Query n SQL tettwaffer)',
-'cascadeprotected' => 'Asebter-agi yettwaḥrez seg ubeddil, axaṭer yettusekcem deg isebtar i ttwaḥerzen ula d nutni (acercur), ahaten:',
+'cascadeprotected' => 'Asebter-agi yegdel axaṭer yettusekcem deg {{PLURAL:$1|asebter yegdelen agi|isebtar yegdelen agi}} s Taxtiṛit « amesten s uceṛcuṛ » isermeden :
+$2',
+'namespaceprotected' => "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ isebtar n tallunt n isemawen \"'''\$1'''\".",
+'customcssprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n CSS, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
+'customjsprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n Javascript, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
+'ns-specialprotected' => 'Ur t-zemred ara ad beddeleḍ isebtar usligen',
+'titleprotected' => "Azwel agi yegdel deg usnulfu ɣef [[User:$1|$1]].
+Taɣẓint id yenna : ''$2''",
+
+# Virus scanner
+'virus-badscanner' => "Yir tawila : anafraḍ n infafaden warisem : ''$1''",
+'virus-scanfailed' => 'Abrir n unadi (tangalt $1)',
+'virus-unknownscanner' => 'amgelanfafad warisem :',
 
 # Login and logout pages
-'logouttext' => "'''Tura teffɣeḍ.'''
+'logouttext' => "'''Tura tesensereḍ.'''
 
-Tzemreḍ ad tesseqdceḍ {{SITENAME}} d udrig, neɣ tzemreḍ ad tkecmeḍ daɣen s yisem n wemseqdac inek (neɣ nniḍen).
+Tzemreḍ ad tesseqdceḍ {{SITENAME}} d udrig, [[Special:UserLogin|ad tkecmeḍ daɣen]] s yisem n wemseqdac inek (neɣ nniḍen).
 Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ lkac.",
-'welcomecreation' => '== Anṣuf yis-k, $1! ==
+'welcomecreation' => '== Anṣuf yisek (yisem), $1 ! ==
 
-Isem n wemseqdac inek yettwaxleq. Ur tettuḍ ara ad tbeddleḍ Isemyifiyen n {{SITENAME}} inek.',
+Amiḍan ik (im) yesnulfad.
+Ur tettuḍ ara ad tbeddleḍ [[Special:Preferences|isemyifiyen inek (inem) ɣef {{SITENAME}}]].',
 'yourname' => 'Isem n wemseqdac',
 'yourpassword' => 'Awal n tbaḍnit',
 'yourpasswordagain' => 'Ɛiwed ssekcem awal n tbaḍnit',
 'remembermypassword' => 'Cfu ɣef wawal n tbaḍnit inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
+'securelogin-stick-https' => 'Qqim uqqin s HTTPS sakin tuqqna',
 'yourdomainname' => 'Taɣult inek',
 'externaldberror' => 'Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.',
 'login' => 'Kcem',
 'nav-login-createaccount' => 'Kcem / Xleq isem n wemseqdac',
 'loginprompt' => 'Yessefk ad teǧǧiḍ ikukiyen (cookies) iwakken ad tkecmeḍ ar {{SITENAME}}.',
 'userlogin' => 'Kcem / Xleq isem n wemseqdac',
+'userloginnocreate' => 'Qqen',
 'logout' => 'Ffeɣ',
 'userlogout' => 'Ffeɣ',
 'notloggedin' => 'Ur tekcimeḍ ara',
@@ -387,29 +457,38 @@ Isem n wemseqdac inek yettwaxleq. Ur tettuḍ ara ad tbeddleḍ Isemyifiyen n {{
 'gotaccountlink' => 'Kcem',
 'userlogin-resetlink' => 'Ettuḍ tilɣa n tuqqna ?',
 'createaccountmail' => 's e-mail',
+'createaccountreason' => 'Ayɣer',
 'badretype' => 'Awal n tbaḍnit amezwaru d wis sin mačči d kif-kif.',
 'userexists' => 'Isem n wemseqdac yeddem-as amdan wayeḍ. Fren yiwen nniḍen.',
 'loginerror' => 'Agul n ukcam',
+'createaccounterror' => 'Ulamek ad nesnulfu amiḍan : $1',
 'nocookiesnew' => 'Isem n wemseqdac-agi yettwaxleq, meɛna ur tekcimeḍ ara. {{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten, umbeɛd kecm s yisem n wemseqdac akk d wawal n tbaḍnit inek.',
 'nocookieslogin' => '{{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten iwakken ad tkecmeḍ.',
+'nocookiesfornew' => 'Amiḍan n useqdac ur d-isnulfu ara, acku ur nezmer ara an sulu azar-is.
+Selken ma sermedeḍ "cookies", sismeḍ asebter dɣa εreḍ tikkelt nniḍen.',
 'noname' => 'Ur tefkiḍ ara isem n wemseqdac ṣaḥiḥ.',
 'loginsuccesstitle' => 'Tkecmeḍ !',
 'loginsuccess' => "'''Tkecmeḍ ar {{SITENAME}} s yisem n wemseqdac \"\$1\".'''",
-'nosuchuser' => 'Ulac isem n wemseqdac s yisem "$1". Ssenqed tira n yisem-nni, neɣ xelq isem n wemseqdac amaynut.',
+'nosuchuser' => 'Aseqdac « $1 » ulac-it d-agi.
+Ssenqed tira n yisem-nni, naɣ [[Special:UserLogin/signup|snulfu-d amiḍan amaynut]].',
 'nosuchusershort' => 'Ulac isem n wemseqdac s yisem "$1". Ssenqed tira n yisem-nni.',
 'nouserspecified' => 'Yessefk ad tefkeḍ isem n wemseqdac.',
+'login-userblocked' => 'Aseqdac agi i sewḥel. Tuqqna t-ugwi.',
 'wrongpassword' => 'Awal n tbaḍnit ɣaleṭ. Ɛreḍ daɣen.',
 'wrongpasswordempty' => 'Awal n tbaḍnit ulac-it. Ɛreḍ daɣen.',
-'passwordtooshort' => 'Awal n tbaḍnit inek d amecṭuḥ bezzaf. Yessefk ad yesɛu $1 isekkilen neɣ kter.',
+'passwordtooshort' => 'Awal-ik (im) n uɛaddi ilaq ad i sɛu adday {{PLURAL:$1|1 asekkil|$1 isekkilen}}.',
+'password-name-match' => 'Ilaq awal n uɛaddi ad yili imeẓli s-isem n useqdac.',
+'password-login-forbidden' => 'aseqdac agi d awal n uɛaddi agi d-izenbigen.',
 'mailmypassword' => 'Awal n tbaḍnit n e-mail',
 'passwordremindertitle' => 'Asmekti n wawal n tbaḍnit seg {{SITENAME}}',
-'passwordremindertext' => 'Amdan (waqila d kečč, seg tansa IP $1)
-yesteqsa iwakken a nazen awal n tbaḍnit amaynut i {{SITENAME}} ($4).
-Awal n tbaḍnit i wemseqdac "$2" yuɣal-d tura "$3".
-Mliḥ lukan tkecmeḍ u tbeddleḍ awal n tbaḍnit tura.
+'passwordremindertext' => 'Amdan (waqila d kečč/kem, seg tansa IP $1) yesteqsa iwakken a nazen
+Awal n uɛaddi amaynut i {{SITENAME}} ($4). Awal n uɛaddi i wemseqdac "$2" yuɣal-d tura "$3".
+Mliḥ lukan tkecmeḍ u tbeddleḍ Awal n uɛaddi tura.
+Tasewti n awal agi n uɛaddi amaynut ad yaweḍ deg {{PLURAL:$5|yiwen ass|$5 ussan}}
 
-Lukan mačči d kečč i yesteqsan neɣ tecfiḍ ɣef awal n tbaḍnit, tzemreḍ ad tkemmleḍ mebla ma tbeddleḍ awal n tbaḍnit.',
+Lukan mačči d kečč i yesteqsan naɣ tecfiḍ ɣef awal n uɛaddi, tzemreḍ ad tkemmleḍ mebla ma tbeddleḍ awal n uɛaddi.',
 'noemail' => '"$1" ur yesɛi ara email.',
+'noemailcreate' => 'Ilaq ad efkeḍ tansa e-mail i sɛan aseɣbel.',
 'passwordsent' => 'Awal n tbaḍnit amaynut yettwazen i emal inek, aylaw n "$1".
 G leɛnaya-k, kcem tikelt nniḍen yis-s.',
 'blocked-mailpassword' => 'Tansa n IP inek tɛekkel, ur tezmireḍ ara ad txedmeḍ abeddel,
@@ -417,29 +496,66 @@ ur tezmireḍ ara ad tesɛuḍ awal n tbaḍnit i tettuḍ.',
 'eauthentsent' => 'Yiwen e-mail yettwazen-ak iwakken ad tsenteḍ.
 Qbel kulci, ḍfer ayen yenn-ak deg e-mail,
 iwakken ad tbeyyneḍ belli tansa n email inek.',
-'throttled-mailpassword' => 'Asmekti n wawal n tbaḍnit yettwazen yagi deg $1 sswayeɛ i iɛeddan. Asmekti n wawal n tbaḍnit yettwazen tikelt kan mkul $1 swayeɛ.',
+'throttled-mailpassword' => 'Asmekti n wawal n uɛaddi yettwazen yagi deg {{PLURAL:$1|asrag agi aneggaru| $1 isragen agi ineggura}}. Asmekti n wawal n uɛaddi yettwazen tikelt kan mkul $1 swayeɛ. deg {{PLURAL:$1|asrag|azilal n $1 isragen}}.',
 'mailerror' => 'Agul asmi yettwazen e-mail: $1',
-'acct_creation_throttle_hit' => 'Surf-aɣ, txelqeḍ aṭas n yismawen n wemseqdac ($1). Ur tettalaseḍ ara ad txelqeḍ kter.',
-'emailauthenticated' => 'Tansa e-mail inek tettuɛqel deg $1.',
+'acct_creation_throttle_hit' => 'Amdan i seqdacen tansa IP inek/inem yesnulfud {{PLURAL:$1|yiwen amiḍan|$1 imiḍanen}} deg 24 izragen agi ineggura, negweḍ ar talast n turagt deg azilal agi n wakud.',
+'emailauthenticated' => 'Tansa e-mail inek/inem tesesteb ass n $2 af $3.',
 'emailnotauthenticated' => 'Tansa e-mail inek mazal ur tettuɛqel. Ḥedd e-mail ur ttwazen i ulaḥedd n iḍaɣaren-agi.',
 'noemailprefs' => 'Efk tansa e-mail iwakken ad leḥḥun iḍaɣaren-nni.',
 'emailconfirmlink' => 'Sentem tansa e-mail inek',
 'invalidemailaddress' => 'Tansa e-mail-agi ur telhi, ur tesɛi ara taseddast n lɛali. Ssekcem tansa e-mail s taseddast n lɛali neɣ ur tefkiḍ acemma.',
+'cannotchangeemail' => 'Ur t-zemreḍ ara ad beddeleḍ tansa e-mail deg uwiki agi.',
 'accountcreated' => 'Isem n wemseqdac yettwaxleq',
 'accountcreatedtext' => 'Isem n wemseqdac i $1 yettwaxleq.',
+'createaccount-title' => 'Asnulfu n umiḍan i {{SITENAME}}',
+'createaccount-text' => 'Albeɛḍ yesnulfu-d amiḍan i tansa e-amil inek/inem ɣef {{SITENAME}} ($4) s-isem n-useqdac « $2 », s awal n uɛaddi « $3 ».
+Ilaq tura ad lldiḍ taɣimit dɣa ad beddeleḍ awal ik/im n uɛaddi.',
+'usernamehasherror' => 'Isem n useqdac ur yezmer ara ad i sɛu  isekkilen n ugeddeḥ',
+'login-throttled' => 'Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.
+Ilaq ad rǧuḍ ciṭaḥ uqbel ad ɛerdeḍ tikkelt nniḍen.',
+'login-abort-generic' => 'Taremt ik/im n tuqqna tebrir',
 'loginlanguagelabel' => 'Tutlayt: $1',
+'suspicious-userlogout' => 'Asuter n usenser yugwi acku yella ugur s iminig naɣ s tazarkatut n uqeddac proxy.',
+
+# E-mail sending
+'php-mail-error-unknown' => 'anezri warisem deg tawuri mail() n PHP',
+'user-mail-no-addy' => 'Ɛred ad icegaɛ e-mail war tansa e-mail',
 
 # Change password dialog
-'resetpass' => 'Iɛawed awal n tbaḍnit',
+'resetpass' => 'Beddel awal n uɛaddi',
 'resetpass_announce' => 'Tkecmeḍ s ungal yettwazen-ak s e-mail (ungal-nni qrib yemmut). Iwekken tkemmleḍ, yessefk ad textareḍ awal n tbaḍnit amaynut dagi:',
 'resetpass_text' => '<!-- Rnu aḍris dagi -->',
-'resetpass_header' => 'Ɛiwed awal n tbaḍnit',
+'resetpass_header' => 'Beddel awal n uɛassi n umiḍan',
 'oldpassword' => 'Awal n tbaḍnit aqdim:',
 'newpassword' => 'Awal n tbaḍnit amaynut:',
 'retypenew' => 'Ɛiwed ssekcem n tbaḍnit amaynut:',
 'resetpass_submit' => 'Eg awal n tbaḍnit u kcem',
 'resetpass_success' => 'Awal n tbaḍnit yettubeddel! Qrib ad tkecmeḍ...',
-'resetpass_forbidden' => 'Ur tezmireḍ ara ad tbeddleḍ awal n tbaḍnit deg wiki-yagi',
+'resetpass_forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi',
+'resetpass-no-info' => 'Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.',
+'resetpass-submit-loggedin' => 'Beddel awal n uɛaddi',
+'resetpass-submit-cancel' => 'Semmewet',
+'resetpass-wrong-oldpass' => 'Awal n uɛaddi ur i seɣbel ara.
+Ahat ilaq ad beddeleḍ awal ik/im n uɛaddi naɣ ad ssutereḍ awal n uɛaddi amaynut.',
+'resetpass-temp-password' => 'Awal n uɛaddi amakud',
+
+# Special:PasswordReset
+'passwordreset' => 'Awennez tikkelt nniḍen n awal uɛaddi',
+'passwordreset-text' => 'Ččur tiferkit agi iwakken ad eṭṭfeḍ tirawt n usmekti  deg-es tilɣa n umiḍan inek/inem.',
+'passwordreset-legend' => 'Awennez tikkelt nniḍen n awal uɛaddi',
+'passwordreset-disabled' => 'Awennez n awal uɛaddi yensa deg uwiki agi.',
+'passwordreset-pretext' => '{{PLURAL:$1||Sekcem aferdis n isefka ddaw agi}}',
+'passwordreset-username' => 'Isem n useqdac',
+'passwordreset-domain' => 'Talɣut :',
+'passwordreset-capture' => 'Ẓeṛ tirawt ?',
+'passwordreset-email' => 'Tansa e-mail :',
+
+# Special:ChangeEmail
+'changeemail-no-info' => 'Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.',
+'changeemail-newemail' => 'Tansa e-mail tamaynut :',
+'changeemail-none' => '(ulac)',
+'changeemail-submit' => 'Beddel tansa e-mail',
+'changeemail-cancel' => 'Semmewet',
 
 # Edit page toolbar
 'bold_sample' => 'Aḍris aberbuz',
@@ -478,16 +594,37 @@ iwakken ad tbeyyneḍ belli tansa n email inek.',
 'summary-preview' => 'Pre-timeẓriwt n ugzul:',
 'subject-preview' => 'Pre-timeẓriwt asentel/azwel azellum:',
 'blockedtitle' => 'Amseqdac iɛekkel',
-'blockedtext' => "'''Isem n wemseqdac neɣ tansa n IP inek ɛekkelen.'''
+'blockedtext' => "'''Amiḍan ik n useqdac neɣ tansa n IP sewḥlen.'''
+
+Asewḥel yetwexdem af $1
+Taɣẓint id yenna : ''$2''.
+
+* Tazzwara n usewḥel : $8
+* Taggara n usewḥel : $6
+* Amiḍan i sewḥlen : $7.
+
+
+Tzemreḍ ad tmeslayeḍ s $1 neɣ [[{{MediaWiki:Grouppage-sysop}}|anedbal]] nniḍen iwakken ad tsmelayem ɣef uɛekkil-nni.
+Lukan ur tefkiḍ ara email saḥih deg [[Special:Preferences|isemyifiyen n wemseqdac]], ur tezmireḍ ara ad tazneḍ email.
+Tansa n IP inek n tura d $3, ID n uɛekkil d #$5.
+Smekti-ten u fka-ten i unedbal-nni.",
+'autoblockedtext' => "Tansa IP inek/inem tesewḥel s-uwurman acku d-aseqdac nniḍen i ttisexdmen. Ladɣa ula d-aseqdac agi, isewḥel-it $1.
 
-$1 iɛekkel-it u yenna-d ''$2''.
+Taɣẓint id yenna : ''$2''.
 
-Tzemreḍ ad tmeslayeḍ akk d $1 neɣ [[{{MediaWiki:Grouppage-sysop}}|anedbal]] nniḍen iwakken ad tsmelayem ɣef uɛekkil-nni.
-Lukan ur tefkiḍ ara email saḥih deg [[Special:Preferences|isemyifiyen n wemseqdac]], ur tezmireḍ ara ad tazneḍ email. Tansa n IP inek n tura d $3, ID n uɛekkil d #$5. Smekti-ten u fka-ten i unedbal-nni.",
+* Tazzwara n usewḥel : $8
+* Taggara n usewḥel : $6
+* Amiḍan i sewḥlen : $7.
+
+
+Tzemreḍ ad tmeslayeḍ s $1 neɣ [[{{MediaWiki:Grouppage-sysop}}|anedbal]] nniḍen iwakken ad tsmelayem ɣef uɛekkil-nni.
+Lukan ur tefkiḍ ara email saḥih deg [[Special:Preferences|isemyifiyen n wemseqdac]], ur tezmireḍ ara ad tazneḍ email.
+Tansa n IP inek n tura d $3, ID n uɛekkil d #$5.
+Smekti-ten u fka-ten i unedbal-nni.",
 'whitelistedittext' => 'Yessefk ad $1 iwakken ad tbeddleḍ isebtar.',
 'confirmedittext' => 'Yessefk ad tsentmeḍ tansa e-mail inek uqbel abeddel. Xtar tansa e-mail di [[Special:Preferences|isemyifiyen n wemseqdac]].',
-'nosuchsectiontitle' => 'Amur ulac-it',
-'nosuchsectiontext' => 'Tɛerḍeḍ ad tbeddleḍ amur ulac-it.',
+'nosuchsectiontitle' => 'Ulamek an af tigezmi',
+'nosuchsectiontext' => 'Tɛerḍeḍ ad tbeddleḍ tigezmi ur llan ara.',
 'loginreqtitle' => 'Yessefk ad tkecmeḍ',
 'loginreqlink' => 'Kcem',
 'loginreqpagetext' => 'Yessefk $1 iwakken ad teẓriḍ isebtar wiyaḍ.',
@@ -508,6 +645,10 @@ naɣ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|asebter={{FULLPAGENAME
 'userjsyoucanpreview' => "'''Tixidest:''' Sseqdec taqeffalt 'Ssken pre-timeẓriwt' iwakken ad tɛerḍeḍ JS amynut inek uqbel ad tesmektiḍ.",
 'usercsspreview' => "'''Smekti belli aql-ak twaliḍ CSS inek kan, mazal ur yettusmekti ara!'''",
 'userjspreview' => "'''Smekti belli aql-ak tɛerḍeḍ JavaScript inek kan, mazal ur yettusmekti ara!'''",
+'sitecsspreview' => "'''Smekti belli aql-ak tɛerḍeḍ asebter CSS agi inek kan.'''
+'''Mazal ur yettusmekti ara!'''",
+'sitejspreview' => "'''Smekti belli aql-ak tɛerḍeḍ angal agi JavaScript inek kan.'''
+'''Mazal ur yettusmekti ara!'''",
 'userinvalidcssjstitle' => '\'\'\'Aɣtal:\'\'\' Aglim "$1" ulac-it. Ur tettuḍ ara belli isebtar ".css" d ".js" i txedmeḍ sseqdacen azwel i yesɛan isekkilen imecṭuḥen, s umedya: {{ns:user}}:Foo/vector.css akk d {{ns:user}}:Foo/Vector.css.',
 'updated' => '(Yettubeddel)',
 'note' => "'''Tamawt:'''",
@@ -553,7 +694,7 @@ deg afaylu nniḍen akken tesseqdceḍ-it umbeɛd.'''",
 'cascadeprotectedwarning' => "'''Aɣtal:''' Asebter-agi iɛekkel iwakken ad zemren ala inedbalen a t-beddlen, axaṭer yettwassekcem deg isebtar i yettwaḥerzen agi (acercur):",
 'templatesused' => '{{PLURAL:$1|Talɣa i seqdacen|Tilɣatin i seqdacen}} deg usebter agi :',
 'templatesusedpreview' => 'Talɣiwin ttuseqdacen deg pre-timeẓriwt-agi:',
-'templatesusedsection' => 'Talɣiwin ttuseqdacen deg amur-agi:',
+'templatesusedsection' => '{{PLURAL:$1|Talɣa i seqdacen|Tilɣatin i seqdacen}} deg tigezmi agi :',
 'template-protected' => '(yettwaḥrez)',
 'template-semiprotected' => '(nnefṣ-yettwaḥrez)',
 'hiddencategories' => 'Asebter agi yella deg {{PLURAL:$1|Taggayt i ffren|Tiggayin i ffren}} agi :',
@@ -561,6 +702,8 @@ deg afaylu nniḍen akken tesseqdceḍ-it umbeɛd.'''",
 'nocreatetitle' => 'Axleq n isebtar meḥdud',
 'nocreatetext' => 'Adeg n internet agi iḥedded axleq n isebtar imaynuten.
 Tzemreḍ a d-uɣaleḍ u tbeddleḍ asebter i yellan, neɣ ad [[Special:UserLogin|tkecmeḍ neɣ ad txelqeḍ isem n wemseqdac]].',
+'permissionserrors' => 'Anezri n turagt',
+'permissionserrorstext' => 'Ur tesɛiḍ ara turagt iwakken ad xedmeḍ wayagi i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :',
 'permissionserrorstext-withaction' => 'Ur sɛiḍ ara ttesriḥ af $2, i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :',
 'recreate-moveddeleted-warn' => "'''Ɣur-wet : asebter agi i tebɣam ad snulfum, yetwekkes uqbel.'''
 
@@ -603,7 +746,7 @@ Tabadut: (tura) = amgirred akk d tasiwelt n tura,
 'history-show-deleted' => 'Ekkes kan',
 'histfirst' => 'Tikkin timezwura',
 'histlast' => 'Tikkin tineggura',
-'historysize' => '($1 bytes/octets)',
+'historysize' => '({{PLURAL:$1|1 atamḍan|$1 itamḍanen}})',
 'historyempty' => '(amecluc)',
 
 # Revision feed
@@ -615,40 +758,66 @@ Ahat yettumḥa neɣ yettbeddel isem-is.
 Ɛreḍ [[Special:Search|ad tnadiḍ deg wiki]] ɣef isebtar imaynuten.',
 
 # Revision deletion
-'rev-deleted-comment' => '(awennit yettwakes)',
+'rev-deleted-comment' => '(agzul n taẓrigt yettwakes)',
 'rev-deleted-user' => '(isem n wemseqdac yettwakes)',
 'rev-deleted-event' => '(asekcem yettwakkes)',
-'rev-deleted-text-permission' => 'Tasiwelt-agi n tettwakkes seg weɣbar azayez.
-Waqila yella kter n talɣut deg [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} aɣmis n umḥay].',
-'rev-deleted-text-view' => 'Tasiwelt-agi n tettwakkes seg weɣbar azayez.
-Kečč d anedbal, tzemreḍ a t-twaliḍ
-Waqila yella kter n talɣut [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} aɣmis n umḥay].',
+'rev-deleted-text-permission' => "Lqem n usebter agi '''tetwesfeḍ'''.
+Tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n usfeḍ].",
+'rev-deleted-text-unhide' => "Lqem n usebter agi '''tetwesfeḍ'''.
+Tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n usfeḍ].
+Tzemreḍ meqqar [$1 ad ẓṛeḍ lqem agi]  ma tebɣiḍ",
+'rev-suppressed-text-unhide' => "Lqem n usebter agi '''tetwekkes'''.
+Tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n umḥu].
+Tzemreḍ meqqar [$1 ad ẓṛeḍ lqem agi]  ma tebɣiḍ",
+'rev-deleted-text-view' => "Lqem n usebter agi '''tetwesfeḍ'''.
+Tzemreḍ att ẓṛeḍ ; tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n usfeḍ].",
+'rev-suppressed-text-view' => "Lqem n usebter agi '''tetwekkes'''.
+Tzemreḍ att ẓṛeḍ ; tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n umḥu].",
+'rev-deleted-no-diff' => "Ur tzemreḍ ara ad ẓṛeḍ \"diff\" agi acku yiwet n lqem-is '''tetwesfeḍ'''.
+Tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n usfeḍ].",
+'rev-suppressed-no-diff' => "Ur tzemreḍ ara ad ẓṛeḍ \"diff\" agi acku yiwet n lqem-is '''tetwekkes'''.",
+'rev-deleted-unhide-diff' => "Yiwen lqem n tameẓla agi '''yetwesfeḍ'''.
+Tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n usfeḍ].
+Tzemreḍ meqqar [$1 ad ẓṛeḍ tameẓla agi] ma tebɣiḍ",
+'rev-suppressed-unhide-diff' => "Yiwen lqem n tameẓla agi '''yetwekkes'''.
+Tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n umḥu].
+Tzemreḍ meqqar [$1 ad ẓṛeḍ tameẓla agi] ma tebɣiḍ",
+'rev-deleted-diff-view' => "Yiwen lqem n \"diff\" agi '''yetwekkes'''.
+Tzemreḍ att ẓṛeḍ ; tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n umḥu].",
+'rev-suppressed-diff-view' => "Yiwen lqem n \"diff\" agi '''yetwesfeḍ'''.
+Tzemreḍ att ẓṛeḍ ; tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n usfeḍ].",
 'rev-delundel' => 'ssken/ffer',
+'rev-showdeleted' => 'Ssken',
 'revisiondelete' => 'Mḥu/kkes amḥay tisiwal',
-'revdelete-nooldid-title' => 'Ulac nnican i tasiwelt',
-'revdelete-nooldid-text' => 'Ur textareḍ ara tasiwelt nnican akken ad txedmeḍ tawuri fell-as.',
+'revdelete-nooldid-title' => 'Lqem asaḍas ur i ɣbel ara',
+'revdelete-nooldid-text' => 'Ur textareḍ ara lqem nnican akken ad txedmeḍ tawuri fell-as.',
+'revdelete-show-file-submit' => 'Ih',
 'revdelete-selected' => "'''{{PLURAL:$2|Tasiwelt tettwafren|Tisiwal ttwafernen}} n [[:$1]]'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Tamirt n uɣmis tettwafren|Isallen n uɣmis ttwafernen}}:'''",
-'revdelete-text' => "'''Tisiwal i yettumḥan ad baben deg umezruy n usebter d weɣmis,
-meɛna imuren seg-sen zemren imdanen a ten-ẓren.'''
-
-Inedbalen wiyaḍ deg wiki-yagi zemren ad ẓren imuren i yettwafren u zemren a ten-mḥan, ḥaca ma llan icekkilen.",
-'revdelete-legend' => 'Eg icekkilen',
+'revdelete-text' => 'Ileqman d tidyanin yettumḥan ad qqimen deg umezruy n usebter dɣa deg iɣmisen, maca agbur nsen ur i sɛu ara tuffart i uzayez."
+Inedbalen wiyaḍ deg {{SITENAME}} zemren ad ẓṛen imuren i yettwafren u zemren a ten-mḥan, ḥaca ma llan icekkilen.',
+'revdelete-legend' => 'Sbebd akref n tamuɣli',
 'revdelete-hide-text' => 'Ffer aḍris n tsiwelt',
 'revdelete-hide-image' => 'Ffer ayen yellan deg ufaylu',
 'revdelete-hide-name' => 'Ffer tigawt d nnican',
 'revdelete-hide-comment' => 'Ffer abeddel n uwennit',
 'revdelete-hide-user' => 'Ffer Isem n wemseqdac/IP n umeskar',
-'revdelete-hide-restricted' => 'Eg icekkilen i inedbalen d yimdanen wiyaḍ',
+'revdelete-hide-restricted' => 'Mḥu isefka agi i inedbalen d yimdanen wiyaḍ',
+'revdelete-radio-set' => 'Ih',
+'revdelete-radio-unset' => 'Ala',
 'revdelete-suppress' => 'Kkes talɣut seg inedbalen d yimdanen wiyaḍ',
 'revdelete-unsuppress' => 'Kkes icekkilen ɣef tisiwal i yuɣalen-d',
 'revdelete-log' => 'Ayɣer',
-'revdelete-submit' => 'Eg-it i tasiwelt tettwafren',
-'revdelete-success' => "'''Asekkud n tasiwelt yettuxdem.'''",
+'revdelete-submit' => 'Snes {{PLURAL:$1|i tacaggart i tettwafren|i ticggarin i tettwafren}}',
+'revdelete-success' => "''Asekkud n ileqman yemucce war uguren.'''",
 'logdelete-success' => "'''Asekkud n tamirt yettuxdem.'''",
 'revdel-restore' => 'beddel timezrit',
 'revdel-restore-deleted' => 'allas iqḍeεen',
 'revdel-restore-visible' => 'allas i nezmer an ẓeṛ',
+'pagehist' => 'Amezruy n usebter',
+
+# History merging
+'mergehistory-reason' => 'Ayɣer',
 
 # Merge log
 'revertmerge' => 'Fru',
@@ -694,6 +863,7 @@ Inedbalen wiyaḍ deg wiki-yagi zemren ad ẓren imuren i yettwafren u zemren a
 'search-redirect' => '(asemmimeḍ $1)',
 'search-section' => '(tigezmi $1)',
 'search-suggest' => 'D awal $1 i tnadiḍ ?',
+'search-relatedarticle' => 'Amassaɣ',
 'searchrelated' => 'ineqqes',
 'searchall' => 'akk',
 'showingresults' => "Tamuli n {{PLURAL:$1|'''Yiwen''' wegmud|'''$1''' n yigmad}} seg  #'''$2'''.",
@@ -731,6 +901,7 @@ i yesɛan akk awalen i banen-d).",
 'prefs-watchlist-days' => 'Geddac n wussan yessefk ad banen deg wumuɣ n uɛessi:',
 'prefs-watchlist-edits' => 'Geddac n yibeddlen yessefk ad banen deg wumuɣ n uɛessi ameqqran:',
 'prefs-misc' => 'Isemyifiyen wiyaḍ',
+'prefs-resetpass' => 'Beddel awal n uɛaddi',
 'saveprefs' => 'Smekti',
 'resetprefs' => 'Reset/réinitialiser isemyifiyen',
 'prefs-editing' => 'Abedddil',
@@ -745,6 +916,13 @@ i yesɛan akk awalen i banen-d).",
 'timezoneoffset' => 'Amgirred n ukud',
 'servertime' => 'Akud n server',
 'guesstimezone' => 'Sseqdec azal n browser/explorateur',
+'timezoneregion-america' => 'Tamrikt',
+'timezoneregion-antarctica' => 'Antarktik',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asya',
+'timezoneregion-atlantic' => "Agaraw At'lasi",
+'timezoneregion-australia' => 'Usṭralya',
+'timezoneregion-europe' => 'Turuft',
 'allowemail' => 'Eǧǧ imseqdacen wiyaḍ a k-aznen email',
 'defaultns' => 'Nadi deg yismawen n taɣult s umeslugen:',
 'default' => 'ameslugen',
@@ -1181,7 +1359,7 @@ Tadhelt:
 'excontentauthor' => "Ayen yella: '$1' ('[[Special:Contributions/$2|$2]]' kan i yekken deg-s)",
 'exbeforeblank' => "Ayen yella uqbal ma yettumḥa: '$1'",
 'exblank' => 'asebter yella d ilem',
-'historywarning' => 'Aɣtal: Asebter i ara temḥuḍ yesɛa amezruy:',
+'historywarning' => 'Ɣur-wet : Asebter i ara temḥuḍ yesɛa amezruy s azal alemmas n $1 {{PLURAL:$1|lqem|ileqman}} :',
 'actioncomplete' => 'Axdam yekfa',
 'actionfailed' => 'Tigawt agi texser',
 'deletedtext' => '"$1" yettumḥa.
@@ -1224,7 +1402,7 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
 'viewdeletedpage' => 'Ẓer isebtar yettumḥan',
 'undeletelink' => 'ẓeṛ/uɣaled',
 'undeleteviewlink' => 'ẓeṛ',
-'undeletecomment' => 'Awennit:',
+'undeletecomment' => 'Taɣẓint :',
 'undelete-header' => 'Ẓer [[Special:Log/delete|aɣmis n umḥay]] i isebtar ttumḥan tura.',
 'undelete-search-box' => 'Nadi ɣef isebtar yettumḥan',
 'undelete-search-prefix' => 'Ssken isebtar i yebdan s:',
@@ -1297,8 +1475,9 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
 'block-log-flags-nocreate' => 'asnulfu n umiḍan yessegdel',
 'proxyblockreason' => 'Tansa n IP inek teɛkel axaṭer nettat "open proxy". G leɛnayek, meslay akk d provider inek.',
 'proxyblocksuccess' => 'D ayen.',
-'sorbsreason' => 'Tansa n IP inek teɛkel axaṭer nettat "open proxy" deg DNSBL yettuseqdac da.',
-'sorbs_create_account_reason' => 'Tansa n IP inek teɛkel axaṭer nettat "open proxy" deg DNSBL yettuseqdac da. Ur tezmireḍ ara ad txelqeḍ isem n wemseqdac',
+'sorbsreason' => 'Tansa IP inek/inem tella deg yiwen umuɣ am "open proxy" deg DNSBL yettuseqdac deg {{SITENAME}}.',
+'sorbs_create_account_reason' => 'Tansa IP inek/inem tella deg yiwen umuɣ am "open proxy" deg DNSBL yettuseqdac deg {{SITENAME}}.
+Ur tezmireḍ ara ad snulfuḍ amiḍan.',
 
 # Developer tools
 'lockdb' => 'Sekker database',
@@ -1341,7 +1520,7 @@ Xtar yiwen nniḍen.',
 
 Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken yeqqim-d wemkan i usmimeḍ?',
 'delete_and_move_confirm' => 'Ih, mḥu asebter',
-'delete_and_move_reason' => 'Mḥu iwakken yeqqim-d wemkan i usmimeḍ',
+'delete_and_move_reason' => 'Asebter yemḥa iwakken yeqqim-d wemkan i usmimeḍ seg "[[$1]]"',
 'selfmove' => 'Izwal amezwaru d uneggaru kif-kif; ur yezmir ara ad yesmimeḍ asebter ɣur iman-is.',
 
 # Export
@@ -1356,10 +1535,11 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'allmessagesname' => 'Isem',
 'allmessagesdefault' => 'Aḍris ameslugen',
 'allmessagescurrent' => 'Aḍris n tura',
-'allmessagestext' => 'Wagi d umuɣ n izen n system i yellan deg yisem n taɣult.
-Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+'allmessagestext' => 'Wagi d-umuɣ n inzan yestufan deg tallunt MediaWiki.
+Ẓeṛ [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] dɣa [//translatewiki.net translatewiki.net] ma tebɣiḍ ad ɛiweneḍ i usideg imcettel n MediaWiki.',
 'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ut yezmir ara ad yettuseqdac axaṭer '''\$wgUseDatabaseMessages''' yettwakkes.",
 'allmessages-language' => 'Tutlayt :',
+'allmessages-filter-submit' => 'Ruḥ',
 
 # Thumbnails
 'thumbnail-more' => 'Ssemɣer',
@@ -1372,6 +1552,8 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'import-interwiki-history' => 'Xdem alsaru n akk tisiwal umezruy n usebter-agi',
 'import-interwiki-submit' => 'Ssekcem',
 'import-interwiki-namespace' => 'Azen isebtar ar isem n taɣult:',
+'import-upload-filename' => 'Isem n ufaylu :',
+'import-comment' => 'Awennit :',
 'importstart' => 'Asekcem n isebtar...',
 'import-revision-count' => '$1 {{PLURAL:$1|tasiwelt|tisiwal}}',
 'importnopages' => 'Ulac isebtar iwakken ad ttussekcmen.',
@@ -1380,7 +1562,7 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'importcantopen' => 'Ur yezmir ara ad yexdem asekcem n ufaylu',
 'importbadinterwiki' => 'Azday n interwiki ur yelhi',
 'importnotext' => 'D ilem neɣ ulac aḍris',
-'importsuccess' => 'Asekcem yekfa!',
+'importsuccess' => 'Asekcem yekfa !',
 'importhistoryconflict' => 'Amennuɣ ger tisiwal n umezruy (ahat asebter-agi yettwazen yagi)',
 'importnosources' => 'Asekcam n transwiki ur yexdim ara u amezruy n usekcam yettwakkes.',
 'importnofile' => 'ulaḥedd afaylu usekcam ur yettwazen.',
@@ -1389,9 +1571,9 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'importlogpage' => 'Aɣmis n usekcam',
 'importlogpagetext' => 'Adeblan n usekcam n isebtar i yesɛan amezruy ubeddel seg wiki tiyaḍ.',
 'import-logentry-upload' => 'Yessekcem [[$1]] s usekcam n ufaylu',
-'import-logentry-upload-detail' => '$1 tasiwelt(tisiwal)',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|lqem|ileqman}}',
 'import-logentry-interwiki' => '$1 s transwiki',
-'import-logentry-interwiki-detail' => '$1 tasiwelt(tisiwal) seg $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|lqem|ileqman}} seg $2',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Asebter n umseqdac inu',
@@ -1458,12 +1640,12 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'tooltip-summary' => 'Sekcem agzul awezzlan',
 
 # Attribution
-'anonymous' => 'Amseqdac udrig (Imseqdacen udrigen) n {{SITENAME}}',
+'anonymous' => '{{PLURAL:$1|Aseqdac udrig|Iseqdacen udrigen}} ɣef {{SITENAME}}',
 'siteuser' => '{{SITENAME}} amseqdac $1',
 'lastmodifiedatby' => 'Tikkelt taneggarut asmi yettubeddel asebter-agi $2, $1 sɣur $3.',
-'othercontribs' => 'Tikkin n wemseqdac-agi.',
+'othercontribs' => 'Tikkin ɣef umahil n $1.',
 'others' => 'wiyaḍ',
-'siteusers' => '{{SITENAME}} amseqdac(imseqdacen) $1',
+'siteusers' => '{{PLURAL:$2|aseqdac|iseqdacen}} $1 n {{SITENAME}}',
 'creditspage' => 'Win ixedmen asebter',
 'nocredits' => 'Ulac talɣut ɣef wayen ixedmen asebter-agi.',
 
@@ -1478,7 +1660,7 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'markaspatrolleddiff' => 'Rcem "yettwassenqden"',
 'markaspatrolledtext' => 'Rcem amagrad-agi "yettwassenqden"',
 'markedaspatrolled' => 'Rcem belli yettwasenqed',
-'markedaspatrolledtext' => 'Tasiwelt i textareḍ tettwassenqed.',
+'markedaspatrolledtext' => 'Lqem i textareḍ n [[:$1]] tettwassenqed.',
 'rcpatroldisabled' => 'Yettwakkes asenqad n ibeddlen imaynuten',
 'rcpatroldisabledtext' => 'Yettwakkes asenqad n ibeddlen imaynuten',
 'markedaspatrollederror' => 'Ur yezmir ara ad yercem "yettwassenqden"',
@@ -1496,8 +1678,9 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'nextdiff' => 'Amgirred ameḍfir →',
 
 # Media information
-'mediawarning' => "'''Aɣtal''': Waqila afaylu-yagi yesɛa angal aḥraymi, lukan a t-tesseqdceḍ yezmer ad ixesser aselkim inek.",
-'imagemaxsize' => 'Ḥedded tiddi n tugniwin deg yiglamen n tugniwim i:',
+'mediawarning' => "'''Ɣuṛ-wet''': tawsit agi n ufaylu tezmer at sɛu angal aḥraymi.
+Lukan a t-tesseqdceḍ yezmer ad yexsser aselkim inek/inem.",
+'imagemaxsize' => "Tiddi tafellayt n tugniwin :<br />''(i isebtar n weglam ufaylu)''",
 'thumbsize' => 'Tiddi n tugna tamecṭuḥt:',
 'file-info' => 'tiddi n ufaylu: $1, anaw n MIME: $2',
 'file-info-size' => '$1 × $2 pixel, tiddi n ufaylu: $3, anaw n MIME: $4',
@@ -1511,7 +1694,7 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'noimages' => 'Tugna ulac-itt.',
 'ilsubmit' => 'Nadi',
 'bydate' => 's uzemz',
-'sp-newimages-showfrom' => 'Ssken tugniwin timaynutin seg $1',
+'sp-newimages-showfrom' => 'Beqqeḍ ifuyla imaynuten seg $1 ar $2',
 
 # Bad image list
 'bad_image_list' => 'Amasal d-wagi :
@@ -1557,9 +1740,10 @@ Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna
 # E-mail address confirmation
 'confirmemail' => 'Sentem tansa n e-mail',
 'confirmemail_noemail' => 'Ur tesɛiḍ ara tansa n email ṣaḥiḥ deg [[Special:Preferences|isemyifiyen n wemseqdac]] inek.',
-'confirmemail_text' => 'Deg wiki-yagi, yessefk ad tvalidiḍ tansa n email inek
-qbel ad tesseqdceḍ iḍaɣaren n email. Tella taqeffalt d akessar, wekki fell-as
-iwakken yettwazen ungal n usentem semail. Email-nni yesɛa azady, ldi-t.',
+'confirmemail_text' => '{{SITENAME}} yeḥweǧ aseɣbel n tansa e-mail inek/inem uqbel ad sexdemeḍ tanfa n tirawt.
+Seqdec taqeffalt ddaw-agi iwakken ad cegɛeḍ e-mail n uragag ar tansa e-mail inek/inem.
+Tirawt at sɛu azday deg-es tangalt. Tzemreḍ at seqdeceḍ tikkelt kan deg talast n ukud ;
+llid azday agi deg iminig iwakken ad sergegeḍ tansa e-mail inek/inem.',
 'confirmemail_pending' => 'Yettwazen-ak yagi ungal n usentem; lukan txelqeḍ isem wemseqdac tura kan,
 ahat yessefk ad tegguniḍ cwiṭ qbel ad tɛreḍeḍ ad testeqsiḍ ɣef ungal amaynut.',
 'confirmemail_send' => 'Azen-iyi-d angal n usentem s e-mail iwakken ad snetmeɣ.',
@@ -1567,30 +1751,36 @@ ahat yessefk ad tegguniḍ cwiṭ qbel ad tɛreḍeḍ ad testeqsiḍ ɣef ungal
 'confirmemail_oncreate' => 'Angal n usentem yettwazen ar tansa n e-mail inek.
 Yessefk ad tesseqdceḍ angal-agi iwakken ad tkecmeḍ, meɛna yessefk a t-tefkeḍ
 iwakken ad xedmen yiḍaɣaren n email deg wiki-yagi.',
-'confirmemail_sendfailed' => 'Ur yezmir ara ad yazen asentem n email. Ssenqed tansa n email inek.
+'confirmemail_sendfailed' => '{{SITENAME}} ur yezmir ara ad yazen asentem n email.
+Ssenqed tansa n email inek.
 
-Email yuɣal-d: $1',
+Ahil n uzzun n e-mail yuɣal-d s-izen agi : $1',
 'confirmemail_invalid' => 'Angal n usentem mačči ṣaḥiḥ. Waqila yemmut.',
 'confirmemail_needlogin' => 'Yessefk $1 iwakken tesnetmeḍ tansa n email inek.',
-'confirmemail_success' => 'Asentem n tansa n email inek yekfa. Tura tzemreḍ ad tkecmeḍ.',
+'confirmemail_success' => 'Tansa e-mail inek/inem tergeg.
+Tura tzemreḍ ad [[Special:UserLogin|qqeneḍ]].',
 'confirmemail_loggedin' => 'Asentem n tansa n email inek yekfa tura.',
 'confirmemail_error' => 'Yella ugur s usmekti n usentem inek.',
 'confirmemail_subject' => 'Asentem n tansa n email seg {{SITENAME}}',
-'confirmemail_body' => 'Amdan, waqila d kečč, seg tansa IP $1, yexleq
-isem n wemseqdac "$2" s tansa n e-mail deg {{SITENAME}}.
+'confirmemail_body' => 'Amdan, ahat d kečč/kem, seg tansa IP $1,
+yexleq amiḍan "$2" s tansa n e-mail deg {{SITENAME}}.
 
-Iwakken tbeyyneḍ belli isem n wemseqdac inek u terreḍ
-iḍaɣaren n email ad xdemen deg {{SITENAME}}, ldi azday agi:
+Iwakken ad sergegeḍ amiḍan agi d-win-inek/inem dɣa iwakken
+an sermed tiwura n tirawt deg {{SITENAME}},
+ilaq ad lkemeḍ aseɣwen agi deg iminig :
 
 $3
 
-Lukan mačči d *kečč*, ur teḍfireḍ ara azday. Angal n usentem-agi
-ad yemmut ass $4.',
+Ma mačči d *kečč/kem*, ilaq ad lkemeḍ aseɣwen agi deg iminig :
+
+$5
+
+Angal n usentem-agi ad yemmut ass $4.',
 
 # Scary transclusion
 'scarytranscludedisabled' => '[Yettwakkes assekcam n isebtar seg wiki tiyaḍ]',
-'scarytranscludefailed' => '[Ur yezmir ara a d-yawi talɣa n $1; suref-aɣ]',
-'scarytranscludetoolong' => '[URL d aɣezfan bezzaf; suref-aɣ]',
+'scarytranscludefailed' => '[Ur yezmir ara a d-yawi talɣa n $1]',
+'scarytranscludetoolong' => '[URL agi uffay aṭas]',
 
 # Delete conflict
 'deletedwhileediting' => 'Aɣtal: Asebter-agi yettumḥa qbel ad tebdiḍ a t-tbeddleḍ!',
@@ -1600,8 +1790,13 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 'recreate' => 'Ɛiwed xleq',
 
 # action=purge
+'confirm_purge_button' => 'Seɣbel',
 'confirm-purge-top' => 'Mḥu lkac n usebter-agi?',
 
+# action=watch/unwatch
+'confirm-watch-button' => 'Seɣbel',
+'confirm-unwatch-button' => 'Seɣbel',
+
 # Multipage image navigation
 'imgmultipageprev' => '← asebter ssabeq',
 'imgmultipagenext' => 'asebter ameḍfir →',
@@ -1639,8 +1834,8 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 Ɛreḍ pre-timeẓriwt tamagnut.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Ibeddlen imaynuten ɣef $1 tisinin ahat ur ttbanen ara deg wumuɣ-agi.',
-'lag-warn-high' => 'Database tɛeṭṭel aṭas, ibeddlen imaynuten ɣef $1 tisinin ahat ur ttbanen ara deg wumuɣ-agi.',
+'lag-warn-normal' => 'Ibeddelen n ddaw n $1 {{PLURAL:$1|tasint|tisinin}} ur ttbanen ara deg umuɣ-agi.',
+'lag-warn-high' => 'Acku af talalut taxatart n uqeddac n taffa n isefka, ibeddelen n ddaw n $1 {{PLURAL:$1|tasint|tisinin}} ur ttbanen ara deg umuɣ-agi.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Mebla isebtar "Amyannan", umuɣ n uɛessi inek ɣur-s {{PLURAL:$1|1 wezwel|$1 yizwalen}}.',
index bca56ac..0d3daa5 100644 (file)
@@ -939,8 +939,6 @@ $1",
 'search-interwiki-caption' => 'Проэкт къыдэщӀхэр',
 'search-interwiki-default' => '$1 къыхэкӀар:',
 'search-interwiki-more' => '(иджыри)',
-'search-mwsuggest-enabled' => 'чэнджэш иӀэу',
-'search-mwsuggest-disabled' => 'чэнджэщыншэу',
 'nonefound' => "'''Гулъытыгъуэ.''' Тэрэзу имытхамэ узхуэныкъуэр, лъыхъуэгъуэр лъэныкъу хъуамкӀи ирегъэкӀуэкӀ. Къэгъэсэбэп ''all:'' пыгъувэгъуэр, зэгъэзэхуэгъуэ иӀэн щхьэкӀэ (хэтхэм я тепсэлъыхьыныгъэр, щапхъэхэр, нымыщӀхэр джоуэ хиубыдэным щхьэ), иэ узхуэныкъуэ лъэныкъуэр итхэ.",
 'search-nonefound' => 'Узлъыхъуэм техуэу щыӀэкъым.',
 'powersearch' => 'Убгъуауэ лъыхъу',
index cf9fff0..8828392 100644 (file)
@@ -766,8 +766,6 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 'search-interwiki-caption' => 'Procê bıray',
 'search-interwiki-default' => '$1 neticey:',
 'search-interwiki-more' => '(zafêr)',
-'search-mwsuggest-enabled' => 'ebe teklifu',
-'search-mwsuggest-disabled' => 'teklifi çinê',
 'search-relatedarticle' => 'alaqedar',
 'searchrelated' => 'alaqedar',
 'searchall' => 'pêro',
index bf7d354..89a7503 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Kazakh (Arabic script) (‫قازاقشا (تٴوتە)‬)
+/** Kazakh (Arabic script) (قازاقشا (تٴوتە)‏)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 0bcf016..ff293e5 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Kazakh (Cyrillic script) (‪қазақша (кирил)‬)
+/** Kazakh (Cyrillic script) (қазақша (кирил)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1274,8 +1274,6 @@ $3 келтірілген себебі: ''$2''",
 'search-interwiki-caption' => 'Бауырлас жобалар',
 'search-interwiki-default' => '$1 нәтиже:',
 'search-interwiki-more' => '(көбірек)',
-'search-mwsuggest-enabled' => 'ұсынымдармен',
-'search-mwsuggest-disabled' => 'ұсынымдарсыз',
 'search-relatedarticle' => 'Қатысты',
 'mwsuggest-disable' => 'AJAX ұсынымдарын өшір',
 'searcheverything-enable' => 'Белгіленген есім кеңістігінен іздеу',
@@ -3193,4 +3191,6 @@ $5
 'logentry-newusers-autocreate' => '$1 аккаунты автоматты түрде тіркелді',
 'newuserlog-byemail' => 'Құпия сөз e-mail арқылы жіберілді',
 
+# Unknown messages
+'searchsuggest-search' => 'Іздеу',
 );
index c2524b7..5c3e0e2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Kazakh (Latin script) (‪qazaqşa (latın)‬)
+/** Kazakh (Latin script) (qazaqşa (latın)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 8946a7c..01ae3d0 100644 (file)
@@ -1300,8 +1300,6 @@ $1",
 'search-interwiki-caption' => 'គម្រោងជាបងប្អូន',
 'search-interwiki-default' => 'លទ្ធផលពី$1៖',
 'search-interwiki-more' => '(បន្ថែមទៀត)',
-'search-mwsuggest-enabled' => 'មានសំណើ',
-'search-mwsuggest-disabled' => 'គ្មានសំណើ',
 'search-relatedarticle' => 'ទាក់ទិន',
 'mwsuggest-disable' => 'មិនប្រើសំនើAJAX',
 'searcheverything-enable' => 'ស្វែងរកនៅក្នុងលំហឈ្មោះទាំងអស់',
@@ -3666,4 +3664,7 @@ $5
 'duration-decades' => '$1 {{PLURAL:$1|ទសវត្សរ៍|ទសវត្សរ៍}}',
 'duration-centuries' => '$1 {{PLURAL:$1|សតវត្សរ៍|សតវត្សរ៍}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ដែលមានពាក្យ...',
+'searchsuggest-search' => 'ស្វែងរក​',
 );
index 42c52af..5a81333 100644 (file)
@@ -845,8 +845,6 @@ $2',
 'search-interwiki-caption' => 'ಬಳಗದ ಇತರ ಯೋಜನೆಗಳು',
 'search-interwiki-default' => '$1 ಫಲಿತಾಂಶಗಳು:',
 'search-interwiki-more' => '(ಹೆಚ್ಚು)',
-'search-mwsuggest-enabled' => 'ಸಲಹೆಗಳೊಂದಿಗೆ',
-'search-mwsuggest-disabled' => 'ಯಾವುದೇ ಸಲಹೆಗಳಿಲ್ಲ',
 'search-relatedarticle' => 'ಸಂಬಂಧಿತ',
 'mwsuggest-disable' => 'AJAX ಸಲಹೆಗಳನ್ನು ತೋರದಿರು',
 'searchrelated' => 'ಸಂಬಂಧಿತ',
index 3583a3f..ed4503b 100644 (file)
@@ -18,6 +18,7 @@
  * @author Gapo
  * @author Gjue
  * @author Ha98574
+ * @author Hoo
  * @author IRTC1015
  * @author ITurtle
  * @author Idh0854
@@ -653,7 +654,7 @@ $1',
 # Main script and global functions
 'nosuchaction' => '해당하는 동작이 없습니다.',
 'nosuchactiontext' => 'URL로 요청한 동작이 잘못되었습니다.
-당신은 URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니다.
+URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니다.
 이것은 {{SITENAME}}의 버그일 수도 있습니다.',
 'nosuchspecialpage' => '해당하는 특수 문서가 없습니다.',
 'nospecialpagetext' => '<strong>요청한 특수 문서가 존재하지 않습니다.</strong>
@@ -723,7 +724,7 @@ $1',
 제한을 넘었으니 몇 분 뒤에 새로 시도하세요.',
 'protectedpagetext' => '이 문서는 편집할 수 없도록 보호되어 있습니다.',
 'viewsourcetext' => '문서의 원본을 보거나 복사할 수 있습니다:',
-'viewyourtext' => "당신은 이 문서에 남긴 '''당신의 편집''' 내용을 보거나 복사할 수 있습니다:",
+'viewyourtext' => "이 문서에 남긴 '''내 편집''' 내용을 보거나 복사할 수 있습니다:",
 'protectedinterface' => '이 문서는 이 위키의 소프트웨어 인터페이스에 쓰이는 문서로, 부정 행위를 막기 위해 보호되어 있습니다.
 모든 위키에 대한 번역을 추가하거나 바꾸려면 미디어위키 지역화 프로젝트인 [//translatewiki.net/wiki/Main_Page?setlang=ko translatewiki.net]에 참여하시기 바랍니다.',
 'editinginterface' => "'''경고''': 소프트웨어 인터페이스에 쓰이는 문서를 고치고 있습니다.
@@ -733,8 +734,8 @@ $1',
 'cascadeprotected' => '이 문서는 연쇄 보호가 걸린 {{PLURAL:$1|문서}}에 포함되어 있어 함께 보호됩니다. 연쇄 보호된 문서:
 $2',
 'namespaceprotected' => "'''$1''' 이름공간을 편집할 수 있는 권한이 없습니다.",
-'customcssprotected' => '여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 당신은 이 CSS 문서를 편집할 수 없습니다.',
-'customjsprotected' => '여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 당신은 이 자바스크립트 문서를 편집할 수 없습니다.',
+'customcssprotected' => '여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 CSS 문서를 편집할 수 없습니다.',
+'customjsprotected' => '여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 자바스크립트 문서를 편집할 수 없습니다.',
 'ns-specialprotected' => '특수 문서는 편집할 수 없습니다.',
 'titleprotected' => '[[User:$1|$1]] 사용자가 문서 만들기를 금지했습니다.
 이유는 다음과 같습니다. "$2"',
@@ -793,10 +794,10 @@ $2',
 지금 사용하는 웹 브라우저는 쿠키를 사용하지 않도록 설정되어 있습니다.
 로그인하기 전에 웹 브라우저에서 쿠키를 사용하도록 설정해주세요.',
 'nocookieslogin' => '{{SITENAME}}에서는 로그인을 위해 쿠키를 사용합니다.
-당신의 웹 브라우저에서 쿠키가 비활성되어 있습니다.
-ì¿ í\82¤ ì\82¬ì\9a©ì\9d\84 í\99\9cì\84±í\99\94í\95\9c ë\8b¤ì\9d\8c ë¡\9cê·¸ì\9d¸í\95´ ì£¼세요.',
+쿠키가 비활성되어 있습니다.
+ì¿ í\82¤ ì\82¬ì\9a©ì\9d\84 í\99\9cì\84±í\99\94í\95\9c ë\8b¤ì\9d\8c ë\8b¤ì\8b\9c ì\8b\9cë\8f\84í\95\98세요.',
 'nocookiesfornew' => '요청의 출처를 확인할 수 없기 때문에 사용자 계정이 만들어지지 않았습니다.
-쿠키를 허용한 것을 확인한 후에 다시 시도해 보십시오.',
+쿠키를 허용한 것을 확인한 후에 이 문서를 새로 고치고 나서 다시 시도하세요.',
 'noname' => '사용자 이름이 올바르지 않습니다.',
 'loginsuccesstitle' => '로그인 성공',
 'loginsuccess' => "'''{{SITENAME}}에 \"\$1\" 계정으로 로그인했습니다.'''",
@@ -1394,8 +1395,6 @@ $1",
 'search-interwiki-caption' => '자매 프로젝트',
 'search-interwiki-default' => '$1 결과:',
 'search-interwiki-more' => '(더 보기)',
-'search-mwsuggest-enabled' => '검색어 제안 있음',
-'search-mwsuggest-disabled' => '검색어 제안 없음',
 'search-relatedarticle' => '관련',
 'mwsuggest-disable' => 'AJAX 검색어 제안 끄기',
 'searcheverything-enable' => '모든 이름공간에서 찾기',
@@ -1821,8 +1820,8 @@ $2 형식만 사용할 수 있습니다.',
 'fileexists' => '같은 이름의 파일이 이미 있습니다. 파일을 바꾸고 싶지 않다면 <strong>[[:$1]]</strong> 파일을 확인해 주세요.
 [[$1|thumb]]',
 'filepageexists' => '이 파일의 설명 문서가 <strong>[[:$1]]</strong>에 존재하지만, 이 이름을 가진 파일이 존재하지 않습니다.
-당신이 입력한 설명은 설명 문서에 반영되지 않을 것입니다.
-당신의 설명을 반영시키려면, 직접 편집하셔야 합니다.
+입력한 설명은 설명 문서에 반영되지 않을 것입니다.
+설명을 반영시키려면, 직접 편집하셔야 합니다.
 [[$1|thumb]]',
 'fileexists-extension' => '비슷한 이름의 파일이 존재합니다: [[$2|thumb]]
 * 올리려는 파일 이름: <strong>[[:$1]]</strong>
@@ -2758,7 +2757,7 @@ $1',
 'blocklist-tempblocks' => '기한이 정해진 차단을 숨기기',
 'blocklist-addressblocks' => '단일 IP 차단을 숨기기',
 'blocklist-rangeblocks' => '광역 차단을 숨기기',
-'blocklist-timestamp' => '날짜·시각',
+'blocklist-timestamp' => '시간 기록',
 'blocklist-target' => '차단 대상',
 'blocklist-expiry' => '차단 기한',
 'blocklist-by' => '차단한 관리자',
@@ -2871,10 +2870,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 [[Special:DoubleRedirects|이중 넘겨주기]]나 [[Special:BrokenRedirects|끊긴 넘겨주기]]가 있는지 확인해주세요.
 당신은 넘겨주기 링크가 제대로 향하고 있는지 확인하여야 합니다.
 
-참고로 새 제목을 가진 문서가 이미 있다면 다음 경우에 해당하지 않으면 이 문서는 옮겨지지 '''않을''' 것입니다.
-* 비어 있거나,
-* 넘겨주기 문서이며,
-* 과거에 편집 내력이 없는 경우
+참고로 새 제목을 가진 문서가 이미 있다면 비어 있거나 넘겨주기 문서이며, 과거에 편집 내역이 없으면 이 문서는 옮겨지지 '''않을''' 것입니다.
 이는 당신이 실수로 문서를 옮겼을 때 되돌릴 수 있으며 이미 있는 문서를 덮어쓸 수 없음을 의미합니다.
 
 '''경고!'''
@@ -3061,7 +3057,6 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 
 # JavaScriptTest
 'javascripttest' => '자바스크립트 테스트',
-'javascripttest-disabled' => '이 기능은 비활성되어 있습니다.',
 'javascripttest-title' => '$1 테스트 실행',
 'javascripttest-pagetext-noframework' => '이 페이지는 자바스크립트 테스트를 실행하기 위한 용도로 할당되어 있습니다.',
 'javascripttest-pagetext-unknownframework' => '실험용 프레임워크 "$1"를 알 수 없습니다.',
@@ -3941,7 +3936,7 @@ $5
 'version-version' => '(버전 $1)',
 'version-license' => '라이선스',
 'version-poweredby-credits' => "이 위키는 '''[//www.mediawiki.org/ MediaWiki]'''를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
-'version-poweredby-others' => '[{{SERVER}}{{SCRIPTPATH}}/CREDITS 그 외 다른 개발자]',
+'version-poweredby-others' => '그 외 다른 개발자',
 'version-license-info' => "미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.
 
 미디어위키가 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참고하십시오.
@@ -4157,4 +4152,7 @@ $5
 'duration-centuries' => '$1{{PLURAL:$1|세기}}',
 'duration-millennia' => '$1{{PLURAL:$1|천년}}',
 
+# Unknown messages
+'searchsuggest-containing' => '다음의 어구가 들어간 문서 찾기',
+'searchsuggest-search' => '찾기',
 );
index d457a15..3bf1d2a 100644 (file)
@@ -987,8 +987,6 @@ $1",
 'search-interwiki-caption' => 'Джууукъ проектле',
 'search-interwiki-default' => '$1 эсеблери:',
 'search-interwiki-more' => '(дагъыда)',
-'search-mwsuggest-enabled' => 'юретиуле бла',
-'search-mwsuggest-disabled' => 'юретиулесиз',
 'search-relatedarticle' => 'Байламлы',
 'mwsuggest-disable' => 'AJAX юретиулени джукълатыгъыз',
 'searcheverything-enable' => 'Атланы бютёу аламларында изле',
@@ -3470,4 +3468,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'duration-centuries' => '$1 {{PLURAL:$1|ёмюр}}',
 'duration-millennia' => '$1 {{PLURAL:$1|мингджыллыкъ}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ичиндегиси…',
+'searchsuggest-search' => 'Излеу',
 );
index 73beeb4..5e03b09 100644 (file)
@@ -1346,8 +1346,6 @@ Mieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 'search-interwiki-caption' => 'Schwesterprojekte',
 'search-interwiki-default' => '$1 hät heh di Träffer jefonge:',
 'search-interwiki-more' => '(mieh)',
-'search-mwsuggest-enabled' => 'met Vürschläsh',
-'search-mwsuggest-disabled' => 'ohne Vürschläsh',
 'search-relatedarticle' => 'Ähnlesch',
 'mwsuggest-disable' => 'Kein automatische Hölp-Liss per Ajax beim Tippe em Feld för et Söke',
 'searcheverything-enable' => 'En alle Appachtemangs söhke',
@@ -2383,7 +2381,7 @@ Alles klor?',
 'email-legend' => 'Scheck en<i lang="en"> e-mail</i> aan ene andere Metmaacher fum Wiki',
 'emailfrom' => 'Vun:',
 'emailto' => 'Aan:',
-'emailsubject' => 'Ã\9cvverschreff:',
+'emailsubject' => 'Ã\96vverschreff:',
 'emailmessage' => 'Dä Tex fun Dinge Nohreesch:',
 'emailsend' => 'Avschecke',
 'emailccme' => 'Scheck mer en Kopie vun dä E-Mail.',
@@ -3066,7 +3064,6 @@ Bes esu joot, un versök et noch ens.',
 
 # JavaScriptTest
 'javascripttest' => ' JavaSkrepte ußprobeere.',
-'javascripttest-disabled' => 'Di Funxjon es en heh dämm Wiki ußjeschalldt.',
 'javascripttest-title' => 'De Prööfunge „$1“ loufe.',
 'javascripttest-pagetext-noframework' => 'Heh di Sigg es för JavaSkrepte ußzeprobeere.',
 'javascripttest-pagetext-unknownframework' => 'Dä Prööfrahme „$1“ es onbikannt.',
@@ -4222,4 +4219,7 @@ Wat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg
 'duration-centuries' => '{{PLURAL:$1|e Johrhondert|$1 Johrhonderte|kei Johrhondert}}',
 'duration-millennia' => '{{PLURAL:$1|e Johrdousend|$1 Johrdousende|kei Johrdousend}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'dren änthallde…',
+'searchsuggest-search' => 'Söhke',
 );
index f7c0735..4f098a6 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Kurdish (Latin script) (‪Kurdî (latînî)‬)
+/** Kurdish (Latin script) (Kurdî (latînî)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index f2bccbf..2a4f304 100644 (file)
@@ -692,8 +692,6 @@ Leyenda: (act) = diferencias con la versión actual,
 'search-interwiki-caption' => 'Proyectos hermanos',
 'search-interwiki-default' => 'Los resultados de $1:',
 'search-interwiki-more' => '(más)',
-'search-mwsuggest-enabled' => 'con consejos',
-'search-mwsuggest-disabled' => 'no ay consejos',
 'searchrelated' => 'lisionado',
 'searchall' => 'todos',
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
index c08ec2c..e54ac39 100644 (file)
@@ -1182,8 +1182,6 @@ Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zréck
 'search-interwiki-caption' => 'Schwësterprojeten',
 'search-interwiki-default' => '$1 Resultater:',
 'search-interwiki-more' => '(méi)',
-'search-mwsuggest-enabled' => 'mat Virschléi',
-'search-mwsuggest-disabled' => 'keng Virschléi',
 'search-relatedarticle' => 'A Verbindung',
 'mwsuggest-disable' => 'Ajax-Virschléi ausschalten',
 'searcheverything-enable' => 'An allen Nummraim sichen',
@@ -2003,6 +2001,7 @@ Denkt w.e.g. drunn datt aner Internetsäiten dëse Fichier mat enger direkter UR
 Dir kënnt d'Siche limitéieren wann Dir e Log-Typ, e Benotzernumm (case-senisitive) oder déi gefrote Säit (och case-senisitive) agitt.",
 'logempty' => 'Näischt fonnt.',
 'log-title-wildcard' => 'Titel fänkt mat dësem Text un',
+'showhideselectedlogentries' => 'Déi erausgesichte Entréeën am Logbuch weisen/verstoppen',
 
 # Special:AllPages
 'allpages' => 'All Säiten',
@@ -2780,7 +2779,6 @@ Späichert en op Ärem Computer of a luet en hei nees erop.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript-Test',
-'javascripttest-disabled' => 'Dës Funktioun gouf an dëser Wiki net aktivéiert.',
 'javascripttest-title' => '$1-Tester ginn elo gemaach',
 'javascripttest-pagetext-noframework' => 'Dës Säit ass fir Java-Script-Tester reservéiert.',
 'javascripttest-pagetext-unknownframework' => 'Onbekannten Test-Framework "$1".',
@@ -2900,7 +2898,10 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
 'pageinfo-header-basic' => 'Basisinformatiounen',
 'pageinfo-header-edits' => 'Historique vun den Ännerungen',
 'pageinfo-header-restrictions' => 'Spär vun der Säit',
+'pageinfo-header-properties' => 'Eegeschafte vun der Säit',
 'pageinfo-display-title' => 'Titel dee gewise gëtt',
+'pageinfo-default-sort' => 'Standard-Zortéierschlëssel',
+'pageinfo-length' => 'Gréisst vun der Säit (a Bytes)',
 'pageinfo-article-id' => 'ID (Nummer) vun der Säit',
 'pageinfo-views' => 'Zuel vun de Kéieren déi dës Säit gekuckt gouf',
 'pageinfo-watchers' => "Zuel vun de Benotzer déi d'Säit iwwerwaachen",
@@ -2913,6 +2914,7 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
 'pageinfo-edits' => 'Gesamtzuel vun den Ännerungen',
 'pageinfo-authors' => 'Gesamtzuel vun de verschiddenen Auteuren',
 'pageinfo-recent-edits' => 'Zuel vun de rezenten Ännerungen (an de leschten $1)',
+'pageinfo-recent-authors' => 'Zuel vun de verschiddenen Auteuren',
 'pageinfo-restriction' => 'Protectioun vun der Säit ({{lcfirst:$1}})',
 'pageinfo-magic-words' => '{{PLURAL:$1|Magescht Wuert|Magesch Wierder}} ($1)',
 'pageinfo-hidden-categories' => 'Verstoppte {{PLURAL:$1|Kategorie|Kategorien}} ($1)',
@@ -3173,6 +3175,7 @@ Déi aner sinn am Standard verstoppt.
 'exif-iimsupplementalcategory' => 'Zousätzlech Kategorien',
 'exif-datetimeexpires' => 'Net benotzen nom',
 'exif-datetimereleased' => 'Erausginn den',
+'exif-originaltransmissionref' => "Geo-Code vun der Plaz vu wou d'Foto iwwermëttelt gouf",
 'exif-identifier' => 'Identifiant',
 'exif-lens' => 'Objektiv dat benotzt gouf',
 'exif-serialnumber' => 'Seriennummer vun der Kamera',
@@ -3746,6 +3749,7 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'api-error-badtoken' => 'Interne Feeler: falschen Token.',
 'api-error-copyuploaddisabled' => "D'Eroplueden iwwer eng URL ass op dësem Server desaktivéiert.",
 'api-error-duplicate' => 'Et gëtt schonn {{PLURAL:$1|[$2 en anere Fichier]|[$2 aner Fichiere]}} mat dem selwechten Inhalt op dem Site',
+'api-error-duplicate-archive' => 'Et gouf schonn {{PLURAL:$1| [een anere Fichier]|[$2 aner Fichieren]}} op dem Site mat deemselwechten Inhalt, {{PLURAL:$1|e gouf was|se goufen}} awer geläscht.',
 'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|Duebele Fichier, dee scho geläscht gouf|Duebel Fichieren, déi scho geläscht goufen}}',
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|Duebele Fichier|Duebel Fichieren}}',
 'api-error-empty-file' => 'De Fichier deen Dir geschéckt hutt war eidel.',
@@ -3792,4 +3796,7 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Millenaire|Millenairen}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'mat ...',
+'searchsuggest-search' => 'Sichen',
 );
index ffe54c2..d6e15d9 100644 (file)
@@ -567,8 +567,6 @@ $messages = array(
 'search-interwiki-caption' => 'Мукьва проект',
 'search-interwiki-default' => '$1(жавабар)',
 'search-interwiki-more' => '(мадни)',
-'search-mwsuggest-enabled' => 'меслятар галаз',
-'search-mwsuggest-disabled' => 'меслятар галачиз',
 'search-relatedarticle' => 'Галкlанавай',
 'searchrelated' => 'Галкlанавай',
 'searchall' => 'вири',
index 88b41b4..33b8ea1 100644 (file)
@@ -844,8 +844,6 @@ oba ku gano agali ku lupapula luno.<br />
 'search-interwiki-caption' => "Pulojekiti ezikolagana n'eno",
 'search-interwiki-default' => 'ebizuulidwa ku $1:',
 'search-interwiki-more' => '(ebikyaliyo)',
-'search-mwsuggest-enabled' => 'mpeeraako amagezi',
-'search-mwsuggest-disabled' => "sisitemu ereme okuteebereza ky'onoonya",
 'searchall' => '',
 'nonefound' => "'''Wekkaanye''': Okunoonya kuno kukoma mu makuŋaanyizo amalondemu okugyako nga okulagidde okweyonera awalala.
 W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipediya yonna. Bw'obanga olina ekkuŋaanyizo limu lyokka lyoyagala okunoonyezamu, soosawo erinnya lyalyo w'owandikira by'onoonya.",
index 2487b54..f1ca73d 100644 (file)
@@ -1147,8 +1147,6 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 'search-interwiki-caption' => 'Zösterprojecte',
 'search-interwiki-default' => '$1 resultate:',
 'search-interwiki-more' => '(meer)',
-'search-mwsuggest-enabled' => 'mit suggesties',
-'search-mwsuggest-disabled' => 'gein suggesties',
 'search-relatedarticle' => 'Gerelateerd',
 'mwsuggest-disable' => 'Suggesties via AJAX oetsjakele',
 'searcheverything-enable' => 'Zeuke in alle naamruumdes',
@@ -2730,7 +2728,6 @@ Slaon de oetveur op dien eige systeem op, en voeg dae dao nao hiej toe.',
 
 # JavaScriptTest
 'javascripttest' => 'Tes JavaScript',
-'javascripttest-disabled' => 'Dees funksje steit oet op deze wiki.',
 'javascripttest-title' => 'Veur tes oet veur $1',
 'javascripttest-pagetext-noframework' => "Dees pagina is gerizzerveerd veur 't oetveure van JavaScriptteste.",
 'javascripttest-pagetext-unknownframework' => 'Ónbekèndje testframework "$1".',
@@ -3730,4 +3727,7 @@ Anges kin se-n ouch \'t einvawdig formeleer hieónger gebroeke. Dien commentaar
 'duration-centuries' => '$1 {{PLURAL:$1|ieëf|ieëf}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'bevat...',
+'searchsuggest-search' => 'Zeuke',
 );
index 0e446f3..4537cb3 100644 (file)
@@ -1178,8 +1178,6 @@ Prašome patikrinti sąrašus.',
 'search-interwiki-caption' => 'Dukteriniai projektai',
 'search-interwiki-default' => '$1 rezultatai:',
 'search-interwiki-more' => '(daugiau)',
-'search-mwsuggest-enabled' => 'su pasiūlymais',
-'search-mwsuggest-disabled' => 'nėra pasiūlymų',
 'search-relatedarticle' => 'Susiję',
 'mwsuggest-disable' => 'Slėpti AJAX pasiūlymus',
 'searcheverything-enable' => 'Ieškoti visose vardų srityse',
@@ -2778,7 +2776,6 @@ Išsaugokite jį savo kompiuteryje ir įkelkite jį čia.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript testavimas',
-'javascripttest-disabled' => 'Ši funkcija šiame wiki projekte neįjungta.',
 'javascripttest-title' => 'Vykdomas $1 testavimas',
 'javascripttest-pagetext-noframework' => 'Šis puslapis yra skirtas vykdyti JavaScript testavimus.',
 'javascripttest-pagetext-unknownframework' => 'Nežinoma "$1" testavimo struktūra.',
@@ -3803,4 +3800,6 @@ Kitu atveju, galite naudotis žemiau esančia paprastesne forma. Jūsų komentar
 'duration-centuries' => '$1 {{PLURAL:$1|amžius|amžiai|amžių}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tūkstantmetis|tūkstantmečiai|tūkstantmečių}}',
 
+# Unknown messages
+'searchsuggest-search' => 'Ieškoti',
 );
index 2af1c67..91fca9f 100644 (file)
@@ -731,8 +731,6 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'search-interwiki-caption' => 'Hmachhawppuite',
 'search-interwiki-default' => 'Chhuak $1:',
 'search-interwiki-more' => '(tam)',
-'search-mwsuggest-enabled' => 'rawtna telin',
-'search-mwsuggest-disabled' => 'rawtna tel lovin',
 'search-relatedarticle' => 'Laichin',
 'mwsuggest-disable' => 'AJAX rawtna tithi rawh',
 'searcheverything-enable' => 'Hminghmun zawng zawngah zawng rawh',
@@ -1934,4 +1932,7 @@ A bak zawng chu thuhrûk sa vek a ni ang.
 'feedback-message' => 'Thu',
 'feedback-cancel' => 'Sûtna',
 
+# Unknown messages
+'searchsuggest-containing' => 'hemi thu telna hi...',
+'searchsuggest-search' => 'Zawnna',
 );
index af20cc9..1f6693c 100644 (file)
@@ -307,9 +307,10 @@ $1',
 
 'ok' => 'Labi',
 'retrievedfrom' => 'Saturs iegūts no "$1"',
-'youhavenewmessages' => 'Tev ir $1 (skat. $2).',
+'youhavenewmessages' => 'Tev ir $1 (skatīt $2).',
 'newmessageslink' => 'jauns vēstījums',
 'newmessagesdifflink' => 'pēdējā izmaiņa',
+'newmessageslinkplural' => '{{PLURAL:$1|jauns vēstījums|jauni vēstījumi}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|pēdējā izmaiņa|pēdējās izmaiņas}}',
 'youhavenewmessagesmulti' => 'Tev ir jauns ziņojums: $1',
 'editsection' => 'labot',
@@ -932,8 +933,6 @@ $1",
 'search-interwiki-caption' => 'Citi projekti',
 'search-interwiki-default' => 'Rezultāti no $1:',
 'search-interwiki-more' => '(vairāk)',
-'search-mwsuggest-enabled' => 'ar ieteikumiem',
-'search-mwsuggest-disabled' => 'bez ieteikumiem',
 'search-relatedarticle' => 'Saistītais',
 'mwsuggest-disable' => 'Atslēgt AJAX ieteikumus',
 'searcheverything-enable' => 'Meklēt visās nosaukumvietās',
@@ -3109,4 +3108,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 'api-error-unknown-warning' => 'Nezināms brīdinājums: $1',
 'api-error-uploaddisabled' => 'Augšupielāde šajā wiki  ir atslēgta.',
 
+# Unknown messages
+'searchsuggest-containing' => 'Meklējamā frāze:',
+'searchsuggest-search' => 'Meklēt',
 );
index 3a273c5..907e269 100644 (file)
@@ -11,6 +11,7 @@
  * @author Justincheng12345
  * @author Omnipaedista
  * @author Shinjiman
+ * @author Super Wang
  */
 
 $specialPageAliases = array(
@@ -409,6 +410,8 @@ $1',
 'youhavenewmessages' => '子有$1($2)',
 'newmessageslink' => '新訊',
 'newmessagesdifflink' => '變更',
+'youhavenewmessagesfromusers' => '子有 $1 自 {{PLURAL:$3|another user|$3 簿戶也}} ($2)。',
+'youhavenewmessagesmanyusers' => '子有 $1 自多簿戶 ( $2 )',
 'youhavenewmessagesmulti' => '新訊於$1',
 'editsection' => '纂',
 'editold' => '纂',
@@ -507,6 +510,8 @@ $2',
 'namespaceprotected' => "子權未逮,莫能纂'''$1'''。",
 'ns-specialprotected' => '奇頁禁纂也。',
 'titleprotected' => "緘焉自[[User:$1|$1]]防建也。因''$2''也。",
+'invalidtitle-knownnamespace' => '無效卷題,含名域"$2"與文本"$3"',
+'exception-nologin' => '尚未登簿',
 
 # Virus scanner
 'virus-badscanner' => "壞設:不明之病掃:''$1''",
@@ -581,6 +586,7 @@ $2',
 'noemailprefs' => '郵驛設而用之。',
 'emailconfirmlink' => '惠考郵驛',
 'invalidemailaddress' => '驛址不格,惠正略之。',
+'cannotchangeemail' => '電郵地址不可改于此wiki',
 'accountcreated' => '簿增矣',
 'accountcreatedtext' => '$1簿增矣',
 'createaccount-title' => '於{{SITENAME}}增簿',
@@ -615,6 +621,10 @@ $2',
 爾或改符,或求新臨符。',
 'resetpass-temp-password' => '臨符節:',
 
+# Special:PasswordReset
+'passwordreset' => '重設符節',
+'passwordreset-legend' => '重設符節',
+
 # Edit page toolbar
 'bold_sample' => '粗體',
 'bold_tip' => '粗體',
@@ -706,6 +716,7 @@ $2',
 'updated' => '(新)',
 'note' => "'''註'''",
 'previewnote' => "'''此乃預覽,尚未儲焉。'''",
+'continue-editing' => '續纂',
 'session_fail_preview' => "'''歉哉有變,子纂未存焉,惠再之。如復不成,[[Special:UserLogout|重登]]再試也。'''",
 'session_fail_preview_html' => "'''歉哉有變,子纂未存焉'''
 
@@ -895,7 +906,9 @@ $1",
 'revdelete-only-restricted' => '藏期於 $1 $2 之項:爾無廢有秩見之項,而無選另廢項也。',
 'revdelete-reason-dropdown' => '*常因
 ** 侵權
-** 無合之人料',
+** 無合之人料
+** 無合之簿
+** 隱謗譏',
 'revdelete-otherreason' => '它附因:',
 'revdelete-reasonotherlist' => '它因',
 'revdelete-edit-reasonlist' => '纂刪因',
@@ -985,8 +998,6 @@ $1",
 'search-interwiki-caption' => '結義金蘭',
 'search-interwiki-default' => '結果有$1:',
 'search-interwiki-more' => '(多)',
-'search-mwsuggest-enabled' => '有議',
-'search-mwsuggest-disabled' => '無議',
 'search-relatedarticle' => '關',
 'mwsuggest-disable' => '停AJAX議',
 'searcheverything-enable' => '尋全名集',
index cbc2a32..4c12a97 100644 (file)
@@ -261,6 +261,7 @@ Dudicoxopes oxmaruşi yasaği na ren ar, varna daha dido kʼarakʼtʼeri uğun.'
 'userlogout' => 'Siteşen Kogamaxti',
 'nologin' => "Hesabi va giğuni? '''$1'''",
 'nologinlink' => 'Hesabi dokʼidi.',
+'gotaccountlink' => 'Sitʼeşa amaxti',
 'mailmypassword' => 'Ağne pʼarola-çkimi moncğoni',
 
 # Change password dialog
@@ -344,7 +345,7 @@ Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
 'revertmerge' => 'Artikʼartişen okʼo3ʼkʼi',
 
 # Diffs
-'history-title' => '"$1" butʼkʼaşi tarixi',
+'history-title' => 'Butʼkʼaşi tarixi "$1"',
 'lineno' => '$1. satʼiri:',
 'compareselectedversions' => 'Na goşiğen versiyonepe okʼo3ʼiri',
 'editundo' => 'ukʼuni',
@@ -367,8 +368,6 @@ Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
 'search-interwiki-caption' => 'Cuma projepe',
 'search-interwiki-default' => '$1 sonucepe:',
 'search-interwiki-more' => '(çkva)',
-'search-mwsuggest-enabled' => 'okʼvandupete',
-'search-mwsuggest-disabled' => 'okʼvandu varen',
 'searchall' => 'mteli',
 'nonefound' => "'''Notʼi''': Xvala, namtini svacoxope maartani oqʼopinot igoren.
 Ogoruşi dudis '''all:''' pʼrefiksi okʼatute doloçʼareli na ren iri şeyi (oğarğaluşi butʼkʼape, şablonepe, doçkva şeyepeti iqʼvasen) mgori varna pʼrefiksi oqʼopinot na igoren svacoxo ixmarit.",
@@ -619,7 +618,7 @@ Am butʼkʼaşi oçvuşi sinori gaktirinen; ama am oktiroba, kʼademoni oçvalu
 # Block/unblock
 'blockip' => 'Maxmares bloği qʼvi',
 'ipboptions' => '2 saatʼi:2 hours,1 ndğa:1 day,3 ndğa:3 days,1 doloni:1 week,2 doloni:2 weeks,1 tuta:1 month,3 tuta:3 months,6 tuta:6 months,1 3ʼana:1 year,pʼanda:infinite',
-'ipblocklist' => 'Bloği xveneri na renan IP adresepe do maxmareş coxope',
+'ipblocklist' => 'Bloği do maxmareş',
 'blocklink' => 'bloği qʼvi',
 'unblocklink' => 'bloği kezdi',
 'change-blocklink' => 'bloği doktiri',
index b9e2f49..7c760c9 100644 (file)
@@ -1018,8 +1018,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'search-interwiki-caption' => 'सम्बन्धित परियोजना सभ',
 'search-interwiki-default' => '$1 सभटा परिणाम:',
 'search-interwiki-more' => '(आर)',
-'search-mwsuggest-enabled' => 'सलाहक संग',
-'search-mwsuggest-disabled' => 'कोनो सलाह नै',
 'search-relatedarticle' => 'सम्बन्धी',
 'mwsuggest-disable' => 'AJAX सलाह अमान्य करू',
 'searcheverything-enable' => 'सभ नामस्थान सभमे ताकू',
index 1e462df..87e55c3 100644 (file)
@@ -885,8 +885,6 @@ Gatèkna, angger nganggo pranala navigasi kuwe bakalan nge-reset kolom kiye.',
 'search-interwiki-caption' => 'Proyek liyane',
 'search-interwiki-default' => 'Hasil $1:',
 'search-interwiki-more' => '(terusane)',
-'search-mwsuggest-enabled' => 'nganggo saran',
-'search-mwsuggest-disabled' => 'ora ana saran',
 'search-relatedarticle' => 'Kagandhèng',
 'mwsuggest-disable' => 'Non-aktifna saran AJAX',
 'searcheverything-enable' => 'Goleti nang kabeh bilik jeneng',
index 752f7ec..26b0f41 100644 (file)
@@ -1214,8 +1214,6 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 'search-interwiki-caption' => 'zandri-tetikasa',
 'search-interwiki-default' => "Valiny amin'ny $1 :",
 'search-interwiki-more' => '(be kokoa)',
-'search-mwsuggest-enabled' => 'misy hevitra',
-'search-mwsuggest-disabled' => 'tsy misy hevitra',
 'search-relatedarticle' => 'voadinika',
 'mwsuggest-disable' => 'Aza atao ny toro-hevitra AJAX',
 'searcheverything-enable' => "Hitady anatin'ny anaran-tsehatra rehetra:",
index 483f77e..d26d1e5 100644 (file)
@@ -810,8 +810,6 @@ Legend: '''({{int:kini}})''' = perbedaan jo revisi terakhir, '''({{int:dulu}})''
 'search-interwiki-caption' => 'Proyek badunsanak',
 'search-interwiki-default' => 'Hasil $1:',
 'search-interwiki-more' => '(selanjutnyo)',
-'search-mwsuggest-enabled' => 'dengan saran',
-'search-mwsuggest-disabled' => 'indak ado saran',
 'searchrelated' => 'bakaitan',
 'searchall' => 'Sadonyo',
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' dari '''$3'''|Hasil '''$1 - $2''' dari '''$3'''}} untuak '''$4'''",
@@ -1259,4 +1257,7 @@ Nan lainnyo akan tasuruak sacaro default.
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Tag]] bateh:',
 
+# Unknown messages
+'searchsuggest-containing' => 'Barisi...',
+'searchsuggest-search' => 'Cari',
 );
index 9808a6f..d7ce07c 100644 (file)
@@ -504,7 +504,7 @@ $messages = array(
 'vector-action-protect' => 'Заштити',
 'vector-action-undelete' => 'Врати',
 'vector-action-unprotect' => 'Измени заштита',
-'vector-simplesearch-preference' => 'Овозможи збогатени предлози при пребарување (само за рувото „Векторско“)',
+'vector-simplesearch-preference' => 'Овозможи упростено поле за пребарување (само за рувото „Векторско“)',
 'vector-view-create' => 'Создај',
 'vector-view-edit' => 'Уреди',
 'vector-view-history' => 'Историја',
@@ -659,10 +659,10 @@ $1',
 'nstab-category' => 'Категорија',
 
 # Main script and global functions
-'nosuchaction' => 'Не постои таа функција',
-'nosuchactiontext' => 'Дејството наведено во URL-низата е грешно.
-Можеби има грешка во пишувањето на URL или сте следеле погрешна врска.
\9eва Ð¼Ð¾Ð¶Ðµ Ð¸Ñ\81Ñ\82о Ñ\82ака Ð´Ð° Ð±Ð¸Ð´Ðµ Ð¸ грешка во програмската опрема на {{SITENAME}}.',
+'nosuchaction' => 'Нема такво дејство',
+'nosuchactiontext' => 'Дејството укажано во URL-адресата е погрешно.
+Можеби имате грешка во пишувањето на адресата, или пак имате проследено погрешна врска.
\9eва Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð´Ð¾Ð»Ð¶Ð¸ Ð¸ Ð½Ð° грешка во програмската опрема на {{SITENAME}}.',
 'nosuchspecialpage' => 'Не постои таква специјална страница',
 'nospecialpagetext' => '<strong>Побаравте непостоечка специјална страница.</strong>
 
@@ -731,9 +731,9 @@ $1',
 'protectedpagetext' => 'Оваа страница е заклучена за уредувања.',
 'viewsourcetext' => 'Можете да го погледнете и копирате кодот на оваа страница:',
 'viewyourtext' => "Можете да го погледнете и копирате кодот на '''вашите уредувања''' на оваа страница:",
-'protectedinterface' => 'Оваа страница содржи текст од посредникот на програмот на ова вики и е заштитена поради можна злоупотреба.
+'protectedinterface' => 'Оваа страница содржи текст од посредникот на софтверот на ова вики и е превентивно заштитена поради можна злоупотреба.
 За да додавате или менувате преводи на сите викија, појдете на [//translatewiki.net/wiki/Main_Page?uselang=mk translatewiki.net] - проектот за локализација на МедијаВики.',
-'editinginterface' => "'''Ð\9fÑ\80едÑ\83пÑ\80едÑ\83ваÑ\9aе:''' Ð£Ñ\80едÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86а ÐºÐ¾Ñ\98а Ðµ Ð´ÐµÐ» Ð¾Ð´ ÐºÐ¾Ñ\80иÑ\81ниÑ\87киоÑ\82 Ð¿Ð¾Ñ\81Ñ\80едник Ð½Ð° Ð¿Ñ\80огÑ\80амÑ\81каÑ\82а Ð¾Ð¿Ñ\80ема Ð½Ð° Ð\9cедиÑ\98аÐ\92ики.
+'editinginterface' => "'''Ð\9fÑ\80едÑ\83пÑ\80едÑ\83ваÑ\9aе:''' Ð£Ñ\80едÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86а ÐºÐ¾Ñ\98а Ðµ Ð´ÐµÐ» Ð¾Ð´ ÐºÐ¾Ñ\80иÑ\81ниÑ\87киоÑ\82 Ð¿Ð¾Ñ\81Ñ\80едник Ð½Ð° Ð\9cедиÑ\98аÐ\92ики Ñ\81оÑ\84Ñ\82веÑ\80оÑ\82.
 Промените на оваа страница ќе предизвикаат промени во корисничкиот посредник кај другите корисници на ова вики.
 За да додадете или измените превод на сите викија, појдете на [//translatewiki.net/wiki/Main_Page?setlang=mk translatewiki.net] - проектот за локализација на МедијаВики.",
 'sqlhidden' => '(Барањето до SQL е скриено)',
@@ -1395,8 +1395,6 @@ $1",
 'search-interwiki-caption' => 'Збратимени проекти',
 'search-interwiki-default' => 'Најдено на $1:',
 'search-interwiki-more' => '(уште)',
-'search-mwsuggest-enabled' => 'со предлози',
-'search-mwsuggest-disabled' => 'без предлози',
 'search-relatedarticle' => 'Поврзано',
 'mwsuggest-disable' => 'Оневозможи AJAX-предлози',
 'searcheverything-enable' => 'Барај во сите именски простори',
@@ -1714,7 +1712,7 @@ $1",
 'recentchanges-label-newpage' => 'Ова уредување создаде нова страница',
 'recentchanges-label-minor' => 'Ова е ситна промена',
 'recentchanges-label-bot' => 'Ова уредување е направено од бот',
-'recentchanges-label-unpatrolled' => 'Ð\9eва Ñ\83Ñ\80едÑ\83ваÑ\9aе Ñ\81è Ñ\83Ñ\88Ñ\82е Ð½Ðµ Ð±Ð¸Ð»Ð¾ патролирано',
+'recentchanges-label-unpatrolled' => 'Ð\9eва Ñ\83Ñ\80едÑ\83ваÑ\9aе Ñ\81è Ñ\83Ñ\88Ñ\82е Ð½Ðµ Ðµ Ð¸Ñ\81патролирано',
 'rcnote' => "Подолу {{PLURAL:$1|е прикажана '''1''' промена|се прикажани последните '''$1''' промени}} {{PLURAL:$2|за денес|во последниве '''$2''' дена}}, заклучно со $5, $4.",
 'rcnotefrom' => 'Подолу се промените од <b>$2</b> (се прикажуваат до <b>$1</b>).',
 'rclistfrom' => 'Прикажи нови промени почнувајќи од $1',
@@ -3057,7 +3055,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'Проба на JavaScript',
-'javascripttest-disabled' => 'Функцијата не е овозможена на ова вики.',
 'javascripttest-title' => 'Вршам $1 проби',
 'javascripttest-pagetext-noframework' => 'Оваа страница е резервирана за вршење на проби со JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Непозната рамка „$1“.',
@@ -3242,7 +3239,7 @@ $1',
 'markaspatrolleddiff' => 'Означи како проверена верзија',
 'markaspatrolledtext' => 'Означи ја верзијата како проверена',
 'markedaspatrolled' => 'Означено како проверено',
-'markedaspatrolledtext' => 'Избраната ревизија на [[:$1]]  е означена како патролирана.',
+'markedaspatrolledtext' => 'Ð\98збÑ\80анаÑ\82а Ñ\80евизиÑ\98а Ð½Ð° [[:$1]]  Ðµ Ð¾Ð·Ð½Ð°Ñ\87ена ÐºÐ°ÐºÐ¾ Ð¸Ñ\81паÑ\82Ñ\80олиÑ\80ана.',
 'rcpatroldisabled' => 'Оневозможено проверка на скорешни промени',
 'rcpatroldisabledtext' => 'Патролирањето на Скорешните промени е деактивирано.',
 'markedaspatrollederror' => 'Не можам да означам како проверена',
@@ -4124,7 +4121,7 @@ $5
 'specialpages-group-highuse' => 'Најкористени страници',
 'specialpages-group-pages' => 'Списоци на страници',
 'specialpages-group-pagetools' => 'Алатки за страници',
-'specialpages-group-wiki' => 'Википодатоци и алатки',
+'specialpages-group-wiki' => 'Вики-податоци и алатки',
 'specialpages-group-redirects' => 'Пренасочување на специјални страници',
 'specialpages-group-spam' => 'Алатки против спам',
 
@@ -4291,4 +4288,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|век|века}}',
 'duration-millennia' => '$1 {{PLURAL:$1|милениум|милениуми}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'содржи...',
+'searchsuggest-search' => 'Пребарување',
 );
index 606aa80..e855e10 100644 (file)
@@ -1137,7 +1137,7 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
 # Revision feed
 'history-feed-title' => 'നാൾവഴി',
 'history-feed-description' => 'വിക്കിയിൽ ഈ താളിന്റെ നാൾവഴി',
-'history-feed-item-nocomment' => '$1 ൽ $2',
+'history-feed-item-nocomment' => '$2 സമയത്ത് $1',
 'history-feed-empty' => 'താങ്കൾ തിരഞ്ഞ താൾ നിലവിലില്ല.
 പ്രസ്തുത താൾ വിക്കിയിൽ നിന്നു ഒഴിവാക്കിയിരിക്കാനോ പുനർനാമകരണം ചെയ്തിരിക്കാനോ സാദ്ധ്യത ഉണ്ട്.
 ബന്ധപ്പെട്ട പുതിയ താളുകൾ കണ്ടെത്താൻ [[Special:Search|വിക്കിയിലെ തിരച്ചിൽ]] എന്ന താൾ ഉപയോഗിക്കുക.',
@@ -1332,8 +1332,6 @@ $1",
 'search-interwiki-caption' => 'സഹോദര സംരംഭങ്ങൾ',
 'search-interwiki-default' => '$1 ഫലങ്ങൾ:',
 'search-interwiki-more' => '(കൂടുതൽ)',
-'search-mwsuggest-enabled' => 'നിർദ്ദേശങ്ങൾ വേണം',
-'search-mwsuggest-disabled' => 'നിർദ്ദേശങ്ങൾ വേണ്ട',
 'search-relatedarticle' => 'ബന്ധപ്പെട്ടവ',
 'mwsuggest-disable' => 'അജാക്സ് നിർദ്ദേശങ്ങൾ വേണ്ട',
 'searcheverything-enable' => 'എല്ലാ നാമമേഖലകളും തിരയുക',
@@ -1769,7 +1767,7 @@ $2 {{PLURAL:$3|തരത്തിലുള്ള പ്രമാണം|തരങ
 'fileexists-forbidden' => 'ഈ പേരിൽ ഒരു പ്രമാണം നിലവിലുണ്ട്, അതു മാറ്റി സൃഷ്ടിക്കുക സാദ്ധ്യമല്ല.
 താങ്കൾക്ക് ഈ ചിത്രം അപ്‌ലോഡ് ചെയ്തേ മതിയാവുയെങ്കിൽ, ദയവു ചെയ്തു വേറൊരു പേരിൽ ഈ പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക. [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'ഈ പേരിൽ ഒരു പ്രമാണം പങ്ക് വെയ്ക്കപ്പെട്ടുപയോഗിക്കുന്ന ശേഖരത്തിലുണ്ട്. താങ്കൾക്ക് ഈ പ്രമാണം അപ്‌ലോഡ് ചെയ്തേ മതിയാവുയെങ്കിൽ, ദയവായി തിരിച്ചു പോയി പുതിയ ഒരു പേരിൽ ഈ പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക.[[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'à´\88 à´ªàµ\8dരമാണà´\82 à´\87നി à´ªà´±à´¯àµ\81à´¨àµ\8dà´¨ {{PLURAL:$1|à´ªàµ\8dരമാണതàµ\8dതിനàµ\8dà´±àµ\86|à´ªàµ\8dരമാണà´\99àµ\8dà´\99à´³àµ\81à´\9fàµ\86}} à´\85പരനാണ്‌:',
+'file-exists-duplicate' => 'à´\88 à´ªàµ\8dരമാണà´\82 à´\87നി à´ªà´±à´¯àµ\81à´¨àµ\8dà´¨ {{PLURAL:$1|à´ªàµ\8dരമാണതàµ\8dതിനàµ\8dà´±àµ\86|à´ªàµ\8dരമാണà´\99àµ\8dà´\99à´³àµ\81à´\9fàµ\86}} à´ªà´\95ർപàµ\8dà´ªാണ്‌:',
 'file-deleted-duplicate' => 'ഈ പ്രമാണത്തിനു സദൃശമായ പ്രമാണം ([[:$1]]) മുമ്പ് മായ്ക്കപ്പെട്ടിട്ടുണ്ട്.
 ആ പ്രമാണത്തിന്റെ മായ്ക്കൽ ചരിത്രം എടുത്തു പരിശോധിച്ച ശേഷം മാത്രം വീണ്ടും അപ്‌‌ലോഡ് ചെയ്യുക.',
 'uploadwarning' => 'അപ്‌ലോഡ് മുന്നറിയിപ്പ്',
@@ -1961,7 +1959,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'nolinkstoimage' => 'ഈ ചിത്രം/പ്രമാണം വിക്കിയിലെ താളുകളിലൊന്നിലും ഉപയോഗിക്കുന്നില്ല.',
 'morelinkstoimage' => 'ഈ പ്രമാണത്തിലേയ്ക്കുള്ള [[Special:WhatLinksHere/$1|കൂടുതൽ കണ്ണികൾ]] കാണുക.',
 'linkstoimage-redirect' => '$1 (പ്രമാണ തിരിച്ചുവിടൽ) $2',
-'duplicatesoffile' => 'à´\88 à´ªàµ\8dരമാണതàµ\8dതിനàµ\8dà´±àµ\86 {{PLURAL:$1|à´\92à´°àµ\81 à´\85പര à´ªàµ\8dരമാണതàµ\8dà´¤àµ\86|$1 à´\85പര പ്രമാണങ്ങളെ}} താഴെ കൊടുത്തിരിക്കുന്നു ([[Special:FileDuplicateSearch/$2|കൂടുതൽ വിവരങ്ങൾ]]):',
+'duplicatesoffile' => 'à´\88 à´ªàµ\8dരമാണതàµ\8dതിനàµ\8dà´±àµ\86 {{PLURAL:$1|à´\92à´°àµ\81 à´ªà´\95ർപàµ\8dà´ªàµ\8d à´ªàµ\8dരമാണതàµ\8dà´¤àµ\86|$1 à´ªà´\95ർപàµ\8dà´ªàµ\8d പ്രമാണങ്ങളെ}} താഴെ കൊടുത്തിരിക്കുന്നു ([[Special:FileDuplicateSearch/$2|കൂടുതൽ വിവരങ്ങൾ]]):',
 'sharedupload' => 'ഇത് $1 സം‌രംഭത്തിൽ നിന്നുള്ള പ്രമാണമാണ്‌, മറ്റു സം‌രംഭങ്ങളും ഇതുപയോഗിക്കുന്നുണ്ടാകാം.',
 'sharedupload-desc-there' => 'ഈ പ്രമാണം $1 സംരംഭത്തിൽ നിന്നുമുള്ളതാണ്, മറ്റു പദ്ധതികൾ ഇതുപയോഗിക്കുന്നുണ്ടാകാം.
 കൂടുതൽ വിവരങ്ങൾക്ക് ദയവായി [$2 പ്രമാണത്തിന്റെ വിവരണ താൾ] കാണുക.',
@@ -2950,7 +2948,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'ജാവാസ്ക്രിപ്റ്റ് പരീക്ഷണം',
-'javascripttest-disabled' => 'ഈ വിക്കിയിൽ ഈ പ്രക്രിയ സജ്ജമാക്കിയിട്ടില്ല.',
 'javascripttest-title' => '$1 പരീക്ഷണങ്ങൾ നടക്കുന്നുണ്ട്',
 'javascripttest-pagetext-noframework' => 'ഈ താൾ ജാവാസ്ക്രിപ്റ്റ് പരീക്ഷണങ്ങൾ നടത്താനായി മാറ്റിവെച്ചിരിക്കുന്നതാണ്.',
 'javascripttest-pagetext-unknownframework' => 'അപരിചിതമായ പരീക്ഷണ ചട്ടക്കൂട് "$1".',
@@ -3099,7 +3096,7 @@ $1',
 'pageinfo-firstuser' => 'താളിന്റെ നിർമ്മാതാവ്',
 'pageinfo-firsttime' => 'താൾ നിർമ്മിച്ച ദിവസം',
 'pageinfo-lastuser' => 'ഏറ്റവും പുതിയ രചയിതാവ്',
-'pageinfo-lasttime' => 'അവസാനത്തെ തിരുത്തുനടന്ന ദിവസം',
+'pageinfo-lasttime' => 'അവസാനത്തെ തിരുത്തു നടന്ന ദിവസം',
 'pageinfo-edits' => 'മൊത്തം തിരുത്തുകളുടെ എണ്ണം',
 'pageinfo-authors' => 'ആകെ വ്യത്യസ്തരചയിതാക്കളുടെ എണ്ണം',
 'pageinfo-recent-edits' => 'സമീപകാലത്തെ തിരുത്തുകൾ (കഴിഞ്ഞ $1 കാലയളവിനുള്ളിൽ)',
@@ -3164,7 +3161,7 @@ $1',
 'svg-long-desc-animated' => 'ചലിക്കുന്ന എസ്.വി.ജി. പ്രമാണം, നാമമാത്രമായ $1 × $2 പിക്സലുകൾ, പ്രമാണത്തിന്റെ വലിപ്പം: $3',
 'show-big-image' => 'പൂർണ്ണ റെസലൂഷൻ',
 'show-big-image-preview' => 'ഈ പ്രിവ്യൂവിന്റെ വലിപ്പം: $1.',
-'show-big-image-other' => 'മറàµ\8dà´±àµ\8d {{PLURAL:$2|à´±àµ\86സലàµ\82ഷൻ|à´±àµ\86സലàµ\82à´·à´¨àµ\81à´\95ൾ}}: $1.',
+'show-big-image-other' => 'à´\95àµ\82à´\9fàµ\81തൽ {{PLURAL:$2|à´±àµ\86സലàµ\82ഷൻ}}: $1.',
 'show-big-image-size' => '$1 × $2 പിക്സലുകൾ',
 'file-info-gif-looped' => 'പുനരാവർത്തിതം',
 'file-info-gif-frames' => '{{PLURAL:$1|ഒരു ചട്ടം|$1 ചട്ടങ്ങൾ}}',
@@ -3248,7 +3245,7 @@ $1',
 'exif-software' => 'ഉപയോഗിച്ച സോഫ്റ്റ്‌വെയർ',
 'exif-artist' => 'ഛായാഗ്രാഹകൻ',
 'exif-copyright' => 'പകർപ്പവകാശ ഉടമ',
-'exif-exifversion' => 'Exif പതിപ്പ്',
+'exif-exifversion' => 'എക്സിഫ് (Exif) പതിപ്പ്',
 'exif-flashpixversion' => 'പിന്തുണയുള്ള ഫ്ലാഷ്‌‌പിക്സ് പതിപ്പ്',
 'exif-colorspace' => 'കളർ സ്പേസ്',
 'exif-componentsconfiguration' => 'ഓരോ ഘടകത്തിന്റേയും അർത്ഥം',
@@ -3329,8 +3326,8 @@ $1',
 'exif-gpsdestdistanceref' => 'ലക്ഷ്യം വച്ചതിലേയ്ക്കുള്ള ദൂരത്തിനുള്ള അവലംബം',
 'exif-gpsdestdistance' => 'ലക്ഷ്യം വച്ചതിലേയ്ക്കുള്ള ദൂരം',
 'exif-gpsprocessingmethod' => 'ജി.പി.എസ്. പ്രക്രിയയുടെ പേര്',
-'exif-gpsareainformation' => 'GPS പ്രദേശത്തിന്റെ പേര്‌',
-'exif-gpsdatestamp' => 'GPS തീയതി',
+'exif-gpsareainformation' => 'ജി.പി.എസ്. പ്രദേശത്തിന്റെ പേര്‌',
+'exif-gpsdatestamp' => 'ജി.പി.എസ്. തീയതി',
 'exif-gpsdifferential' => 'ജി.പി.എസ്. വ്യത്യാസം ശരിയാക്കൽ',
 'exif-jpegfilecomment' => 'ജെപെഗ് പ്രമാണക്കുറിപ്പ്',
 'exif-keywords' => 'അടയാളവാക്കുകൾ',
@@ -3362,7 +3359,7 @@ $1',
 'exif-languagecode' => 'ഭാഷ',
 'exif-iimversion' => 'ഐ.ഐ.എം. പതിപ്പ്',
 'exif-iimcategory' => 'വർഗ്ഗം',
-'exif-iimsupplementalcategory' => 'പൂരക വർഗ്ഗങ്ങൾ',
+'exif-iimsupplementalcategory' => 'പൂരകവർഗ്ഗങ്ങൾ',
 'exif-datetimeexpires' => 'ഇതിനു ശേഷമുപയോഗിക്കരുത്',
 'exif-datetimereleased' => 'പ്രസിദ്ധീകരിച്ചത്',
 'exif-originaltransmissionref' => 'യഥാർത്ഥ പ്രസരണ പ്രദേശത്തിന്റെ കോഡ്',
@@ -3821,13 +3818,13 @@ $5
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'ഒരേ പ്രമാണത്തിന്റെ പലപകർപ്പുകളുണ്ടോയെന്നു തിരയുക',
-'fileduplicatesearch-summary' => 'ഒരേ പ്രമാണം തന്നെ വിവിധപേരിലുണ്ടോയെന്നു ഹാഷ് വാല്യൂവധിഷ്ഠിതമായി തിരയുക.',
-'fileduplicatesearch-legend' => 'à´\85പരനàµ\86 തിരയുക',
+'fileduplicatesearch-summary' => 'ഒരേ പ്രമാണം തന്നെ വിവിധ പേരിലുണ്ടോയെന്നു ഹാഷ് വാല്യൂവധിഷ്ഠിതമായി തിരയുക.',
+'fileduplicatesearch-legend' => 'à´ªà´\95ർപàµ\8dà´ªàµ\81à´£àµ\8dà´\9fàµ\8bà´¯àµ\86à´¨àµ\8dà´¨àµ\8d തിരയുക',
 'fileduplicatesearch-filename' => 'പ്രമാണത്തിന്റെ പേര്:',
 'fileduplicatesearch-submit' => 'തിരയൂ',
 'fileduplicatesearch-info' => '$1 × $2 ബിന്ദു<br /> പ്രമാണത്തിന്റെ വലിപ്പം: $3<br />മൈം തരം: $4',
-'fileduplicatesearch-result-1' => '"$1" à´\8eà´¨àµ\8dà´¨ à´ªàµ\8dരമാണതàµ\8dതിനàµ\8d à´¸à´¦àµ\83à´¶ à´\85പരനില്ല.',
-'fileduplicatesearch-result-n' => '"$1" à´\8eà´¨àµ\8dà´¨ à´ªàµ\8dരമാണതàµ\8dതിനàµ\8d {{PLURAL:$2|à´\92à´°àµ\81 à´¸à´¦àµ\83à´¶ à´\85പരൻ|$2 à´¸à´¦àµ\83à´¶ à´\85പരർ}} ഉണ്ട്.',
+'fileduplicatesearch-result-1' => '"$1" à´\8eà´¨àµ\8dà´¨ à´ªàµ\8dരമാണതàµ\8dതിനàµ\8d à´¸à´¦àµ\83à´¶ à´ªà´\95ർപàµ\8dà´ªàµ\8d à´\87ല്ല.',
+'fileduplicatesearch-result-n' => '"$1" à´\8eà´¨àµ\8dà´¨ à´ªàµ\8dരമാണതàµ\8dതിനàµ\8d {{PLURAL:$2|à´\92à´°àµ\81 à´¸à´¦àµ\83à´¶ à´ªà´\95ർപàµ\8dà´ªàµ\8d|$2 à´¸à´¦àµ\83à´¶ à´ªà´\95ർപàµ\8dà´ªàµ\81à´\95ൾ}} ഉണ്ട്.',
 'fileduplicatesearch-noresults' => '"$1" എന്ന പേരിൽ ഒരു പ്രമാണവും കണ്ടെത്താനായില്ല.',
 
 # Special:SpecialPages
@@ -3948,7 +3945,7 @@ $5
 
 # Feedback
 'feedback-bugornote' => 'സാങ്കേതിക പ്രശ്നം എന്താണെന്ന് വിവരിച്ചെഴുതാൻ താങ്കൾ തയ്യാറാണെങ്കിൽ [$1 ബഗ് അറിയിക്കുക].
-à´\85à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ à´¤à´¾à´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´¤à´¾à´´àµ\86 à´\8eà´³àµ\81à´ªàµ\8dപതàµ\8dതിനായി à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´«àµ\8bà´\82 à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95à´¾à´\82. à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\95àµ\81റിപàµ\8dà´ªàµ\8d "[$3 $2]" à´¤à´¾à´³à´¿àµ½, à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83നാമവàµ\81à´\82 à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¬àµ\8dà´°àµ\97സറിനàµ\8dà´±àµ\86 à´ªàµ\87à´°àµ\8bà´\9fàµ\81à´\82 à´\95àµ\82à´\9fà´¿ ചേർക്കുന്നതായിരിക്കും.',
+à´\85à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ à´¤à´¾à´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´¤à´¾à´´àµ\86 à´\8eà´³àµ\81à´ªàµ\8dപതàµ\8dതിനായി à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´«àµ\8bà´\82 à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95à´¾à´\82. à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\95àµ\81റിപàµ\8dà´ªàµ\8d "[$3 $2]" à´¤à´¾à´³à´¿àµ½, à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83നാമതàµ\8dതിനàµ\8dà´±àµ\86à´¯àµ\81à´\82 à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¬àµ\8dà´°àµ\97സറിനàµ\8dà´±àµ\86 à´ªàµ\87à´°à´¿à´¨àµ\8dà´±àµ\86à´¯àµ\81à´\82 à´\92à´ªàµ\8dà´ªà´\82 ചേർക്കുന്നതായിരിക്കും.',
 'feedback-subject' => 'വിഷയം:',
 'feedback-message' => 'സന്ദേശം:',
 'feedback-cancel' => 'റദ്ദാക്കുക',
@@ -3969,7 +3966,7 @@ $5
 '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-popup-title' => 'à´\85പര{{PLURAL:$1|പ്രമാണം|പ്രമാണങ്ങൾ}}',
+'api-error-duplicate-popup-title' => 'à´ªà´\95ർപàµ\8dà´ªàµ\8d {{PLURAL:$1|പ്രമാണം|പ്രമാണങ്ങൾ}}',
 'api-error-empty-file' => 'താങ്കൾ സമർപ്പിച്ച പ്രമാണം ശൂന്യമാണ്.',
 'api-error-emptypage' => 'ശൂന്യമായ പുതിയ താളുകൾ സൃഷ്ടിക്കുന്നത് അനുവദിക്കുന്നില്ല.',
 'api-error-fetchfileerror' => 'ആന്തരിക പിഴവ്: പ്രമാണം ശേഖരിച്ചുകൊണ്ടിരുന്നപ്പോൾ എന്തോ പിഴവുണ്ടായി.',
@@ -4014,4 +4011,7 @@ $5
 'duration-centuries' => '{{PLURAL:$1|ഒരു നൂറ്റാണ്ട്|$1 നൂറ്റാണ്ട്}}',
 'duration-millennia' => '{{PLURAL:$1|ഒരു സഹസ്രാബ്ദം|$1 സഹസ്രാബ്ദം}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ഉൾപ്പെടുന്നവ...',
+'searchsuggest-search' => 'തിരയുക',
 );
index 1ddb365..6eb96fc 100644 (file)
@@ -1031,8 +1031,6 @@ $1",
 'search-interwiki-caption' => 'Ах дүү төслүүд',
 'search-interwiki-default' => '$1 үр дүн:',
 'search-interwiki-more' => '(илүү их)',
-'search-mwsuggest-enabled' => 'санаачлагатай',
-'search-mwsuggest-disabled' => 'санаачлага байхгүй',
 'search-relatedarticle' => 'Холбоотой',
 'mwsuggest-disable' => 'AJAX саналуудыг болиулах',
 'searcheverything-enable' => 'Бүх нэрний зайнуудад хайх',
@@ -3309,4 +3307,6 @@ $5
 'revdelete-unrestricted' => 'системийн операторуудаас авч хаясан хязгаарлалтууд',
 'newuserlog-byemail' => 'мэйлээр явуулсан нууц үг',
 
+# Unknown messages
+'searchsuggest-search' => 'Хайх',
 );
index f0ade8f..9bb7fa9 100644 (file)
@@ -1193,7 +1193,7 @@ $1",
 
 # History merging
 'mergehistory' => 'पान ईतिहासांचे एकत्रिकरण करा',
-'mergehistory-header' => 'हà¥\87 à¤ªà¤¾à¤¨ à¤\8fà¤\95ा à¤¸à¥\8dरà¥\8bत à¤ªà¤¾à¤¨à¤¾à¤\9aा à¤\87तिहास à¤\8fà¤\96ादà¥\8dया à¤¨à¤µà¤¿न पानात समाविष्ट करू देते.
+'mergehistory-header' => 'हà¥\87 à¤ªà¤¾à¤¨ à¤\8fà¤\95ा à¤¸à¥\8dरà¥\8bत à¤ªà¤¾à¤¨à¤¾à¤\9aा à¤\87तिहास à¤\8fà¤\96ादà¥\8dया à¤¨à¤µà¥\80न पानात समाविष्ट करू देते.
 हा बदल पानाचे ऐतिहासिक सातत्य राखेल याची दक्षता घ्या.',
 'mergehistory-box' => 'दोन पानांची आवर्तने संमिलीत करा:',
 'mergehistory-from' => 'स्रोत पान:',
@@ -1273,8 +1273,6 @@ $1",
 'search-interwiki-caption' => 'इतर प्रकल्प',
 'search-interwiki-default' => '$1चे निकाल:',
 'search-interwiki-more' => '(आणखी)',
-'search-mwsuggest-enabled' => 'सजेशन्स सहित',
-'search-mwsuggest-disabled' => 'सजेशन्स नाहीत',
 'search-relatedarticle' => 'जवळील',
 'mwsuggest-disable' => 'AJAX सजेशन्स रद्द करा',
 'searcheverything-enable' => 'सर्वनामविश्वांमध्ये शोधा:',
@@ -1696,7 +1694,7 @@ $1",
 जर तुमच्या कडे पूर्ण रिझोल्यूशनची संचिका असेल तर चढवा अथवा संचिकेचे नाव बदला.',
 'fileexists-forbidden' => 'या नावाची संचिका अगोदरच अस्तित्त्वात आहे; कृपया पुन्हा मागे जाऊन ही संचिका नवीन नावाने चढवा.
 [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'हà¥\87 à¤¨à¤¾à¤µ à¤\85सलà¥\87लà¥\80 à¤\8fà¤\95 à¤¸à¤\82à¤\9aिà¤\95ा à¤¶à¥\87à¤\85रà¥\8dड à¤¸à¤\82à¤\9aिà¤\95ा à¤\95à¥\8bशात à¤\86धà¥\80 à¤ªà¤¾à¤¸à¥\82न à¤\86हà¥\87; à¤\95à¥\83पया à¤ªà¤°à¤¤ à¤«à¤¿à¤°à¤¾ à¤\86णि à¤¨à¤µà¤¿à¤¨(वà¥\87à¤\97ळà¥\8dया) à¤¨à¤¾à¤µà¤¾à¤¨à¥\87 à¤¹à¥\80 à¤¸à¤\82à¤\9aिà¤\95ा à¤ªà¥\81नà¥\8dहा à¤\9aढवा.[[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'हà¥\87 à¤¨à¤¾à¤µ à¤\85सलà¥\87लà¥\80 à¤\8fà¤\95 à¤¸à¤\82à¤\9aिà¤\95ा à¤¶à¥\87à¤\85रà¥\8dड à¤¸à¤\82à¤\9aिà¤\95ा à¤\95à¥\8bशात à¤\86धà¥\80 à¤ªà¤¾à¤¸à¥\82न à¤\86हà¥\87; à¤\95à¥\83पया à¤ªà¤°à¤¤ à¤®à¤¾à¤\97à¥\87 à¤\9cा à¤\86णि à¤¨à¤µà¥\80न, à¤µà¥\87à¤\97ळà¥\8dया à¤¨à¤¾à¤µà¤¾à¤¨à¥\87 à¤¹à¥\80 à¤¸à¤\82à¤\9aिà¤\95ा à¤ªà¥\81नà¥\8dहा à¤\9aढवा. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'ही संचिका खालील {{PLURAL:$1|संचिकेची|संचिकांची}} प्रत आहे:',
 'file-deleted-duplicate' => 'या संचिकेसारखीच् संचिका ([[:$1]]) या आधी वगळण्यात आली आहे.
 हि संचिका पुनः चढवण्यापूर्वी आपण त्या संचिकेची वगळण्याची नोंद तपासावी.',
@@ -2829,7 +2827,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'जावा स्क्रिप्ट तपासणी',
-'javascripttest-disabled' => 'हे कार्य अवरूद्ध केले आहे.',
 'javascripttest-title' => '$1 टेस्ट चालू आहेत',
 'javascripttest-pagetext-noframework' => 'हे पान जावा स्क्रिप्ट तपासणी साठी सुरक्षित केले आहे',
 'javascripttest-pagetext-unknownframework' => 'अज्ञात तपासणीचे ठिकाण $1',
@@ -3829,4 +3826,7 @@ $5
 'duration-decades' => '$1 {{PLURAL:$1|दशकापूर्वी|दशकांपूर्वी }}',
 'duration-centuries' => '$1 {{PLURAL:$1|शतकापूर्वी|शतकांपूर्वी }}',
 
+# Unknown messages
+'searchsuggest-containing' => '.......हे असलेले',
+'searchsuggest-search' => 'शोधा',
 );
index c4d651e..bbd4e8f 100644 (file)
@@ -257,7 +257,7 @@ $messages = array(
 'thursday' => 'Khamis',
 'friday' => 'Jumaat',
 'saturday' => 'Sabtu',
-'sun' => 'Aha',
+'sun' => 'Ahd',
 'mon' => 'Isn',
 'tue' => 'Sel',
 'wed' => 'Rab',
@@ -295,7 +295,7 @@ $messages = array(
 'may' => 'Mei',
 'jun' => 'Jun',
 'jul' => 'Jul',
-'aug' => 'Ogo',
+'aug' => 'Ogs',
 'sep' => 'Sep',
 'oct' => 'Okt',
 'nov' => 'Nov',
@@ -1210,8 +1210,6 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 'search-interwiki-caption' => 'Projek-projek lain',
 'search-interwiki-default' => 'Keputusan daripada $1:',
 'search-interwiki-more' => '(lagi)',
-'search-mwsuggest-enabled' => 'berserta cadangan',
-'search-mwsuggest-disabled' => 'tiada cadangan',
 'search-relatedarticle' => 'Berkaitan',
 'mwsuggest-disable' => 'Matikan ciri cadangan AJAX',
 'searcheverything-enable' => 'Cari dalam semua ruang nama',
@@ -1475,7 +1473,7 @@ Tindakan ini tidak boleh dibatalkan.',
 
 # User rights log
 'rightslog' => 'Log hak pengguna',
-'rightslogtext' => 'Ini ialah log bagi perubahan hak pengguna.',
+'rightslogtext' => 'Ini ialah log perubahan terhadap hak pengguna.',
 'rightslogentry' => 'menukar keahlian kumpulan bagi $1 daripada $2 kepada $3',
 'rightslogentry-autopromote' => 'dinaik pangkat secara automatik dari $2 ke $3',
 'rightsnone' => '(tiada)',
@@ -2839,7 +2837,6 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 
 # JavaScriptTest
 'javascripttest' => 'Ujian JavaScript',
-'javascripttest-disabled' => 'Fungsi ini belum dapat dihidupkan di wki ini.',
 'javascripttest-title' => 'Ujian $1 sedang dijalankan',
 'javascripttest-pagetext-noframework' => 'Laman ini ditempah untuk menjalankan ujian JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Kerangka "$1" tidak dikenali.',
@@ -3899,4 +3896,7 @@ Ataupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dic
 'duration-centuries' => '$1 abad',
 'duration-millennia' => '$1 alaf',
 
+# Unknown messages
+'searchsuggest-containing' => 'mengandungi...',
+'searchsuggest-search' => 'Cari',
 );
index fd59cc0..329060c 100644 (file)
@@ -1253,8 +1253,6 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 'search-interwiki-caption' => 'Proġetti kuġini',
 'search-interwiki-default' => "Riżultati ta' $1:",
 'search-interwiki-more' => '(aktar)',
-'search-mwsuggest-enabled' => 'bis-suġġerimenti',
-'search-mwsuggest-disabled' => 'l-ebda suġġeriment',
 'search-relatedarticle' => 'Relatati',
 'mwsuggest-disable' => 'Neħħi suġġeriment tal-AJAX',
 'searcheverything-enable' => 'Fittex fl-ispazji tal-isem kollha',
@@ -2793,7 +2791,6 @@ Kull azzjonijiet ta' importazzjoni tal-transwiki jiġu reġistrati fil-[[Special
 
 # JavaScriptTest
 'javascripttest' => 'Testjar tal-JavaScript',
-'javascripttest-disabled' => 'Din il-funzjoni ma ġietx abilitata fuq din il-wiki.',
 'javascripttest-pagetext-noframework' => 'Din il-paġna hi riservata għall-eżekuzzjoni tat-testijiet tal-JavaScript.',
 'javascripttest-pagetext-frameworks' => 'Jekk jogħġbok agħżel wieħed mill-oqsma tal-ittestjar: $1',
 'javascripttest-pagetext-skins' => 'Agħżel aspett grafiku fuq liema tesegwixxi testijiet:',
@@ -3783,4 +3780,7 @@ Stampi huwa mogħrija b'risoluzzjoni sħiħa, tipi tal-fajl oħrajn jibdew bil-p
 'duration-centuries' => '$1 {{PLURAL:$1|seklu|sekli}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennju|millennji}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'li tinkludi...',
+'searchsuggest-search' => 'Fittex',
 );
index 68482db..e0b58f5 100644 (file)
@@ -198,9 +198,9 @@ $messages = array(
 'wed' => 'چارشنبه',
 'thu' => 'پنجشنبه',
 'fri' => 'جـومه',
-'sat' => 'Ø´Ù\87â\80\8cÙ\85ه',
+'sat' => 'Ø´Ù\85به',
 'january' => 'جـانـویـه',
-'february' => 'Ù\81Ù\80Ù\87â\80\8cÙ\88رÛ\8cÙ\80ه',
+'february' => 'Ù\81Ù\88رÛ\8cه',
 'march' => 'مـارچ',
 'april' => 'آوریل',
 'may_long' => 'مه',
@@ -208,11 +208,11 @@ $messages = array(
 'july' => 'جـولای',
 'august' => 'ئـوگـه‌سـت',
 'september' => 'سـه‌پـتـه‌مـبـر',
-'october' => 'ئÙ\80Ù\88Ú©Ù\80تÙ\80Ù\88بÙ\80ر',
+'october' => 'اکتبر',
 'november' => 'نـووه‌مـبـر',
 'december' => 'ده‌سـه‌مـبـر',
 'january-gen' => 'جـانـویـه',
-'february-gen' => 'Ù\81Ù\80Ù\87â\80\8cÙ\88رÛ\8cÙ\80ه',
+'february-gen' => 'Ù\81Ù\88رÛ\8cه',
 'march-gen' => 'مـارس',
 'april-gen' => 'آوریـل',
 'may-gen' => 'مه',
@@ -220,7 +220,7 @@ $messages = array(
 'july-gen' => 'جـولای',
 'august-gen' => 'ئوگـه‌سـت',
 'september-gen' => 'سـه‌پـتـه‌مـبـر',
-'october-gen' => 'ئÙ\80Ù\88Ú©Ù\80تÙ\80Ù\88بÙ\80ر',
+'october-gen' => 'اکتبر',
 'november-gen' => 'نـووه‌مـبـر',
 'december-gen' => 'ده‌سـه‌مـبـر',
 'jan' => 'جانویه',
@@ -248,6 +248,8 @@ $messages = array(
 'category-subcat-count-limited' => 'اینتا رج {{PLURAL:$1|اتا زیر رج|$1 زبررج}} ره شامل بونه.',
 'category-article-count' => '{{PLURAL:$2|این رج همینتا صفحه ره دانّه.|ای  {{PLURAL:$1صفحه|صفحه|$1 ئون}}، $2 جه اینجه دَرنه.}}',
 'category-article-count-limited' => '{{PLURAL:$1|صفحهٔ|$1 صفحهٔ}} که این بن درنه اینتا رج دله قرار هایتنه.',
+'category-file-count' => '{{PLURAL:$2|این رج دله فقط همینتا عکس دره.|{{PLURAL:$1|این اتا پرونده|این $1تا پرونده}} این رج دله {{PLURAL:$1|دره|درنه}}؛ این رج کلاً $2تا پرونده دانّه.}}',
+'category-file-count-limited' => '{{PLURAL:$1|پرونده|$1 پرونده}} این رج دله درنه.',
 'listingcontinuesabbrev' => '(دمباله)',
 'index-category' => 'صفحه‌ئون نمایه بَیی',
 'noindex-category' => 'صفحه‌ئون نمایه نَیی',
@@ -384,7 +386,11 @@ $2، $1',
 'youhavenewmessages' => 'شما اتا $1 دانّی ($2).',
 'newmessageslink' => 'ترنه پیغوم‌ئون',
 'newmessagesdifflink' => 'پایانی دچی‌یه',
-'youhavenewmessagesmulti' => 'شه مه وسه ترنه پیغوم بی یه موئه ای جه $1',
+'youhavenewmessagesfromusers' => 'شِما {{PLURAL:$3| کارور دیگه| $3  کارور}} $1 دارنی ($2).',
+'youhavenewmessagesmanyusers' => 'شما ات‌سری کارور جه $1 دارنی ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|ترنه پیغوم|ترنه پیغوم}}',
+'newmessagesdifflinkplural' => '{{formatnum:$1}} {{PLURAL:$1|ترنه دچی‌یه|ترنه دچی‌یه‌ئون}}',
+'youhavenewmessagesmulti' => 'شِمه وسّه $1 دله، ترنه پیغوم برسی‌یه.',
 'editsection' => 'دچی‌ین',
 'editold' => 'دچی‌ین',
 'viewsourceold' => 'منبع ره هارشائن',
@@ -392,7 +398,7 @@ $2، $1',
 'viewsourcelink' => 'منبع بدی‌ین',
 'editsectionhint' => 'تیکه: $1 ره دچی‌ین',
 'toc' => 'دله',
-'showtoc' => 'نشون هاده',
+'showtoc' => 'سِراق هاده',
 'hidetoc' => 'فرو بور',
 'collapsible-collapse' => 'دوستن',
 'collapsible-expand' => 'گت هاکردن',
@@ -451,7 +457,16 @@ $2، $1',
 'laggedslavemode' => "'''هشدار:''' صفحه ممکن هسته که جدید ِبه‌روزرسانی‌ئون ره شامل نواشه.",
 'readonly' => 'پایگاه داده زلفن بزه‎بیّه',
 'enterlockreason' => 'دلیلی زلفین بزوئن وسّه بارین، که حاوی تقریبی از زمونی بائه که زلفین بَیته وانه',
-'missingarticle-rev' => '(نسخهٔ شماره: $1)',
+'readonlytext' => 'داده پایگاه هنتا دچی‌ین و صفحه‌ئون بساتن وسّه زلفن بَیی‌ئه؛ این وضعیت احتمالاً معمولی رسیدگیون وسّه هسته که این کارون په، عادی وانه.
+
+مدیری که اینان ره زلفن هاکرده این توضیح ره شمه وسّه بنویشته: $1',
+'missing-article' => 'داده پایگاه صفحه «$1» $2 بنویشته ره که وسّه پیدا هاکرد بوو، پیدا نکارده.
+
+این مشکل معمولاً اون گادِر پیش انه که شمه بخاستی چیون اتا قدیمی یا حذف بَیی تاریخچه‌ی تفاوت بوئن.
+
+اگه غیر این هسته، احتمالاً نرم‌افزار دله موشکل پیدا بیّه.
+این مشکل ره اینترنتی نشونی همراه اتا [[Special:ListUsers/sysop|مدیر]] وسّه برسِنین.',
+'missingarticle-rev' => '(نسخه‌ی شماره: $1)',
 'missingarticle-diff' => '(فرق: $1، $2)',
 'readonly_lag' => 'پایگاه داده به طور خودکار زلفین بزه‌بیّه تا پشتیبون ِنسخه‌ئون با اصلی نسخه هماهنگ بواشِن',
 'internalerror' => 'خطای دله‌یی',
@@ -469,15 +484,24 @@ $2، $1',
 'badarticleerror' => 'ننشنه این کار ره این صفحه دله هاکردن.',
 'cannotdelete' => 'صفحه یا تصویر «$1» ره ننشنه پاک هاکردن.
 ممکنه قبلاً فرد دیگری وه ره پاک هاکردبوئه.',
-'badtitle' => 'نقش عنوان',
-'perfcached' => 'داده‌ئون زیر حافظهٔ موقت جه بَییته بَینه و ممکن هسته کاملاً به‌روز نوائن. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
+'cannotdelete-title' => 'نشنه «$1» ره پاک هاکردِن',
+'delete-hook-aborted' => 'قلاب نتونده حذف هاکنه.
+اینتا وسّه دلیل ننویشتنه.',
+'badtitle' => 'نخاشِ عنوان',
+'badtitletext' => 'بخاستی عنوان نامعتبر، خالی یا میون‌زوونی عنوان یا میون‌ویکیی غلط لینک جه بی‌یه.
+ممکنه ونه دله اتا یا چنتا چی بنویش بو که نَونه عنوان دله بئه.',
+'perfcached' => 'این چیون ثبت بَیی حافظه جه انّه و ممکنه آپدیت نَوائن. حداکثر {{PLURAL:$1|اتا نتیجه|$1تا نتیجه}} قدیمی حافظه دله دره.',
+'querypage-no-updates' => 'این صفحه فعلاً نَونه آپدیت بَواشه.
+همینسه ونه دله بنویشته‌ئون شاید قدیمی بائن.',
 'wrong_wfQuery_params' => 'پارامترون wfQuery()‎ غلطه<br />
 تابع: $1<br />
 پرس‌وجو: $2',
 'viewsource' => 'منبع ره بدی‌ین',
+'viewsource-title' => '$1 مبدأ ره سِراق هدائِن',
 'actionthrottled' => 'شمه پیش ره بیتنه',
 'protectedpagetext' => 'این صفحه دچی‌ین وسّه زلفین بزه بیّه.',
 'viewsourcetext' => 'بتونّی متن مبدأ این صفحه ره هارشین یا ونجه نسخه بَیرین:',
+'viewyourtext' => "بتونّی '''شه بنویشته چیون''' مبدأ ره این صفحه دله هارشین و کپی هاکنین:",
 'protectedinterface' => 'این صفحه ارائه‌دهندهٔ متنی واسط کارور این نرم‌افزار هسته و به منظور پیشگیری از خرابکاری زلفین بزه‌بیّه.',
 'sqlhidden' => '(دستور اس‌کیوال دپوشنی‌یه بیّه)',
 
@@ -489,6 +513,7 @@ $2، $1',
 'yourpassword' => 'شمه پسورد',
 'yourpasswordagain' => 'پسورد ره دِباره بنویس',
 'remembermypassword' => 'مه رمز ره (تا حداکثر $1 {{PLURAL:$1|روز|روز}}) این مرورگر سر یاد نکان',
+'securelogin-stick-https' => 'HTTPS دله بموئن په، متصل بموند',
 'yourdomainname' => 'شمه کاروری نوم',
 'login' => 'دله بوردن',
 'nav-login-createaccount' => 'دله بوردن / عضو بیّن',
@@ -503,7 +528,8 @@ $2، $1',
 'createaccount' => 'ترنه حساب وا هکاردن',
 'gotaccount' => 'عضو هسنی؟ $1.',
 'gotaccountlink' => 'بورین دله',
-'createaccountmail' => 'ایمیل ِهمراه',
+'userlogin-resetlink' => 'دله بموئن ِجزئیات ره یاد هاکردی؟',
+'createaccountmail' => 'ایمیل جه',
 'createaccountreason' => 'دلیل:',
 'badretype' => 'دِتا پسوردی که بنویشتی اتجور نینه',
 'userexists' => 'کاروری نومی که بخاستنی وجود داشته.
@@ -523,6 +549,18 @@ $2، $1',
 # Change password dialog
 'newpassword' => 'نو پسورد:',
 
+# Special:PasswordReset
+'passwordreset-username' => 'کاروری نوم:',
+'passwordreset-domain' => 'دامنه:',
+'passwordreset-capture' => 'گت ایمیل سِراق هدائه بَواشه؟',
+
+# Special:ChangeEmail
+'changeemail-oldemail' => 'اساء ایمیل:',
+'changeemail-newemail' => 'ترنه ایمیل آدرس:',
+'changeemail-none' => '(هچّی)',
+'changeemail-submit' => 'ایمیل ره عوض هاکردن',
+'changeemail-cancel' => 'ول هاکردن',
+
 # Edit page toolbar
 'bold_sample' => 'ضخیم',
 'bold_tip' => 'ضخیم',
@@ -536,18 +574,28 @@ $2، $1',
 'headline_tip' => 'عنوان بند ۲',
 'nowiki_sample' => 'شه بی فورمت بنویشته ره اینجه دکانین',
 'nowiki_tip' => 'فورمت سر چش ره کوریک بَیره',
-'media_tip' => 'فایل لینک',
+'image_tip' => 'بنویشته‌ی دله‌ی عکس',
+'media_tip' => 'فایل ِلینک',
+'sig_tip' => 'شمه امضا و ونه په‌ی ِتاریخ',
+'hr_tip' => 'افقی خط (ونه کمته کار بکشین)',
 
 # Edit pages
-'summary' => 'Ú¯Ù\88زارش Ú©Ø§Ø±:',
+'summary' => 'کار Ù\90گزارش:',
 'subject' => 'موضوع یا عنوان:',
-'minoredit' => 'اینتا ویرایش خله جزئی بیه',
-'watchthis' => 'این صفحه ره دمبال هـاکاردن',
+'minoredit' => 'اینتا دچی‌یه خله جزئی بی‌یه',
+'watchthis' => 'این صفحه ره دمبال هاکردن',
 'savearticle' => 'جادکتن ِصفحه',
-'preview' => 'پیش نمایش',
-'showpreview' => 'پیش‌نمایش ره سِراق هدائن',
-'showlivepreview' => 'پیش‌نمایش آنلاین',
-'showdiff' => 'نمایش تغییرات',
+'preview' => 'پیش‌پیش سِراق هدائن',
+'showpreview' => 'پیش‌پیش سِراق هدائن',
+'showlivepreview' => 'آنلاین پیش‌پیش سِراق هدائن',
+'showdiff' => 'تغییرات ِسراق هدائن',
+'anoneditwarning' => "'''هشدار:''' شِما هنتا عضو نَیینی.
+شمه آی‌پی آدرِس تاریخچه دله موندنه.",
+'anonpreviewwarning' => "''شما هنتا عضو نَیینی، اگه اتچی بنویسین، شمه آی‌پی ِلینگِ‌رج اینجه موندنه.''",
+'missingcommenttext' => 'ات‌چی اینجه بنویسین که شمه توضیح بوو',
+'summary-preview' => 'خلاصه‌ی پیش‌پیش سِراق هدائن:',
+'subject-preview' => 'موضوع/عنوان ِپیش‌پیش سِراق هدائن:',
+'blockedtitle' => 'کارور دَوسته بیّه',
 'blockedtext' => "'''شمه آی پی دوسته بیّه.'''
 
 این کار ره $1 انجام هدائه.
@@ -562,6 +610,13 @@ $2، $1',
  شمه یاد دواشه که اگه شه ایمیل ره ننوشت بائین نتونی مدیرا وسه ایمیل بزنین اگه ایمیل ره ننوشنی ترجیحات دله بنویسین[[Special:Preferences|اینجه ایمیل ره بنویس]]
 نشونی آی‌پی شما $3 و شماره قطع دسترسی شما $5 هسته. حتما این دِتا شوماره ره گپ بزوئن دله به کار بورین.",
 'blockednoreason' => 'معلوم نی‌یه چچی وسه اینتی بیّه!',
+'loginreqtitle' => 'ونه سامانه دله بئین',
+'loginreqlink' => 'دله بموئن',
+'loginreqpagetext' => 'بقیه‌ی صفحه‌ئون ِبدی‌ین وسّه، ونه $1.',
+'accmailtitle' => 'پسورد ره برسِنیمی.',
+'accmailtext' => "اتا تصادفی پسور بساته بیّه [[User talk:$1|$1]] وسّه $2 سَر برسِنی‌یه بیّه.
+
+این ترنه کاروری حساب ِپسور، سامانه دله بموئن په، ''[[Special:ChangePassword|ات‌تی]]'' بتونده عوض بوو.",
 'newarticle' => '(ترنه)',
 'blocked-notice-logextract' => 'دسترسی اینتا کارور الآن دوستوئه.
 آخرین مورد سیاهه قطع دسترسی زیر بموئه:',
@@ -628,8 +683,6 @@ $2، $1',
 'search-suggest' => 'شما اینتا ره نخاسنی: $1',
 'search-interwiki-caption' => 'خاخر پروژه‌ئون',
 'search-interwiki-more' => '(ویشتر)',
-'search-mwsuggest-enabled' => 'پیشنهاد همرا',
-'search-mwsuggest-disabled' => 'هیچ پیشنهادی دنیه',
 'powersearch' => 'ململ بَیی دور هایتن',
 'powersearch-legend' => 'ململ بَیی دور هایتن',
 'powersearch-ns' => 'بچرخستن اینان دله:',
index 80ce8a0..335fef0 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Norwegian Bokmål (‪norsk (bokmål)‬)
+/** Norwegian Bokmål (norsk (bokmål)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -23,6 +23,7 @@
  * @author Haakon K
  * @author Harald Khan
  * @author Jeblad
+ * @author Jsoby
  * @author Jóna Þórunn
  * @author Kph
  * @author Kph-no
@@ -691,9 +692,9 @@ Spørring: $2',
 'protectedpagetext' => 'Denne siden har blitt låst for redigeringer.',
 'viewsourcetext' => 'Du kan se og kopiere kilden til denne siden:',
 'viewyourtext' => "Du kan se og kopiere kilden til '''dine endringer''' på denne siden:",
-'protectedinterface' => 'Denne siden viser brukergrensesnittet for programvaren, og er låst for å hindre misbruk.',
-'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes i grensesnittet for programvaren.
-Endringer på denne siden vil påvirke hvordan grensesnittet vil se ut.
+'protectedinterface' => 'Denne siden fremskaffer brukergrensesnittekst for programvaren, og er låst for å hindre misbruk.',
+'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes for å fremskaffe grensesnittekst for programvaren.
+Endringer av denne siden vil påvirke hvordan grensesnittet vil se ut for andre brukere.
 For oversettelser er det best om du bruker [//translatewiki.net/wiki/Main_Page?setlang=nb translatewiki.net], prosjektet for oversettelse av MediaWiki.",
 'sqlhidden' => '(SQL-spørring skjult)',
 'cascadeprotected' => 'Denne siden er låst for redigering fordi den inkluderes på følgende sider som har dypbeskyttelse slått på:<!--{{PLURAL:$1}}-->
@@ -979,8 +980,8 @@ Hvis du er en uregistrert bruker og synes at du har fått irrelevante kommentare
 Du kan [[Special:Search/{{PAGENAME}}|søke etter denne sidetittelen]] på andre sider,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relaterte logger],
 eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} opprette siden]</span>.',
-'noarticletext-nopermission' => 'Det er ingen tekst på denne siden.
-Du kan [[Special:Search/{{PAGENAME}}|søke etter sidens tittel]] i andre sider, eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relevante logger]</span>.',
+'noarticletext-nopermission' => 'Det er for tiden ingen tekst på denne siden.
+Du kan [[Special:Search/{{PAGENAME}}|søke etter sidens tittel]] blant andre sider, eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relevante logger]</span>.',
 'missing-revision' => 'Revisjonen #$1 av siden med navnet "{{PAGENAME}}" eksisterer ikke.
 
 Dette skyldes som regel at en gammel historikklenke er fulgt til en side som er slettet.
@@ -1341,8 +1342,6 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-caption' => 'Søsterprosjekter',
 'search-interwiki-default' => '$1-resultater:',
 'search-interwiki-more' => '(mer)',
-'search-mwsuggest-enabled' => 'med forslag',
-'search-mwsuggest-disabled' => 'ingen forslag',
 'search-relatedarticle' => 'Relatert',
 'mwsuggest-disable' => 'Slå av AJAX-forslag',
 'searcheverything-enable' => 'Søk i alle navnerom',
@@ -1439,7 +1438,7 @@ Her er et tilfeldig tall du kan bruke: $1',
 'timezoneregion-indian' => 'Indiahavet',
 'timezoneregion-pacific' => 'Stillehavet',
 'allowemail' => 'Tillat andre å sende meg e-post',
-'prefs-searchoptions' => 'Søkealternativ',
+'prefs-searchoptions' => 'Søk',
 'prefs-namespaces' => 'Navnerom',
 'defaultns' => 'Søk ellers i disse navnerommene:',
 'default' => 'standard',
@@ -2282,7 +2281,7 @@ Mer informasjon om de enkelte rettighetstypene kan finnes [[{{MediaWiki:Listgrou
 'emailpagetext' => 'Du kan bruke skjemaet nedenfor for å sende en e-post til denne brukeren.
 Den e-postadressen du har satt i [[Special:Preferences|innstillingene dine]] vil dukke opp i «fra»-feltet på denne e-posten, så mottakeren er i stand til å svare.',
 'usermailererror' => 'E-postobjekt returnerte feilen:',
-'defemailsubject' => '{{SITENAME}}-type e-post fra bruker "$1"',
+'defemailsubject' => 'E-post fra {{SITENAME}}-brukeren «$1»',
 'usermaildisabled' => 'Brukerepost deaktivert',
 'usermaildisabledtext' => 'Du kan ikke sende epost til andre brukere på denne wikien',
 'noemailtitle' => 'Ingen e-postadresse',
@@ -2953,7 +2952,6 @@ Lagre den på din egen datamaskin og last den opp her.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript-testing',
-'javascripttest-disabled' => 'Denne funksjonen er ikke aktivert på denne wikien.',
 'javascripttest-title' => 'Kjører $1 tester',
 'javascripttest-pagetext-noframework' => 'Denne siden er reservert for å kjøre JavaScript-tester.',
 'javascripttest-pagetext-unknownframework' => 'Ukjent testerammeverk "$1".',
@@ -4034,4 +4032,7 @@ Om det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. K
 'duration-centuries' => '$1 {{PLURAL:$1|århundre|århundrer}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'inneholder …',
+'searchsuggest-search' => 'Søk',
 );
index db850eb..df4e839 100644 (file)
@@ -809,7 +809,7 @@ Wenn du en anonymen Bruker büst un meenst, dat disse Kommentaren nich an di ric
 oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} disse Sied ännern]</span>.',
 'noarticletext-nopermission' => 'Disse Sied hett opstunns keen Text.
 Du kannst in annere Sieden [[Special:Search/{{PAGENAME}}|na dissen Titel söken]]
-oder <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} in de Logböker söken]</span>.',
+oder <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} in de Logböker söken]</span>, man du hest nich dat Recht, de Sied optostellen.',
 'userpage-userdoesnotexist' => 'Dat Brukerkonto „<nowiki>$1</nowiki>“ gifft dat noch nich. Överlegg, wat du disse Siet würklich nee opstellen/ännern wullt.',
 'userpage-userdoesnotexist-view' => 'Dat Brukerkonto „$1“ gifft dat nich.',
 'blocked-notice-logextract' => 'Disse Bruker is opstunns sperrt.
@@ -827,7 +827,7 @@ De jüngste Indrag in dat Sperr-Logbook wart ünnen wiest:',
 'userinvalidcssjstitle' => "'''Wohrschau:''' Dat gifft keen Skin „$1“. Denk dor an, dat .css- un .js-Sieden  för Brukers mit en lütten Bookstaven anfangen mööt, to’n Bispeel ''{{ns:user}}:Brukernaam/vector.css'' un nich ''{{ns:user}}:Brukernaam/Vector.css''.",
 'updated' => '(Ännert)',
 'note' => "'''Wohrschau:'''",
-'previewnote' => "'''Dit is blots en Vörschau, de Siet is noch nich spiekert!'''",
+'previewnote' => "Dit is bloots en Vörschau, de Sied is noch nich spiekert!'''",
 'previewconflict' => 'Disse Vörschau wiest den Inholt vun dat Textfeld baven; so warrt de Siet utseihn, wenn du nu spiekerst.',
 'session_fail_preview' => "'''Deit uns leed! Wi kunnen dien Ännern nich spiekern. Diene Sitzungsdaten weren weg.
 Versöök dat noch wedder. Wenn dat noch jümmer nich geiht, denn versöök di [[Special:UserLogout|aftomellen]] un denn wedder antomellen.'''",
@@ -927,9 +927,7 @@ De Grund weer: ''$2''",
 'currentrev' => 'Aktuelle Version',
 'currentrev-asof' => 'Aktuelle Version vun’n $1',
 'revisionasof' => 'Version vun $1',
-'revision-info' => '<div id="viewingold-warning" style="background: #ffbdbd; border: 1px solid #BB7979; font-weight: bold; padding: .5em 1em;">
-Dit is en ole Version vun disse Siet, so as $2 de $1 ännert hett. De Version kann temlich stark vun de <a href="{{FULLURL:{{FULLPAGENAME}}}}" title="{{FULLPAGENAME}}">aktuelle Version</a> afwieken.
-</div>',
+'revision-info' => "Verschoon vun'n $4, Klock $5 vun $2",
 'previousrevision' => 'Nächstöllere Version→',
 'nextrevision' => 'Ne’ere Version →',
 'currentrevisionlink' => 'aktuelle Version',
@@ -1055,7 +1053,7 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 'mergelogpagetext' => 'Dit is dat Logbook över de tohoopföhrten Versionshistorien.',
 
 # Diffs
-'history-title' => 'Versionshistorie vun „$1“',
+'history-title' => 'Verschoonsgeschicht vun „$1“',
 'lineno' => 'Reeg $1:',
 'compareselectedversions' => 'Ünnerscheed twischen den utwählten Versionen wiesen',
 'showhideselectedversions' => 'Utwählt Versionen wiesen/versteken',
@@ -1104,8 +1102,6 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 'search-interwiki-caption' => 'Süsterprojekten',
 'search-interwiki-default' => '$1 Resultaten:',
 'search-interwiki-more' => '(mehr)',
-'search-mwsuggest-enabled' => 'mit Vörslääg',
-'search-mwsuggest-disabled' => 'kene Vörslääg',
 'search-relatedarticle' => 'Verwandt',
 'mwsuggest-disable' => 'Vörslääg per Ajax utstellen',
 'searcheverything-enable' => 'In all Naamrüüm söken',
@@ -1565,7 +1561,7 @@ Kann angahn, dat dat beter geiht, wenn du dat to en Tiet versöchst, to de op de
 'filehist-filesize' => 'Dateigrött',
 'filehist-comment' => 'Kommentar',
 'filehist-missing' => 'Datei fehlt',
-'imagelinks' => 'Dateiverwiesen',
+'imagelinks' => 'Dateibruuk',
 'linkstoimage' => 'Disse {{PLURAL:$1|Sied|Sieden}} bruukt dit Bild:',
 'linkstoimage-more' => 'Mehr as {{PLURAL:$1|ene Sied|$1 Sieden}} wiest na disse Datei.
 Disse List wiest blot {{PLURAL:$1|den eersten Lenk|de eersten $1 Lenken}} op disse Datei.
@@ -1726,7 +1722,7 @@ to den vun den tweeten Wiederleiden wiest warrt, un to den de eerste Wiederleide
 'listusers-editsonly' => 'Blot Brukers mit Bidrääg wiesen',
 'listusers-creationsort' => 'Na Opstelldatum sorteren',
 'usereditcount' => '$1 {{PLURAL:$1|Ännern|Ännern}}',
-'usercreated' => 'Opstellt an’n $1 üm $2',
+'usercreated' => "{{GENDER:$3|Opstellt}} an'n $1 üm Klock $2",
 'newpages' => 'Ne’e Sieden',
 'newpages-username' => 'Brukernaam:',
 'ancientpages' => 'Öllste Sieden',
index 51d1313..2df9295 100644 (file)
@@ -686,8 +686,9 @@ Zeukopdrachte: $2',
 'protectedpagetext' => 'Disse zied is beveiligd um bewarkingen te veurkoemen.',
 'viewsourcetext' => 'Je kunnen de brontekste van disse zied bewarken en bekieken:',
 'viewyourtext' => "Je kunnen '''joew bewarkingen''' an de brontekste van disse zied bekieken en kopiëren:",
-'protectedinterface' => 'Op disse zied steet n tekste die gebruukt wörden veur systeemteksten van de wiki. Allinnig beheerders kunnen disse zied bewarken.',
-'editinginterface' => "'''Waorschuwing:''' je bewarken n zied die gebruukt wörden deur de programmatuur. Wa'j hier wiezigen, is van invleud op de hele wiki. Overweeg veur vertalingen um [//translatewiki.net/wiki/Main_Page?setlang=nds-nl translatewiki.net] te gebruken, t vertalingsprojekt veur MediaWiki.",
+'protectedinterface' => "Op disse zied steet tekste die gebruukt wörden veur systeemteksten van disse wiki. Allinnig beheerders kunnen disse zied bewarken.
+Um vertalingen veur alle wiki's derbie te zetten of te wiezigen, gebruuk [//translatewiki.net/ translatewiki.net], t vertaalprojekt veur MediaWiki.",
+'editinginterface' => "'''Waorschuwing:''' je bewarken n zied die gebruukt wörden deur de programmatuur. Wa'j hier wiezigen, is van invleud op de hele wiki. Um vertalingen derbie te zetten of te wiezigen veur alle wiki's, gebruuk [//translatewiki.net/wiki/Main_Page?setlang=nds-nl translatewiki.net], t vertalingsprojekt veur MediaWiki.",
 'sqlhidden' => '(SQL-zeukopdrachte verbörgen)',
 'cascadeprotected' => 'Disse zied is beveiligd umdat t veurkömp in de volgende {{PLURAL:$1|zied|ziejen}}, die beveiligd {{PLURAL:$1|is|bin}} mit de "kaskade"-opsie:
 $2',
@@ -969,7 +970,7 @@ Je kunnen [[Special:Search/{{PAGENAME}}|de titel opzeuken]] in aandere ziejen,
 of [{{fullurl:{{FULLPAGENAME}}|action=edit}} disse zied bewarken]</span>.',
 'noarticletext-nopermission' => 'Op disse zied steet gien tekste.
 Je kunnen [[Special:Search/{{PAGENAME}}|zeuken naor disse term]] in aandere ziejen of
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken deurzeuken]</span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken deurzeuken]</span>, mer je hebben gien rechten um disse zied an te maken.',
 'missing-revision' => 'De versie #$1 van de zied "{{PAGENAME}} besteet niet.
 
 Dit kömp meestentieds deur t volgen van n verouwerde verwiezing naor n zied die vortedaon is.
@@ -1325,8 +1326,6 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'search-interwiki-caption' => 'Zusterprojekten',
 'search-interwiki-default' => '$1 resultaoten:',
 'search-interwiki-more' => '(meer)',
-'search-mwsuggest-enabled' => 'mit anbevelingen',
-'search-mwsuggest-disabled' => 'gien anbevelingen',
 'search-relatedarticle' => 'Verwaant',
 'mwsuggest-disable' => 'Anbevelingen via AJAX uutschakelen',
 'searcheverything-enable' => 'In alle naamruumten zeuken',
@@ -1696,7 +1695,7 @@ Bestaanden en media die nao t vortdoon opniej op-estuurd wörden ku'j in de smie
 
 Um t bestaand in te voegen in n zied ku'j één van de volgende kodes gebruken:
 * '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Bestaand.jpg]]</nowiki>'''
-* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Bestaand.png|alternetieve tekste]]</nowiki>'''
+* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Bestaand.png|alternatieve tekste]]</nowiki>'''
 * '''<nowiki>[[</nowiki>{{ns:media}}<nowiki>:Bestaand.ogg]]</nowiki>''' drekte verwiezing naor n bestaand.",
 'upload-permitted' => 'Toe-estaone bestaandstypes: $1.',
 'upload-preferred' => 'An-ewezen bestaandstypes: $1.',
@@ -2934,7 +2933,6 @@ De tiedelike map is niet anwezig.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript testen',
-'javascripttest-disabled' => 'Disse funksie steet niet an op disse wiki.',
 'javascripttest-title' => 'Tests uutvoeren veur $1',
 'javascripttest-pagetext-noframework' => 'Disse zied is ereserveerd veur t uutvoeren van JavaScript-testen.',
 'javascripttest-pagetext-unknownframework' => 'Onbekend testraamwark "$1".',
@@ -3968,4 +3966,7 @@ Aanders ku\'j oek t eenvoudige formulier hieronder gebruken. Joew opmarkingen zu
 'duration-centuries' => '$1 {{PLURAL:$1|eeuw|eeuwen}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'bevat...',
+'searchsuggest-search' => 'Zeuken / zuken / zuiken',
 );
index 0e6ab45..201d6ab 100644 (file)
@@ -1041,8 +1041,6 @@ $1",
 'search-interwiki-caption' => 'भगिनी आयोजना',
 'search-interwiki-default' => '$1 नतिजाहरु:',
 'search-interwiki-more' => '(अझै)',
-'search-mwsuggest-enabled' => 'सुझाव सहितको',
-'search-mwsuggest-disabled' => 'सुझाव बाहेकको',
 'search-relatedarticle' => 'सम्बन्धित',
 'mwsuggest-disable' => 'AJAX सुझाव निस्क्रिय पार्नुहोस्',
 'searcheverything-enable' => 'सबै नेमस्पेसेजहरुमा खोज्नुहोस्',
index d7e50e2..24c0656 100644 (file)
@@ -1037,7 +1037,7 @@ Als u dat wilt voorkomen, [[Special:UserLogin/signup|registreer u]] of [[Special
 U kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken] of [{{fullurl:{{FULLPAGENAME}}|action=edit}} deze pagina bewerken]</span>.',
 'noarticletext-nopermission' => 'Deze pagina bevat geen tekst.
 U kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s of
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken]</span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken]</span>, maar u mag de pagina niet aanmaken.',
 'missing-revision' => 'De versie #$1 van de pagina "{{PAGENAME}} bestaat niet.
 
 Dit wordt meestal veroorzaakt door het volgen van een verouderde verwijzing naar een pagina die is verwijderd.
@@ -1412,8 +1412,6 @@ Probeer een andere zoekopdracht.',
 'search-interwiki-caption' => 'Zusterprojecten',
 'search-interwiki-default' => '$1 resultaten:',
 'search-interwiki-more' => '(meer)',
-'search-mwsuggest-enabled' => 'met suggesties',
-'search-mwsuggest-disabled' => 'geen suggesties',
 'search-relatedarticle' => 'Gerelateerd',
 'mwsuggest-disable' => 'Suggesties via AJAX uitschakelen',
 'searcheverything-enable' => 'In alle naamruimten zoeken',
@@ -1513,7 +1511,7 @@ Hier volgt een willekeurig gegenereerde waarde die u kunt gebruiken: $1',
 'timezoneregion-indian' => 'Indische Oceaan',
 'timezoneregion-pacific' => 'Stille Oceaan',
 'allowemail' => 'E-mail van andere gebruikers toestaan',
-'prefs-searchoptions' => 'Zoekinstellingen',
+'prefs-searchoptions' => 'Zoeken',
 'prefs-namespaces' => 'Naamruimten',
 'defaultns' => 'Anders in de volgende naamruimten zoeken:',
 'default' => 'standaard',
@@ -3083,7 +3081,6 @@ Een tijdelijke map is niet aanwezig.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript testen',
-'javascripttest-disabled' => 'Deze functie is uitgeschakeld in deze wiki.',
 'javascripttest-title' => 'Tests uitvoeren voor $1',
 'javascripttest-pagetext-noframework' => 'Deze pagina is gereserveerd voor het uitvoeren van JavaScripttesten.',
 'javascripttest-pagetext-unknownframework' => 'Onbekend testframework "$1".',
@@ -4180,4 +4177,7 @@ Anders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt
 'duration-centuries' => '$1 {{PLURAL:$1|eeuw|eeuwen}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'bevat...',
+'searchsuggest-search' => 'Zoeken',
 );
index 97d9495..35f0f89 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Norwegian Nynorsk (‪norsk (nynorsk)‬)
+/** Norwegian Nynorsk (norsk (nynorsk)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -347,7 +347,7 @@ $messages = array(
 'tog-uselivepreview' => 'Bruk levande førehandsvising (eksperimentelt JavaScript)',
 'tog-forceeditsummary' => 'Spør meg når eg ikkje har skrive noko i endringssamandraget',
 'tog-watchlisthideown' => 'Gøym endringane mine i overvakingslista',
-'tog-watchlisthidebots' => 'Gøym endringar gjort av robotar i overvakingslista',
+'tog-watchlisthidebots' => 'Gøym endringar gjorde av robotar i overvakingslista',
 'tog-watchlisthideminor' => 'Gøym småplukk i overvakingslista',
 'tog-watchlisthideliu' => 'Gøym endringar av innlogga brukarar i overvakingslista.',
 'tog-watchlisthideanons' => 'Gøym endringar av anonyme brukarar i overvakingslista.',
@@ -899,9 +899,9 @@ Dersom du trykkjer «{{int:savearticle}}» ein gong til, vert endringa di lagra
 'summary-preview' => 'Førehandsvising av endringssamandraget:',
 'subject-preview' => 'Førehandsvising av emne/overskrift:',
 'blockedtitle' => 'Brukaren er blokkert',
-'blockedtext' => "'''Brukarnamnet ditt eller IP-adressa di er blokkert frå endring'''
+'blockedtext' => "'''Brukarnamnet ditt eller IP-adressa di er blokkert'''
 
-Blokkeringa vart gjort av $1.
+Blokkeringa vart gjord av $1.
 Denne grunnen vart gjeven: ''$2''.
 
 * Blokkeringa byrja: $8
@@ -911,7 +911,7 @@ Denne grunnen vart gjeven: ''$2''.
 Du kan kontakte $1 eller ein annan [[{{MediaWiki:Grouppage-sysop}}|administrator]] for å diskutere blokkeringa.
 Ver merksam på at du ikkje kan bruke «send e-post til brukar»-funksjonen så lenge du ikkje har ei gyldig e-postadresse registrert i [[Special:Preferences|innstillingane dine]]. Du kan heller ikkje bruke funksjonen dersom du er blokkert frå å sende e-post.
 IP-adressa di er $3, og blokkeringsnummeret er $5.
-Ver venleg og opplys om dette ved eventuelle førespurnader.",
+Tak med alle opplysningane over ved eventuelle førespurnader.",
 'autoblockedtext' => "IP-adressa di er automatisk blokkert fordi ho vart brukt av ein annan brukar som vart blokkert av $1. Grunne til dette vart gjeve som: ''$2''.
 
 * Blokkeringa byrja: $8
@@ -1076,7 +1076,7 @@ Desse parameterane har vorte utelatne.',
 
 # "Undo" feature
 'undo-success' => 'Endringa kan attenderullast. Ver venleg og sjå over skilnadene nedanfor for å vere sikker på at du vil attenderulle. Deretter kan du lagre attenderullinga.',
-'undo-failure' => 'Endringa kunne ikkje attenderullast grunna konflikt med endringar som er gjort i mellomtida.',
+'undo-failure' => 'Endringa kunne ikkje attenderullast grunna konflikt med endringar som er gjorde i mellomtida.',
 'undo-norev' => 'Endringa kunne ikkje fjernast fordi han ikkje finst eller vart sletta',
 'undo-summary' => 'Rullar attende versjon $1 av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]])',
 
@@ -1297,8 +1297,6 @@ Pass på at den nye sida også har innhald frå den innfletta sida.',
 'search-interwiki-caption' => 'Systerprosjekt',
 'search-interwiki-default' => '$1-resultat:',
 'search-interwiki-more' => '(meir)',
-'search-mwsuggest-enabled' => 'med forslag',
-'search-mwsuggest-disabled' => 'ingen forslag',
 'search-relatedarticle' => 'Relatert',
 'mwsuggest-disable' => 'Slå av AJAX-forslag',
 'searcheverything-enable' => 'Søk i alle namneroma',
@@ -1612,7 +1610,7 @@ Dette kan ikkje tilbakestillast.',
 'recentchanges-label-minor' => 'Dette er ei mindre endring',
 'recentchanges-label-bot' => 'Denne endringa vart gjort av ein bot',
 'recentchanges-label-unpatrolled' => 'Denne endringa er ikkje patruljert enno',
-'rcnote' => "Nedanfor er {{PLURAL:$1|den siste endringa|dei siste '''$1''' endringane}} gjort {{PLURAL:$2|den siste dagen|dei siste '''$2''' dagane}}, for $4, kl. $5.",
+'rcnote' => "Nedanfor er {{PLURAL:$1|den siste endringa gjord|dei siste '''$1''' endringane gjorde}} {{PLURAL:$2|den siste dagen|dei siste '''$2''' dagane}}, for $4, kl. $5.",
 'rcnotefrom' => "Nedanfor vert opp til '''$1''' endringar sidan  ''' $2''' viste.",
 'rclistfrom' => 'Vis nye endringar sidan $1',
 'rcshowhideminor' => '$1 småplukk',
@@ -1644,7 +1642,7 @@ Dette kan ikkje tilbakestillast.',
 'recentchangeslinked-toolbox' => 'Relaterte endringar',
 'recentchangeslinked-title' => 'Endringar relaterte til «$1»',
 'recentchangeslinked-noresult' => 'Det er ikkje gjort endringar på sidene som var lenkja hit i den oppgjevne perioden.',
-'recentchangeslinked-summary' => "Denne spesialsida inneheld alle endringane som er gjort på sider som vert ''lenkja til'' frå denne (eller på sider i ein viss kategori). Dei av sidene du har på [[Special:Watchlist|overvakingslista]] di er '''utheva'''.",
+'recentchangeslinked-summary' => "Dette er ei liste over nylege endringar som er gjorde på sider som vert lenkja til frå ei oppgjeven side (eller på medlemer av ein oppgjeven kategori). Sider på [[Special:Watchlist|overvakingslista di]] er '''utheva'''.",
 'recentchangeslinked-page' => 'Sidenamn:',
 'recentchangeslinked-to' => 'Vis endringar på sider som lenkjer til den gitte sida i staden',
 
@@ -1692,8 +1690,8 @@ For å bruke ei fil på ei side, bruk ei lenkje på eit liknande format:
 'filetype-bad-ie-mime' => 'Kan ikkje lasta opp fila då Internet Explorer ville merka ho som "$1", ein ikkje-tillate og potensielt farleg filtype.',
 'filetype-unwanted-type' => "«'''.$1'''» er ein uynskt filtype.
 {{PLURAL:$3|Føretrekt filtype er|Føretrekte filtypar er}} $2.",
-'filetype-banned-type' => "«'''.$1'''» er ikkje ein tillaten filtype.
-{{PLURAL:$3|Tillaten filtype er|Tillatne filtypar er}} $2.",
+'filetype-banned-type' => "'''«.$1»''' er ikkje {{PLURAL:$4|ein tillaten filtype|tillatne filtypar}}.
+{{PLURAL:$3|Tillaten filtype|Tillatne filtypar}} er $2.",
 'filetype-missing' => 'Fila har inga ending (som t.d. «.jpg»).',
 'empty-file' => 'Fila du leverte var tom.',
 'file-too-large' => 'Fila du leverte var for stor.',
@@ -2321,11 +2319,11 @@ Tilbakemeldingar og anna hjelp:
 'rollbacklinkcount-morethan' => 'rulla attende meir enn {{PLURAL:$1|éi endring|$1 endringar}}',
 'rollbackfailed' => 'Kunne ikkje rulle attende',
 'cantrollback' => 'Kan ikkje rulle attende fordi den siste brukaren er den einaste forfattaren.',
-'alreadyrolled' => 'Kan ikkje rulle attende den siste endringa av [[$1]] gjort av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) fordi nokon andre alt har endra sida att eller fjerna endringa.
+'alreadyrolled' => 'Kan ikkje rulla attende den siste endringa på [[:$1]] gjord av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) av di nokon andre alt har endra eller attenderulla sida.
 
-Den siste endringa vart gjort av [[User:$3|$3]] ([[User talk:$3|brukardiskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+Den siste endringa vart gjord av [[User:$3|$3]] ([[User talk:$3|brukardiskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Samandraget for endringa var: «''$1''».",
-'revertpage' => 'Attenderulla endring gjort av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til tidlegare versjon endra av [[User:$1|$1]]',
+'revertpage' => 'Attenderulla endring gjord av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til siste versjonen av [[User:$1|$1]]',
 'revertpage-nouser' => 'Tilbakestilte endringar av (brukarnamn fjerna) til den siste versjonen av [[User:$1|$1]]',
 'rollback-success' => 'Rulla attende endringane av $1, tilbake til siste versjon av $2.',
 
@@ -2812,6 +2810,9 @@ Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//trans
 'import-invalid-interwiki' => 'Kan ikkje importera frå den valde wikien.',
 'import-error-edit' => '«$1» blei ikkje importert av di du ikkje har løyve til å redigere henne.',
 'import-error-create' => 'Side $1 blei ikkje importert av di du ikkje har løyve til å redigere henne.',
+'import-error-interwiki' => 'Sida «$1» vart ikkje importert sidan namnet hennar er reservert for ekstern lenking (interwiki).',
+'import-error-special' => 'Sida «$1» vart ikkje importert sidan ho høyrer til eit spesialnamnerom som ikkje tillèt sider.',
+'import-error-invalid' => 'Sida «$1» vart ikkje importert sidan namnet er ugildt.',
 
 # Import log
 'importlogpage' => 'Importeringslogg',
@@ -2823,7 +2824,6 @@ Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//trans
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript-utrøyning',
-'javascripttest-disabled' => 'Funksjonen er ikkje påslegen på wikien.',
 'javascripttest-title' => 'Køyrer $1-utrøyningar',
 'javascripttest-pagetext-noframework' => 'Sida er reservert for køyring av JavaScript-utrøyningar.',
 'javascripttest-pagetext-unknownframework' => 'Ukjent utrøyningsrammeverk: «$1».',
@@ -2862,7 +2862,7 @@ Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//trans
 'tooltip-n-mainpage-description' => 'Gå til hovudsida',
 'tooltip-n-portal' => 'Om prosjektet, kva du kan gjera, kvar du finn saker og ting',
 'tooltip-n-currentevents' => 'Aktuelt',
-'tooltip-n-recentchanges' => 'Liste over dei siste endringane som er gjort på wikien.',
+'tooltip-n-recentchanges' => 'Liste over dei siste endringane som er gjorde på wikien.',
 'tooltip-n-randompage' => 'Vis ei tilfeldig side',
 'tooltip-n-help' => 'Hjelp til å bruke alle funksjonane.',
 'tooltip-t-whatlinkshere' => 'Liste over alle wikisidene som har lenkjer hit',
@@ -3817,4 +3817,6 @@ Om ikkje kan du nytta det enkle skjemaet under. Merknaden din vert lagd til på
 'duration-centuries' => '$1 {{PLURAL:$1|hundreår|hundreår}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tusenår|tusenår}}',
 
+# Unknown messages
+'searchsuggest-search' => 'Søk',
 );
index a1bd01b..f6e7057 100644 (file)
@@ -1300,8 +1300,6 @@ $1",
 'search-interwiki-caption' => 'ସାଙ୍ଗରେ ଚାଲିଥିବା ବାକି ପ୍ରକଳ୍ପସବୁ',
 'search-interwiki-default' => '$1 ଫଳାଫଳ:',
 'search-interwiki-more' => '(ଅଧିକ)',
-'search-mwsuggest-enabled' => 'ମତାମତ ସହ',
-'search-mwsuggest-disabled' => 'ମତାମତ ନାହିଁ',
 'search-relatedarticle' => 'ଯୋଡ଼ା',
 'mwsuggest-disable' => 'AJAX ମତାମତକୁ ଅଚଳ କରାଇବେ',
 'searcheverything-enable' => 'ସବୁଗୁଡ଼ିକ ନେମସ୍ପେସରେ ଖୋଜିବେ',
@@ -2913,9 +2911,6 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'import-logentry-interwiki' => '$1 କୁ ଟ୍ରାନ୍ସଉଇକି କରାଗଲା',
 'import-logentry-interwiki-detail' => '$2 ଭିତରୁ $1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}',
 
-# JavaScriptTest
-'javascripttest-disabled' => 'ଏହି ଉଇକିରେ ଏହି ବ୍ୟବସ୍ଥାଟିକୁ ସଚଳ କରାଯାଇନାହି ।',
-
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'ଆପଣଙ୍କ ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠା',
 'tooltip-pt-anonuserpage' => 'ଆପଣ ଯେଉଁ IP ଠିକଣାର ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠାଟି ବଦଳାଇବା ପାଇଁ ଚେଷ୍ଟା କରୁଛନ୍ତି',
@@ -3905,4 +3900,6 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'duration-centuries' => '$1 {{PLURAL:$1|century|centuries}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Unknown messages
+'searchsuggest-search' => 'ଖୋଜିବା',
 );
index 02427e0..3012bb0 100644 (file)
@@ -878,8 +878,6 @@ $2
 'search-suggest' => 'Кæд мыййаг агурыс: $1',
 'search-interwiki-caption' => 'Æфсымæрон проекттæ',
 'search-interwiki-more' => '(нодзы)',
-'search-mwsuggest-enabled' => 'æмбарынгæнæнтимæ',
-'search-mwsuggest-disabled' => 'æнæ æмбарынгæнæнтæ',
 'searchrelated' => 'хæстæг',
 'searchall' => 'иууылдæр',
 'showingresultsheader' => "{{PLURAL:$5|Фæстиуæг '''$1''' '''$3'''-йæ|Фæстиуджытæ '''$1 - $2''' '''$3'''-йæ}} '''{{grammar:dative|$4}}'''",
index cbadccc..b68e36e 100644 (file)
@@ -302,7 +302,7 @@ Manual:External_editors ਹੋਰ ਜਾਣਕਾਰੀ।])',
 'viewtalkpage' => 'ਚਰਚਾ ਵੇਖੋ',
 'otherlanguages' => 'ਹੋਰ ਜ਼ਬਾਨਾਂ ਵਿਚ',
 'redirectedfrom' => '($1 ਤੋਂ ਰੀ-ਡਿਰੈਕਟ)',
-'redirectpagesub' => 'ਰੀ-ਡਿਰੈਕਟ ਪੇਜ',
+'redirectpagesub' => 'ਰੀਡਿਰੈਕਟ ਸਫ਼ਾ',
 'lastmodifiedat' => 'ਇਹ ਸਫ਼ਾ ਆਖ਼ਰੀ ਵਾਰ $1 ਨੂੰ $2 ’ਤੇ ਸੋਧਿਆ ਗਿਆ ਸੀ।',
 'viewcount' => 'ਇਹ ਸਫ਼ਾ {{PLURAL:$1|ਇੱਕ ਵਾਰ|$1 ਵਾਰ}} ਵੇਖਿਆ ਗਿਆ।',
 'protectedpage' => 'ਸੁਰੱਖਿਅਤ ਪੇਜ',
@@ -352,7 +352,7 @@ $1',
 'newmessagesdifflink' => 'ਆਖ਼ਰੀ ਤਬਦੀਲੀ',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|ਇੱਕ ਵਰਤੋਂਕਾਰ|$3 ਵਰਤੋਂਕਾਰਾਂ}} ਵੱਲੋਂ ਤੁਹਾਨੂੰ $1 ($2)।',
 'youhavenewmessagesmanyusers' => 'ਕਈ ਵਰਤੋਂਕਾਰਾਂ ਵੱਲੋਂ ਤੁਹਾਨੂੰ $1 ($2)।',
-'newmessageslinkplural' => '{{PLURAL:$1|ਇੱਕ ਨਵਾਂ ਸੁਨੇਹਾ|ਨਵੇਂ ਸੁਨੇਹੇ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ਇੱਕ ਨਵਾਂ ਸੁਨੇਹਾ|ਨਵੇਂ ਸੁਨੇਹੇ}} {{PLURAL:$1|ਹੈ|ਹਨ}}',
 'newmessagesdifflinkplural' => 'ਆਖ਼ਰੀ {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}',
 'youhavenewmessagesmulti' => '$1 ’ਤੇ ਤੁਹਾਡੇ ਲਈ ਨਵੇਂ ਸੁਨੇਹੇ ਹਨ',
 'editsection' => 'ਸੋਧ',
@@ -638,7 +638,7 @@ $2
 'anonpreviewwarning' => "''ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ। ਤਬਦੀਲੀ ਸਾਂਭਣ ਨਾਲ਼ ਤੁਹਾਡਾ IP ਪਤਾ ਸਫ਼ੇ ਦੇ ਸੋਧ ਅਤੀਤ ਵਿਚ ਰਿਕਾਰਡ ਹੋ ਜਾਵੇਗਾ।''",
 'missingsummary' => "'''ਯਾਦ-ਦਹਾਨੀ:''' ਤੁਸੀਂ ਸੋਧ ਸਾਰ ਮੁਹੱਈਆ ਨਹੀਂ ਕਰਵਾਇਆ। ਜੇ ਤੁਸੀਂ \"{{int:savearticle}}\" ਤੇ ਦੁਬਾਰਾ ਕਲਿੱਕ ਕੀਤਾ ਤਾਂ ਤੁਹਾਡਾ ਸਫ਼ਾ ਇਸਦੇ ਬਿਨਾਂ ਹੀ ਸਾਂਭਿਆ ਜਾਵੇਗਾ।",
 'missingcommenttext' => 'ਹੇਠਾਂ ਇੱਕ ਟਿੱਪਣੀ ਦਿਓ।',
-'summary-preview' => 'ਸੰà¨\96à©\87ਪ ਝਲਕ:',
+'summary-preview' => 'ਸà©\8bਧ à¨¸à¨¾à¨° à¨¦à©\80 ਝਲਕ:',
 'subject-preview' => 'ਵਿਸ਼ਾ/ਹੈੱਡਲਾਈਨ ਝਲਕ:',
 'blockedtitle' => 'ਯੂਜ਼ਰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ',
 'blockedtext' => "'''ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ IP ਪਤੇ ’ਤੇ ਪਾਬੰਦੀ ਲੱਗ ਚੁੱਕੀ ਹੈ।'''
@@ -796,7 +796,7 @@ $3 ਨੇ ਕਾਰਨ ਇਹ ਦੱਸਿਆ ਹੈ, ''$2''",
 
 # Revision feed
 'history-feed-title' => 'ਰੀਵਿਜ਼ਨ ਅਤੀਤ',
-'history-feed-description' => 'ਵਿਕੀ ਤੇ ਇਸ ਸਫ਼ੇ ਦਾ ਰੀਵਿਜ਼ਨ ਅਤੀਤ',
+'history-feed-description' => 'ਵਿਕੀ ਤੇ ਇਸ ਸਫ਼ੇ ਦਾ ਰੀਵਿਜ਼ਨ ਅਤੀਤ',
 'history-feed-item-nocomment' => '$1 ਤੋਂ $2 ’ਤੇ',
 'history-feed-empty' => 'ਦਰਖ਼ਾਸਤਸ਼ੁਦਾ ਸਫ਼ਾ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।
 ਸ਼ਾਇਦ ਇਸਨੂੰ ਵਿਕੀ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ ਜਾਂ ਨਾਮ ਬਦਲ ਦਿੱਤਾ ਗਿਆ ਹੈ।
@@ -932,8 +932,6 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'search-interwiki-caption' => 'ਸਾਥੀ ਪ੍ਰੋਜੈਕਟ',
 'search-interwiki-default' => '$1 ਨਤੀਜੇ:',
 'search-interwiki-more' => '(ਹੋਰ)',
-'search-mwsuggest-enabled' => 'ਸੁਝਾਆਵਾਂ ਨਾਲ',
-'search-mwsuggest-disabled' => 'ਕੋਈ ਸੁਝਾਅ ਨਹੀਂ',
 'search-relatedarticle' => 'ਸਬੰਧਿਤ',
 'mwsuggest-disable' => 'AJAX ਸਲਾਹਾਂ ਬੰਦ ਕਰੋ',
 'searcheverything-enable' => 'ਸਾਰੇ ਥਾਂ-ਨਾਂਵਾਂ ਵਿਚ ਖੋਜੋ',
@@ -1396,7 +1394,7 @@ to upload files.',
 'listusers' => 'ਯੂਜ਼ਰ ਲਿਸਟ',
 'usercreated' => '$1 ਨੂੰ $2 ’ਤੇ {{GENDER:$3|ਬਣਾਇਆ}}',
 'newpages' => 'ਨਵੇਂ ਸਫ਼ੇ',
-'newpages-username' => 'ਯà©\82à¨\9c਼ਰ ਨਾਂ:',
+'newpages-username' => 'ਵਰਤà©\8bà¨\82à¨\95ਾਰ-ਨਾਂ:',
 'ancientpages' => 'ਸਭ ਤੋਂ ਪੁਰਾਣੇ ਪੇਜ',
 'move' => 'ਭੇਜੋ',
 'movethispage' => 'ਇਹ ਪੇਜ ਭੇਜੋ',
@@ -1930,7 +1928,7 @@ delete|ਮਿਟਾਉਣਾਂ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'show-big-image' => 'ਪੂਰਾ ਰੈਜ਼ੋਲੇਸ਼ਨ',
 
 # Special:NewFiles
-'newimages' => 'ਨਵà©\80à¨\86à¨\82 à¨«à¨¾à¨\87ਲਾਂ ਦੀ ਗੈਲਰੀ',
+'newimages' => 'ਨਵà©\80à¨\86à¨\82 à¨«à¨¼à¨¾à¨\88ਲਾਂ ਦੀ ਗੈਲਰੀ',
 'noimages' => 'ਵੇਖਣ ਲਈ ਕੁਝ ਨਹੀਂ',
 'ilsubmit' => 'ਖੋਜ',
 'bydate' => 'ਮਿਤੀ ਨਾਲ',
@@ -2073,4 +2071,6 @@ delete|ਮਿਟਾਉਣਾਂ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'htmlform-reset' => 'ਬਦਲਾਅ ਵਾਪਸ ਲਵੋ',
 'htmlform-selectorother-other' => 'ਹੋਰ',
 
+# Unknown messages
+'searchsuggest-search' => 'ਖੋਜ',
 );
index 4fd4af0..c0f167d 100644 (file)
@@ -461,8 +461,6 @@ Léginde : ({{MediaWiki:Cur}}) = différinches aveuc el vérchon à ch'momint-ch
 'search-interwiki-caption' => 'Proujé analocq',
 'search-interwiki-default' => '$1 résultats:',
 'search-interwiki-more' => '(pus)',
-'search-mwsuggest-enabled' => 'aveuc avanches',
-'search-mwsuggest-disabled' => "mie d'avanches",
 'nonefound' => "'''Note''': il y o tasseulemint quéques éspaces éd noms éq sont trachés pèr défeut. <br /> Pou tracher din tous chés contnus (paches éd pérlache, modéles, etc... comprins) insséyer in imploéyant ch'préfixe ''all:'' o bin imploéyer echl éspace éd noms édmindé conme préfixe.",
 'powersearch' => 'Érvue avanchée',
 'powersearch-legend' => 'Érvue avanchée',
index 73f80a5..0d10edb 100644 (file)
@@ -1327,8 +1327,6 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 'search-interwiki-caption' => 'Projekty siostrzane',
 'search-interwiki-default' => 'Wyniki dla $1:',
 'search-interwiki-more' => '(więcej)',
-'search-mwsuggest-enabled' => 'z dynamicznymi propozycjami',
-'search-mwsuggest-disabled' => 'bez dynamicznych propozycji',
 'search-relatedarticle' => 'Pokrewne',
 'mwsuggest-disable' => 'Wyłącz dynamiczne podpowiedzi',
 'searcheverything-enable' => 'Szukaj we wszystkich przestrzeniach nazw',
@@ -1671,9 +1669,9 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'rc-old-title' => 'oryginalnie utworzono jako "$1"',
 
 # Recent changes linked
-'recentchangeslinked' => 'Zmiany w dolinkowanych',
-'recentchangeslinked-feed' => 'Zmiany w dolinkowanych',
-'recentchangeslinked-toolbox' => 'Zmiany w dolinkowanych',
+'recentchangeslinked' => 'Zmiany w linkowanych',
+'recentchangeslinked-feed' => 'Zmiany w linkowanych',
+'recentchangeslinked-toolbox' => 'Zmiany w linkowanych',
 'recentchangeslinked-title' => 'Zmiany w linkowanych z „$1”',
 'recentchangeslinked-noresult' => 'Nie było żadnych zmian na (zależnie od ustawień) linkowanych lub linkujących stronach w wybranym okresie.',
 'recentchangeslinked-summary' => "Poniżej znajduje się lista ostatnich zmian na stronach linkowanych z podanej strony (lub we wszystkich stronach należących do podanej kategorii).
@@ -2966,7 +2964,6 @@ Brak katalogu dla plików tymczasowych.',
 
 # JavaScriptTest
 'javascripttest' => 'Testowanie JavaScript',
-'javascripttest-disabled' => 'Ta funkcja nie została włączona na tej wiki.',
 'javascripttest-title' => 'Uruchamianie testów $1',
 'javascripttest-pagetext-noframework' => 'Ta strona jest zarezerwowana dla wykonywania testów JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Nieznany framework testowania „$1”.',
@@ -4091,4 +4088,6 @@ W przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zosta
 'duration-centuries' => '$1 {{PLURAL:$1|stulecie|stulecia|stuleci}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tysiąclecie|tysiąclecia|tysiącleci}}',
 
+# Unknown messages
+'searchsuggest-search' => 'Szukaj',
 );
index 7a463b5..4e54e2c 100644 (file)
@@ -419,8 +419,10 @@ Arcesta: $2',
 'protectedpagetext' => "Sta pàgina-sì a l'è stàita blocà për evité che a-j faso dle modìfiche.",
 'viewsourcetext' => 'A peul vardé e copié la sorgiss dë sta pàgina:',
 'viewyourtext' => "A peule vëdde e copié la sorziss ëd '''soe modìfiche''' a costa pàgina-sì:",
-'protectedinterface' => "Costa pàgina-sì a l'ha andrinta un chèich-còs che a fa part d'antërfacia dël programa che a deuvro tùit; donca a l'é proteta për evité che a-i rivo dle ròbe brute.",
-'editinginterface' => "'''Dossman!''' A l'é dapress ch'a-i travaja ansima a na pàgina ch'as deuvra për generé ël test dl'antërfacia dël programa. Le modìfiche fàite ambelessì a-j bogio l'antërfacia a tuti j'utent. Se sò but a l'é col ëd fé na tradussion, për piasì ch'a considerà la possibilità dë dovré [//translatewiki.net/wiki/Main_Page?setlang=pms translatewiki.net], ël proget ëd localisassion ëd MediaWiki.",
+'protectedinterface' => "Costa pàgina-sì a l'ha andrinta un cheicòs che a fa part d'antërfacia dël programa che a deuvro tùit; donca a l'é proteta për evité che a-i rivo dle ròbe brute.",
+'editinginterface' => "'''Dossman!''' A l'é dapress ch'a modìfica na pàgina ch'as deuvra për generé ël test dl'antërfacia dël programa. 
+Le modìfiche a sta pàgina a toco l'aparensa ëd l'antërfacia utent a tuti j'utent dzora a sta wiki. 
+Për gionté o cangé dle tradussion për tute le wiki, për piasì ch'a deuvra [//translatewiki.net/translatewiki.net], ël proget ëd localisassion ëd MediaWiki.",
 'sqlhidden' => "(l'anterogassion SQL a l'é stërmà)",
 'cascadeprotected' => 'Ant sta pàgina-sì as peulo pa fé ëd modìfiche, përché a-i intra ant {{PLURAL:$1|la pàgina|le pàgine}} butà sot a protession con la fonsion "a tombé" viscà ansima a: $2',
 'namespaceprotected' => "A l'ha nen ël përmess dë feje dle modìfiche a le pàgine dlë spassi nominal '''$1'''.",
@@ -694,9 +696,9 @@ S'it ses sì për eror, sgnaca ël boton '''andaré''' ëd tò navigador.",
 'noarticletext' => 'Al moment costa pàgina a l\'é veuida.
 It peule [[Special:Search/{{PAGENAME}}|sërché costa vos]] andrinta a d\'àutre pàgine, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sërché ant ij registr colegà],
 o purament [{{fullurl:{{FULLPAGENAME}}|action=edit}} modìfiché la pàgina adess]</span>.',
-'noarticletext-nopermission' => 'Al moment a-i é pa gnun test an sta pàgina-sì.
-It peule [[Special:Search/{{PAGENAME}}|sërché sto tìtol ëd pàgina-sì]] an d\'àutre pàgine,
-o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sërché j\'argistrassion colegà]</span>.',
+'noarticletext-nopermission' => "Al moment a-i é gnun test ansima a costa pàgina.
+A peul [[Special:Search/{{PAGENAME}}|sërché ës tìtol ëd pàgina]] an d'àutre pàgine,
+o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sërché j'argistrassion colegà]</span>, ma a l'ha pa ël përmess ëd creé costa pàgina.",
 'missing-revision' => "La revision #\$1 dla pàgina ciamà \"{{PAGENAME}}\" a esist pa.
 
 Sòn a l'é normalment causà da l'andèje dapress a na vej liura stòrica a na pàgina ch'a l'é stàita scancelà. Ij detaj a peulo esse trovà ant ël [registr ëd jë scancelament ëd {{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}].",
@@ -1059,8 +1061,6 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 'search-interwiki-caption' => 'Proget frej',
 'search-interwiki-default' => 'Arzultà da $1:',
 'search-interwiki-more' => '(ëd pì)',
-'search-mwsuggest-enabled' => 'con sugeriment',
-'search-mwsuggest-disabled' => 'gnun sugeriment',
 'search-relatedarticle' => 'Corelà',
 'mwsuggest-disable' => 'Disabilité ij sugeriment AJAX',
 'searcheverything-enable' => 'Sërché ant tùit jë spassi nominaj',
@@ -1157,7 +1157,7 @@ Ambelessì a-i é un valor generà a asar che a peul dovré: $1",
 'timezoneregion-indian' => 'Océan Indian',
 'timezoneregion-pacific' => 'Océan Passìfich',
 'allowemail' => "Lassa che j'àutri utent am mando ëd mëssagi ëd pòsta eletrònica",
-'prefs-searchoptions' => "Opsion d'arserca",
+'prefs-searchoptions' => 'Sërca',
 'prefs-namespaces' => 'Spassi nominaj',
 'defaultns' => 'Dësnò, sërché an costi spassi nominaj-sì:',
 'default' => 'stàndard',
@@ -1589,7 +1589,7 @@ Se a-i riva sossì n'àotra vira, ch'as buta an comunicassion con n'[[Special:Li
 'backend-fail-internal' => "N'eror pa conossù a l'é rivaje ant ël dispositiv ëd memòria «$1».",
 'backend-fail-contenttype' => "As peul pa determinesse la sòrt ëd contnù dl'archivi da memorisé a «$1».",
 'backend-fail-batchsize' => "Ël dispositiv ëd memòria a l'ha dàit un total ëd $1 {{PLURAL:$1|operassion|operassion}} d'archivi; ël lìmit a l'é $2 {{PLURAL:$1|operassion|operassion}}.",
-'backend-fail-usable' => "As peul pa scrivse l'archivi $1 a motiv ëd drit insuficent o liste/contnidor mancant.",
+'backend-fail-usable' => 'As peul pa les-se o scrivse l\'archivi "$1" a motiv ëd drit insuficent o liste/contnidor mancant.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Impossìbil coleghesse a la base ëd dàit ëd lë scartari për ël terminal ëd memorisassion «$1».',
@@ -2700,7 +2700,6 @@ Për piasì, ch'a preuva torna.",
 
 # JavaScriptTest
 'javascripttest' => 'Preuva ëd JavaScript',
-'javascripttest-disabled' => "Sta funsion-sì a l'é pa stàita abilità ansima a costa wiki.",
 'javascripttest-title' => 'Fé dle preuve $1',
 'javascripttest-pagetext-noframework' => "Costa pàgina a l'é arservà për fé dle preuve JavaScript.",
 'javascripttest-pagetext-unknownframework' => 'Strutura ëd preuva pa conossùa «$1».',
@@ -2956,7 +2955,7 @@ J'àutri a saran stërmà coma stàndard.
 'exif-planarconfiguration' => 'Sistemassion dij dat',
 'exif-ycbcrsubsampling' => 'Rapòrt ëd campionament antra Y e C',
 'exif-ycbcrpositioning' => 'Posissionament Y e C',
-'exif-xresolution' => 'Risolussion orizontal',
+'exif-xresolution' => 'Risolussion orisontal',
 'exif-yresolution' => 'Risolussion vertical',
 'exif-stripoffsets' => 'Posission dij dat dla figura',
 'exif-rowsperstrip' => 'Nùmer ëd righe për banda',
@@ -2965,8 +2964,8 @@ J'àutri a saran stërmà coma stàndard.
 'exif-jpeginterchangeformatlength' => 'Byte ëd dat an formà JPEG',
 'exif-whitepoint' => 'Pont cromàtich dël bianch',
 'exif-primarychromaticities' => 'Coordinà cromàtiche dij color primari',
-'exif-ycbcrcoefficients' => 'Coeficent dla matriss ëd trasformassion dlë spassi color',
-'exif-referenceblackwhite' => "Pàira ëd valor d'arferiment për bianch e nèir",
+'exif-ycbcrcoefficients' => 'Coefissient dla matris ëd trasformassion dlë spassi dij color',
+'exif-referenceblackwhite' => "Cobia ëd valor d'arferiment për bianch e nèir",
 'exif-datetime' => 'Data e ora dle modìfiche',
 'exif-imagedescription' => 'Tìtol dla figura',
 'exif-make' => 'Fabricant dla màchina fotogràfica ò videocàmera',
@@ -2976,13 +2975,13 @@ J'àutri a saran stërmà coma stàndard.
 'exif-copyright' => "Titolar dël drit d'autor",
 'exif-exifversion' => 'Version dël formà Exif',
 'exif-flashpixversion' => 'A riva a la version Flashpix',
-'exif-colorspace' => 'Spassi color',
-'exif-componentsconfiguration' => 'Sust ëd vira component',
+'exif-colorspace' => 'Spassi dij color',
+'exif-componentsconfiguration' => 'Significà ëd minca component',
 'exif-compressedbitsperpixel' => 'Sistema ëd compression dle figure',
 'exif-pixelydimension' => 'Larghëssa dla figura',
 'exif-pixelxdimension' => 'Autëssa dla figura',
 'exif-usercomment' => 'Nòte lìbere',
-'exif-relatedsoundfile' => 'Archivi audio colegà',
+'exif-relatedsoundfile' => 'Archivi sonor colegà',
 'exif-datetimeoriginal' => 'Data e ora dla generassion dij dat',
 'exif-datetimedigitized' => 'Data e ora dla digitalisassion',
 'exif-subsectime' => 'Data, ora e frassion ëd second',
@@ -2990,41 +2989,41 @@ J'àutri a saran stërmà coma stàndard.
 'exif-subsectimedigitized' => 'Data e ora ëd digitalisassion, con frassion ëd second',
 'exif-exposuretime' => "Temp d'esposission",
 'exif-exposuretime-format' => '$1 sec ($2)',
-'exif-fnumber' => "Nùmer d'F",
+'exif-fnumber' => 'Duvertura',
 'exif-exposureprogram' => "Programa d'esposission",
-'exif-spectralsensitivity' => 'Sensibilità dë spetro',
+'exif-spectralsensitivity' => 'Sensibilità spetral',
 'exif-isospeedratings' => 'Sensibilità ISO',
-'exif-shutterspeedvalue' => 'Temp dë scat APEX',
-'exif-aperturevalue' => 'Diaframa APEX',
+'exif-shutterspeedvalue' => "Temp dë scat ëd l'APEX",
+'exif-aperturevalue' => "Diaframa ëd l'APEX",
 'exif-brightnessvalue' => 'Luminosità APEX',
 'exif-exposurebiasvalue' => "Coression dl'esposission",
-'exif-maxaperturevalue' => 'Apertura màssima',
+'exif-maxaperturevalue' => 'Duvertura màssima',
 'exif-subjectdistance' => 'Distansa dël soget',
 'exif-meteringmode' => "Càlcol dl'espossision",
 'exif-lightsource' => "Sorgiss d'anluminassion",
-'exif-flash' => 'Flash',
-'exif-focallength' => 'Lunghëssa focal dle lent',
+'exif-flash' => 'Lòsna',
+'exif-focallength' => 'Longheur focal dle lent',
 'exif-subjectarea' => "Spassi d'anquadratura dël soget",
-'exif-flashenergy' => 'Potensa dël flash',
-'exif-focalplanexresolution' => 'Resolussion dla coordinà X ant sël pian dla focal',
-'exif-focalplaneyresolution' => 'Resolussion dla coordinà Y ant sël pian dla focal',
+'exif-flashenergy' => 'Energìa dla lòsna',
+'exif-focalplanexresolution' => 'Arzolussion dla coordinà X ant sël pian dla focal',
+'exif-focalplaneyresolution' => 'Arzolussion dla coordinà Y ant sël pian dla focal',
 'exif-focalplaneresolutionunit' => "Unità d'amzura për ël pian dla focal",
 'exif-subjectlocation' => 'Posission dël soget',
 'exif-exposureindex' => "Ìndes dl'esposission",
-'exif-sensingmethod' => 'Metod ëd campionament',
+'exif-sensingmethod' => 'Métod ëd campionament',
 'exif-filesource' => "Sorgiss dl'archivi",
 'exif-scenetype' => "Sòrt d'anquadratura",
 'exif-customrendered' => 'Process dla figura particolar',
 'exif-exposuremode' => "Modalità dl'esposission",
 'exif-whitebalance' => 'Balansa dël bianch',
-'exif-digitalzoomratio' => 'Rapòrt ëd lë zoom digital',
-'exif-focallengthin35mmfilm' => 'Lunghëssa focal an film da 35 mm',
+'exif-digitalzoomratio' => "Rapòrt ëd l'avzinament digital",
+'exif-focallengthin35mmfilm' => 'Longheur focal an na pelìcola da 35 mm',
 'exif-scenecapturetype' => 'Sistema ëd campionament',
-'exif-gaincontrol' => 'Contròl ëd sienari',
+'exif-gaincontrol' => 'Contròl dël senari',
 'exif-contrast' => 'Contrast',
 'exif-saturation' => 'Saturassion',
 'exif-sharpness' => 'Definission dij bòrd',
-'exif-devicesettingdescription' => "Nòm dla configurassion dl'aparechiatura",
+'exif-devicesettingdescription' => "Descrission dla configurassion dl'angign",
 'exif-subjectdistancerange' => 'Ragg ëd distansa dël soget',
 'exif-imageuniqueid' => 'Identificator ùnich dla figura',
 'exif-gpsversionid' => 'Version dël GPS',
@@ -3766,4 +3765,6 @@ Dësnò, a peule dovré ël formlari semplificà sì-sota. Sò coment a sarà gi
 'duration-centuries' => '$1 {{PLURAL:$1|sécol|sécoj}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenari|milenari}}',
 
+# Unknown messages
+'searchsuggest-search' => 'Arserca',
 );
index 57d9886..db11875 100644 (file)
@@ -1002,8 +1002,6 @@ $1",
 'search-interwiki-caption' => 'رلدے ویونت',
 'search-interwiki-default' => '$1 نتارے:',
 'search-interwiki-more' => '(اور)',
-'search-mwsuggest-enabled' => 'صلاع دے نال',
-'search-mwsuggest-disabled' => 'کوئی صلاع نئیں',
 'search-relatedarticle' => 'جڑیاں',
 'mwsuggest-disable' => 'اجاکس مشورے نکارہ کرو',
 'searcheverything-enable' => 'ہر ناں چ لبو',
@@ -2616,7 +2614,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript ٹیسٹنگ',
-'javascripttest-disabled' => 'ایس وکی تے ایہ کم نئیں چلدا۔',
 'javascripttest-title' => 'ٹیسٹ  $1 چلدا اے۔',
 'javascripttest-pagetext-noframework' => 'ایہ صفہ JavaScript  ٹیسٹاں لئی بچایا گیا اے۔',
 'javascripttest-pagetext-unknownframework' => '"$1" انجانا ٹیسٹنگ فریمورک۔',
@@ -3600,4 +3597,7 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 'api-error-uploaddisabled' => 'فائل جڑھانا ایس وکی تے بند اے۔',
 'api-error-verification-error' => 'اے فائل کرپٹ ہو سکدی یا فیر ایدا فارمیٹ غلط اے۔',
 
+# Unknown messages
+'searchsuggest-containing' => 'بند کر ریا اے۔۔۔',
+'searchsuggest-search' => 'کھوج',
 );
index 03e5454..2d57225 100644 (file)
@@ -402,7 +402,7 @@ $1',
 'portal' => 'د ټولنې تانبه',
 'portal-url' => 'Project:د ټولنې تانبه',
 'privacy' => 'د پټنتيا تګلاره',
-'privacypage' => 'Project:د Ù\85حرÙ\85Ù\8aت_تګلاره',
+'privacypage' => 'Project:د Ù¾Ù¼Ù\86تÙ\8aا تګلاره',
 
 'badaccess' => 'د لاسرسۍ تېروتنه',
 'badaccess-group0' => 'تاسې د غوښتل شوې کړنې د ترسره کولو اجازه نه لرۍ.',
@@ -417,6 +417,8 @@ $1',
 'youhavenewmessages' => 'تاسې $1 لری  ($2).',
 'newmessageslink' => 'نوي پيغامونه',
 'newmessagesdifflink' => 'وروستی بدلون',
+'youhavenewmessagesfromusers' => 'تاسې د {{PLURAL:$3|يو بل کارن|$3 کارنانو}} لخوا $1 لرۍ ($2).',
+'youhavenewmessagesmanyusers' => 'تاسې د يو شمېر کارنانو لخوا $1 لرۍ ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|يو نوی پيغام|نوي پيغامونه}}',
 'newmessagesdifflinkplural' => 'وروستي {{PLURAL:$1|بدلون|بدلونونه}}',
 'youhavenewmessagesmulti' => 'تاسې په $1 کې نوي پېغامونه لرۍ',
@@ -507,7 +509,8 @@ $1',
 'actionthrottled' => 'د دې کړنې مخنيوی وشو',
 'protectedpagetext' => 'دا مخ د بدلون او سمون د مخنيوي په تکل تړل شوی دی.',
 'viewsourcetext' => 'تاسې د دې مخ سرچينه کتلی او لمېسلی شی:',
-'protectedinterface' => 'په همدې مخ کې د پوستکالي د ليدنمخ متن دی او دا متن د ناسمو کارولو د مخنيوي په تکل تړل شوی.',
+'protectedinterface' => 'دا مخ د دې ويکي د ساوترې د ليدنمخ متن لري، او د ورانکارۍ په خاطر ژغورل شوی.
+په ټولو ويکي ګانو کې د ژباړې د ورګډولو او يا هم د ژباړې د سمون او بدلون لپاره د مېډياويکي د ځايتابه پروژه [//translatewiki.net/ translatewiki.net] وکاروۍ.',
 'editinginterface' => "'''ګواښنه:''' تاسو په يوه داسې مخ کې بدلون راولی کوم چې د يوې پوستکالی د ليدنمخ متن په توګه کارېږي.
 په همدې مخ کې بدلون راوستل به د نورو کارنانو د ليدنمخ بڼه اغېزمنه کړي.
 د ژباړې لپاره، مهرباني وکړی د [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]، وېبځي ته ولاړ شی. دا وېبځی د ميډياويکي د ځايتابه پروژه ده او د همدې پر کارولو غور وکړی.",
@@ -518,6 +521,7 @@ $1',
 'ns-specialprotected' => 'ځانګړي مخونو کې سمون او بدلون نه شی راوستلای.',
 'titleprotected' => 'د [[User:$1|$1]] لخوا د دې سرليک د جوړېدلو مخنيوی شوی.
 او د دې کړنې سبب "\'\'$2\'\'" ورکړ شوی.',
+'exception-nologin' => 'غونډال کې نه ياست ننوتي',
 
 # Virus scanner
 'virus-badscanner' => "بده سازېدنه: د ويروس ناڅرګنده ځيرڅار: ''$1''",
@@ -529,9 +533,9 @@ $1',
 
 تاسې کولای شی چې د کارن-نوم نه پرته په ورکنومي توګه {{SITENAME}} وکاروی، او يا هم په همدې او يا کوم بل کارن-نوم، يو ځل [[Special:UserLogin|بيا غونډال ته ورننوځۍ]].
 دا په پام کې وساتۍ چې تر څو تاسې د خپل کتنمل حافظه نه وي سپينه کړې، نو ځينې مخونو کې به لا تر اوسه پورې په غونډال کې ننوتي ښکارۍ.",
-'welcomecreation' => '==$1 ښه راغلاست! ==
+'welcomecreation' => '==$1 ښه راغلۍ! ==
 
-ستاسې ګڼون جوړ شو. لطفاً د [[Special:Preferences|{{SITENAME}} غوره توبونو]] ټاکل مو مه هېروی.',
+ستاسې ګڼون جوړ شو. لطفاً د خپلو [[Special:Preferences|{{SITENAME}} غوره توبونو]] ټاکل مو مه هېروی.',
 'yourname' => 'کارن-نوم:',
 'yourpassword' => 'پټنوم:',
 'yourpasswordagain' => 'پټنوم بيا وليکه',
@@ -591,7 +595,7 @@ $1',
 که چېرته تاسې نه پرته کوم بل چا دغه غوښتنه کړې وي او يا هم تاسې ته خپل پټنوم در پزړه شوی وي او تاسې خپل اصلي پټنوم بدلول نه غواړۍ، نو تاسې همدا پيغام بابېزه وګڼۍ او د پخوا په څېر خپل اصلي پټنوم وکاروی.',
 'noemail' => 'د "$1" کارن لپاره هېڅ کومه برېښليک پته نه ده ثبته شوې.',
 'noemailcreate' => 'تاسې ته پکار ده چې يوه سمه برېښليک پته وليکۍ',
-'passwordsent' => 'د "$1" لپاره يو نوی پټنوم د هغه/هغې د برېښليک پتې ته ولېږل شو.
+'passwordsent' => 'د "$1" لپاره يو نوی پټنوم د اړونده کارن برېښليک پتې ته ولېږل شو.
 لطفاً کله چې پټنوم مو ترلاسه کړ نو بيا غونډال ته ننوځۍ.',
 'blocked-mailpassword' => 'ستاسې په IP پتې بنديز لګېدلی او تاسې نه شی کولای چې ليکنې وکړی، په همدې توګه تاسې نه شی کولای چې د پټنوم د پرځای کولو کړنې وکاروی دا ددې لپاره چې د وراني مخنيوی وشي.',
 'eauthentsent' => 'ستاسې ورکړ شوې برېښليک پتې ته مو يو تاييدي برېښليک درولېږه.
@@ -606,6 +610,7 @@ $1',
 'invalidemailaddress' => 'دا برېښليک پته نه منل کېږي، دا ځکه چې دا پته يوه ناکره بڼه لري.
 لطفاً د يوې کره بڼې پته وليکۍ او يا هم دا ځای تش پرېږدۍ.',
 'cannotchangeemail' => 'پدې ويکي کې د ګڼون برېښليک پتې نشي بدلېدلی.',
+'emaildisabled' => 'دا وېبځی د برېښليک لېږلو چارو څخه برخمن نه دی.',
 'accountcreated' => 'ګڼون مو جوړ شو.',
 'accountcreatedtext' => 'د $1 لپاره يو ګڼون جوړ شو.',
 'createaccount-title' => 'د {{SITENAME}} د ګڼون جوړېدنه',
@@ -614,8 +619,14 @@ $1',
 
 که چېرته دا کړنه په تېروتنه کې شوی وي نو تاسې کولای شی چې دا پيغام بابېزه وګڼۍ.',
 'usernamehasherror' => 'کارن-نوم نشي کېدلای چې کرښکې لوښې ولري',
+'login-throttled' => 'تاسې څو واره هڅه کړې چې غونډال ته ورننوځۍ.
+لطفاً د بيا هڅې نه مخکې يو څو شېبې تم شۍ.',
+'login-abort-generic' => 'غونډال کې مو ننوتل نابريالی شو - ناڅاپي بند شو',
 'loginlanguagelabel' => 'ژبه: $1',
 
+# E-mail sending
+'user-mail-no-addy' => 'د يوې برېښليک پتې پرته د برېښليک لېږلو هڅه شوې.',
+
 # Change password dialog
 'resetpass' => 'پټنوم بدلول',
 'resetpass_header' => 'د ګڼون پټنوم بدلول',
@@ -626,7 +637,7 @@ $1',
 'resetpass_success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!
 اوس غونډال کې د ورننوتلو په حال کې يو ...',
 'resetpass_forbidden' => 'پټنومونه مو نه شي بدلېدلای',
-'resetpass-no-info' => 'همدې مخ ته د لاسرسي موندلو پخاطر تاسې ته پکار ده چې لومړی غونډال ته ورننوځۍ.',
+'resetpass-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'resetpass-submit-loggedin' => 'پټنوم بدلول',
 'resetpass-submit-cancel' => 'ناګارل',
 'resetpass-wrong-oldpass' => 'لنډمهال او يا هم اوسنی پټنوم مو ناسم دی',
@@ -636,6 +647,7 @@ $1',
 'passwordreset' => 'پټنوم بياپرځايول',
 'passwordreset-text' => 'د دې لپاره چې ستاسې د ګڼون بشپړې څرګندنې دربرېښليک شي نو دا فورمه ډکه کړۍ.',
 'passwordreset-legend' => 'پټنوم بياپرځايول',
+'passwordreset-disabled' => 'په دې ويکي پټنوم بياپرځای کولو کړنه ناچارنه شوې.',
 'passwordreset-pretext' => '{{PLURAL:$1||د لاندې اومتوک يوه برخه مالومات وليکۍ}}',
 'passwordreset-username' => 'کارن-نوم:',
 'passwordreset-domain' => 'شپول:',
@@ -650,6 +662,7 @@ $1',
 # Special:ChangeEmail
 'changeemail' => 'برېښليک پته بدلول',
 'changeemail-header' => 'د ګڼون برېښليک پته بدلول',
+'changeemail-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'changeemail-oldemail' => 'اوسنۍ برېښليک پته:',
 'changeemail-newemail' => 'نوې برېښليک پته:',
 'changeemail-none' => '(هېڅ)',
@@ -734,9 +747,8 @@ $1',
 تاسې کولای شی چې په نورو مخونو کې [[Special:Search/{{PAGENAME}}|د دې مخ د سرليک پلټنه]] يا
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د اړوندو يادښتونو پلټنه] وکړی.
 او يا [{{fullurl:{{FULLPAGENAME}}|action=edit}} همدا مخ سم کړی]</span>.',
-'noarticletext-nopermission' => 'دم مهال په دې مخ کې څه نشته.
-تاسې کولای شی چې [[Special:Search/{{PAGENAME}}|همدا سرليک په نورو مخونو کې وپلټۍ]],
-يا هم <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} اړونده يادښتونه وپلټۍ]</span>.',
+'noarticletext-nopermission' => 'دم مهال په دې مخ کې متن نشته.
+تاسې کولای شی چې [[Special:Search/{{PAGENAME}}|همدا سرليک په نورو مخونو کې وپلټۍ]], يا هم <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} اړونده يادښتونه وپلټۍ]</span>، خو تاسې د دې مخ د جوړولو اجازه نه لرۍ.',
 'userpage-userdoesnotexist' => 'د "<nowiki>$1</nowiki>" ګڼون نه دی ثبت شوی.
 لطفاً ځان ډاډه کړۍ چې آيا تاسې په رښتيا همدا مخ جوړول که سمول غواړۍ.',
 'userpage-userdoesnotexist-view' => 'د "$1" ګڼون نه دی ثبت شوی.',
@@ -822,7 +834,7 @@ $1',
 
 # History pages
 'viewpagelogs' => 'د دې مخ يادښتونه کتل',
-'nohistory' => 'ددې مخ لپاره د سمادېدنې هېڅ کوم پېښليک نه شته.',
+'nohistory' => 'ددې مخ د سمون کوم پېښليک نه شته.',
 'currentrev' => 'اوسنۍ بڼه',
 'currentrev-asof' => 'د $1 پورې تازه بڼه',
 'revisionasof' => 'د $1 بڼه',
@@ -948,8 +960,6 @@ $1',
 'search-interwiki-caption' => 'خورلڼې پروژې',
 'search-interwiki-default' => '$1 پايلې:',
 'search-interwiki-more' => '(نور)',
-'search-mwsuggest-enabled' => 'د وړانديزونو سره',
-'search-mwsuggest-disabled' => 'له وړانديزونو نه پرته',
 'search-relatedarticle' => 'اړونده',
 'mwsuggest-disable' => 'د AJAX وړانديزونه ناچارن کول',
 'searcheverything-enable' => 'په ټولو نوم-تشيالونو کې پلټل',
@@ -994,7 +1004,7 @@ $1',
 'prefs-personal' => 'د کارن پېژنليک',
 'prefs-rc' => 'وروستي بدلونونه',
 'prefs-watchlist' => 'کتنلړ',
-'prefs-watchlist-days' => 'د Ù\88رÚ\81Ù\88 Ø´Ù\85Û\90ر Ú\86Û\90 Ù¾Ù\87 Ú©ØªÙ\84Ù\8a Ù\84Ú\93Ù\84Ù\8aÚ© کې به ښکاري:',
+'prefs-watchlist-days' => 'د Ù\88رÚ\81Ù\88 Ø´Ù\85Û\90ر Ú\86Û\90 Ù¾Ù\87 Ú©ØªÙ\86Ù\84Ú\93 کې به ښکاري:',
 'prefs-watchlist-days-max' => 'حد اکثر $1 {{PLURAL:$1|ورځ|ورځې}}',
 'prefs-watchlist-edits-max' => 'د شمېر اکثر بريد: 1000',
 'prefs-misc' => 'بېلابېل',
@@ -1017,7 +1027,7 @@ $1',
 'recentchangesdays-max' => 'حد اکثر $1 {{PLURAL:$1|ورځ|ورځې}}',
 'recentchangescount' => 'د هغو سمونو شمېر چې په تلواليزه بڼه ښکاره بايد شي:',
 'prefs-help-recentchangescount' => 'پدې کې د وروستني بدلونونو، د مخونو د پېښليکونو او يادښتونه شامل دي.',
-'savedprefs' => 'ستاسÙ\88 ØºÙ\88رÙ\87 ØªÙ\88بÙ\88Ù\86Ù\87 Ø®Ù\88Ù\86دÙ\8a Ø´Ù\88Ù\87.',
+'savedprefs' => 'غÙ\88رÙ\87 ØªÙ\88بÙ\88Ù\86Ù\87 Ù\85Ù\88 Ø®Ù\88Ù\86دÙ\8a Ø´Ù\88Ù\84.',
 'timezonelegend' => 'د وخت سيمه:',
 'localtime' => 'سيمه ايز وخت:',
 'timezoneuseserverdefault' => 'د ويکي تلواليزه بڼه کارول ($1)',
@@ -1030,13 +1040,13 @@ $1',
 'timezoneregion-antarctica' => 'انټارکټيکا',
 'timezoneregion-arctic' => 'آرکټيک',
 'timezoneregion-asia' => 'آسيا',
-'timezoneregion-atlantic' => 'د Ø§Ø·Ù\84س Ø³Ù\85Ù\86در',
+'timezoneregion-atlantic' => 'اطلس سمندر',
 'timezoneregion-australia' => 'آسټراليا',
 'timezoneregion-europe' => 'اروپا',
 'timezoneregion-indian' => 'هندی سمندر',
 'timezoneregion-pacific' => 'غلی سمندر',
 'allowemail' => 'د نورو کارنانو لخوا د برېښليک رالېږل چارن کړه',
-'prefs-searchoptions' => 'د پلټلو خوښنې',
+'prefs-searchoptions' => 'پلټنه',
 'prefs-namespaces' => 'نوم-تشيالونه',
 'defaultns' => 'او يا هم په دغو نوم-تشيالونو کې پلټل:',
 'default' => 'تلواليز',
@@ -1061,7 +1071,7 @@ $1',
 'gender-male' => 'نارينه',
 'gender-female' => 'ښځه',
 'email' => 'برېښليک',
-'prefs-help-realname' => 'د Ø§ØµÙ\84Ù\8a Ù\86Ù\88Ù\85 Ù\84Ù\8aÚ©Ù\84 Ø³ØªØ§Ø³Ù\88 Ù¾Ù\87 Ø®Ù\88Ú\9aÙ\87 Ø¯Û\8c Ø®Ù\88 Ú©Ù\87 ØªØ§Ø³Ù\88 Ø®Ù¾Ù\84 Ø§ØµÙ\84Ù\8a Ù\86Ù\88Ù\85 Ù\88ټاکÛ\8d Ù¾Ø¯Û\90 Ø³Ø±Ù\87 Ø¨Ù\87 Ø³ØªØ§Ø³Ù\88 Ù¼Ù\88Ù\84 Ú©Ø§Ø±Ù\88Ù\86Ù\87 Ø§Ù\88 Ù\88Ù\86Ú\89Û\90 Ø³ØªØ§Ø³Ù\88 د نوم په اړوندولو کې وکارېږي.',
+'prefs-help-realname' => 'د Ø¢Ø± Ù\86Ù\88Ù\85 Ù\84Ù\8aÚ©Ù\84 Ø³ØªØ§Ø³Û\90 Ù¾Ù\87 Ø®Ù\88Ú\9aÙ\87 Ø¯Û\8c Ø®Ù\88 Ú©Ù\87 ØªØ§Ø³Û\90 Ø®Ù¾Ù\84 Ø¢Ø± Ù\86Ù\88Ù\85 Ù\88ټاکÛ\8d Ù¾Ø¯Û\90 Ø³Ø±Ù\87 Ø¨Ù\87 Ø³ØªØ§Ø³Û\90 Ù¼Ù\88Ù\84 Ú©Ø§Ø±Ù\88Ù\86Ù\87 Ø§Ù\88 Ù\88Ù\86Ú\89Û\90 Ø³ØªØ§Ø³Û\90 د نوم په اړوندولو کې وکارېږي.',
 'prefs-help-email' => 'د برېښليک ورکړه ستاسې په خوښه ده، خو په ورکړې سره به يې د يوه نوي پټنوم د لېږلو چار آسانه کړي هغه هم کله چې تاسې نه خپل پټنوم هېر شوی وي.',
 'prefs-help-email-others' => 'تاسې دا هم کولای شی چې وټاکۍ چې نور کارنان ستاسې د خبرو اترو او يا کارن مخ د يوې تړنې له لارې تاسې سره برېښليکي اړيکه ونيسي.
 د اړيکو ټينګولو په وخت کې به ستاسې برېښليک پته نورو کارنانو ته نه ښکاري.',
@@ -1361,6 +1371,7 @@ $1',
 'sharedupload-desc-here' => 'دا دوتنه د $1 لخوا خپرېږې او کېدای شي چې دا په نورو پروژو هم کارېدلې وي.
 د دوتنې د کارېدنې لا نور مالومات د [$2 دوتنې د څرګندنو په مخ] لاندې ښودل شوی.',
 'filepage-nofile' => 'په دې نوم کومه دوتنه نشته.',
+'filepage-nofile-link' => 'په دې نوم کومه دوتنه نشته، خو تاسې يې [$1 پورته کولی شی].',
 'uploadnewversion-linktext' => 'د همدغې دوتنې نوې بڼه پورته کول',
 'shared-repo-from' => 'د $1 لخوا',
 
@@ -1615,7 +1626,7 @@ $1',
 'watchlist' => 'زما کتنلړ',
 'mywatchlist' => 'زما کتنلړ',
 'watchlistfor2' => 'د $1 لپاره $2',
-'nowatchlist' => 'ستاسو په کتلي لړليک کې هېڅ نه شته.',
+'nowatchlist' => 'ستاسې کتنلړ کې څه نه شته.',
 'watchlistanontext' => 'د خپل کتنلړ د توکو د سمولو او کتلو لپاره $1 ترسره کړۍ.',
 'watchnologin' => 'غونډال کې نه ياست ننوتي.',
 'watchnologintext' => 'ددې لپاره چې خپل کتنلړ کې بدلون راولی نو تاسو ته پکار ده چې لومړی غونډال کې [[Special:UserLogin|ورننوځۍ]].',
@@ -1635,6 +1646,8 @@ $1',
 'wlheader-enotif' => 'د برېښليک له لارې خبرول چارن شوی.*',
 'wlheader-showupdated' => "* هغه مخونه چې وروستی ځل ستاسو د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک نښه شوي.",
 'watchlistcontains' => 'ستاسې کتنلړ $1 {{PLURAL:$1|مخ|مخونه}} لري.',
+'iteminvalidname' => "د '$1' توکي سره ستونزه، ناسم نوم ...",
+'wlnote' => "دلته لاندې {{PLURAL:$1|وروستی بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2|تېر يوه ساعت|تېرو '''$2''' ساعتونو}} کې تر $4 نېټې او $5 بجو پېښ شوي.",
 'wlshowlast' => 'وروستي $1 ساعتونه $2 ورځې $3 ښکاره کړه',
 'watchlist-options' => 'د کتنلړ خوښنې',
 
@@ -1723,6 +1736,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'protectexpiry' => 'د پای نېټه:',
 'protect_expiry_invalid' => 'د پای وخت ناسم دی.',
 'protect_expiry_old' => 'د پای وخت په تېرمهال کې دی.',
+'protect-unchain-permissions' => 'د لا ژغورلو خوښنې پرانيستل',
 'protect-text' => "تاسې کولای شی چې د '''$1''' مخ لپاره د ژغورلو کچه همدلته وګورۍ او بدلون پکې راولی.",
 'protect-locked-access' => "ستاسې ګڼون دا اجازه نه لري چې د پاڼو د ژغورنې په کچه کې بدلون راولي.
 دلته د '''$1''' مخ لپاره اوسني شته امستنې دي:",
@@ -1756,7 +1770,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'pagesize' => '(بايټونه)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'سÙ\85Ù\88Ù\86',
+'restriction-edit' => 'سÙ\85Ù\88Ù\84',
 'restriction-move' => 'لېږدول',
 'restriction-create' => 'جوړول',
 'restriction-upload' => 'پورته کول',
@@ -1770,7 +1784,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'undelete' => 'ړنګ شوي مخونه کتل',
 'undeletepage' => 'ړنګ شوي مخونه کتل او بېرته پرځای کول',
 'viewdeletedpage' => 'ړنګ شوي مخونه کتل',
-'undeletebtn' => 'بېرته پرځای کول',
+'undeletebtn' => 'بيازېرمل',
 'undeletelink' => 'کتل/بيازېرمل',
 'undeleteviewlink' => 'کتل',
 'undeletereset' => 'بياايښودل',
@@ -1929,6 +1943,16 @@ $UNWATCHURL  نه ليدنه وکړۍ
 '''ګواښنه!'''
 يوه نوي نوم ته د مخونو د نوم بدلون کېدای شي چې په نامتو مخونو کې بنسټيزه او نه اټکل کېدونکی بدلونونه رامېنځ ته کړي;
 مخکې له دې نه چې پرمخ ولاړ شی، لطفاُ لومړی خپل ځان په دې ډاډه کړی چې تاسې ددغې کړنې په پايلو ښه پوهېږۍ.",
+'movepagetext-noredirectfixer' => "د لاندينۍ فورمې په کارولو سره تاسې د يوه مخ نوم بدلولی شی، چې په همدې توګه به د يوه مخ ټول پېښليک د هغه د نوي نوم سرليک ته ولېږدېږي.
+د يوه مخ، پخوانی نوم به د نوي نوم ورګرځونکی مخ وګرځي او نوي سرليک ته به وګرځولی شي.
+
+[[Special:BrokenRedirects|د ماتو مخ ګرځونو]] يا [[Special:DoubleRedirects|دوه ځلي مخ ګرځونو]] د ستونزو د پېښېدو په خاطر ځان ډاډه کړی چې ستاسې مخ ګرځونې ماتې يا دوه ځله نه وي.
+دا ستاسې پازه ده چې ځان په دې هم ډاډمن کړی چې آيا هغه تړنې کوم چې د يو مخ سره پکار دي چې وي، همداسې په پرله پسې توګه پېيلي او خپل د موخې ځايونو سره اړونده دي که نه.
+
+په ياد مو اوسه چې يو مخ به '''هېڅکله''' و نه لېږدېږي که چېرته د پخوا نه په هماغه نوم يو بل مخ شتون ولري، خو که چېرته يو مخ تش وه او يا هم يوه مخ ګرځونه چې پېښليک کې يې بدلون نه وي راغلی. نو دا په دې مانا ده چې تاسې کولای شی چې د يو مخ نوم بېرته هماغه پخواني نوم ته بدل کړی چې د پخوا نه يې درلوده، که چېرته تاسې تېرووځۍ نو په داسې حال کې تاسې نه شی کولای چې د يوه مخ پر سر يو څه وليکۍ.
+
+'''ګواښنه!'''
+يوه نوي نوم ته د مخونو د نوم بدلون کېدای شي چې په نامتو مخونو کې بنسټيزه او نه اټکل کېدونکي بدلونونه رامېنځ ته کړي; مخکې له دې نه چې پرمخ ولاړ شی، لطفاُ لومړی خپل ځان په دې ډاډه کړی چې تاسې ددغې کړنې په پايلو ښه پوهېږۍ.",
 'movepagetalktext' => "همدې مخ ته اړونده د خبرواترو مخ هم په اتوماتيک ډول لېږدول کېږي '''خو که چېرته:'''
 *په نوي نوم د پخوا نه د خبرواترو يو مخ شتون ولري، او يا هم
 *تاسې ته لاندې ورکړ شوی څلورڅنډی په نښه شوی وي.
@@ -1983,7 +2007,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'allmessagesdefault' => 'ټاکل شوی متن',
 'allmessagescurrent' => 'اوسنی متن',
 'allmessagestext' => 'دا د مېډياويکي په نوم-تشيال کې د غونډال د پيغامونو لړليک دی.
-که چېرته تاسو د ميډياويکي په ځايتابه کې ونډې ترسره کول غواړۍ نو لطفاً [//www.mediawiki.org/wiki/Localisation د ويډياويکي ځايتابه] او [//translatewiki.net translatewiki.net] نه ليدنه وکړۍ.',
+که چېرته تاسې د ميډياويکي په ځايتابه کې ونډې ترسره کول غواړۍ نو لطفاً [//www.mediawiki.org/wiki/Localisation د ويډياويکي ځايتابه] او [//translatewiki.net translatewiki.net] نه ليدنه وکړۍ.',
 'allmessagesnotsupportedDB' => "'''Special:Allmessages''' ترېنه کار نه اخيستل کېږي ځکه چې '''\$wgUseDatabaseMessages''' مړ دی.",
 'allmessages-filter-legend' => 'چاڼګر',
 'allmessages-filter-unmodified' => 'نابدلېدلي',
@@ -2000,6 +2024,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 
 # Special:Import
 'import-interwiki-source' => 'سرچينيز ويکي/مخ:',
+'import-interwiki-history' => 'د دې مخ د پېښليک ټولې بڼې لمېسل',
 'import-interwiki-templates' => 'ټولې کينډۍ نغاړل',
 'import-interwiki-namespace' => 'د موخې نوم-تشيال:',
 'import-upload-filename' => 'د دوتنې نوم:',
@@ -2018,7 +2043,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-pt-watchlist' => 'د هغه مخونو لړليک چې تاسې يې د بدلون لپاره څاری',
 'tooltip-pt-mycontris' => 'ستاسې د ونډو لړليک',
 'tooltip-pt-login' => 'تاسې ته په غونډال کې د ننوتلو سپارښتنه کوو، که څه هم چې دا يو اړين کار نه دی.',
-'tooltip-pt-anonlogin' => 'تاسÙ\88 ØªÙ\87 Ù¾Ù\87 ØºÙ\88Ù\86Ú\89اÙ\84 Ú©Û\90 Ø¯ Ù\86Ù\86Ù\88تÙ\86Û\90 سپارښتنه کوو، که څه هم چې دا يو اړين کار نه دی.',
+'tooltip-pt-anonlogin' => 'تاسÙ\88 ØªÙ\87 Ù¾Ù\87 ØºÙ\88Ù\86Ú\89اÙ\84 Ú©Û\90 Ø¯ Ù\86Ù\86Ù\88تÙ\84Ù\88 سپارښتنه کوو، که څه هم چې دا يو اړين کار نه دی.',
 'tooltip-pt-logout' => 'وتل',
 'tooltip-ca-talk' => 'د مخ د مېنځپانګې په اړه خبرې اترې',
 'tooltip-ca-edit' => 'تاسې همدا مخ سمولای شی. لطفاً د ليکنې د خوندي کولو دمخه، د همدې ليکنې مخليدنه وګورۍ.',
@@ -2075,6 +2100,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-preferences-save' => 'غوره توبونه خوندي کول',
 'tooltip-summary' => 'يو لنډ لنډيز کښل',
 
+# Stylesheets
+'vector.css' => '/* د CSS هره بڼه چې دلته ځای پر ځای کېږي هغه به د وېکټور د پوښ ټولو کارنانو لپاره کار کوي */',
+
 # Scripts
 'vector.js' => '/* د جاوا هر يو سکرېپټ چې دلته ځای پر ځای کېږي هغه به د وېکټور د پوښ ټولو کارنانو لپاره کار کوي */',
 
@@ -2111,6 +2139,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 
 # Image deletion
 'filedeleteerror-short' => 'د دوتنې د ړنګولو ستونزه: $1',
+'filedeleteerror-long' => 'د دوتنې په ړنګولو کې تېروتنې پېښې شوې:
+
+$1',
 
 # Browsing diffs
 'previousdiff' => 'تېر توپير ←',
@@ -2180,7 +2211,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'exif-imagewidth' => 'سوروالی',
 'exif-imagelength' => 'لوړوالی',
 'exif-datetime' => 'د دوتنې د بدلون وخت او نېټه',
-'exif-imagedescription' => 'د Ø§Ù\86Ú\81Ù\88ر Ø³Ø±Ù\84Ù\8aÚ©',
+'exif-imagedescription' => 'انځور سرليک',
 'exif-make' => 'د کامرې جوړونکی',
 'exif-model' => 'د کامرې ماډل',
 'exif-software' => 'کارېدلې ساوترۍ',
@@ -2603,6 +2634,7 @@ $5
 'logentry-move-move' => '$1 د $3 مخ $4 ته ولېږداوه',
 'logentry-newusers-newusers' => '$1 يو کارن ګڼون جوړ کړ',
 'logentry-newusers-create' => '$1 يو کارن ګڼون جوړ کړ',
+'logentry-newusers-autocreate' => 'د $1 ګڼون په اتوماتيک ډول جوړ شو',
 'newuserlog-byemail' => 'پټنوم مو برېښليک ته درولېږه',
 
 # Feedback
@@ -2634,4 +2666,6 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|پېړۍ|پېړۍ}}',
 'duration-millennia' => '$1 {{PLURAL:$1|زرمه|زرمې}}',
 
+# Unknown messages
+'searchsuggest-search' => 'پلټل',
 );
index d2d8d56..978ec72 100644 (file)
@@ -690,7 +690,7 @@ Consulta: $2',
 'protectedpagetext' => 'Esta página foi protegida contra novas edições.',
 'viewsourcetext' => 'Pode ver e copiar o conteúdo desta página:',
 'viewyourtext' => "Pode ver e copiar o código-fonte das '''suas edições''' desta página:",
-'protectedinterface' => 'Esta página fornece o texto da interface ao software e está protegida para prevenir abusos.',
+'protectedinterface' => 'Esta página fornece o texto da interface ao software, e está protegida para prevenir abusos.',
 'editinginterface' => "'''Aviso:''' Está a editar uma página usada para fornecer texto de interface ao software. Alterações a esta página afectarão a aparência da interface de utilizador para os outros utilizadores. Para traduções, considere utilizar a [//translatewiki.net/wiki/Main_Page?setlang=pt translatewiki.net], um projecto destinado à tradução do MediaWiki.",
 'sqlhidden' => '(Consulta SQL em segundo-plano)',
 'cascadeprotected' => 'Esta página foi protegida contra edições por estar incluída {{PLURAL:$1|na página listada|nas páginas listadas}} a seguir, ({{PLURAL:$1|página essa que está protegida|páginas essas que estão protegidas}} com a opção de protecção "em cascata" activada):
@@ -976,8 +976,7 @@ Pode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras p
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar registos relacionados]
 ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.',
 'noarticletext-nopermission' => 'Ainda não existe texto nesta página.
-Pode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas
-ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar registos relacionados]</span>.',
+Pode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas, ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar nos registos relacionados]</span>, mas não tem permissão para criar esta página.',
 'missing-revision' => 'A revisão #$1 da página denominada "{{PAGENAME}}" não existe.
 
 Isto é geralmente causado por seguir um link de histórico desatualizado para uma página que foi eliminada.
@@ -1353,8 +1352,6 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-caption' => 'Projectos associados',
 'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(mais)',
-'search-mwsuggest-enabled' => 'com sugestões',
-'search-mwsuggest-disabled' => 'sem sugestões',
 'search-relatedarticle' => 'Relacionado',
 'mwsuggest-disable' => 'Desactivar sugestões AJAX',
 'searcheverything-enable' => 'Pesquisar em todos os espaços nominais',
@@ -2506,7 +2503,7 @@ Pode alterar o nível de protecção desta página, mas isso não afectará a pr
 'protect-summary-cascade' => 'em cascata',
 'protect-expiring' => 'expira a $1 (UTC)',
 'protect-expiring-local' => 'expira a $1',
-'protect-expiry-indefinite' => 'infinito',
+'protect-expiry-indefinite' => 'tempo indefinido',
 'protect-cascade' => 'Proteja quaisquer páginas que estejam incluídas nesta (protecção em cascata)',
 'protect-cantedit' => 'Não pode alterar o nível de protecção desta página, porque não tem permissão para editá-la.',
 'protect-othertime' => 'Outra duração:',
@@ -2994,7 +2991,6 @@ Não há um directório temporário.',
 
 # JavaScriptTest
 'javascripttest' => 'Teste de JavaScript',
-'javascripttest-disabled' => 'Esta função está desabilitada neste wiki.',
 'javascripttest-title' => 'Executando os testes $1',
 'javascripttest-pagetext-noframework' => 'Esta página é reservada para a execução de testes de JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Estrutura de testes "$1" desconhecido.',
@@ -4062,4 +4058,7 @@ Caso contrário, pode facilmente usar o formulário abaixo. O seu comentário se
 'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milénio|milénios}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'contendo...',
+'searchsuggest-search' => 'Pesquisa',
 );
index 63482bf..3a856dc 100644 (file)
@@ -1336,8 +1336,6 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-caption' => 'Projetos irmãos',
 'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(mais)',
-'search-mwsuggest-enabled' => 'com sugestões',
-'search-mwsuggest-disabled' => 'sem sugestões',
 'search-relatedarticle' => 'Relacionado',
 'mwsuggest-disable' => 'Desativar sugestões AJAX',
 'searcheverything-enable' => 'Procurar em todos os espaços nominais',
@@ -2486,7 +2484,7 @@ Esta é a configuração atual para a página '''$1''':",
 'protect-summary-cascade' => 'p. progressiva',
 'protect-expiring' => 'expira em $1 (UTC)',
 'protect-expiring-local' => 'expira $1',
-'protect-expiry-indefinite' => 'indefinido',
+'protect-expiry-indefinite' => 'tempo indefinido',
 'protect-cascade' => '"Proteção progressiva" - proteja quaisquer páginas que estejam incluídas nesta.',
 'protect-cantedit' => 'Você não pode alterar o nível de proteção desta página uma vez que você não se encontra habilitado a editá-la.',
 'protect-othertime' => 'Outra duração:',
@@ -2964,7 +2962,6 @@ Salve o arquivo no seu computador e importe-o aqui.',
 
 # JavaScriptTest
 'javascripttest' => 'Teste de JavaScript',
-'javascripttest-disabled' => 'Essa função não foi habilitada neste wiki.',
 'javascripttest-title' => 'Executando testes para $1',
 'javascripttest-pagetext-noframework' => 'Esta página é exclusiva para testes de JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'A estrutura de testes "$1" é desconhecida.',
@@ -4016,4 +4013,7 @@ Caso contrário, você poderá usar o formulário simplificado a seguir. Seu com
 'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milênio|milênios}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'contendo...',
+'searchsuggest-search' => 'Pesquisa',
 );
index d20b731..6b45c03 100644 (file)
@@ -2104,7 +2104,7 @@ Used on [[Special:UploadWizard]].',
 'img-auth-accessdenied' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Access Denied
 {{Identical|Access denied}}',
 'img-auth-nopathinfo' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Missing PATH_INFO - see english description
-* This is plain text. Do not use any wiki syntax.',
+{{Doc-important|This is plain text. Do not use any wiki syntax.}}',
 'img-auth-notindir' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: When the specified path is not in upload directory.',
 'img-auth-badtitle' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Bad title, $1 is the invalid title',
 'img-auth-nologinnWL' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Logged in and file not whitelisted. $1 is the file not in whitelist.',
@@ -3287,7 +3287,6 @@ See also:
 
 # JavaScriptTest
 'javascripttest' => 'Title of [[Special:JavaScriptTest|the special page]]',
-'javascripttest-disabled' => 'Message displayed on [[Special:JavaScriptTest]] if this feature is disabled (it is disabled by default).',
 'javascripttest-title' => 'Title of the special page when running a test suite. Parameters:
 * $1 is the name of the framework, for example QUnit.',
 'javascripttest-pagetext-unknownframework' => 'Error message when given framework id is not found. $1 is the id of the framework.',
@@ -4890,4 +4889,9 @@ $4 is the gender of the target user.',
 'api-error-uploaddisabled' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-verification-error' => 'The word "extension" refers to the part behind the last dot in a file name, that by convention gives a hint about the kind of data format which a files contents are in.',
 
+# Unknown messages
+'searchsuggest-containing' => 'Label used in the special item of the search suggestions list which gives the user an option to perform a full text search for the term.',
+'searchsuggest-search' => 'Greyed out default text in the simple search box in the Vector skin. (It disappears and lets the user enter the requested search terms when the search box receives focus.)
+
+{{Identical|Search}}',
 );
index 7c34cfb..06214ee 100644 (file)
@@ -1241,8 +1241,6 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
 'search-interwiki-caption' => 'Ñaña ruraykamaykuna',
 'search-interwiki-default' => '$1 taripasqakuna:',
 'search-interwiki-more' => '(aswan)',
-'search-mwsuggest-enabled' => 'rimapusqakunawan',
-'search-mwsuggest-disabled' => 'mana rimapusqakunawanchu',
 'search-relatedarticle' => 'Apanakuq',
 'mwsuggest-disable' => 'AJAX rimapuykunaman ama niy',
 'searcheverything-enable' => "Tukuy suti k'itikunapi maskay",
@@ -2797,7 +2795,6 @@ Tukuy hawa wikimanta chaskisqakunaqa [[Special:Log/import|hawamanta chaskiy hall
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript llanchiy',
-'javascripttest-disabled' => 'Kay ruranaqa kay wikipi manam atichisqachu.',
 'javascripttest-title' => '$1 llanchiykunam richkan',
 'javascripttest-pagetext-noframework' => "Kay p'anqaqa JavaScript llanchina purichinallapaqmi kachun.",
 'javascripttest-pagetext-unknownframework' => 'Mana riqsisqa "$1" nisqa llanchina inchu ruray',
@@ -3801,4 +3798,7 @@ Mana chayqa, kay qatiqpi kaq hunt'ana p'anqatam llamk'achiyta atinki. Willapuyni
 'duration-centuries' => '{{PLURAL:$1|pachakwata|pachakwatakuna}}',
 'duration-millennia' => '{{PLURAL:$1|waranqawata|waranqawatakuna}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'kaykunayuq: ...',
+'searchsuggest-search' => 'Maskay',
 );
index 85a7390..ae3564f 100644 (file)
@@ -500,8 +500,6 @@ Kay (kaykunachu) kachashkakunaka cunkashkami kashka.",
 'search-interwiki-caption' => 'Ñaña ruraykamaykuna',
 'search-interwiki-default' => '$1 tarishka imakuna:',
 'search-interwiki-more' => '(ashtawan)',
-'search-mwsuggest-enabled' => 'consejoskunawan',
-'search-mwsuggest-disabled' => 'Mana consejoskunawan',
 'searchrelated' => 'tinkishka',
 'searchall' => 'tukuy',
 'showingresultsheader' => "{{PLURAL:$5|Maskashka panka: '''$1''', '''$3'''-manta|Maskashka pankakuna: '''$1 - $2''', '''$3'''-manta}}, '''$4''' maskashpaka",
index fa744e3..8fedd55 100644 (file)
@@ -987,8 +987,6 @@ Fa stim che navigar cun agid da las coalliziuns reinizialisescha tia tscherna.',
 'search-interwiki-caption' => 'Projects sumegliants',
 'search-interwiki-default' => '$1 resultats:',
 'search-interwiki-more' => '(dapli)',
-'search-mwsuggest-enabled' => 'cun propostas',
-'search-mwsuggest-disabled' => 'naginas propostas',
 'search-relatedarticle' => 'Sumegliant',
 'mwsuggest-disable' => 'Deactivar propostas AJAX',
 'searcheverything-enable' => 'Tschertgar en tut ils tips da pagina',
@@ -2398,7 +2396,6 @@ Emprova danovamain.',
 
 # JavaScriptTest
 'javascripttest' => 'Test da JavaScript',
-'javascripttest-disabled' => 'Questa funcziun è deactivada.',
 'javascripttest-title' => 'Exequir tests da $1',
 'javascripttest-pagetext-noframework' => 'Questa pagina è reservada per exequir tests da JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Framework da test nunenconuschent "$1".',
index 7fdc68a..a14bee4 100644 (file)
@@ -962,8 +962,7 @@ Puteți [[Special:Search/{{PAGENAME}}|căuta acest titlu]] în alte pagini,
 puteți <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnale] 
 sau puteți [{{fullurl:{{FULLPAGENAME}}|action=edit}} crea această pagină]</span>.',
 'noarticletext-nopermission' => 'Actualmente, această pagină este lipsită de conținut.
-Puteți [[Special:Search/{{PAGENAME}}|căuta acest titlu]] în alte pagini
-sau puteți <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnale]</span>.',
+Puteți [[Special:Search/{{PAGENAME}}|căuta acest titlu]] în alte pagini sau puteți <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnale]</span>; nu aveți însă permisiunea de a crea această pagină.',
 'missing-revision' => 'Versiunea nr. $1 a paginii „{{PAGENAME}}” nu există.
 
 Acest lucru se întâmplă de obicei atunci când se accesează o legătură expirată către istoricul unei pagini șterse.
@@ -1332,8 +1331,6 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'search-interwiki-caption' => 'Proiecte înrudite',
 'search-interwiki-default' => '$1 rezultate:',
 'search-interwiki-more' => '(mai mult)',
-'search-mwsuggest-enabled' => 'cu sugestii',
-'search-mwsuggest-disabled' => 'fără sugestii',
 'search-relatedarticle' => 'Relaționat',
 'mwsuggest-disable' => 'Dezactivează sugestiile AJAX',
 'searcheverything-enable' => 'Caută în toate spațiile de nume',
@@ -1430,7 +1427,7 @@ Aici se află o combinație generată întâmplător pe care o puteți folosi: $
 'timezoneregion-indian' => 'Oceanul Indian',
 'timezoneregion-pacific' => 'Oceanul Pacific',
 'allowemail' => 'Acceptă e-mail de la alți utilizatori',
-'prefs-searchoptions' => 'Opțiuni de căutare',
+'prefs-searchoptions' => 'Căutare',
 'prefs-namespaces' => 'Spații de nume',
 'defaultns' => 'Altfel, caută în aceste spații de nume:',
 'default' => 'standard',
@@ -2970,7 +2967,6 @@ Un dosar temporar lipsește.',
 
 # JavaScriptTest
 'javascripttest' => 'Testare JavaScript',
-'javascripttest-disabled' => 'Această funcție nu a fost activată pe acest wiki.',
 'javascripttest-title' => 'Rulare teste pentru $1',
 'javascripttest-pagetext-noframework' => 'Această pagină este rezervată rulării testelor JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Cadru de testare „$1” necunoscut.',
@@ -4017,4 +4013,7 @@ Imaginile sunt afișate la rezoluția lor maximă, în timp ce alte tipuri de fi
 'duration-centuries' => '$1 {{PLURAL:$1|secol|secole|de secole}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenii|de milenii}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'conținând...',
+'searchsuggest-search' => 'Căutare',
 );
index 09849ca..507c6fa 100644 (file)
@@ -416,7 +416,8 @@ Pe piacere prueve cchiù tarde.",
 'protectedpagetext' => 'Sta pàgene ha state prutette pe no fa fà cangiaminde a uecchje.',
 'viewsourcetext' => "Tu puè vedè e cupià 'a sorgente de sta pàgene:",
 'viewyourtext' => "Tu puè vedè e copià 'a sorgende de '''le cangiaminde tune''' a sta pàgene:",
-'protectedinterface' => "Sta pàgene te dè l'inderfacce de teste pìu software e jè blocchete pe prevenì l'abbuse.",
+'protectedinterface' => "Sta pàgene dèje 'nu teste de l'inderfacce pu software de sta uicchi, e jè prutette pe prevenìe l'abbuse.
+Pe aggiungere o cangià le traduziune pe tutte le uicchi, pe piacere ause [//translatewiki.net/ translatewiki.net], 'u proggette de localizzazzione de MediaUicchi.",
 'editinginterface' => "'''Fà attenziò:'''  Tu ste cange 'na pàgene ca jè ausete pe dà 'n'inderfacce de teste p'u software.
 Le cangiaminde de sta pàgene vonne a mettene mane sus a l'inderfacce utende pe l'otre utinde.
 Pe traduziune, pe piacere vide ce ause [//translatewiki.net/wiki/Main_Page?setlang=roa-tara translatewiki.net], 'u pruggette de localizzazione de MediaUicchi.",
@@ -1088,8 +1089,6 @@ Le dettaglie le puè acchià jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={
 'search-interwiki-caption' => 'Pruggette sorelle',
 'search-interwiki-default' => '$1 resultete:',
 'search-interwiki-more' => '(de cchiù)',
-'search-mwsuggest-enabled' => 'cu le consiglie',
-'search-mwsuggest-disabled' => 'senza consiglie',
 'search-relatedarticle' => 'Colleghete',
 'mwsuggest-disable' => 'Disabbilete le conziglie in AJAX',
 'searcheverything-enable' => "Cirche jndr'à tutte le namespace",
@@ -1188,7 +1187,7 @@ Aqquà ste 'nu valore generate a uecchije ca tu puè ausà: $1",
 'timezoneregion-indian' => 'Oceano Indiane',
 'timezoneregion-pacific' => 'Oceano Pacifiche',
 'allowemail' => "Abbilite l'e-mail da l'otre utinde",
-'prefs-searchoptions' => 'Opzione de ricerche',
+'prefs-searchoptions' => 'Cirche',
 'prefs-namespaces' => 'Namespaces',
 'defaultns' => "Cirche jndr'à chiste namespace:",
 'default' => 'defolt',
@@ -2764,7 +2763,6 @@ Reggistrele sus a 'u combiuter tune e carechele aqquà.",
 
 # JavaScriptTest
 'javascripttest' => 'Test de JavaScript',
-'javascripttest-disabled' => "Sta funzione non g'à state abbilitate sus a sta Uicchi.",
 'javascripttest-title' => 'Stoche a esegue $1 test',
 'javascripttest-pagetext-noframework' => 'Sta pàgene jè riservate pe le esecuziune de le test de Javascript.',
 'javascripttest-pagetext-unknownframework' => 'Ambiende de teste scanusciute "$1".',
@@ -4040,4 +4038,7 @@ Ce nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène agg
 'duration-centuries' => '$1 {{PLURAL:$1|sechele|sechele}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennie|millennie}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'tène...',
+'searchsuggest-search' => 'Cirche',
 );
index 1dd909d..88b82df 100644 (file)
@@ -1434,8 +1434,6 @@ $1",
 'search-interwiki-caption' => 'Родственные проекты',
 'search-interwiki-default' => '$1 результ.:',
 'search-interwiki-more' => '(ещё)',
-'search-mwsuggest-enabled' => 'с советами',
-'search-mwsuggest-disabled' => 'без советов',
 'search-relatedarticle' => 'Связанный',
 'mwsuggest-disable' => 'Отключить AJAX-подсказки',
 'searcheverything-enable' => 'Поиск по всем пространствам имён',
@@ -3062,7 +3060,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'Проверка JavaScript',
-'javascripttest-disabled' => 'Эта функция отключена в этой вики.',
 'javascripttest-title' => 'Проводится проверка $1',
 'javascripttest-pagetext-noframework' => 'Эта страница зарезервирована для запуска JavaScript-тестов.',
 'javascripttest-pagetext-unknownframework' => 'Неизвестная среда тестирования «$1».',
@@ -4225,4 +4222,7 @@ MediaWiki распространяется в надежде, что она бу
 'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'содержащие…',
+'searchsuggest-search' => 'Поиск',
 );
index 6d3ac8a..bbe87a5 100644 (file)
@@ -132,7 +132,7 @@ $messages = array(
 'tog-editsection' => 'Дозволити едітованя секції сторінкы через одказ [едіт.]',
 'tog-editsectiononrightclick' => 'Дозволити едітованя секції сторінкы через кликаня правов клапков мышкы на надписы сторінок  (JavaScript)',
 'tog-showtoc' => 'Вказовати обсяг (на сторінках з веце як трёма надписами)',
-'tog-rememberpassword' => 'Запамятати моє приголошіня на тім переглядачу (максімално $1 {{PLURAL:$1|день|днів}})',
+'tog-rememberpassword' => 'Запамнятати моє приголошіня на тім переглядачу (максімално $1 {{PLURAL:$1|день|днів}})',
 'tog-watchcreations' => 'Придавати сторінкы створены мнов тай файлы мнов наладованы до мого списку слїдованых',
 'tog-watchdefault' => 'Придавати мнов едітованы сторінкы і файлы до списку слїдованых',
 'tog-watchmoves' => 'Придавати переменованы сторінкы і файлы до мого списку слїдованых',
@@ -178,7 +178,7 @@ $messages = array(
 # Dates
 'sunday' => 'недїля',
 'monday' => 'понедїлёк',
-'tuesday' => 'віторок',
+'tuesday' => 'вівторок',
 'wednesday' => 'середа',
 'thursday' => 'четверь',
 'friday' => 'пятніця',
@@ -341,7 +341,7 @@ $messages = array(
 'jumptonavigation' => 'навіґація',
 'jumptosearch' => 'Найти',
 'view-pool-error' => 'Перебачте, серверы суть теперь переладованы.
-Тоту сторінку сі теперь пoзерать много хоснователїв.
+Тоту сторінку собі теперь пoзерать много хоснователїв.
 Просиме Вас, почекайте і спробуйте доступность пізнїше.
 
 $1',
@@ -370,7 +370,7 @@ $1',
 'privacypage' => 'Project:Сокочіня пріватных дан',
 
 'badaccess' => 'Брак прав приступу',
-'badaccess-group0' => 'Ð\92ам Ð½Ðµ Ñ\94 Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ Ð²Ñ\8bконавати тоту дїю.',
+'badaccess-group0' => 'Ð\92ам Ð½Ðµ Ñ\94 Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ Ð²Ñ\8bконовати тоту дїю.',
 'badaccess-groups' => 'Дїя, яку сьте хотїли зробити, дозволена лем хоснователям з {{PLURAL:$2|ґрупы|ґруп}}: $1.',
 
 'versionrequired' => 'Потрібна MediaWiki верзії $1',
@@ -383,9 +383,9 @@ $1',
 'newmessagesdifflink' => 'послїдня зміна',
 'youhavenewmessagesfromusers' => 'Мате $1 од {{PLURAL:$3|іншого хоснователя|$3 іншых хоснователїв}} ($2).',
 'youhavenewmessagesmanyusers' => 'Мате $1 од много далшых хоснователїв ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ное повідомлїня|новы повідомлїня}}',
+'newmessageslinkplural' => '{{PLURAL:$1|нове Ð¿Ð¾Ð²Ñ\96домлÑ\97нÑ\8f|новÑ\8b Ð¿Ð¾Ð²Ñ\96домлÑ\97нÑ\8f}}',
 'newmessagesdifflinkplural' => 'остатня {{PLURAL:$1|зміна|зміны|змін}}',
-'youhavenewmessagesmulti' => 'Ð\9cаÑ\94Ñ\82е Ð½Ð¾Ð²Ñ\8b Ð¾Ð·Ð½Ð°Ð¼Ñ\8b на $1',
+'youhavenewmessagesmulti' => 'Ð\9cаÑ\94Ñ\82е Ð½Ð¾Ð²Ñ\8b Ð¿Ð¾Ð²Ñ\96домлÑ\97нÑ\8f на $1',
 'editsection' => 'едіт.',
 'editold' => 'едіт.',
 'viewsourceold' => 'видїти код',
@@ -495,7 +495,8 @@ $1',
 'protectedpagetext' => 'Тота сторінка была замкнута, также ся не дасть едітовати',
 'viewsourcetext' => 'Можете видїти і копіровати код той сторінкы:',
 'viewyourtext' => "Можете собі посмотрити і скопіровати жрідловый текст '''вашых змін''' той сторінкы:",
-'protectedinterface' => 'Тота сторінка є частёв інтрефейсу проґрамового забеспечіня і єй можуть едітовати лем адміністраторы проєкту.',
+'protectedinterface' => 'Тота сторінка є частёв інтрефейсу проґрамового забеспечіня той вікі і єй можуть едітовати лем адміністраторы проєкту.
+Жебы придати або змінити переклады, просиме хоснуйте [//translatewiki.net/ translatewiki.net], локалізачный проєкт MediaWiki.',
 'editinginterface' => "'''Увага:''' Едітуєте сторінку,котра є частинов текстового інтерфейсу. Зміны той сторінкы выкличуть зміну інтерфейсу про іншых хоснователїв. Про переклад увідомлїня хоснуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проєкт, што ся занимає локалізаціёв MediaWiki.",
 'sqlhidden' => '(SQL запрос скрытый)',
 'cascadeprotected' => 'Сторінка є замнкута, бо є вложена до  {{PLURAL:$1|наслїдуючой сторінкы замкнуты|наслїдуючіх сторінок замнкнутых|наслїдуючіх сторінок замнкнутых}} каскадовым замком:
@@ -528,7 +529,7 @@ $2',
 'yourname' => 'Імя хоснователя:',
 'yourpassword' => 'Гесло:',
 'yourpasswordagain' => 'Повторяйте гесло:',
-'remembermypassword' => 'Запамятати моє приголошіня на тім компютерї (максімално $1 {{PLURAL:$1|день|днів}})',
+'remembermypassword' => 'Запамнятати моє приголошіня на тім компютерї (максімално $1 {{PLURAL:$1|день|днів}})',
 'securelogin-stick-https' => 'Останьте  припоєны через HTTPS по приголошіню',
 'yourdomainname' => 'Ваша домена:',
 'password-change-forbidden' => 'На тій вікі не можете мінити гесла.',
@@ -1029,7 +1030,7 @@ $1",
 'revdelete-only-restricted' => 'Хыба схованя положкы з $2 $1: Не можете положкы сховати лем перед адміністраторами жебы сьте сучасно выбрали і дакотру з далшых можностей затаїня.',
 'revdelete-reason-dropdown' => '*Звыклы причіны змазаня
 ** Порушіня авторьскых прав
-** Невгодны особны дата
+** Ð\9dевгоднÑ\8b ÐºÐ¾Ð¼ÐµÐ½Ñ\82аÑ\80Ñ\97 Ð°Ð±Ð¾ Ð¾Ñ\81обнÑ\8b Ð´Ð°Ñ\82а
 ** Потенціално огварячі дата',
 'revdelete-otherreason' => 'Інша/далша причіна:',
 'revdelete-reasonotherlist' => 'Інша причіна',
@@ -1127,8 +1128,6 @@ $1",
 'search-interwiki-caption' => 'Сестерьскы проєкты',
 'search-interwiki-default' => '$1 резултаты:',
 'search-interwiki-more' => '(веце)',
-'search-mwsuggest-enabled' => 'з порадами',
-'search-mwsuggest-disabled' => 'без порад',
 'search-relatedarticle' => 'Звязаный',
 'mwsuggest-disable' => 'Выпнути пораду AJAX',
 'searcheverything-enable' => 'Глядати во вшыткых просторах назв',
@@ -1225,7 +1224,7 @@ $1",
 'timezoneregion-indian' => 'Індійскый океан',
 'timezoneregion-pacific' => 'Тихый океан',
 'allowemail' => 'Поволити електронічну пошту од іншых хоснователїв',
-'prefs-searchoptions' => 'Ð\9fаÑ\80амеÑ\82Ñ\80Ñ\8b Ð³ляданя',
+'prefs-searchoptions' => 'Ð\93ляданя',
 'prefs-namespaces' => 'Просторы назв',
 'defaultns' => 'Інакше глядати в такых просторах назв:',
 'default' => 'імпліцітне',
@@ -1631,7 +1630,7 @@ $1',
 'backend-fail-internal' => 'В кінцёвій уложній сістемі „$1“ ся стала незнама хыба.',
 'backend-fail-contenttype' => 'Не годно было становити тіп обсягу файлу, жебы уложыти го до „$1“.',
 'backend-fail-batchsize' => 'Кінцёве усховище прияло блок з $1 {{PLURAL:файловов операціов|файловыма операціями}};максімум є {{PLURAL:$2|$2}}.',
-'backend-fail-usable' => 'Не вдало ся записати до файлу $1  про брак прав або хыбуючі адресарї/контайнеры.',
+'backend-fail-usable' => 'Не вдало ся чітати з файлу або записати до файлу $1  про брак прав або хыбуючі адресарї/контайнеры.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Не годен ся припоїти к журналовій датабазї усховища «$1».',
@@ -2712,7 +2711,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'Тестованя JavaScript',
-'javascripttest-disabled' => 'Тота функція не дозволена на тій вікі.',
 'javascripttest-title' => 'Біжать тест в $1',
 'javascripttest-pagetext-noframework' => 'Тота сторінка є резервована про тестованя JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Незнаный фреймворк тестованя „$1“.',
@@ -2817,11 +2815,18 @@ $1',
 
 # Info page
 'pageinfo-title' => 'Інформація про "$1"',
-'pageinfo-header-edits' => 'Едітованя',
+'pageinfo-header-basic' => 'Основны інформації',
+'pageinfo-header-edits' => 'Історія едітовань',
+'pageinfo-header-restrictions' => 'Замок сторінкы',
+'pageinfo-header-properties' => 'Властности сторінкы',
+'pageinfo-display-title' => 'Вказована назва',
 'pageinfo-views' => 'Чісло переглядів',
-'pageinfo-watchers' => 'Чісло слїдуючіх',
-'pageinfo-edits' => 'Чісло едітовань',
-'pageinfo-authors' => 'Чісло різных авторів',
+'pageinfo-watchers' => 'Кількость слїдуючіх сторінку',
+'pageinfo-redirects-name' => 'Напрямлїня на гевсю сторінку',
+'pageinfo-subpages-name' => 'Підсторінкы гевсёй сторінкы',
+'pageinfo-firstuser' => 'Заснователь сторінкы',
+'pageinfo-edits' => 'Кількость вшыткого едітованя',
+'pageinfo-authors' => 'Вшытка кількость унікатных авторів',
 
 # Patrolling
 'markaspatrolleddiff' => 'Означіти як перевірене',
@@ -3707,4 +3712,7 @@ MediaWiki є дістрібуована в надїї, же буде хосно
 'duration-centuries' => '$1 {{PLURAL:$1|стороча|стороча|стороч}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тісячроча|тісячроча|тісячроч}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'обсягуючій...',
+'searchsuggest-search' => 'Глядати',
 );
index 6e42444..bf8dc18 100644 (file)
@@ -1273,8 +1273,6 @@ You can still [$1 view this revision]",
 'search-interwiki-caption' => 'बन्धु-प्रकल्पाः',
 'search-interwiki-default' => '$1 परिणामाः :',
 'search-interwiki-more' => '(अधिकानि)',
-'search-mwsuggest-enabled' => 'उपक्षेपेभ्यः सह',
-'search-mwsuggest-disabled' => 'नात्र उपक्षेपाः',
 'search-relatedarticle' => 'सम्बद्धानि ।',
 'mwsuggest-disable' => 'निष्क्रियाः AJAX सूचनाः ।',
 'searcheverything-enable' => 'सर्वनामावकाशे अन्विषतु ।',
@@ -2860,7 +2858,6 @@ $2 इति प्रकारस्य अवरोधं कर्तुं 
 
 # JavaScriptTest
 'javascripttest' => 'जावालिपिपरीक्षणम् ।',
-'javascripttest-disabled' => 'विक्याम् अयं क्रियाकलापः निष्क्रियः ।',
 'javascripttest-title' => '$1 परीक्षाप्रचलति ।',
 'javascripttest-pagetext-noframework' => 'जावलिपिचालनपरीक्षार्थम् एतत्पुटम् आरक्षितम् ।',
 'javascripttest-pagetext-unknownframework' => 'अज्ञातपरीक्षाप्रक्रिया  $1',
@@ -3892,4 +3889,7 @@ $1 इत्यनेन $3 इति पृष्ठम् $4 इत्ये
 'duration-centuries' => '$1 {{PLURAL:$1|शतकम्|शतकानि}}',
 'duration-millennia' => '$1 {{PLURAL:$1|सहस्राब्धः|सहस्राब्धाः}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'विद्यन्ते......',
+'searchsuggest-search' => 'अन्वेषणम्',
 );
index 935f965..b350ea2 100644 (file)
@@ -1059,8 +1059,6 @@ $1",
 'search-interwiki-caption' => 'Уруулуу бырайыактар',
 'search-interwiki-default' => '$1 түмүгэ:',
 'search-interwiki-more' => '(өссө)',
-'search-mwsuggest-enabled' => 'этиилэрдээх',
-'search-mwsuggest-disabled' => 'этиилэрэ суох',
 'search-relatedarticle' => 'Сигэнэр',
 'mwsuggest-disable' => 'AJAX этэн биэриилэрин араар',
 'searcheverything-enable' => 'Туох баар аат далларыгар көрдөөһүн',
@@ -2666,7 +2664,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript тургутуу',
-'javascripttest-disabled' => 'Дьайыы бу биикигэ араарыллыбат эбит.',
 'javascripttest-title' => '$1 тургутуу бара турар',
 'javascripttest-pagetext-noframework' => 'Бу сирэй JavaScript тургутууларга анаммыт.',
 'javascripttest-pagetext-unknownframework' => '"$1" тургутуу биллибэт эйгэтэ.',
@@ -3683,4 +3680,7 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 'duration-centuries' => '$1 үйэ',
 'duration-millennia' => '$1 тыһыынча сыл',
 
+# Unknown messages
+'searchsuggest-containing' => 'тыл баар ыстатыйалара...',
+'searchsuggest-search' => 'Көрдөөһүн',
 );
index a74b896..e65a5a5 100644 (file)
@@ -950,6 +950,7 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 
 # Diffs
 'history-title' => 'Crunoluggìa dî canciamenti di "$1"',
+'difference-title' => '$1: diffirenzi ntra li virsiuni',
 'lineno' => 'Lìnia $1:',
 'compareselectedversions' => 'Fari lu paraguni',
 'showhideselectedversions' => 'Ammustra/ammuccia virsioni silizziunati',
@@ -996,8 +997,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'search-interwiki-caption' => 'Pruggetti frati',
 'search-interwiki-default' => 'Risultati da $1:',
 'search-interwiki-more' => '(cchiù)',
-'search-mwsuggest-enabled' => 'cu suggirimenti',
-'search-mwsuggest-disabled' => 'senza suggirimenti',
 'search-relatedarticle' => 'Risultati currilati',
 'mwsuggest-disable' => 'Astuta suggirimenti AJAX',
 'searcheverything-enable' => 'Cerca ni tutti li namespace',
@@ -2995,4 +2994,6 @@ Mèttiri lu nomu dû file senza lu prifissu "{{ns:file}}:"',
 'api-error-unclassified' => "S'avvirificau n'erruri scanusciutu",
 'api-error-unknown-code' => 'Erruri scanusciuti: "$1$".',
 
+# Unknown messages
+'searchsuggest-search' => 'Ricerca',
 );
index a11933a..ffef3b9 100644 (file)
@@ -1252,8 +1252,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-caption' => 'Srodni projekti',
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
-'search-mwsuggest-enabled' => 'sa sugestijama',
-'search-mwsuggest-disabled' => 'bez sugestija',
 'search-relatedarticle' => 'Povezano',
 'mwsuggest-disable' => 'Onemogući AJAX prijedloge',
 'searcheverything-enable' => 'Pretraga u svim imenskim prostorima',
@@ -2898,7 +2896,6 @@ Molimo pokušajte ponovno.',
 
 # JavaScriptTest
 'javascripttest' => 'Javaskript test',
-'javascripttest-disabled' => 'Ova funkcija je onemogućena na ovom wikiju.',
 'javascripttest-title' => 'Izvršavanje testova za $1',
 'javascripttest-pagetext-noframework' => 'Ova stranica je rezervisana za izvršavanje javaskript testova.',
 'javascripttest-pagetext-unknownframework' => 'Nepoznati radni okvir „$1“.',
index cc05670..69d1853 100644 (file)
@@ -636,8 +636,6 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 'search-interwiki-caption' => 'Tiwuriwin taytmatin',
 'search-interwiki-default' => '$1 imyakkatn',
 'search-interwiki-more' => '(Uggar)',
-'search-mwsuggest-enabled' => 'D mara ittuyskar',
-'search-mwsuggest-disabled' => 'Ur illa marayttuskar',
 'search-relatedarticle' => 'Tzdi',
 'mwsuggest-disable' => 'Asbid AJAX n maryttuynnan ayttuyskar',
 'searcheverything-enable' => 'Cabba ɣ graygat agmmaḍ',
index ae34184..e136aa8 100644 (file)
@@ -1209,8 +1209,6 @@ $1",
 'search-interwiki-caption' => 'සොයුරු ව්‍යාපෘති',
 'search-interwiki-default' => '$1 වෙතින් ප්‍රතිඵල:',
 'search-interwiki-more' => '(තවත්)',
-'search-mwsuggest-enabled' => 'ඉඟි සමගින්',
-'search-mwsuggest-disabled' => 'ඉඟි නොමැත',
 'search-relatedarticle' => 'සහසම්බන්ධිත',
 'mwsuggest-disable' => 'AJAX ඇඟවිලි අක්‍රීය කරන්න',
 'searcheverything-enable' => 'සියළු නාමඅවකාශයන්හි ගවේෂණය කරන්න',
@@ -3975,4 +3973,7 @@ MediaWiki බෙදාහැර ඇත්තේ එය ප්‍රයෝජන
 'duration-centuries' => '{{PLURAL:$1|ශතවර්ෂ|ශතවර්ෂ}} $1 ක්',
 'duration-millennia' => '{{PLURAL:$1|සහස‍්‍රවර්ෂ|සහස‍්‍රවර්ෂ}} $1 ක්',
 
+# Unknown messages
+'searchsuggest-containing' => 'ඇතුළත් වෙමින් පවතී...',
+'searchsuggest-search' => 'ගවේශණය කරන්න',
 );
index 757c47d..0a9eda6 100644 (file)
@@ -1311,8 +1311,6 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'search-interwiki-caption' => 'Sesterské projekty',
 'search-interwiki-default' => '$1 výsledkov:',
 'search-interwiki-more' => '(viac)',
-'search-mwsuggest-enabled' => 's návrhmi',
-'search-mwsuggest-disabled' => 'bez návrhov',
 'search-relatedarticle' => 'Súvisiace',
 'mwsuggest-disable' => 'Vypnúť AJAX návrhy',
 'searcheverything-enable' => 'Vyhľadať vo všetkých menných priestoroch',
@@ -2932,7 +2930,6 @@ Uložte ho na svoj disk a nahrajte sem.',
 
 # JavaScriptTest
 'javascripttest' => 'Testovanie JavaScriptu',
-'javascripttest-disabled' => 'Táto funkcia je vypnutá.',
 'javascripttest-title' => 'Beží $1 testov',
 'javascripttest-pagetext-noframework' => 'Táto stránka je vyhradená pre testy JavaScriptu.',
 'javascripttest-pagetext-unknownframework' => 'Neznáma testovacia platfoma „$1“.',
@@ -3990,4 +3987,7 @@ V opačnom prípade môžete použiť zjednodušený formulár nižšie. Váš k
 'duration-centuries' => '$1 {{PLURAL:$1|storočie|storočia|storočí}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tisícročie|tisícročia|tisícročí}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'obsahuje...',
+'searchsuggest-search' => 'Hľadať',
 );
index e148828..fb29a0d 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Dbc334
+ * @author Eleassar
  * @author Freakolowsky
  * @author Irena Plahuta
  * @author McDutchie
@@ -468,12 +469,12 @@ $1',
 'viewdeleted' => 'Prikažem $1?',
 'restorelink' => '$1 {{PLURAL:$1|izbrisano redakcijo|izbrisani redakciji|izbrisane redakcije|izbrisanih redakcij}}',
 'feedlinks' => 'Podajanje:',
-'feed-invalid' => 'Neveljavna vrsta naročniškega dovoda.',
+'feed-invalid' => 'Neveljavna vrsta naročniškega vira.',
 'feed-unavailable' => 'Živi zaznamki niso na voljo',
-'site-rss-feed' => '$1 RSS vir',
-'site-atom-feed' => '$1 Atom vir',
-'page-rss-feed' => '»$1« RSS vir',
-'page-atom-feed' => '»$1« Atom vir',
+'site-rss-feed' => 'RSS-vir strani »$1«',
+'site-atom-feed' => 'Atom-vir strani »$1«',
+'page-rss-feed' => 'RSS-vir strani »$1«',
+'page-atom-feed' => 'Atom-vir strani »$1«',
 'red-link-title' => '$1 (stran ne obstaja)',
 'sort-descending' => 'Razvrsti padajoče',
 'sort-ascending' => 'Razvrsti naraščajoče',
@@ -861,6 +862,10 @@ Da bi stran ustvarili, vnesite v spodnji obrazec besedilo
 'noarticletext' => 'Na tej strani ni trenutno nobenega besedila. Naslov strani lahko poskusite [[Special:Search/{{PAGENAME}}|poiskati]] na drugih straneh, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} v dnevniških zapisih] ali pa [{{fullurl:{{FULLPAGENAME}}|action=edit}} stran uredite]</span>.',
 'noarticletext-nopermission' => 'Na strani trenutno ni nobenega besedila.
 Lahko poskusite [[Special:Search/{{PAGENAME}}|poiskati naslov strani]] na drugih straneh ali <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} v povezanih dnevniških zapisih]</span>, vendar za ustvarjanje strani nimate zadostnih dovoljenj.',
+'missing-revision' => 'Redakcija št. $1 strani »{{PAGENAME}}« ne obstaja.
+
+Po navadi se to zgodi, ko sledite zastareli povezavi na zgodovino strani, ki jo je nekdo izbrisal.
+Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].',
 'userpage-userdoesnotexist' => 'Uporabniški račun »<nowiki>$1</nowiki>« ni registriran.
 Prosimo preverite, ali res želite ustvariti/urediti to stran.',
 'userpage-userdoesnotexist-view' => 'Uporabniški račun »$1« ni registriran.',
@@ -1178,6 +1183,10 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
 'editundo' => 'razveljavi',
 'diff-multi' => '({{PLURAL:$1|$1 vmesna redakcija|$1 vmesni redakciji|$1 vmesne redakcije|$1 vmesnih redakcij}} {{PLURAL:$2|$2 uporabnika|$2 uporabnikov}} {{PLURAL:$1|ni prikazana|nista prikazani|niso prikazane|ni prikazanih}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|$1 vmesna redakcija|$1 vmesni redakciji|$1 vmesne redakcije|$1 vmesnih redakcij}} več kot $2 {{PLURAL:$2|uporabnika|uporabnikov}} {{PLURAL:$1|ni prikazana|nista prikazani|niso prikazane|ni prikazanih}})',
+'difference-missing-revision' => '{{PLURAL:$2|Ene redakcije|$2 redakcij}} razlike ($1) {{PLURAL:$2|nisem}} našel.
+
+Po navadi se to zgodi, ko sledite zastareli povezavi na razliko redakcij strani, ki jo je nekdo izbrisal.
+Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].',
 
 # Search results
 'searchresults' => 'Izid iskanja',
@@ -1220,8 +1229,6 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
 'search-interwiki-caption' => 'Sorodni projekti',
 'search-interwiki-default' => '$1 zadetkov:',
 'search-interwiki-more' => '(več)',
-'search-mwsuggest-enabled' => 's predlogi',
-'search-mwsuggest-disabled' => 'brez predlogov',
 'search-relatedarticle' => 'Podobno',
 'mwsuggest-disable' => 'Onemogoči predloge Ajax',
 'searcheverything-enable' => 'Iskanje po vseh imenskih prostorih',
@@ -1535,7 +1542,7 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'recentchanges' => 'Zadnje spremembe',
 'recentchanges-legend' => 'Možnosti zadnjih sprememb',
 'recentchanges-summary' => 'Na tej strani lahko spremljajte najnedavnejše spremembe wikija.',
-'recentchanges-feed-description' => 'Spremljajte najnovejše spremembe wikija prek tega vira.',
+'recentchanges-feed-description' => 'Spremljajte zadnje spremembe wikija prek tega vira.',
 'recentchanges-label-newpage' => 'S tem urejanjem je bila ustvarjena nova stran',
 'recentchanges-label-minor' => 'Manjše urejanje',
 'recentchanges-label-bot' => 'To urejanje je bilo izvedeno z botom',
@@ -1727,7 +1734,7 @@ Prosimo, obrnite se na [[Special:ListUsers/sysop|administratorja]].',
 Prosimo, preverite veljavnost in dostopnost naslova URL ter poskusite ponovno.
 Če se težava ponavlja, kontaktirajte [[Special:ListUsers/sysop|administratorja]].',
 'upload-too-many-redirects' => 'URL vsebuje preveč preusmeritev',
-'upload-unknown-size' => 'Neznana velikost',
+'upload-unknown-size' => 'neznana velikost',
 'upload-http-error' => 'Prišlo je do napake HTTP: $1',
 'upload-copy-upload-invalid-domain' => 'Nalaganje kopij s te domene ni na voljo.',
 
@@ -1853,7 +1860,7 @@ Ko so rezultati filtrirani po uporabniku, so prikazane samo datoteke, pri kateri
 # File description page
 'file-anchor-link' => 'Datoteka',
 'filehist' => 'Zgodovina datoteke',
-'filehist-help' => 'Klikni na datum in čas za ogled datoteke, ki je bila takrat naložena.',
+'filehist-help' => 'Kliknite na datum in čas za ogled datoteke, ki je bila takrat naložena.',
 'filehist-deleteall' => 'izbriši vse',
 'filehist-deleteone' => 'izbriši to',
 'filehist-revert' => 'vrni',
@@ -1871,7 +1878,7 @@ Ko so rezultati filtrirani po uporabniku, so prikazane samo datoteke, pri kateri
 'linkstoimage' => 'Datoteka je del {{PLURAL:$1|naslednje $1 strani|naslednjih $1 strani}} {{GRAMMAR:rodilnik|{{SITENAME}}}}:',
 'linkstoimage-more' => 'Na to datoteko se {{PLURAL:$1|povezuje več kot $1 stran|povezujeta več kot $1 strani|povezujejo več kot $1 strani|povezuje več kot $1 strani}}.
 Naslednji seznam obsega samo {{PLURAL:$1|prvo stran, ki se povezuje|prvi $1 strani, ki se povezujeta|prve $1 strani, ki se povezujejo|prvih $1 strani, ki se povezujejo}} na to datoteko.
-Na voljo je tudi [[Special:WhatLinksHere/$2|celotni seznam]].',
+Na razpolago je tudi [[Special:WhatLinksHere/$2|celotni seznam]].',
 'nolinkstoimage' => 'Z datoteko se ne povezuje nobena stran.',
 'morelinkstoimage' => 'Preglejte [[Special:WhatLinksHere/$1|več povezav]] na to datoteko.',
 'linkstoimage-redirect' => '$1 (preusmeritev datoteke) $2',
@@ -2880,7 +2887,6 @@ Prosimo, poskusite znova.',
 
 # JavaScriptTest
 'javascripttest' => 'Preizkušanje JavaScripta',
-'javascripttest-disabled' => 'Funkcija na tem wikiju ni omogočena.',
 'javascripttest-title' => 'Poganjanje $1 preizkusov',
 'javascripttest-pagetext-noframework' => 'Stran je rezervirana za poganjanje preizkusov JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Neznano ogrodje za preizkušanje »$1«.',
@@ -2925,8 +2931,8 @@ Prosimo, poskusite znova.',
 'tooltip-n-help' => 'Kraj za pomoč',
 'tooltip-t-whatlinkshere' => 'Seznam vseh s trenutno povezanih strani',
 'tooltip-t-recentchangeslinked' => 'Zadnje spremembe na s trenutno povezanih straneh',
-'tooltip-feed-rss' => 'Dovod strani RSS',
-'tooltip-feed-atom' => 'Dovod strani Atom',
+'tooltip-feed-rss' => 'RSS-vir strani',
+'tooltip-feed-atom' => 'Atom-vir strani',
 'tooltip-t-contributions' => 'Preglejte seznam uporabnikovih prispevkov',
 'tooltip-t-emailuser' => 'Pošljite uporabniku e-pismo',
 'tooltip-t-upload' => 'Naložite slike ali predstavnostne datoteke',
@@ -3010,6 +3016,7 @@ Omogoča vnos pojasnila v povzetku urejanja.',
 'pageinfo-recent-edits' => 'Nedavno število urejanj (zadnjih $1)',
 'pageinfo-recent-authors' => 'Nedavno število različnih avtorjev',
 'pageinfo-restriction' => 'Zaščita strani ({{lcfirst:$1}})',
+'pageinfo-magic-words' => '{{PLURAL:$1|Čarobna beseda|Čarobni besedi|Čarobne besede}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Skrita kategorija|Skriti kategoriji|Skrite kategorije}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Vključena predloga|Vključeni predlogi|Vključene predloge}} ($1)',
 
@@ -3308,7 +3315,7 @@ Druga bodo po privzetem skrita.
 'exif-copyrighted-true' => 'Avtorsko zaščiteno',
 'exif-copyrighted-false' => 'Javna last',
 
-'exif-unknowndate' => 'Neznan datum',
+'exif-unknowndate' => 'neznan datum',
 
 'exif-orientation-1' => 'Navadna',
 'exif-orientation-2' => 'Vodoravno zrcaljeno',
@@ -3922,4 +3929,7 @@ V nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bom
 'duration-centuries' => '$1 {{PLURAL:$1|stoletje|stoletji|stoletja|stoletij}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tisočletje|tisočletji|tisočletja|tisočletij}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'vsebujoč ...',
+'searchsuggest-search' => 'Iskanje',
 );
index e92fe25..a9a4865 100644 (file)
@@ -737,8 +737,6 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 'search-suggest' => 'Waxaa ka waday miyaa: $1',
 'search-interwiki-default' => '$1 natiijooyinka:',
 'search-interwiki-more' => '(wax kale)',
-'search-mwsuggest-enabled' => 'soojeedin',
-'search-mwsuggest-disabled' => 'soojeedin malahan',
 'search-relatedarticle' => 'La xiriiro',
 'searchrelated' => 'La xiriiro',
 'searchall' => 'Dhamaan',
@@ -1405,4 +1403,6 @@ Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in e
 'api-error-unknown-warning' => 'Digniin la aqoon: $1',
 'api-error-uploaddisabled' => 'Soo gelinta waa laga xiray wikigaan.',
 
+# Unknown messages
+'searchsuggest-search' => 'Raadi',
 );
index 2b71faf..5b6ba84 100644 (file)
@@ -1229,8 +1229,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'search-interwiki-caption' => 'Projekte simotra',
 'search-interwiki-default' => '$1 përfundime:',
 'search-interwiki-more' => '(më shumë)',
-'search-mwsuggest-enabled' => 'me këshilla',
-'search-mwsuggest-disabled' => 'pa këshilla',
 'search-relatedarticle' => 'Të ngjashme',
 'mwsuggest-disable' => 'Çmundësoi sugjerimet AJAX',
 'searcheverything-enable' => 'Kërko në të gjitha hapësirat',
@@ -2853,7 +2851,6 @@ Ju lutemi provoni përsëri.',
 
 # JavaScriptTest
 'javascripttest' => 'Duke testuar JavaScript',
-'javascripttest-disabled' => 'Ky funksion nuk është mundësuar në këtë wiki.',
 'javascripttest-title' => 'Duke kryer testet $1',
 'javascripttest-pagetext-noframework' => 'Kjo faqe është rezervuar për kryerjen e testimeve JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Kornizë pune e panjohur testuese "$1".',
@@ -3855,4 +3852,7 @@ Përndryshe, ju mund të formularin e thjeshtë më poshtë. Komenti juaj do të
 'duration-centuries' => '$1 {{PLURAL:$1|shekull|shekuj}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milennium|mileniume}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'përmban ...',
+'searchsuggest-search' => 'Kërko',
 );
index 237ebfc..1c0800d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbian (Cyrillic script) (‪српски (ћирилица)‬)
+/** Serbian (Cyrillic script) (српски (ћирилица)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1075,7 +1075,7 @@ $2
 Можете [[Special:Search/{{PAGENAME}}|потражити овај наслов]] на другим страницама,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} претражити сродне извештаје] или [{{fullurl:{{FULLPAGENAME}}|action=edit}} уредити страницу]</span>.',
 'noarticletext-nopermission' => 'На овој страници тренутно нема садржаја.
\9cожеÑ\82е [[Special:Search/{{PAGENAME}}|поÑ\82Ñ\80ажиÑ\82и Ð¾Ð²Ð°Ñ\98 Ð½Ð°Ñ\81лов]] Ð½Ð° Ð´Ñ\80Ñ\83гим Ñ\81Ñ\82Ñ\80аниÑ\86ама Ð¸Ð»Ð¸ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Ð¿Ñ\80еÑ\82Ñ\80ажиÑ\82и Ñ\81Ñ\80одне Ð¸Ð·Ð²ÐµÑ\88Ñ\82аÑ\98е]</span>.',
\9cожеÑ\82е [[Special:Search/{{PAGENAME}}|поÑ\82Ñ\80ажиÑ\82и Ð¾Ð²Ð°Ñ\98 Ð½Ð°Ñ\81лов]] Ð½Ð° Ð´Ñ\80Ñ\83гим Ñ\81Ñ\82Ñ\80аниÑ\86ама Ð¸Ð»Ð¸ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Ð¿Ñ\80еÑ\82Ñ\80ажиÑ\82и Ñ\81Ñ\80одне Ð´Ð½ÐµÐ²Ð½Ð¸ÐºÐµ]</span>, Ð°Ð»Ð¸ Ð½ÐµÐ¼Ð°Ñ\82е Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 Ð´Ð° Ð½Ð°Ð¿Ñ\80авиÑ\82е Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.',
 'missing-revision' => 'Не могу да пронађем измену бр. $1 на страници под називом „{{PAGENAME}}“.
 
 Ово се обично дешава када пратите застарелу везу до странице која је обрисана.
@@ -1448,8 +1448,6 @@ $1",
 'search-interwiki-caption' => 'Братски пројекти',
 'search-interwiki-default' => '$1 резултати:',
 'search-interwiki-more' => '(више)',
-'search-mwsuggest-enabled' => 'са предлозима',
-'search-mwsuggest-disabled' => 'без предлога',
 'search-relatedarticle' => 'Повезано',
 'mwsuggest-disable' => 'Онемогући предлоге AJAX',
 'searcheverything-enable' => 'сви именски простори',
@@ -3126,7 +3124,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'Јаваскрипт тест',
-'javascripttest-disabled' => 'Ова функција није омогућена на овом викију.',
 'javascripttest-title' => 'Извршавање тестова за $1',
 'javascripttest-pagetext-noframework' => 'Ова страница је резервисана за извршавање јаваскрипт тестова.',
 'javascripttest-pagetext-unknownframework' => 'Непознати радни оквир „$1“.',
@@ -4379,4 +4376,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|век|века|векова}}',
 'duration-millennia' => '$1 {{PLURAL:$1|миленијум|миленијума|миленијума}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'садржи...',
+'searchsuggest-search' => 'Претрага',
 );
index 0193023..b8597e2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbian (Latin script) (‪srpski (latinica)‬)
+/** Serbian (Latin script) (srpski (latinica)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -984,7 +984,7 @@ Ako ste anonimni korisnik i mislite da su vam upućene primedbe, [[Special:UserL
 Možete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranicama,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti srodne izveštaje] ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti stranicu]</span>.',
 'noarticletext-nopermission' => 'Na ovoj stranici trenutno nema sadržaja.
-Možete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti srodne izveštaje]</span>.',
+Možete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti srodne dnevnike]</span>, ali nemate dozvolu da napravite ovu stranicu.',
 'missing-revision' => 'Ne mogu da pronađem izmenu br. $1 na stranici pod nazivom „{{PAGENAME}}“.
 
 Ovo se obično dešava kada pratite zastarelu vezu do stranice koja je obrisana.
@@ -1357,8 +1357,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-caption' => 'Bratski projekti',
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
-'search-mwsuggest-enabled' => 'sa predlozima',
-'search-mwsuggest-disabled' => 'bez predloga',
 'search-relatedarticle' => 'Povezano',
 'mwsuggest-disable' => 'Onemogući predloge AJAX',
 'searcheverything-enable' => 'svi imenski prostori',
@@ -3035,7 +3033,6 @@ Pokušajte ponovo.',
 
 # JavaScriptTest
 'javascripttest' => 'Javaskript test',
-'javascripttest-disabled' => 'Ova funkcija nije omogućena na ovom vikiju.',
 'javascripttest-title' => 'Izvršavanje testova za $1',
 'javascripttest-pagetext-noframework' => 'Ova stranica je rezervisana za izvršavanje javaskript testova.',
 'javascripttest-pagetext-unknownframework' => 'Nepoznati radni okvir „$1“.',
@@ -4288,4 +4285,7 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 'duration-centuries' => '$1 {{PLURAL:$1|vek|veka|vekova}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenijum|milenijuma|milenijuma}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'sadrži...',
+'searchsuggest-search' => 'Pretraga',
 );
index e5916f4..8a11f65 100644 (file)
@@ -1007,8 +1007,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'search-interwiki-caption' => 'Susterprojekte',
 'search-interwiki-default' => '$1 Resultoate:',
 'search-interwiki-more' => '(wiedere)',
-'search-mwsuggest-enabled' => 'mäd Foarsleeke',
-'search-mwsuggest-disabled' => 'neen Foarsleeke',
 'search-relatedarticle' => 'Früünde',
 'mwsuggest-disable' => 'Foarsleeke truch Ajax deaktivierje',
 'searcheverything-enable' => 'Säik in aal Noomensruume',
@@ -3301,4 +3299,7 @@ Ne [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie fon ju ''GNU General Public License''
 'revdelete-unrestricted' => 'Ienskränkengen foar Administratore wächhoald',
 'newuserlog-byemail' => 'dät Paaswoud wuud uur E-Mail fersoand',
 
+# Unknown messages
+'searchsuggest-containing' => 'Fultextsäike ätter ...',
+'searchsuggest-search' => 'Säik',
 );
index 6b8b243..3a90406 100644 (file)
@@ -1073,8 +1073,6 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
 'search-interwiki-caption' => 'Proyék sawargi',
 'search-interwiki-default' => '$1 hasil:',
 'search-interwiki-more' => '(saterusna)',
-'search-mwsuggest-enabled' => 'jeung bongbolongan',
-'search-mwsuggest-disabled' => 'euweuh bongbolongan',
 'search-relatedarticle' => 'Patula-patali',
 'mwsuggest-disable' => 'Tumpurkeun usulan AJAX',
 'searcheverything-enable' => 'Pilari di sakabéh rohangaran',
@@ -3082,4 +3080,7 @@ Coba ku sawangan normal.',
 'duration-centuries' => '$1 {{PLURAL:$1|abad|abad}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milénium|milénium}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ngandung...',
+'searchsuggest-search' => 'Sungsi',
 );
index c83e826..7eb4b85 100644 (file)
@@ -696,9 +696,11 @@ Den kan innehålla ett eller flera tecken som inte får användas i sidtitlar.',
 'protectedpagetext' => 'Den här sidan har skrivskyddats för att förhindra redigering.',
 'viewsourcetext' => 'Du kan se och kopiera denna sidas källtext:',
 'viewyourtext' => "Du kan se och kopiera källan för '''dina redigeringar''' på denna sida:",
-'protectedinterface' => 'Denna sida innehåller text för mjukvarans gränssnitt, och är skrivskyddad för att förebygga missbruk.',
-'editinginterface' => "'''Varning:''' Du redigerar en sida som används till texten i gränssnittet. Ändringar på denna sida kommer att påverka gränssnittets utseende för alla användare.
-För översättningar, använd gärna [//translatewiki.net/wiki/Main_Page?setlang=sv translatewiki.net], översättningsprojektet för MediaWiki.",
+'protectedinterface' => 'Denna sida innehåller text för mjukvarans gränssnitt på denna wiki, och är skrivskyddad för att förebygga missbruk.
+För att lägga till eller ändra översättningar för alla wikis, var god använd [//translatewiki.net/ translatewiki.net], lokaliseringsprojektet för MediaWiki.',
+'editinginterface' => "'''Varning:''' Du redigerar en sida som används till texten i gränssnittet.
+Ändringar på denna sida kommer att påverka gränssnittets utseende för alla användare på denna wiki.
+För att lägga till eller ändra översättningar för alla wikis, var god använd [//translatewiki.net/ translatewiki.net], översättningsprojektet för MediaWiki.",
 'sqlhidden' => '(gömd SQL-förfrågan)',
 'cascadeprotected' => 'Den här sidan har skyddats från redigering eftersom den inkluderas på följande {{PLURAL:$1|sida|sidor}} som skrivskyddats med "kaskaderande skydd":
 $2',
@@ -773,7 +775,7 @@ Användarnamn är skiftlägeskänsliga.
 Kontrollera din stavning, eller [[Special:UserLogin/signup|skapa ett nytt konto]].',
 'nosuchusershort' => 'Det finns ingen användare som heter "$1". Kontrollera att du stavat rätt.',
 'nouserspecified' => 'Du måste ange ett användarnamn.',
-'login-userblocked' => 'Denna användare är blockerad. Login inte tillåtet.',
+'login-userblocked' => 'Denna användare är blockerad. Inloggning är inte tillåtet.',
 'wrongpassword' => 'Lösenordet du angav är felaktigt. Försök igen.',
 'wrongpasswordempty' => 'Lösenordet som angavs var blankt. Var god försök igen.',
 'passwordtooshort' => 'Lösenord måste innehålla minst {{PLURAL:$1|$1 tecken}}.',
@@ -972,8 +974,8 @@ Om du är en anonym användare och känner att irrelevanta kommentarer har rikta
 'noarticletext' => 'Det finns just nu ingen text på denna sida.
 Du kan [[Special:Search/{{PAGENAME}}|söka efter denna sidtitel]] på andra sidor, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} söka i loggarna], eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} redigera denna sida]</span>.',
 'noarticletext-nopermission' => 'Det finns för tillfället ingen text på denna sida.
-Du kan [[Special:Search/{{PAGENAME}}|söka efter denna sidas titel]] i andra sidor,
-eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} söka i relevanta loggar]</span>.',
+Du kan [[Special:Search/{{PAGENAME}}|söka efter denna sidas titel]]  andra sidor,
+eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} söka i relaterade loggar]</span>.',
 'missing-revision' => 'Revisionen #$1 av sidan med namnet "{{PAGENAME}}" finns inte.
 
 Detta orsakas vanligen av efter en gammal historiklänk till en sida som har raderats.
@@ -1340,8 +1342,6 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-caption' => 'Systerprojekt',
 'search-interwiki-default' => 'Resultat i $1:',
 'search-interwiki-more' => '(mer)',
-'search-mwsuggest-enabled' => 'med förslag',
-'search-mwsuggest-disabled' => 'inga förslag',
 'search-relatedarticle' => 'Relaterad',
 'mwsuggest-disable' => 'Avaktivera AJAX-förslag',
 'searcheverything-enable' => 'Sök i alla namnrymder',
@@ -1439,7 +1439,7 @@ Här är ett slumpmässigt genererat värde som du kan använda: $1',
 'timezoneregion-indian' => 'Indiska oceanen',
 'timezoneregion-pacific' => 'Stilla havet',
 'allowemail' => 'Tillåt e-post från andra användare',
-'prefs-searchoptions' => 'Sökalternativ',
+'prefs-searchoptions' => 'Sök',
 'prefs-namespaces' => 'Namnrymder',
 'defaultns' => 'Sök annars i dessa namnrymder:',
 'default' => 'ursprungsinställning',
@@ -1865,7 +1865,7 @@ Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].'
 'backend-fail-internal' => 'Ett okänt fel uppstod i lagringssystemet "$1".',
 'backend-fail-contenttype' => 'Kunde inte bestämma innehållstypen för filen att spara på "$1".',
 'backend-fail-batchsize' => 'Lagringssystemet gav en batch på $1 fil{{PLURAL:$1|operation|operationer}}; gränsen är $2 {{PLURAL:$2|operation|operationer}}.',
-'backend-fail-usable' => 'Kunde inte skriva filen $1 beroende på otillräckliga behörigheter eller saknade kataloger/containrar.',
+'backend-fail-usable' => 'Kunde inte läsa eller skriva filen "$1" på grund av otillräckliga behörigheter eller saknade kataloger/containrar.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Kunde inte ansluta till journaldatabasen för lagringssystemet "$1".',
@@ -2615,8 +2615,8 @@ Den senaste posten i blockeringsloggen visas nedan som referens:',
 
 # Block/unblock
 'autoblockid' => 'Autoblockera #$1',
-'block' => 'Blockera användaren',
-'unblock' => 'Avblockera användaren',
+'block' => 'Blockera användare',
+'unblock' => 'Upphäv blockering av användare',
 'blockip' => 'Blockera användare',
 'blockip-title' => 'Blockera användare',
 'blockip-legend' => 'Blockera användare',
@@ -2965,7 +2965,6 @@ Spara den på din dator och ladda upp den här.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript-testning',
-'javascripttest-disabled' => 'Denna funktion har inte aktiverats på denna wiki.',
 'javascripttest-title' => 'Kör $1 tester',
 'javascripttest-pagetext-noframework' => 'Denna sida är reserverat för att köra JavaScript-tester.',
 'javascripttest-pagetext-unknownframework' => 'Okänd testmiljö "$1".',
@@ -3134,6 +3133,7 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
 'pageinfo-restriction' => 'Sidskydd ({{lcfirst:$1}})',
 'pageinfo-magic-words' => '{{PLURAL:$1|Magiskt|Magiska}} ord ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Dold kategori|Dolda kategorier}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Inkluderad mall|Inkluderade mallar}} ($1)',
 
 # Skin names
 'skinname-standard' => 'Standard',
@@ -3188,7 +3188,7 @@ Om du kör den kan din dator skadas.",
 'file-info-size-pages' => '$1 × $2 pixlar, filstorlek: $3, MIME-typ: $4, $5 {{PLURAL:$5|sida|sidor}}',
 'file-nohires' => 'Det finns ingen version med högre upplösning.',
 'svg-long-desc' => 'SVG-fil, grundstorlek: $1 × $2 pixlar, filstorlek: $3',
-'svg-long-desc-animated' => 'animerad SVG-fil, nominellt $1 × $2 pixlar, filstorlek: $3',
+'svg-long-desc-animated' => 'Animerad SVG-fil, standardstorlek $1 × $2 pixlar, filstorlek: $3',
 'show-big-image' => 'Högupplöst version',
 'show-big-image-preview' => 'Storlek på förhandsvisningen: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Annan upplösning|Andra upplösningar}}: $1.',
@@ -4043,4 +4043,7 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'duration-centuries' => '$1 {{PLURAL:$1|sekel|sekel}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'innehåller...',
+'searchsuggest-search' => 'Sök',
 );
index c4e2b29..8d690f8 100644 (file)
@@ -1098,8 +1098,6 @@ Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio
 'search-interwiki-caption' => 'Miradi ya jumuia',
 'search-interwiki-default' => 'Matokeo toka $1:',
 'search-interwiki-more' => '(zaidi)',
-'search-mwsuggest-enabled' => 'na mapendekezo',
-'search-mwsuggest-disabled' => 'bila makendekezo',
 'search-relatedarticle' => 'Zingine zinazofanana',
 'mwsuggest-disable' => 'Kutoonyesha mapendekezo ya AJAX',
 'searcheverything-enable' => 'Tafuta katika maeneo yote ya wiki',
@@ -2286,7 +2284,7 @@ Andika sababu ya kuzuia chini (kwa mfano, kwa kutaja mifano ya kurasa zilizohari
 'blockipsuccesssub' => 'Kulifaulu kumzuia',
 'ipb-edit-dropdown' => 'Hariri sababu za kuzuia',
 'ipb-unblock-addr' => 'Acha kumzuia $1',
-'ipb-unblock' => 'Acha kumzuia mtumiaji au anwani wa IP',
+'ipb-unblock' => 'Acha kumzuia mtumiaji au anwani ya IP',
 'ipb-blocklist-contribs' => 'Michango ya $1',
 'unblockip' => 'Acha kuzuia mtumiaji',
 'blocklist' => 'Watumiaji waliozuiliwa',
@@ -2297,7 +2295,7 @@ Andika sababu ya kuzuia chini (kwa mfano, kwa kutaja mifano ya kurasa zilizohari
 'blocklist-expiry' => 'Itakwisha',
 'blocklist-reason' => 'Sababu',
 'ipblocklist-submit' => 'Tafuta',
-'ipblocklist-otherblocks' => ' {{PLURAL:$1|Uzuio mwingine|Zuio zingine}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Uzuio mwingine|Zuio zingine}}',
 'infiniteblock' => 'milele',
 'expiringblock' => 'inakwisha tarehe $1 saa $2',
 'emailblock' => 'barua pepe imezuiliwa',
@@ -2480,7 +2478,7 @@ Ulihafadhie katika tarakalishi yako, halafu ulipakie hapa.',
 'importbadinterwiki' => 'Kiungo kibovu kati za wiki',
 'importnotext' => 'Tupu au bila maandishi',
 'importsuccess' => 'Kuleta kumekamilishwa!',
-'import-noarticle' => 'Hakuna kurasa za kuleta!',
+'import-noarticle' => 'Hakuna kurasa ya kuingiza!',
 'import-token-mismatch' => 'Data ya kipindi zilipotelewa.
 Tafadhali jaribu tena.',
 
@@ -3177,4 +3175,7 @@ Tovuti hii inapata matatatizo wakati huu.',
 'duration-years' => '$1 {{PLURAL:$1|year|miaka}}',
 'duration-centuries' => '$1 {{PLURAL:$1|century|karne}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ya maneno...',
+'searchsuggest-search' => 'Kutafuta',
 );
index c843c68..f7b0f98 100644 (file)
@@ -967,8 +967,6 @@ $1',
 'search-interwiki-caption' => 'Śostřane projekty',
 'search-interwiki-default' => '$1 wyńiki:',
 'search-interwiki-more' => '(wjyncyj)',
-'search-mwsuggest-enabled' => 'ze sůgestyjůma',
-'search-mwsuggest-disabled' => 'ńy mo sůgestyji',
 'search-relatedarticle' => 'Podane',
 'mwsuggest-disable' => 'Wyuůnč sůgestyje AJAX',
 'searcheverything-enable' => 'Sznupej we wszech mjan',
index ac40d29..1c1823e 100644 (file)
@@ -1070,8 +1070,6 @@ $1",
 'search-interwiki-caption' => 'உறவுத் திட்டங்கள்',
 'search-interwiki-default' => '$1 தளத்தின் முடிவுகள்:',
 'search-interwiki-more' => '(மேலும்)',
-'search-mwsuggest-enabled' => 'பரிந்துரைகளுடன்',
-'search-mwsuggest-disabled' => 'பரிந்துரைகளில்லை',
 'search-relatedarticle' => 'தொடர்புடையவை',
 'mwsuggest-disable' => 'AJAX பரிந்துரைகளை முடக்கு',
 'searcheverything-enable' => 'அனைத்துப் பெயர்வெளிகளிலும் தேடவும்',
@@ -2612,7 +2610,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'சாவாநிரல் சோதனை நடக்கின்றது',
-'javascripttest-disabled' => 'இந்தச் செயல்பாடு முடக்கப்பட்டுள்ளது.',
 'javascripttest-title' => '$1 சோதனைகள் நடக்கின்றன',
 'javascripttest-pagetext-noframework' => 'இந்த பக்கம் JavaScript பரிசோதனை ஓட்டத்திற்காக ஒதுக்கப்பட்டுள்ளது',
 'javascripttest-pagetext-skins' => 'சோதனைகளை நடத்த முகப்புறை ஒன்றைத் தேர்வுசெய்:',
@@ -3593,4 +3590,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|நூற்றாண்டு|நூற்றாண்டுகள்}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ஆயிரம் ஆண்டு|ஆயிரம் ஆண்டுகள்}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'கொண்டுள்ளது...',
+'searchsuggest-search' => 'தேடு',
 );
index f0a254e..ecb1d83 100644 (file)
@@ -584,8 +584,6 @@ $messages = array(
 'search-interwiki-caption' => 'ಬಳಗದ ಇತರ ಯೋಜನೆಲು',
 'search-interwiki-default' => '$1 ಫಲಿತಾಂಶೊಲು:',
 'search-interwiki-more' => '(ಮಸ್ತ್)',
-'search-mwsuggest-enabled' => 'ಸಲಹೆದೊಟ್ಟಿಗೆ',
-'search-mwsuggest-disabled' => 'ಓವು ಸಲಹೆಲಾ ಇಜ್ಜಿ',
 'searchrelated' => 'ಸ೦ಬ೦ಧ ಇತ್ತಿನ',
 'searchall' => 'ಮಾತಾ',
 'powersearch' => 'ನಾಡ್’ಲೆ',
index 9cd12cb..c612ee8 100644 (file)
@@ -789,8 +789,7 @@ $2
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} సంబంధిత చిట్టాలు చూడవచ్చు],
 లేదా [{{fullurl:{{FULLPAGENAME}}|action=edit}} ఈ పేజీని మార్చవచ్చు]</span>.',
 'noarticletext-nopermission' => 'ప్రస్తుతం ఈ పేజీలో పాఠ్యమేమీ లేదు.
-మీరు ఇతర పేజీలలో [[Special:Search/{{PAGENAME}}|ఈ పేజీ శీర్షిక కోసం వెతకవచ్చు]],
-లేదా <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} సంబంధిత చిట్టాలలో వెతకండి]</span>.',
+మీరు ఇతర పేజీలలో [[Special:Search/{{PAGENAME}}|ఈ పేజీ శీర్షిక కోసం వెతకవచ్చు]], లేదా <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} సంబంధిత చిట్టాలలో వెతకవచ్చు]</span>, కానీ ఈ పేజీని సృష్టించడానికి మీకు అనుమతి లేదు.',
 'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" అనే వాడుకరి ఖాతా నమోదయిలేదు. మీరు ఈ పేజీని సృష్టించ/సరిదిద్దాలనుకుంటే, సరిచూసుకోండి.',
 'userpage-userdoesnotexist-view' => 'వాడుకరి ఖాతా "$1" నమోదుకాలేదు.',
 'blocked-notice-logextract' => 'ప్రస్తుతం ఈ వాడుకరిని నిరోధించారు.
@@ -1127,8 +1126,6 @@ $1",
 'search-interwiki-caption' => 'సోదర ప్రాజెక్టులు',
 'search-interwiki-default' => '$1 ఫలితాలు:',
 'search-interwiki-more' => '(మరిన్ని)',
-'search-mwsuggest-enabled' => 'సూచనలతో',
-'search-mwsuggest-disabled' => 'సూచనలు వద్దు',
 'search-relatedarticle' => 'సంబంధించినవి',
 'mwsuggest-disable' => 'AJAX సూచనలను అచేతనంచేయి',
 'searcheverything-enable' => 'అన్ని పేరుబరుల్లో వెతుకు',
@@ -3561,4 +3558,6 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|శతాబ్దం|శతాబ్దాలు}}',
 'duration-millennia' => '$1 {{PLURAL:$1|సహస్రాబ్దం|సహస్రాబ్దాలు}}',
 
+# Unknown messages
+'searchsuggest-search' => 'వెతుకు',
 );
index ec4f919..2f08a24 100644 (file)
@@ -796,8 +796,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
 คุณสามารถ [[Special:Search/{{PAGENAME}}|ค้นหาชื่อบทความนี้]] ในหน้าอื่น
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาบันทึกที่เกี่ยวข้อง] หรือ[{{fullurl:{{FULLPAGENAME}}|action=edit}} แก้ไขหน้านี้]</span>',
 'noarticletext-nopermission' => 'ปัจจุบันไม่มีข้อความในหน้านี้
-คุณสามารถ [[Special:Search/{{PAGENAME}}|ค้นหาชื่อบทความนี้]] ในหน้าอื่น
-หรือ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง]</span>',
+คุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อบทความนี้]]ในหน้าอื่น หรือ<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง]</span> แต่คุณไม่มีสิทธิ์สร้างหน้านี้',
 'userpage-userdoesnotexist' => 'ไม่มีบัญชีผู้ใช้ "<nowiki>$1</nowiki>" อยู่ในสารบบ  กรุณาตรวจสอบให้แน่ใจว่าคุณต้องการสร้างหรือแก้ไขหน้านี้จริงๆ',
 'userpage-userdoesnotexist-view' => 'ไม่มีบัญชีผู้ใช้ลงทะเบียนในชื่อ "$1"',
 'blocked-notice-logextract' => 'ปัจจุบันเลขที่อยู่ไอพีนี้ถูกบล็อก
@@ -1137,8 +1136,6 @@ $1",
 'search-interwiki-caption' => 'โครงการพี่น้อง',
 'search-interwiki-default' => '$1 ผลลัพธ์:',
 'search-interwiki-more' => '(มากกว่า)',
-'search-mwsuggest-enabled' => 'พร้อมคำแนะนำ',
-'search-mwsuggest-disabled' => 'ไม่รวมคำแนะนำ',
 'search-relatedarticle' => 'สัมพันธ์',
 'mwsuggest-disable' => 'ยกเลิกการแนะนำในลักษณะเอแจ็กซ์',
 'searcheverything-enable' => 'สืบค้นในเนมสเปซทั้งหมด',
@@ -2639,7 +2636,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'การทดสอบจาวาสคริปต์',
-'javascripttest-disabled' => 'ฟังก์ชั่นการทำงานนี้ถูกปิดการใช้งานอยู่',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'หน้าผู้ใช้ของคุณ',
@@ -3476,4 +3472,7 @@ $5
 # API errors
 'api-error-mustbeloggedin' => 'กรุณาลงชื่อเข้าใช้เพื่ออัปโหลดไฟล์',
 
+# Unknown messages
+'searchsuggest-containing' => 'ประกอบไปด้วย...',
+'searchsuggest-search' => 'ค้นหา',
 );
index 8530ecd..47243af 100644 (file)
@@ -975,8 +975,6 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 'search-interwiki-caption' => 'Dogan taslamalar',
 'search-interwiki-default' => '$1 netijeler:',
 'search-interwiki-more' => '(has-da köp)',
-'search-mwsuggest-enabled' => 'teklipler bilen',
-'search-mwsuggest-disabled' => 'teklip ýok',
 'search-relatedarticle' => 'Baglanyşykly',
 'mwsuggest-disable' => 'AJAX tekliplerini ýap',
 'searcheverything-enable' => 'Ähli at giňişliklerinde gözle',
@@ -3146,4 +3144,7 @@ Faýlyň adyny "{{ns:file}}:" pristawkasyz giriziň.',
 'revdelete-unrestricted' => 'administratorlardan aýyrylan çäklendirmeler',
 'newuserlog-byemail' => 'parol e-poçta bilen iberildi',
 
+# Unknown messages
+'searchsuggest-containing' => 'öz içine alýar...',
+'searchsuggest-search' => 'Gözleg',
 );
index c15b40b..28104e9 100644 (file)
@@ -1207,8 +1207,6 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 'search-interwiki-caption' => 'Kapatid na mga proyekto',
 'search-interwiki-default' => '$1 mga resulta:',
 'search-interwiki-more' => '(mas marami pa)',
-'search-mwsuggest-enabled' => 'may mga mungkahi',
-'search-mwsuggest-disabled' => 'walang mga mungkahi',
 'search-relatedarticle' => 'Kaugnay',
 'mwsuggest-disable' => 'Huwag paganahin ang mga mungkahi ng AJAX',
 'searcheverything-enable' => 'Maghanap sa lahat ng ngalan-espasyo:',
@@ -2849,7 +2847,6 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 
 # JavaScriptTest
 'javascripttest' => 'Pagsubok sa JavaScript',
-'javascripttest-disabled' => 'Hindi gumagana ang tungkuling ito sa wiking ito.',
 'javascripttest-title' => 'Pinatatakbo ang mga pagsubok ng $1',
 'javascripttest-pagetext-noframework' => 'Nakalaan ang pahinang ito para sa pagpapatakbo ng mga pagsubok ng JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Hindi napag-aalamang balangkas ng pagsubok na "$1".',
@@ -4120,4 +4117,7 @@ O kaya, maaari mong gamitin ang maginhawang pormularyo sa ibaba. Ang iyong pagpu
 'duration-centuries' => '$1 {{PLURAL:$1|daantaon|mga daantaon}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenyo|mga milenyo}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'naglalaman ng ...',
+'searchsuggest-search' => 'Maghanap',
 );
index 411c3d2..e68c60b 100644 (file)
@@ -502,7 +502,7 @@ $messages = array(
 јаанки '''[{{fullurl:{{FULLPAGENAME}}|action=edit}}де жыго номи сәһифә офәјеј ]'''</span>.",
 'noarticletext-nopermission' => 'Есәт бы сәһифәдә мәтн ни. 
 Шымә бәзынејон [[Special:Search/{{PAGENAME}}|пәјдо кардеј конҹо ым ном һесте]] бә ҹо мәғолонәдә,
-јаанки <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналон ујғунә нывыштәјон пәјдо кардеј].</span>',
+јаанки <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналон ујғунә нывыштәјон пәјдо кардеј].</span>, интаси шымәку изн ни ым сәһифә офәје.',
 'previewnote' => "'''Јодәдә огәтән ки ым һәлә сыфтәнә нишо доје.'''
 Шымә дәгишон һәлә огәтә быәнин!",
 'editing' => 'Редәктә кардеј $1',
@@ -640,6 +640,9 @@ $messages = array(
 # User rights
 'userrights-reason' => 'Сәбәб:',
 
+# Groups
+'group-user' => 'Иштирокәкон',
+
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'Ым сәһифә сәрост кардеј',
 
@@ -850,7 +853,10 @@ $messages = array(
 # Block/unblock
 'ipbreason' => 'Сәбәб:',
 'ipboptions' => '2 саат:2 hours,1 руж:1 day,3 руж:3 days,1 һафтә:1 week,2 һафтә:2 weeks,1 манг:1 month,3 манг:3 months,6 манг:6 months,1 сор:1 year,бемыһләт:infinite',
+'ipbotheroption' => 'ҹо',
 'ipblocklist' => 'Бастә быә иштирокәкон',
+'blocklist-reason' => 'Сәбәб',
+'ipblocklist-submit' => 'Нәве',
 'blocklink' => 'Бә гырд гәтеј',
 'unblocklink' => 'Ошко кардеј',
 'change-blocklink' => 'Блок быә ҹо дәгиш кардеј',
@@ -869,6 +875,7 @@ $messages = array(
 # Export
 'export' => 'Сәһифон ихроҹ кардеј',
 'export-addcat' => 'Зијод кардеј',
+'export-addns' => 'Зијод кардеј',
 
 # Namespace 8 related
 'allmessagesname' => 'Хәбә',
@@ -1038,5 +1045,6 @@ $messages = array(
 
 # Special:Tags
 'tag-filter' => '[[Special:Tags|нышонон]] филтр:',
+'tags-title' => 'Нышонон',
 
 );
index 6aaa52e..d108648 100644 (file)
@@ -700,7 +700,7 @@ Lütfen birkaç dakika sonra yeniden deneyin.',
 'protectedpagetext' => 'Bu sayfa değişiklik yapılmaması için koruma altına alınmıştır.',
 'viewsourcetext' => 'Bu sayfanın kaynağını görebilir ve kopyalayabilirsiniz:',
 'viewyourtext' => "Bu sayfaya '''yaptığınız değişikliklerin''' kaynağını görünteleyip kopyalayabilirsiniz:",
-'protectedinterface' => 'Bu sayfa yazılım için arayüz metni sağlamaktadır ve kötüye kullanımı önlemek için kilitlenmiştir.',
+'protectedinterface' => "Bu sayfa yazılım için arayüz metni sağlamaktadır ve kötüye kullanımı önlemek için korumaya alınmıştır. Eklemek ya da bütün vikilerdeki çevirileri değiştirmek için lütfen MediaWiki yerelleştirme projesi [//translatewiki.net/ translatewiki.net]'i kullanın.",
 'editinginterface' => "'''UYARI:''' Yazılım için arayüz sağlamakta kullanılan bir sayfayı değiştirmektesiniz. Bu sayfadaki değişiklikler kullanıcı arayüzünü diğer kullanıcılar için de değiştirecektir. Çeviriler için, lütfen [//translatewiki.net/wiki/Main_Page?setlang=tr translatewiki.net]'yi kullanarak MediaWiki yerelleştirme projesini dikkate alınız.",
 'sqlhidden' => '(SQL gizli sorgu)',
 'cascadeprotected' => 'Bu sayfa değişiklik yapılması engellenmiştir, çünkü  "kademeli" seçeneği aktif hale getirilerek koruma altına alınan {{PLURAL:$1|sayfada|sayfada}} kullanılmaktadır:
@@ -1319,8 +1319,6 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'search-interwiki-caption' => 'Kardeş projeler',
 'search-interwiki-default' => '$1 sonuçlar:',
 'search-interwiki-more' => '(daha çok)',
-'search-mwsuggest-enabled' => 'önerilerle',
-'search-mwsuggest-disabled' => 'öneri yok',
 'search-relatedarticle' => 'ilgili',
 'mwsuggest-disable' => 'AJAX önerilerini devre dışı bırak',
 'searcheverything-enable' => 'Tüm ad alanlarında ara',
@@ -2872,7 +2870,6 @@ Geçici dosya kayıp.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript denemesi',
-'javascripttest-disabled' => 'Bu işlev, bu viki üzerinde etkinleştirilmedi.',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Kullanıcı sayfanız',
@@ -3848,4 +3845,7 @@ Resimler tam çözünürlükte görüntülenir, diğer dosya tipleri ilgili prog
 'api-error-uploaddisabled' => 'Yükleme bu vikide devre dışı bırakılmıştır.',
 'api-error-verification-error' => 'Dosya bozuk veya yanlış uzantıya sahip olabilir.',
 
+# Unknown messages
+'searchsuggest-containing' => 'içeren...',
+'searchsuggest-search' => 'Ara',
 );
index c4b7190..e1c64c6 100644 (file)
@@ -1150,8 +1150,6 @@ $1",
 'search-interwiki-caption' => 'Тугандаш проектлар',
 'search-interwiki-default' => '$1 нәтиҗә:',
 'search-interwiki-more' => '(тагын)',
-'search-mwsuggest-enabled' => 'киңәшләр белән',
-'search-mwsuggest-disabled' => 'киңәшсез',
 'search-relatedarticle' => 'Бәйләнгән',
 'mwsuggest-disable' => 'AJAX-ярдәмне ябу',
 'searcheverything-enable' => 'Барлык исемнәр мәйданында эзләү',
@@ -2573,4 +2571,7 @@ $1',
 'api-error-uploaddisabled' => 'Бу викидә файллар йөкләү мөмкинлеге сүндерелгән.',
 'api-error-verification-error' => 'Бәлки, бу файл бозылгандыр яки дөрес түгел киңәйтелмәгә ия.',
 
+# Unknown messages
+'searchsuggest-containing' => 'эчтәлек...',
+'searchsuggest-search' => 'Эзләү',
 );
index db0507f..d3262c4 100644 (file)
@@ -924,8 +924,6 @@ Sez idaräçe bulu säbäple, [$1 yäşerelgän yuramanı qarıy alasız]",
 'search-interwiki-caption' => 'Tuğandaş proyektlar',
 'search-interwiki-default' => '$1 näticä:',
 'search-interwiki-more' => '(tağın)',
-'search-mwsuggest-enabled' => 'kiñäşlär belän',
-'search-mwsuggest-disabled' => 'kiñäşsez',
 'search-relatedarticle' => 'Bäylängän',
 'mwsuggest-disable' => 'AJAX-yärdämne yabu',
 'searcheverything-enable' => 'Barlıq isemnär mäydanında ezläw',
index bf2740e..32db00b 100644 (file)
@@ -1113,8 +1113,6 @@ $1",
 'search-interwiki-caption' => 'ھەمشىرە قۇرۇلۇشلار',
 'search-interwiki-default' => '$1 نەتىجە:',
 'search-interwiki-more' => '(تېخىمۇ كۆپ)',
-'search-mwsuggest-enabled' => 'تەكلىپ بار',
-'search-mwsuggest-disabled' => 'تەكلىپ يوق',
 'search-relatedarticle' => 'ئالاقىدار',
 'mwsuggest-disable' => 'AJAX تەكلىپىنى چەكلە',
 'searcheverything-enable' => 'ھەممە ئات بوشلۇقىدىن ئىزدە',
index fc56655..eeb3369 100644 (file)
@@ -620,6 +620,8 @@ $1',
 'youhavenewmessages' => 'Ви отримали $1 ($2).',
 'newmessageslink' => 'нові повідомлення',
 'newmessagesdifflink' => 'остання зміна',
+'youhavenewmessagesfromusers' => 'Ви отримали $1 від {{PLURAL:$3|іншого дописувача|$3 інших дописувачів}} ($2).',
+'youhavenewmessagesmanyusers' => 'Ви отримали $1 від багатьох дописувачів ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|нове повідомлення|нові повідомлення|нових повідомлень}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|остання зміна|останні зміни|останніх змін}}',
 'youhavenewmessagesmulti' => 'Ви отримали нові повідомлення на $1',
@@ -771,6 +773,7 @@ $1',
 'remembermypassword' => "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|дня|днів}})",
 'securelogin-stick-https' => 'Залишайтись підключенним через HTTPS після входу',
 'yourdomainname' => 'Ваш домен:',
+'password-change-forbidden' => 'Ви не можна змінити пароль на цій вікі.',
 'externaldberror' => 'Сталася помилка при автентифікації за допомогою зовнішньої бази даних, або у вас недостатньо прав для внесення змін до свого зовнішнього облікового запису.',
 'login' => 'Вхід до системи',
 'nav-login-createaccount' => 'Вхід / реєстрація',
@@ -1016,12 +1019,12 @@ $2
 Одна IP-адреса може використовуватися декількома користувачами.
 Якщо ви — анонімний користувач і вважаєте, що отримали коментарі, адресовані не вам, будь ласка [[Special:UserLogin/signup|зареєструйтесь]] або [[Special:UserLogin|увійдіть до системи]], щоб у майбутньому уникнути можливої плутанини з іншими анонімними користувачами.''",
 'noarticletext' => 'Зараз на цій сторінці нема тексту.
\92и Ð¼Ð¾Ð¶ÐµÑ\82е [[Special:Search/{{PAGENAME}}|поÑ\88Ñ\83каÑ\82и Ñ\86Ñ\8e Ð½Ð°Ð·Ð²Ñ\83]] Ð² інших сторінках,
\92и Ð¼Ð¾Ð¶ÐµÑ\82е [[Special:Search/{{PAGENAME}}|поÑ\88Ñ\83каÑ\82и Ñ\86Ñ\8e Ð½Ð°Ð·Ð²Ñ\83]] Ð½Ð° інших сторінках,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати в журналах]
 або [{{fullurl:{{FULLPAGENAME}}|action=edit}} створити сторінку з такою назвою]</span>.',
-'noarticletext-nopermission' => 'Ð\97аÑ\80аз Ð½Ð° Ñ\86Ñ\96й Ñ\81Ñ\82оÑ\80Ñ\96нÑ\86Ñ\96 Ð²Ñ\96дÑ\81Ñ\83Ñ\82нÑ\96й Ñ\82екÑ\81Ñ\82.
\92и Ð¼Ð¾Ð¶ÐµÑ\82е [[Special:Search/{{PAGENAME}}|поÑ\88Ñ\83каÑ\82и Ñ\82акий Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº]] Ñ\81еÑ\80ед Ñ\96нÑ\88иÑ\85 Ñ\81Ñ\82оÑ\80Ñ\96нок,
-або <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати пов\'язані записи в журналах]</span>.',
+'noarticletext-nopermission' => 'Ð\97аÑ\80аз Ð½Ð° Ñ\86Ñ\96й Ñ\81Ñ\82оÑ\80Ñ\96нÑ\86Ñ\96 Ð½ÐµÐ¼Ð°Ñ\94 Ñ\82екÑ\81Ñ\82Ñ\83.
\92и Ð¼Ð¾Ð¶ÐµÑ\82е [[Special:Search/{{PAGENAME}}|поÑ\88Ñ\83каÑ\82и Ñ\86Ñ\8e Ð½Ð°Ð·Ð²Ñ\83]] Ð½Ð° Ñ\96нÑ\88иÑ\85 Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85,
+або <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати пов\'язані записи в журналах]</span>, але ви не маєте дозволу на створення такої сторінки.',
 'userpage-userdoesnotexist' => 'Користувач під назвою "<nowiki>$1</nowiki>" не зареєстрований. Переконайтеся, що ви хочете створити/редагувати цю сторінку.',
 'userpage-userdoesnotexist-view' => 'Обліковий запис користувача „$1“ не зареєстровано.',
 'blocked-notice-logextract' => 'Цей користувач наразі заблокований.
@@ -1380,8 +1383,6 @@ $1",
 'search-interwiki-caption' => 'Братні проекти',
 'search-interwiki-default' => '$1 результати:',
 'search-interwiki-more' => '(більше)',
-'search-mwsuggest-enabled' => 'з порадами',
-'search-mwsuggest-disabled' => 'без порад',
 'search-relatedarticle' => "Пов'язаний",
 'mwsuggest-disable' => 'Вимкнути поради AJAX',
 'searcheverything-enable' => 'Пошук у всіх просторах назв',
@@ -2196,7 +2197,7 @@ $1',
 'protectedpages' => 'Захищені сторінки',
 'protectedpages-indef' => 'Тільки безстроково захищені',
 'protectedpages-cascade' => 'Тільки каскадний захист',
-'protectedpagestext' => 'Ð\9dаÑ\81Ñ\82Ñ\83пні сторінки захищені від перейменування або зміни.',
+'protectedpagestext' => 'Такі сторінки захищені від перейменування або зміни.',
 'protectedpagesempty' => 'Зараз нема захищених сторінок із зазначеними параметрами',
 'protectedtitles' => 'Заборонені назви',
 'protectedtitlestext' => 'Наступні назви не дозволено використовувати',
@@ -3013,7 +3014,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'Тестування JavaScript',
-'javascripttest-disabled' => 'Цю функцію відключено.',
 'javascripttest-title' => 'Працює  $1  випробувань',
 'javascripttest-pagetext-noframework' => 'Ця сторінка призначений для тестування JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Невідоме середовище тестування " $1 ".',
@@ -4247,4 +4247,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'duration-centuries' => '$1 {{PLURAL:$1|століття|століття|століть}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тисячоліття|тисячоліття|тисячоліть}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'що містять...',
+'searchsuggest-search' => 'Пошук',
 );
index b726e80..5ef6614 100644 (file)
@@ -276,8 +276,8 @@ $1',
 'edithelp' => 'معاونت براۓ ترمیم',
 'edithelppage' => 'Help:ترمیم',
 'helppage' => 'Help:فہرست',
-'mainpage' => 'سرÙ\88رÙ\82',
-'mainpage-description' => 'سرÙ\88رÙ\82',
+'mainpage' => 'صÙ\81Ø­Û\81 Ø§Ù\88Ù\84',
+'mainpage-description' => 'صÙ\81Ø­Û\81 Ø§Ù\88Ù\84',
 'policy-url' => 'Project:حکمتِ عملی',
 'portal' => 'دیوان عام',
 'portal-url' => 'Project:دیوان عام',
@@ -790,8 +790,6 @@ $1",
 'search-interwiki-caption' => 'ساتھی منصوبے',
 'search-interwiki-default' => '$1 نتائج:',
 'search-interwiki-more' => '(مزید)',
-'search-mwsuggest-enabled' => 'بمع تجاویز',
-'search-mwsuggest-disabled' => 'تجاویز نہیں',
 'search-relatedarticle' => 'متعلقہ',
 'mwsuggest-disable' => 'AJAX تجاویز غیرفعال',
 'searchrelated' => 'متعلقہ',
@@ -900,13 +898,22 @@ HTML tags جانچئے.',
 'prefs-i18n' => 'بین الاقوامیت',
 'prefs-signature' => 'دستخط',
 'prefs-dateformat' => 'شکلبندِ تاریخ',
+'prefs-diffs' => 'فروق',
 
 # User rights
 'userrights' => 'حقوقِ صارف کی نظامت',
 'userrights-lookup-user' => 'گروہائے صارف کا انتظام',
 'userrights-user-editname' => 'کوئی اسم‌صارف داخل کیجئے:',
+'editusergroup' => 'ترمیم گروہائے صارف',
 'editinguser' => "تبدیلئ حقوق برائے صارف '''[[صارف:$1|$1]]''' $2",
+'userrights-editusergroup' => 'ترمیم گروہائے صارف',
+'saveusergroups' => 'گروہائے صارف محفوظ',
 'userrights-groupsmember' => 'رکنِ:',
+'userrights-groupsmember-auto' => 'اعتباری صارف در',
+'userrights-groups-help' => 'آپ ان گروہان میں تبدیلی کرسکتے ہیں جن سے صارف متعلق ہے: 
+* نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے ہے۔ 
+* غیر نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے نہیں ہے۔ 
+* یہ * علامت اس بات کا اشارہ ہے کہ آپ اس گروہ کو نہیں ہٹا سکتے جسے ایک مرتبہ آپ نے شامل کردیا ہو، یا اس کے بر عکس۔',
 'userrights-reason' => 'وجہ:',
 'userrights-no-interwiki' => 'دوسرے ویکیوں پر حقوقِ صارف میں ترمیم کی آپ کو اجازت نہیں ہے.',
 'userrights-changeable-col' => 'مجموعات جو آپ تبدیل کرسکتے ہیں',
@@ -915,17 +922,31 @@ HTML tags جانچئے.',
 # Groups
 'group' => 'گروہ:',
 'group-user' => 'صارفین',
+'group-autoconfirmed' => 'خود توثیق شدہ صارفین',
 'group-bot' => 'روبالات',
 'group-sysop' => 'منتظمین',
+'group-bureaucrat' => 'مامورین اداری',
+'group-suppress' => 'نگران',
 'group-all' => '(تمام)',
 
 'group-user-member' => 'صارف',
 'group-autoconfirmed-member' => 'خودتصدیق شدہ صارف',
 'group-bot-member' => 'خودکار صارف',
 'group-sysop-member' => 'منتظم',
+'group-bureaucrat-member' => '{{GENDER:$1|مامور اداری}}',
+'group-suppress-member' => '{{GENDER:$1|نگران}}',
 
+'grouppage-user' => '{{ns:project}}:صارفین',
+'grouppage-autoconfirmed' => '{{ns:project}}:خود توثیق شدہ صارف',
+'grouppage-bot' => '{{ns:project}}:روبہ جات',
 'grouppage-sysop' => '{{ns:project}}:منتظمین',
 
+# User rights log
+'rightslog' => 'نوشتہ صارفی اختیارات',
+'rightslogtext' => 'یہ صارفی اختیارات میں تبدیلیوں کا نوشتہ ہے۔',
+'rightslogentry' => 'گروہ رکنیت میں برائے $1 از $2 تا $3 تبدیلی ہوئی',
+'rightsnone' => '(کچھ نہیں)',
+
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'اس صفحہ میں ترمیم کریں',
 
@@ -1194,10 +1215,17 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Undelete
 'undelete' => 'ضائع کردہ صفحات دیکھیں',
 'undeletepage' => 'معائنہ خذف شدہ صفحات',
+'undeletepagetitle' => "'''ذیل میں [[:$1|$1]] کے حذف شدہ ترامیم درج ہیں۔'''",
 'viewdeletedpage' => 'حذف شدہ صفحات دیکھیے',
+'undelete-fieldset-title' => 'ترامیم بحال کریں',
+'undeletehistory' => 'اگر آپ اس صفحہ کو بحال کرتے ہیں، تو اس صفحہ کے تاریخچہ میں تمام ترامیم بھی بحال ہوجائیگی۔
+اگر حذف شدگی کے بعد کوئی نیا صفحہ اسی نام سے تخلیق کیا گیا ہو، تو تمام بحال شدہ ترامیم گذشتہ تاریخچہ میں ظاہر ہوگی۔',
+'undeleterevdel' => 'بحالیٔ صفحہ کا اقدام مکمل نہیں ہوگا اگر اس کا تنیجہ صفحہ کے اوپر کے حصہ کی ترمیم یا ملف کا اعادہ جزوی طور پر حذف کیا جارہا ہو۔
+ایسی صورت میں لازمی طور آپ حالیہ حذف شدہ اعادے کو ظاہر کریں۔',
 'undeletebtn' => 'بحال',
 'undeletelink' => 'دیکھو/بحال کرو',
 'undeleteviewlink' => 'دکھاؤ',
+'undeleteinvert' => 'انتخاب بالعکس',
 'undeletecomment' => 'وجہ:',
 
 # Namespace form on various pages
@@ -1254,6 +1282,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'proxyblocksuccess' => 'کردیا.',
 
 # Move page
+'move-page' => 'منتقلی',
 'move-page-legend' => 'منتقلئ صفحہ',
 'movepagetext' => "نیچے دیا گیا تشکیلہ (فـارم) استعمال کرکے اس صفحہ کا عنوان دوبارہ منتخب کیا جاسکتا ہے، ساتھ ہی اس سے منسلک تاریخچہ بھی نۓ نام پر منتقل ہوجاۓ گا۔ اسکے بعد سے اس صفحے کا پرانا نام ، نۓ نام کی جانب -- لوٹایا گیا صفحہ -- کی حیثیت اختیار کرلے گا۔ لیکن یادآوری کرلیجیۓ دیگر صفحات پر ، پرانے صفحہ کی جانب دیۓ گۓ روابط (لنکس) تبدیل نہیں ہونگے؛ اس بات کو یقینی بنانا ضروری ہے کہ کوئی دوہرا یا شکستہ -- پلٹایا گیا ربط -- نہ رہ جاۓ۔
 
@@ -1263,6 +1292,18 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 ''' انـتـبـاہ !'''
  کسی اہم اور مقبول صفحہ کی منتقلی ، غیرمتوقع اور پریشان کن بھی ہی ہوسکتی ہے اس لیۓ ؛ منتقلی سے قبل براہ کرم یقین کرلیجۓ کہ آپ اسکے منطقی نتائج سے باخبر ہیں۔",
+'movepagetext-noredirectfixer' => "درج ذیل ورقہ کے ذریعہ صفحہ کو نیا نام دیا جاسکتا ہے، اس کے ساتھ صفحہ کا تاریخچہ بھی منتقل ہوجائیگا۔
+نئے عنوان کے جانب قدیم عنوان کو رجوع مکرر کردیا جائیگا۔
+
+یقین کرلیں کہ [[Special:DoubleRedirects|مکرر]] یا [[Special:BrokenRedirects|شکستہ رجوع مکررات]] موجود نہیں ہیں۔
+آپ اس بات کو یقینی بنانے کے ذمہ دار ہیں کہ روابط انہیں جگہوں سے مربوط ہیں جن کو فرض کیا گیا ہے۔
+
+خیال رہے کہ یہ صفحہ منتقل '''نہیں''' ہوگا اگر نئے عنوان کے ساتھ صفحہ پہلے سے موجود ہو، سوائے اس کے کہ صفحہ خالی ہو اور اس کا گذشتہ ترمیمی تاریخچہ موجود نہ ہو۔
+اس کا مطلب ہے آپ سے اگر غلطی ہوجائے تو آپ صفحہ کو اسی جگہ لوٹا سکتے ہیں، تاہم موجود صفحہ پر برتحریر (overwrite) نہیں کرسکتے۔
+
+'''انتباہ!'''
+کسی اہم اور مقبول صفحہ کی منتقلی، غیرمتوقع اور پریشان کن بھی ہی ہوسکتی ہے اس لیۓ؛ 
+منتقلی سے قبل براہ کرم یقین کرلیجۓ کہ آپ اسکے منطقی نتائج سے باخبر ہیں۔",
 'movearticle' => 'مـنـتـقـل کـریں',
 'newtitle' => 'نـیــا عـنــوان',
 'move-watch' => 'صفحہ زیر نظر',
@@ -1357,6 +1398,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'anonymous' => '{{SITENAME}} گمنام صارف',
 'others' => 'دیگر',
 
+# Patrolling
+'markaspatrolledtext' => 'اس صفحہ کو بطور مراجعت شدہ نشان زد کریں',
+
 # Image deletion
 'deletedrevision' => 'حذف شدہ پرانی ترمیم $1۔',
 
@@ -1442,4 +1486,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:SpecialPages
 'specialpages' => 'خصوصی صفحات',
 
+# Unknown messages
+'searchsuggest-search' => 'تلاش',
 );
index 54bcb36..7cc9b16 100644 (file)
@@ -54,25 +54,42 @@ $linkTrail = '/^([a-zʻʼ“»]+)(.*)$/sDu';
 
 $messages = array(
 # User preference toggles
-'tog-hideminor' => 'Yangi oʻzgarishlardagi kichik tahrirlani yashir',
+'tog-underline' => 'Havolalarning tagiga chizish:',
+'tog-justify' => "Matnni sahifaning eni bo'yicha tekislash",
+'tog-hideminor' => "Yangi oʻzgarishlar ro'yxatida kichik tahrirlarni yashirish",
+'tog-hidepatrolled' => 'Yangi oʻzgarishlar roʻyxatida patrullangan tahrirlarni yashirish',
+'tog-newpageshidepatrolled' => "Yangi sahifalar ro'yxatida patrullangan sahifalarni yashirish",
+'tog-numberheadings' => 'Sarlavhalarni avtomatik tarzda raqamlash',
+'tog-showtoolbar' => "Tahrirlash vaqtida yuqorigi unsurlar darchasini ko'rsatish (JavaScript)",
+'tog-showtoc' => "Mundarijani ko'rsatish (3 ta sarlavhadan ko'p bo'lgan sahifalar uchun)",
 'tog-rememberpassword' => 'Hisob ma’lumotlarini ushbu kompyuterda eslab qolish (eng ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
 'tog-watchcreations' => 'Men yaratgan sahifalarni va yuklagan fayllarni kuzatuv roʻyxatimga qoʻsh',
 'tog-watchdefault' => 'Men tahrirlagan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
 'tog-watchmoves' => 'Men koʻchirgan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
 'tog-watchdeletion' => 'Men yoʻqotgan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
+'tog-minordefault' => "Boshlang'ich holatga barcha tahrirlarni kamahamiyatli qilib belgilash",
+'tog-previewontop' => "Oldindan ko'rishni tahrirlash oynasi oldiga joylashtirish",
+'tog-previewonfirst' => "Tahrirlashga o'tishda batafsil ko'rinishni ko'rsatish",
+'tog-nocache' => "Brauzerda sahifalarni keshda saqlashni o'chirish",
 'tog-enotifwatchlistpages' => 'Kuzatuv roʻyxatimdagi sahifa yoki fayllar oʻzgartirilsa, e-pochtamga bu haqda xat yuborilsin',
 'tog-enotifusertalkpages' => 'Munozara sahifam oʻzgartirilsa, e-pochtamga bu haqda xat yuborilsin',
-'tog-oldsig' => 'Mavjud imzo:',
+'tog-oldsig' => 'Joriy imzo:',
 'tog-fancysig' => 'Imzoni wikimatn sifatida qara (avtomatik ishoratsiz)',
+'tog-showjumplinks' => '"ga o\'tish" yordamchi havolalarini yoqish',
 'tog-ccmeonemails' => 'Men boshqa foydalanuvchilarga yuborayotgan xatnig nusxasi oʻzimning e-pochtamga ham yuborilsin',
-'tog-showhiddencats' => 'Yashirin turkumlarni koʻrsat',
+'tog-showhiddencats' => 'Yashirin turkumlarni koʻrsatish',
+'tog-noconvertlink' => "Sarlavhaga aylantirish dastagini o'chirib qo'yish",
 
 'underline-always' => 'Har doim',
 'underline-never' => 'Hech qachon',
 'underline-default' => 'Brauzer moslamari boʻyicha',
 
 # Font style option in Special:Preferences
+'editfont-style' => 'Tahrirlash maydoni bosma harflari turi',
 'editfont-default' => 'Brauzer moslamari boʻyicha',
+'editfont-monospace' => 'Monoenli bosma harflar',
+'editfont-sansserif' => 'Sans-serif bosma harflari',
+'editfont-serif' => 'Serif bosma harflari',
 
 # Dates
 'sunday' => 'Yakshanba',
@@ -136,35 +153,49 @@ $messages = array(
 'hidden-category-category' => 'Yashirin turkumlar',
 'category-subcat-count' => '{{PLURAL:$2|Ushbu turkumda faqat bitta ostturkum mavjud.|Ushbu turkumda quyidagi {{PLURAL:$1|ostturkum|$1 ostturkumlar}}, hammasi boʻlib $2 ta ostturkum mavjud.}}',
 'category-article-count' => '{{PLURAL:$2|Ushbu turkumda faqat bitta sahifa mavjud.|Ushbu turkumda quyidagi {{PLURAL:$1|sahifa|$1 sahifalar}}, hammasi boʻlib $2 ta sahifa mavjud.}}',
+'category-file-count' => "{{PLURAL:$2|Ushbu turkum faqat bitta faylga ega.|Ushbu turkumdagi $2 ta fayldan quyidagi $1 tasi ko'rsatildi.}}",
 'listingcontinuesabbrev' => 'davomi',
+'index-category' => 'Indekslanadigan sahifalar',
 'noindex-category' => 'Indekslanmaydigan sahifalar',
+'broken-file-category' => 'Ishlamaydigan fayl havolalariga ega sahifalar',
 
 'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xffʻʼ«„]+)$/sDu',
 
 'about' => 'Haqida',
+'article' => 'Sahifa',
 'newwindow' => '(yangi oynada ochiladi)',
-'cancel' => 'Voz kechish',
+'cancel' => 'Bekor qilish',
 'moredotdotdot' => 'Batafsil...',
+'mypage' => 'Shaxsiy sahifa',
 'mytalk' => 'Suhbatim',
 'anontalk' => 'Bu IP uchun suhbat',
 'navigation' => 'Saytda harakatlanish',
 'and' => '&#32;va',
 
 # Cologne Blue skin
+'qbfind' => 'Qidiruv',
+'qbbrowse' => "Ko'rish",
 'qbedit' => 'Tahrirlash',
+'qbpageoptions' => 'Ushbu sahifa',
+'qbpageinfo' => "Sahifa haqida ma'lumot",
+'qbmyoptions' => 'Mening sahifalarim',
 'qbspecialpages' => 'Maxsus sahifalar',
 'faq' => 'TSS',
+'faqpage' => 'Project:TSS',
 
 # Vector skin
 'vector-action-addsection' => 'Mavzu qoʻshish',
 'vector-action-delete' => 'O‘chirish',
 'vector-action-move' => 'Ko‘chirish',
 'vector-action-protect' => 'Himoyalash',
-'vector-view-create' => 'Yarat',
-'vector-view-edit' => 'Tahrirla',
+'vector-action-undelete' => 'Tiklash',
+'vector-action-unprotect' => "Himoyani o'zgartirish",
+'vector-simplesearch-preference' => 'Soddalashtirilgan qidiruv uskunasini yoqish (faqat "Vektor" tashqi ko\'rinishi uchun)',
+'vector-view-create' => 'Yaratish',
+'vector-view-edit' => 'Tahrirlash',
 'vector-view-history' => 'Tarix',
 'vector-view-view' => 'Mutolaa',
-'vector-view-viewsource' => 'Manbasini koʻrsat',
+'vector-view-viewsource' => "Manbasini ko'rish",
 'actions' => 'Amallar',
 'namespaces' => 'Nomfazolar',
 'variants' => 'Variantlar',
@@ -173,12 +204,13 @@ $messages = array(
 'returnto' => '$1 sahifasiga qaytish.',
 'tagline' => '{{SITENAME}} dan',
 'help' => 'Yordam',
-'search' => 'Qidirish',
+'search' => 'Qidiruv',
 'searchbutton' => 'Qidirish',
 'go' => "O'tish",
 'searcharticle' => 'O‘tish',
 'history' => 'Sahifa tarixi',
 'history_short' => 'Tarix',
+'updatedmarker' => 'mening oxirgi tashrifimdan keyin yangilandi',
 'printableversion' => 'Bosma uchun versiya',
 'permalink' => 'Doimiy ishorat',
 'print' => 'Chop et',
@@ -186,22 +218,32 @@ $messages = array(
 'edit' => 'Tahrirlash',
 'create' => 'Yaratish',
 'editthispage' => 'Sahifani tahrirlash',
-'create-this-page' => 'Bu sahifani yarat',
+'create-this-page' => 'Ushbu sahifani yaratish',
 'delete' => 'O‘chirish',
-'deletethispage' => 'Bu sahifani oʻchir',
+'deletethispage' => 'Ushbu sahifani o‘chirish',
+'undelete_short' => '{{PLURAL:$1|tahrir|$1 tahrirlar}}ni tiklash',
+'viewdeleted_short' => "{{PLURAL:$1|o'chirilgan tahrir|$1 ta o'chirilgan tahrirlar}}ni ko'rish",
 'protect' => 'Himoyalash',
 'protect_change' => 'o‘zgartirish',
 'protectthispage' => 'Ushbu sahifani himoyalash',
 'unprotect' => 'Himoyadan chiqarish',
+'unprotectthispage' => "Ushbu sahifaning himoyasini o'zgaritish",
 'newpage' => 'Yangi sahifa',
 'talkpage' => 'Bu sahifa haqida munozara',
 'talkpagelinktext' => 'Munozara',
 'specialpage' => 'Maxsus sahifa',
 'personaltools' => 'Shaxsiy uskunalar',
 'postcomment' => 'Yangi boʻlim',
+'articlepage' => 'Sahifani ko‘rish',
 'talk' => 'Munozara',
 'views' => 'Ko‘rinishlar',
 'toolbox' => 'Asboblar',
+'userpage' => "Foydalanuvchi sahifasini ko'rish",
+'projectpage' => "Loyiha sahifasini ko'rish",
+'imagepage' => "Fayl sahifasini ko'rish",
+'mediawikipage' => "Xabar sahifasini ko'rsatish",
+'templatepage' => "Andoza sahifasini ko'rish",
+'viewhelppage' => 'Yordam olish',
 'categorypage' => 'Turkum sahifasi',
 'viewtalkpage' => 'Munozara',
 'otherlanguages' => 'Boshqa tillarda',
@@ -211,8 +253,11 @@ $messages = array(
 'viewcount' => 'Bu sahifaga {{PLURAL:$1|bir marta|$1 marta}} murojaat qilingan.',
 'protectedpage' => 'Himoyalangan sahifa',
 'jumpto' => 'Oʻtish:',
-'jumptonavigation' => 'foydalanish',
-'jumptosearch' => 'Qidir',
+'jumptonavigation' => 'saytda harakatlanish',
+'jumptosearch' => 'qidiruv',
+'pool-timeout' => "Muhosara (to'sish) ni kutish vaqti tugadi",
+'pool-queuefull' => "So'rovlar jamlanmasi to'ldi",
+'pool-errorunknown' => "Noma'lum xato",
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => '{{SITENAME}} haqida',
@@ -228,51 +273,96 @@ $messages = array(
 'helppage' => 'Help:Mundarija',
 'mainpage' => 'Bosh sahifa',
 'mainpage-description' => 'Bosh sahifa',
+'policy-url' => 'Project:Qoida',
 'portal' => 'Jamoa portali',
 'portal-url' => 'Project:Jamoa portali',
 'privacy' => 'Konfidensiallik siyosati',
 'privacypage' => 'Project:Konfidensiallik siyosati',
 
+'badaccess' => 'Ruxsatlilik xatosi',
+'badaccess-group0' => "Siz so'ralgan amallarni bajara olmaysiz",
+'badaccess-groups' => "So'ralgan amallarni kamida $1 {{PLURAL:$2|guruhi|guruhlari}} foydalanuvchilarigina amalga oshirishi mumkin.",
+
+'versionrequired' => '$1 versiyasidagi MediaWiki talab etiladi',
+'versionrequiredtext' => "Ushbu sahifani bilan ishlash uchun $1 versiyasidagi MediaWiki talab etiladi.
+[[Special:Version|Dasturiy ta'minot haqida axborot]]ni ko'ring.",
+
 'ok' => 'OK',
 'retrievedfrom' => ' "$1" dan olindi',
 'youhavenewmessages' => 'Sizga $1 keldi ($2).',
 'newmessageslink' => 'yangi xabarlar',
 'newmessagesdifflink' => 'soʻnggi oʻzgarish',
-'youhavenewmessagesmulti' => 'Sizga yangi xat keldi: $1',
+'youhavenewmessagesfromusers' => 'Siz {{PLURAL:$3|$3 ta foydalanuvchidan}} $1 oldingiz ($2).',
+'youhavenewmessagesmanyusers' => "Siz ko'p foydalanuvchilardan $1 oldingiz ($2).",
+'newmessageslinkplural' => '{{PLURAL:$1|yangi xabar|yangi xabarlar}}',
+'newmessagesdifflinkplural' => "oxirgi {{PLURAL:$1|o'zgarish|o'zgarishlar}}",
+'youhavenewmessagesmulti' => 'Siz $1ga yangi xat oldingiz',
 'editsection' => 'tahrirlash',
-'editold' => 'tahrir',
+'editold' => 'tahrirlash',
 'viewsourceold' => 'manbasini koʻrish',
-'editlink' => 'tahrirla',
-'viewsourcelink' => 'manbasini koʻr',
+'editlink' => 'tahrirlash',
+'viewsourcelink' => 'manbasini koʻrish',
 'editsectionhint' => 'Boʻlimni tahrirlash: $1',
 'toc' => 'Mundarija',
 'showtoc' => 'koʻrsatish',
 'hidetoc' => 'yashirish',
-'collapsible-collapse' => 'Yashir',
-'collapsible-expand' => 'Koʻrsat',
+'collapsible-collapse' => "Yig'ish",
+'collapsible-expand' => 'Yoyish',
+'thisisdeleted' => "$1ni ko'rib chiqasizmi yoki tiklaysizmi?",
+'viewdeleted' => "$1ni ko'rib chiqasizmi?",
+'restorelink' => "{{PLURAL:$1|o'chirilgan tahrir|$1 ta o'chirilgan tahrirlar}}ni",
+'feedlinks' => "Ko'rinishida:",
+'feed-invalid' => "Obuna uchun no'tog'ri turdagi kanal",
+'feed-unavailable' => "Sindikatsiya tasmalariga yo'lashning imkoni yo'q",
+'site-rss-feed' => '$1 — RSS-tasmasi',
+'site-atom-feed' => '$1 — Atom-tasma',
+'page-rss-feed' => '"$1" — RSS-tasmasi',
 'page-atom-feed' => '«$1» — Atom-lenta',
 'red-link-title' => '$1 (sahifa yaratilmagan)',
+'sort-descending' => "Kamayish bo'yicha tartiblash",
+'sort-ascending' => "O'sish bo'yicha tartiblash",
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Maqola',
 'nstab-user' => 'Foydalanuvchi sahifasi',
+'nstab-media' => 'Media sahifasi',
 'nstab-special' => 'Maxsus sahifa',
-'nstab-project' => 'Vikipediya',
+'nstab-project' => 'Loyiha sahifasi',
 'nstab-image' => 'Fayl',
 'nstab-mediawiki' => 'Xabar',
 'nstab-template' => 'Andoza',
 'nstab-help' => 'Yordam sahifasi',
 'nstab-category' => 'Turkum',
 
+# Main script and global functions
+'nosuchaction' => "Bunday amal yo'q",
+'nosuchspecialpage' => "Bunday maxsus sahifa yo'q",
+
 # General errors
 'error' => 'Xato',
+'laggedslavemode' => "'''Diqqat:''' sahifa oxirgi yangilashlarga ega bo'lmasligi mumkin.",
+'readonly' => "Ma'lumotlar bazasiga yozish to'sildi",
+'missingarticle-rev' => '(versiya №: $1)',
+'missingarticle-diff' => '(Farq: $1, $2)',
+'internalerror' => 'Ichki xato',
+'internalerror_info' => 'Ichki xato: $1',
 'badtitle' => 'Notoʻgʻri sarlavha',
-'viewsource' => 'Manbasini koʻrish',
+'viewsource' => "Manbasini ko'rish",
+'viewsource-title' => "$1 sahifasining manbasini ko'rish",
+'actionthrottled' => "Tezlik bo'yicha cheklov",
 'protectedpagetext' => 'Bu sahifa tahrirlashdan saqlanish maqsadida qulflangan.',
 'viewsourcetext' => "Siz bu sahifaning manbasini ko'rishingiz va uni nusxasini olishingiz mumkin:",
 'namespaceprotected' => "Sizda '''$1''' nomfazosi sahifalarini tahrirlash huquqi yoʻq",
 'customcssprotected' => 'Sizda uchbu CSS sahifani tahrirlash huquqi yoʻq, chunki bu yerda boshqa foydalanuvchining shaxsiy moslamalari saqlanadi.',
 'customjsprotected' => 'Sizda uchbu JavaScript sahifani tahrirlash huquqi yoʻq, chunki bu yerda boshqa foydalanuvchining shaxsiy moslamalari saqlanadi.',
+'ns-specialprotected' => '"{{ns:special}}" nomfazosi sahifalari tahrirlanishi mumkin emas.',
+'exception-nologin' => "Siz tizimda o'zingizni tanishtirmadingiz",
+'exception-nologin-text' => "Bu sahifani ko'rish yoki so'ralgan amalni bajarish uchun o'zingizni tizimda tanitishingiz zarur.",
+
+# Virus scanner
+'virus-badscanner' => "Moslamada xato. Noma'lum virus aniqlovchi: ''$1''",
+'virus-scanfailed' => 'tekshirishda xatolik (kod $1)',
+'virus-unknownscanner' => "noma'lum antivirus:",
 
 # Login and logout pages
 'logouttext' => "'''Siz saytdan muvaffaqiyatli chiqdingiz.'''
@@ -286,6 +376,9 @@ Siz yangi hisob yaratdingiz.
 'yourpassword' => 'Maxfiy soʻz',
 'yourpasswordagain' => 'Maxfiy so‘zni qayta kiriting:',
 'remembermypassword' => 'Hisob ma’lumotlarini ushbu kompyuterda eslab qolish (eng ko‘pi bilan $1 {{PLURAL:$1|kun|kun}} uchun)',
+'securelogin-stick-https' => "Kirgandan keyin HTTPS bo'yicha ulanishni davom ettirish",
+'yourdomainname' => 'Sizning domeningiz:',
+'password-change-forbidden' => "Siz bu vikida maxfiy so'zni o'zgartira olmaysiz.",
 'login' => 'Kirish',
 'nav-login-createaccount' => 'Kirish / Hisob yaratish',
 'loginprompt' => "{{SITENAME}}ga kirish uchun kukilar yoqilgan bo'lishi kerak.",
@@ -293,32 +386,68 @@ Siz yangi hisob yaratdingiz.
 'userloginnocreate' => 'Kirish',
 'logout' => 'Chiqish',
 'userlogout' => 'Chiqish',
-'notloggedin' => 'Kirish amalga oshirilmadi',
+'notloggedin' => "Siz tizimda o'zingizni tanitmadingiz",
 'nologin' => "Hisobingiz yoʻqmi? '''$1'''.",
 'nologinlink' => 'Hisob yaratish',
 'createaccount' => 'Hisob yaratish',
 'gotaccount' => "Hisobingiz bormi? '''$1'''.",
 'gotaccountlink' => 'Kirish',
 'userlogin-resetlink' => 'Kirish maʻlumotlaringiz esdan chiqdimi?',
+'createaccountmail' => "E-mail orqali maxfiy so'zni jo'natish",
+'createaccountreason' => 'Sabab:',
+'badretype' => "Siz tomondan kiritilgan maxfiy so'zlar mos kelmayapti.",
+'loginerror' => 'Foydalanuvchini aniqlashda xatolik',
+'createaccounterror' => "Hisob yozuvini yaratishning iloji yo'q: $1",
 'loginsuccesstitle' => 'Kirish muvaffaqiyatli amalga oshdi',
 'loginsuccess' => "'''{{SITENAME}}ga \"\$1\" foydalanuvchi nomi bilan kirdingiz.'''",
 'nosuchusershort' => '"$1" ismli ishtirokchi yoʻq.
 Xatosiz yozishga urinib koʻring.',
+'nouserspecified' => "Siz foydalanuvchining ismini ko'rsatishingiz lozim.",
+'login-userblocked' => "Bu foydalanuvchi muhosara qilingan. Tizimga kirishga ruxsat yo'q.",
 'wrongpassword' => 'Kiritgan mahfiy soʻzingiz notoʻgʻri. Iltimos, qaytadan kiritib koʻring.',
-'mailmypassword' => 'Yangi parolni e-mail qil',
+'wrongpasswordempty' => "Iltimos, bo'sh bo'lmagan maxfiy so'z kiriting.",
+'mailmypassword' => "Elektron pochta orqali yangi maxfiy so'zni jo'natish",
+'passwordremindertitle' => "{{SITENAME}} uchun vaqtinchalik yangi maxfiy so'z",
 'emailauthenticated' => 'Sizning e-mail manzilingiz $2, $3 da tasdiqlangan.',
+'emailconfirmlink' => 'Sizning elektron pochtangizni tasdiqlash',
+'emaildisabled' => 'Bu sayt elektron pochta xatlarini yubora olmaydi.',
+'accountcreated' => 'Hisob yozuvi yaratildi',
+'login-abort-generic' => 'Tizimga kirishga mufavvaqiyatsiz urinish',
 'loginlanguagelabel' => 'Til: $1',
 
 # Change password dialog
 'resetpass' => 'Maxfiy soʻzni oʻzgartirish',
+'resetpass_header' => "Hisob mahfiy so'zini o'zgartirish",
+'oldpassword' => "Eski mahfiy so'z:",
+'newpassword' => "Yangi mahfiy so'z:",
 'retypenew' => 'Yangi mahfiy soʻzni qayta tering:',
+'resetpass_submit' => "Maxfiy so'zni o'rnatish va kirish",
+'resetpass_forbidden' => "Maxfiy so'z o'zgartirilishi mumkin emas",
 'resetpass-submit-loggedin' => 'Maxfiy soʻzni oʻzgartirish',
+'resetpass-submit-cancel' => 'Bekor',
+
+# Special:PasswordReset
+'passwordreset-legend' => "Maxfiy so'zni yo'q qilish",
+'passwordreset-username' => 'Ishtirokchi nomi:',
+'passwordreset-domain' => 'Domen:',
+'passwordreset-email' => 'Elektron pochta manzili:',
+'passwordreset-emailelement' => "Foydalanuvchi ismi: $1
+Vaqtinchalik maxfiy so'z: $2",
+
+# Special:ChangeEmail
+'changeemail' => "Elektron pochta manzilini o'zgartirish",
+'changeemail-header' => "Elektron pochta manzilini o'zgaritish",
+'changeemail-oldemail' => 'Joriy elektron pochta manzili',
+'changeemail-newemail' => 'Elektron pochtaning yangi manzili',
+'changeemail-none' => "(yo'q)",
+'changeemail-submit' => "Manzilni o'zgartirish",
+'changeemail-cancel' => 'Bekor',
 
 # Edit page toolbar
 'bold_sample' => 'Qalin matn',
 'bold_tip' => 'Qalin matn',
-'italic_sample' => 'Kursiv',
-'italic_tip' => 'Kursiv',
+'italic_sample' => 'Yotiq matn',
+'italic_tip' => 'Yotiq matn',
 'link_sample' => 'Ishorat nomi',
 'link_tip' => 'Ichki ishorat',
 'extlink_sample' => 'http://www.example.com ishorat nomi',
@@ -328,29 +457,42 @@ Xatosiz yozishga urinib koʻring.',
 'nowiki_sample' => "Bu yerga formatlash zarur bo'lmagan matnni qo'ying",
 'nowiki_tip' => "Viki-formatlashga e'tibor qilmaslik",
 'image_tip' => 'Qoʻshilgan tasvir',
-'media_tip' => 'Faylga ishorat',
+'media_tip' => 'Faylga havola',
 'sig_tip' => 'Imzoingiz va sana',
 'hr_tip' => "Yotiq (gorizontal) chiziq (ko'p ishlatmang)",
 
 # Edit pages
 'summary' => 'Qisqa izoh:',
+'subject' => 'Mavzu/sarlavha',
 'minoredit' => 'Bu kichik tahrir',
 'watchthis' => 'Sahifani kuzatish',
 'savearticle' => 'Saqlash',
 'preview' => 'Ko‘rib chiqish',
 'showpreview' => 'Ko‘rib chiqish',
+'showlivepreview' => "Tezkor ko'rib chiqish",
 'showdiff' => 'O‘zgarishlarni ko‘rsatish',
 'anoneditwarning' => "'''Diqqat:''' Siz tizimga kirmagansiz. Ushbu sahifa tarixida Sizning IP manzilingiz yozib qolinadi.",
+'summary-preview' => "Tavsif shunday bo'ladi:",
+'subject-preview' => "Sarlavha shunday bo'ladi:",
+'blockedtitle' => 'Foydalanuvchi chetlashtirildi',
 'blockedtext' => "'''Siz (foydalanuvchi ismingiz yoki IP manzilingiz) tahrir qilishdan chetlashtirildingiz.'''
 
 Sizni $1 chetlashtirdi. Bunga sabab: ''$2''.
 
 * Chetlashtirish muddati boshi: $8
 * Chetlashtirish muddati yakuni: $6
+* Chetlashtirish maqsadi: $7
 
 Siz $1 yoki boshqa [[{{MediaWiki:Grouppage-sysop}}|administrator]] bilan bogʻlanib, arz qilishingiz mumkin.
 You cannot use the 'e-mail this user' feature unless a valid e-mail address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.
 Sizning hozirgi IP manzilingiz - $3, chetlashtirish raqamingiz - #$5. Arizaga bularni ilova qilishingiz mumkin.",
+'blockednoreason' => "sabab ko'rsatilmadi",
+'whitelistedittext' => "Siz sahifalarni o'zgartirish uchun $1.",
+'nosuchsectiontitle' => "Bo'imni topishning iloji yo'q",
+'loginreqtitle' => 'Shaxsiyatni aniqlash talab etiladi',
+'loginreqlink' => 'Kirish',
+'loginreqpagetext' => "Boshqa sahifalarni ko'rish uchun $1",
+'accmailtitle' => "Mahfiy so'z jo'natildi.",
 'newarticle' => '(Yangi)',
 'newarticletext' => "Bu sahifa hali mavjud emas.
 Sahifani yaratish uchun quyida matn kiritishingiz mumkin (qo'shimcha axborot uchun [[{{MediaWiki:Helppage}}|yordam sahifasini]] ko'ring).
@@ -358,6 +500,8 @@ Agar bu sahifaga xatolik sabab kelgan bo'lsangiz brauzeringizning '''orqaga''' t
 'noarticletext' => 'Bu sahifada hozircha hech qanday matn yoʻq. Siz bu sarlavhani boshqa sahifalardan [[Special:Search/{{PAGENAME}}|qidirishingiz]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tegishli loglarga qarashingiz] yoki bu sahifani [{{fullurl:{{FULLPAGENAME}}|action=edit}} tahrirlashingiz]</span> mumkin.',
 'clearyourcache' => "'''Etibor bering:''' O'zgartirishlaringiz ko'rish uchun, yangi moslamalaringizning saqlashdan keyin, brauser keshini tozalash kerak:<br />
 '''Mozilla / Firefox:''' ''Ctrl+Shift+R'', '''IE:''' ''Ctrl+F5'', '''Safari:''' ''Cmd+Shift+R'', '''Konqueror:''' ''F5'', '''Opera:''' ''Tools → Preferences'' orqali keshni tozalang.",
+'updated' => '(Yangilandi)',
+'note' => "'''Izoh:'''",
 'previewnote' => "'''Bu shunchaki ko‘rib chiqish. O‘zgartirishlar hali saqlangani yo‘q!'''",
 'editing' => '$1 tahrirlanmoqda',
 'editingsection' => '$1 (boʻlim) tahrirlanmoqda',
@@ -369,23 +513,45 @@ Siz shuningdek bu yozganlaringiz sizniki yoki erkin litsenziya ostida ekanligini
 Bundan tashqari, siz ushbu ma'lumotlarni o'zingiz yozgan bo'lishingiz yoki ruxsat berilgan internet manzilidan yoki shu kabi erkin resursdan nusxa olgan bo'lishingiz lozim (Qo'shimcha ma'lumotlar ushun $1 sahifasiga murojaat qiling).
 '''MUALLIFLIK HUQUQI QO'YILGAN ISHLARNI RUXSATSIZ BU YERGA JOYLASHTIRMANG!'''",
 'templatesused' => 'Ushbu sahifada foydalanilgan {{PLURAL:$1|andoza|andozalar}}:',
+'templatesusedpreview' => "Ushbu ko'rib chiqilayotgan sahifada foydalanilgan {{PLURAL:$1|andoza|andozalar}}:",
+'templatesusedsection' => "Ushbu bo'limda foydalanilgan {{PLURAL:$1|andoza|andozalar}}:",
 'template-protected' => '(himoyalangan)',
 'template-semiprotected' => '(yarim-himoyalangan)',
 'hiddencategories' => 'Ushbu sahifa {{PLURAL:$1|1 yashirin turkum|$1 yashirin turkumlar}}ga kiradi:',
-'nocreatetext' => 'Ushbu sayt yangi sahifa yaratishni taqiqlagan.
+'nocreatetitle' => 'Sahifalarni yaratish cheklangan',
+'nocreatetext' => 'Ushbu saytda yangi sahifalar yaratish taqiqlagan.
 Ortga qaytib, mavjud sahifani tahrirlashingiz yoki [[Special:UserLogin|tizimga kirishingiz]] mumkin.',
+'nocreate-loggedin' => "Sizda yangi sahifalar yaratishga ruxsat yo'q.",
+'sectioneditnotsupported-title' => "Bo'limlarni tahrirlash imkoniyati yo'q",
+'sectioneditnotsupported-text' => "Ushbu sahifada bo'limlarni tahrirlash imkoniyati yo'q.",
+'permissionserrors' => 'Ruxsat huquqida xato',
+'permissionserrorstext-withaction' => "Sizda quyidagi {{PLURAL:$1|sabab|sabablar}}ga ko'ra '''$2'''ga ruxsat mavjud emas:",
 'recreate-moveddeleted-warn' => "'''Diqqat: Siz avval yoʻqotilgan sahifani yana yaratmoqchisiz.'''
 
 Bu sahifani yaratishda davom etishdan avval uning nega avval yoʻqotilgani bilan qiziqib koʻring.
 Qulaylik uchun quyida yoʻqotilish qaydlari keltirilgan:",
 'moveddeleted-notice' => "Bu sahifa o'chirilgan.
 Ma'lumot uchun quyida o'chirishlar va qayta nomlashlar bo'yicha jurnallardan mos yozuvlar keltirilgan.",
+'log-fulllog' => "Qaydlarni to'liq ko'rish",
+'edit-conflict' => "Tashrirlash to'qnashuvi.",
+'defaultmessagetext' => "Boshlang'ich matn",
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Diqqat:''' Qo'llanilayotgan andozalarning jami hajmi juda katta.
+Ayrim andozalar qo'shilmaydi.",
+'post-expand-template-inclusion-category' => "Qo'llaniladigan andozalarning mumkin bo'lgan miqdoridan oshgan sahifalar",
+'post-expand-template-argument-category' => "Andozalarning to'ldirilmagan o'zgaruvchilariga ega sahifalar",
+
+# "Undo" feature
+'undo-summary' => '[[Special:Contributions/$2|$2]] tomonidan qilingan $1 tahriri qaytarildi ([[User talk:$2|mun.]])',
 
 # History pages
 'viewpagelogs' => 'Ushbu sahifaga doir qaydlarni koʻrsat',
+'nohistory' => "Ushbu sahifa uchun o'zgarishlar tarixi mavjud emas.",
 'currentrev' => 'Hozirgi koʻrinishi',
 'currentrev-asof' => '$1dagi, joriy koʻrinishi',
 'revisionasof' => '$1 paytdagi koʻrinishi',
+'revision-info' => '$1; $2 dagi versiya',
 'previousrevision' => '←Avvalgi koʻrinishi',
 'nextrevision' => 'Yangiroq koʻrinishi→',
 'currentrevisionlink' => 'Hozirgi koʻrinishi',
@@ -397,7 +563,7 @@ Ma'lumot uchun quyida o'chirishlar va qayta nomlashlar bo'yicha jurnallardan mos
 'histlegend' => 'Farqlar: solishtirish uchun kerakli radiobokslarni belgilang va pastdagi tugmani yoki Enterni bosing.<br />
 Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 (oxirgi) = avvalgi koʻrinish bilan farq, k = kichkina tahrir.',
-'history-fieldset-title' => 'Tarixni koʻr',
+'history-fieldset-title' => 'Tarixni koʻrish',
 'history-show-deleted' => 'Faqat o‘chirilganlari',
 'histfirst' => 'Eng avvalgi',
 'histlast' => 'Eng soʻnggi',
@@ -405,11 +571,21 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'historyempty' => '(boʻsh)',
 
 # Revision feed
+'history-feed-title' => "O'zgarishlar tarixi",
+'history-feed-description' => "Vikidagi mazkur sahifaning o'zgarishlar tarixi",
 'history-feed-item-nocomment' => '$1 $2 da',
 
 # Revision deletion
-'rev-delundel' => 'koʻrsat/yashir',
+'rev-deleted-comment' => "(tahrir izohi o'chirildi)",
+'rev-deleted-user' => "(ishtirokchi ismi o'chirildi)",
+'rev-deleted-event' => "(qayd yozuvi o'chirildi)",
+'rev-delundel' => 'koʻrsatish/yashirish',
 'rev-showdeleted' => 'koʻrsatish',
+'revdelete-show-file-submit' => 'Ha',
+'revdelete-hide-text' => 'Sahifaning ushbu versiyasi matnini yashirish',
+'revdelete-radio-same' => "(o'zgartirilmasin)",
+'revdelete-radio-set' => 'Ha',
+'revdelete-radio-unset' => "Yo'q",
 'revdelete-log' => 'Sabab:',
 'revdel-restore' => "Ko'rinuvchanlikni o'zgartirish",
 'revdel-restore-deleted' => "o'chirilgan versiyalar",
@@ -417,14 +593,31 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'revdelete-otherreason' => 'Boshqa/qoʻshimcha sabab:',
 'revdelete-reasonotherlist' => 'Boshqa sabab',
 
+# History merging
+'mergehistory' => 'Tahrirlar tarixlarini birlashtirish',
+'mergehistory-box' => 'Ikkita sahifa tahrirlari tarixini birlashtirish:',
+'mergehistory-from' => 'Manba sahifa:',
+'mergehistory-into' => "Mo'ljal sahifa:",
+'mergehistory-list' => 'Birlashtiriladigan tahrirlar tarixi',
+'mergehistory-go' => "Birlashtiriladigan tahrirlarni ko'rsatish",
+'mergehistory-submit' => 'Tahrirlarni birlashtirish',
+'mergehistory-reason' => 'Sabab:',
+
 # Merge log
+'mergelog' => 'Birlashtirish qaydlari',
+'pagemerge-logentry' => "[[$1]] va [[$2]]lar birlashtirildi ($3 gacha bo'lgan versiyalar)",
 'revertmerge' => "Bo'lish",
 
 # Diffs
-'history-title' => '"$1"ning tarixi',
+'history-title' => "$1 - o'zgarishlar tarixi",
+'difference-title' => '$1 — versiyalar orasidagi farq',
+'difference-title-multipage' => '"$1" va "$2" sahifalar orasidagi farq',
+'difference-multipage' => '(Sahifalar orasidagi farq)',
 'lineno' => 'Qator $1:',
 'compareselectedversions' => 'Tanlangan versiyalarni solishtir',
-'editundo' => 'qaytar',
+'showhideselectedversions' => "Tanlangan versiyalarni ko'rsatish/yashirish",
+'editundo' => 'qaytarish',
+'diff-multi' => "({{PLURAL:$2|$2 ta foydalanuvching}} {{PLURAL:$1|$1 ta oraliq versiyasi|$1 ta oraliq versiyalari}} ko'rsatilmadi)",
 
 # Search results
 'searchresults' => 'Qidiruv natijalari',
@@ -432,72 +625,112 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'searchresulttext' => "{{SITENAME}}da qidirish haqida qo'shimcha ma'lumotga ega bo'lishini xoxlasangiz, [[{{MediaWiki:Helppage}}|{{SITENAME}}da qidiruv]] sahifasini o'qing.",
 'searchsubtitle' => '\'\'\'[[:$1]]\'\'\'ni qidirdingiz ([[Special:Prefixindex/$1|"$1" bilan boshlanadigan sahifalar]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"ga bogʻlangan sahifalar]])',
 'searchsubtitleinvalid' => "'''$1'''ni qidirdingiz",
+'toomanymatches' => "Juda ko'p o'xshashliklar topildi, iltimos, boshqa so'rov bilan urinib ko'ring",
+'titlematches' => 'Sahifalar nomlaridagi mos kelishlar',
 'notitlematches' => 'Bunday sarlavha topilmadi',
+'textmatches' => 'Sahifalar matnlaridagi mos kelishlar',
 'notextmatches' => 'Bunday matn topilmadi',
-'prevn' => 'oldingi $1',
+'prevn' => 'oldingi {{PLURAL:$1|$1}}',
 'nextn' => 'keyingi {{PLURAL:$1|$1}}',
 'prevn-title' => 'Avvalgi $1 {{PLURAL:$1|natija|natijalar}}',
 'nextn-title' => 'Keyingi $1 {{PLURAL:$1|natija|natijalar}}',
-'shown-title' => 'Har sahifada $1 natija koʻrsat',
+'shown-title' => 'Sahifada $1 ta {{PLURAL:$1|natija}} koʻrsatish',
 'viewprevnext' => 'Koʻrish ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Qidiruv shartlari',
 'searchmenu-exists' => "'''Ushbu vikida \"[[:\$1]]\" nomli sahifa mavjud.'''",
-'searchmenu-new' => "'''Ushbu vikida \"[[:\$1]]\" sahifani yarat!'''",
+'searchmenu-new' => "'''Ushbu vikida \"[[:\$1]]\" sahifasini yarat!'''",
 'searchhelp-url' => 'Help:Mundarija',
+'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Ushbu prefiks mavjud bo'lgan sahifalarni ko'rsatish]]",
 'searchprofile-articles' => 'Asosiy sahifalar',
-'searchprofile-project' => 'Yordam va proekt sahifalari.',
+'searchprofile-project' => 'Yordam va Loyiha sahifalari',
 'searchprofile-images' => 'Multimediya',
 'searchprofile-everything' => 'Har yerda',
 'searchprofile-advanced' => 'Kengaytirilgan',
-'searchprofile-articles-tooltip' => '$1da qidir',
-'searchprofile-project-tooltip' => '$1da qidir',
+'searchprofile-articles-tooltip' => '$1da qidirish',
+'searchprofile-project-tooltip' => '$1da qidirish',
 'searchprofile-images-tooltip' => 'Fayllarni qidir',
-'search-result-size' => '$1 ({{PLURAL:$2|1 soʻz|$2 soʻz}})',
+'searchprofile-everything-tooltip' => "Barcha sahifalardan (munozara sahifalarini qo'shgan holda) qidirish",
+'searchprofile-advanced-tooltip' => 'Belgilangan nomfazolardan qidirish',
+'search-result-size' => '$1 ({{PLURAL:$2|1 ta soʻz|$2 ta soʻz}})',
+'search-result-category-size' => "$1 {{PLURAL:$1|a'zo|a'zolar}} ($2 {{PLURAL:$2|ostturkum|ostturkumlar}}, $3 {{PLURAL:$3|fayl|fayllar}}).",
+'search-result-score' => 'Relavantlik: $1%.',
 'search-redirect' => '(yoʻnaltirish $1)',
 'search-section' => '($1 boʻlimi)',
 'search-suggest' => 'Balki buni nazarda tutgandirsiz: $1',
+'search-interwiki-caption' => 'Aloqador loyihalar',
 'search-interwiki-default' => '$1 natijalar:',
+'search-interwiki-more' => '(yana)',
+'search-relatedarticle' => "Bog'liq",
+'mwsuggest-disable' => "AJAX-takliflarini o'chirish",
 'searcheverything-enable' => 'Barcha nomfazolarda qidir',
 'searchrelated' => "bog'langan",
 'searchall' => 'barchasi',
-'showingresults' => "#<b>$2</b> boshlanayotgan <b>$1</b> natijalar ko'rsatilyapti.",
+'showingresults' => "Quyida №'''$2'''dan boshlab '''$1''' ta {{PLURAL:$1|natija}} ko'rsatildi.",
+'showingresultsnum' => "Quyida №'''$2'''dan boshlab '''$1''' ta {{PLURAL:$1|natija}} ko'rsatildi.",
 'showingresultsheader' => "$4 uchun {{PLURAL:$5|'''$3'''dan '''$1''' natija|'''$3'''dan '''$1 - $2''' natijalar}}",
 'search-nonefound' => 'Talabga javob beradigan natija topilmadi.',
 'powersearch' => 'Qidiruv',
 'powersearch-legend' => 'Kengaytirilgan qidiruv',
 'powersearch-ns' => 'Bu nom-fazolarda izla:',
 'powersearch-redir' => 'Yoʻnaltirishlarni koʻrsat',
-'powersearch-field' => 'Qidir',
+'powersearch-field' => 'Qidiruv',
+'powersearch-togglelabel' => 'Belgilash:',
+'powersearch-toggleall' => 'Hammasini',
+'powersearch-togglenone' => 'Hech qaysini',
+'search-external' => 'Tashqi qidiruv',
+
+# Quickbar
+'qbsettings' => 'Saytda harakatlanish darchasi',
+'qbsettings-none' => "Ko'rsatmaslik",
+'qbsettings-fixedleft' => "Qo'zg'almas chap",
+'qbsettings-fixedright' => "Qo'zg'almas o'ng",
+'qbsettings-floatingleft' => 'Suzuvchi chap',
+'qbsettings-floatingright' => "Suzuvchi o'ng",
 
 # Preferences page
 'preferences' => 'Moslamalar',
 'mypreferences' => 'Moslamalarim',
 'prefs-edits' => 'Tahrirlar soni',
+'prefsnologin' => "Siz tizimda o'zingizni tanitmadingiz",
 'changepassword' => 'Maxfiy soʻzni oʻzgartirish',
 'prefs-skin' => 'Tashqi ko‘rinishi',
+'skin-preview' => 'Ko‘rib chiqish',
 'datedefault' => 'Farqi yoʻq',
+'prefs-beta' => 'Beta-imkoniyatlar',
 'prefs-datetime' => 'Sana va vaqt',
+'prefs-labs' => 'Tajribaviy imkoniyatlar',
+'prefs-user-pages' => 'Foydalanuvchi sahifalari',
 'prefs-personal' => 'Shaxsiy ma’lumotlar',
 'prefs-rc' => 'Yangi o‘zgartirishlar',
 'prefs-watchlist' => "Kuzatuv ro'yxati",
-'prefs-watchlist-days-max' => 'Eng ko‘pi $1 {{PLURAL:$1|kun|kun}}',
+'prefs-watchlist-days' => 'Kunlar soni:',
+'prefs-watchlist-days-max' => 'Eng ko‘pi bilan $1 {{PLURAL:$1|kun}}',
+'prefs-watchlist-edits-max' => 'Eng katta son: 1000',
 'prefs-misc' => 'Boshqa moslamalar',
 'prefs-resetpass' => 'Maxfiy soʻzni oʻzgartirish',
 'prefs-changeemail' => 'E-mail manzilingizni o‘zgartirish',
+'prefs-email' => 'Elektron pochta moslamalari',
 'prefs-rendering' => 'Tashqi ko‘rinishi',
 'saveprefs' => 'Saqlash',
 'resetprefs' => 'Bekor qilish',
-'restoreprefs' => 'Barcha moslamalarni dastlabki holiga qaytar',
+'restoreprefs' => 'Barcha moslamalarni dastlabki holatiga qaytarish',
 'prefs-editing' => 'Tahrirlash',
 'prefs-edit-boxsize' => 'Tahrir oynasining oʻlchami',
 'rows' => 'Qatorlar soni:',
 'columns' => 'Ustunlar soni:',
-'searchresultshead' => 'Qidiruv natijalari',
+'searchresultshead' => 'Qidiruv',
+'resultsperpage' => 'Sahifaga topilgan yozuvlar miqdori',
+'stub-threshold' => '<a href="#" class="stub">Tayyorlanmaga havolalar</a>ni rasmiylashtirish uchun boshlash ostonasi (baytlarda).',
+'stub-threshold-disabled' => "O'chirib qo'yilgan",
 'recentchangesdays-max' => 'Eng koʻpi $1 kun',
 'recentchangescount' => 'Sukut boʻyicha koʻrsatiladigan tahrirlar soni',
 'timezonelegend' => 'Vaqt mintaqangiz:',
 'localtime' => 'Mahalliy vaqt:',
+'timezoneuseserverdefault' => 'Server moslamalaridan foydalanish ($1)',
+'timezoneuseoffset' => "Boshqa (siljishni ko'rsating)",
+'timezoneoffset' => 'Siljish¹:',
 'servertime' => 'Server vaqti:',
+'guesstimezone' => "Brauzerdan to'ldirish",
 'timezoneregion-africa' => 'Afrika',
 'timezoneregion-america' => 'Amerika',
 'timezoneregion-antarctica' => 'Antarktika',
@@ -509,10 +742,14 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'timezoneregion-indian' => 'Hind okeani',
 'timezoneregion-pacific' => 'Tinch okeani',
 'allowemail' => 'Boshqa foydalanuvchilardan elektron xat olishga ruxsat berish',
-'prefs-searchoptions' => 'Qidiruv shartlari',
+'prefs-searchoptions' => 'Qidiruv',
 'prefs-namespaces' => 'Nomfazolar',
-'defaultns' => 'Aks holda quyidagi nomfazolarda qidir:',
+'defaultns' => 'Aks holda quyidagi nomfazolardan qidirish:',
+'default' => "boshlang'ich",
 'prefs-files' => 'Fayllar',
+'prefs-custom-css' => 'Shaxsiy CSS',
+'prefs-custom-js' => 'Shaxsiy JavaScript',
+'prefs-common-css-js' => "Barcha tashqi ko'rinishlar uchun umumiy CSS/JavaScript:",
 'prefs-emailconfirm-label' => 'Elektron pochta manzilini tasdiqlash:',
 'prefs-textboxsize' => 'Tahrir oynasining oʻlchami',
 'youremail' => 'E-mail:',
@@ -522,15 +759,24 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'prefs-registration' => 'Hisob ochilgan vaqt',
 'yourrealname' => 'Haqiqiy ism *:',
 'yourlanguage' => 'Til:',
+'yourvariant' => 'Tarkib tili varianti',
+'prefs-help-variant' => "Viki sahifalari matnini tasvirlash uchun ma'qul ko'rilgan til varianti",
 'yournick' => 'Yangi imzo',
 'prefs-help-signature' => 'Munozara sahifalarida imzo "<nowiki>~~~~</nowiki>" orqali qoʻyiladi (u sizning imzoingiz va joriy vaqtga aylantiriladi).',
 'yourgender' => 'Jinsi:',
 'gender-unknown' => 'Koʻrsatilmagan',
 'gender-male' => 'Erkak',
 'gender-female' => 'Ayol',
+'prefs-help-gender' => "Ixtiyoriy: Foydalanuvching jinsiga bog'liq bo'lgan loyihaning ayrim xabarlarida foydalaniladi.
+Ushbu axborot ommaviy xususiyatga ega bo'ladi.",
 'email' => 'E-mail:',
+'prefs-help-realname' => "Haqiqiy ism (ixtiyoriy maydon).
+Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini ko'rsatish uchun foydalaniladi.",
+'prefs-help-email' => "Elektron pochta manzilini ko'rsatish majburiy emas, lekin u siz maxfiy so'zni unutib qo'ysangiz kerak bo'lishi mumkin.",
+'prefs-help-email-others' => "U shuningdek, sizning elektron pochtangiz manzilini oshkora qilmasdan, boshqa ishtirokchilar bilan shaxsiy sahifangiz orqali bog'lanish imkonini ham beradi.",
 'prefs-help-email-required' => 'E-mail manzilni koʻrsatish shart emas',
 'prefs-info' => 'Asosiy maʼlumot',
+'prefs-i18n' => 'Internatsionallashtirish',
 'prefs-signature' => 'Imzo',
 'prefs-dateformat' => 'Sana formati',
 'prefs-timeoffset' => 'Vaqt farqi',
@@ -539,10 +785,17 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'prefs-advancedrendering' => 'Qoʻshimcha moslamalar',
 'prefs-advancedsearchoptions' => 'Qoʻshimcha moslamalar',
 'prefs-advancedwatchlist' => 'Qoʻshimcha moslamalar',
+'prefs-displayrc' => 'Tasvirlash moslamalari',
+'prefs-displaysearchoptions' => 'Tasvirlash moslamalari',
+'prefs-displaywatchlist' => 'Tasvirlash moslamalari',
+'prefs-diffs' => 'Versiyalar farqi',
 
 # User rights
 'userrights-groupsmember' => 'Aʼzolik:',
+'userrights-groupsmember-auto' => "Noaniq a'zo",
 'userrights-reason' => 'Sabab:',
+'userrights-changeable-col' => "Siz o'zgartirishingiz mumkin bo'lgan guruhlar",
+'userrights-unchangeable-col' => "Siz o'zgartira olmaydigan guruhlar",
 
 # Groups
 'group' => 'Guruh',
@@ -552,6 +805,14 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'group-sysop' => 'Administratorlar',
 'group-bureaucrat' => 'Rasmiyatchilar',
 'group-suppress' => 'Tekshiruvchilar',
+'group-all' => '(hamma)',
+
+'group-user-member' => '{{GENDER:$1|ishtirokchi}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|avtotasdiqlangan ishtirokchi}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|administrator}}',
+'group-bureaucrat-member' => '{{GENDER:$1|rasmiyatchi}}',
+'group-suppress-member' => '{{GENDER:$1|tekshiruvchi}}',
 
 'grouppage-user' => '{{ns:project}}:Foydalanuvchilar',
 'grouppage-autoconfirmed' => '{{ns:project}}:Tasdiqlangan foydalanuvchilar',
@@ -560,20 +821,32 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'grouppage-bureaucrat' => '{{ns:project}}:Rasmiyatchilar',
 'grouppage-suppress' => '{{ns:project}}:Tekshiruvchilar',
 
+# Rights
+'right-read' => "Sahifalarni o'qish",
+'right-edit' => 'Sahifalarni tahrirlash',
+
+# User rights log
+'rightslog' => "Ishtirokchi huquqlari bo'yicha qaydlar",
+'rightslogentry' => "ishtirokchi $1ning guruhlardagi a'zoligini $2dan $3ga o'zgartirdi",
+
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'ushbu sahifani tahrirlash',
-'action-move' => 'bu sahifani koʻchir',
-'action-move-subpages' => 'Bu sahifani va uning ostsahifalarini koʻchir',
+'action-move' => 'bu sahifani koʻchirish',
+'action-move-subpages' => 'Bu sahifani va uning ostsahifalarini koʻchirish',
+'action-sendemail' => "elektron xatlar jo'natish",
 
 # Recent changes
+'nchanges' => "$1 {{PLURAL:$1|o'zgarish|o'zgarishlar}}",
 'recentchanges' => 'Yangi o‘zgartirishlar',
 'recentchanges-legend' => 'Yangi tahrirlar moslamalari',
 'recentchanges-summary' => "Bu sahifada siz oxirgi o'zgartirishlarni ko'rishingiz mumkin.",
+'recentchanges-feed-description' => "Vikida mazkur oqimdagi oxirgi o'zgarishlarni kuzatish",
 'recentchanges-label-newpage' => 'Bu tahrir orqali yangi sahifa yaratildi',
 'recentchanges-label-minor' => 'Bu kichik tahrir',
 'recentchanges-label-bot' => 'Bu tahrirni bot bajardi',
 'recentchanges-label-unpatrolled' => 'Bu tahrir hali tekshirilmagan',
 'rcnote' => "Quyida $5, $4ga koʻra oxirgi {{PLURAL:$2|kun|'''$2''' kun}} davomida sodir boʻlgan {{PLURAL:$1|'''1''' oʻzgartirish|'''$1''' oʻzgartirishlar}} koʻrsatilgan.",
+'rcnotefrom' => "Quyida <strong>$2</strong> dan (<strong>$1</strong> gacha) bo'lgan o'zgarishlar keltirilgan.",
 'rclistfrom' => "$1dan boshlab yangi o'zgartirishlarni ko'rsat.",
 'rcshowhideminor' => 'Kichik tahrirlarni $1',
 'rcshowhidebots' => '$1 ta bot',
@@ -584,13 +857,14 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'rclinks' => "Oxirgi $2 kun davomida sodir bo'lgan $1 o'zgartirishlarni ko'rsat.<br />$3",
 'diff' => 'farq',
 'hist' => 'tarix',
-'hide' => 'yashirish',
-'show' => 'koʻrsat',
+'hide' => 'Yashirish',
+'show' => 'Koʻrsatish',
 'minoreditletter' => 'k',
 'newpageletter' => 'Y',
 'boteditletter' => 'b',
-'rc-enhanced-expand' => 'Tasfilotlarni koʻrsat (JavaScript talab qilinadi)',
-'rc-enhanced-hide' => 'Tafsilotlolarni yashir',
+'rc-enhanced-expand' => 'Tasfilotlarni koʻrsatish (JavaScript talab qilinadi)',
+'rc-enhanced-hide' => 'Tafsilotlolarni yashirish',
+'rc-old-title' => 'dastlab "$1" sifatida yaratilgan',
 
 # Recent changes linked
 'recentchangeslinked' => 'Bogʻlangan oʻzgarishlar',
@@ -600,16 +874,22 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'recentchangeslinked-noresult' => 'Berilgan davrda bogʻlangan sahifalarda oʻzgarishlar boʻlmagan.',
 'recentchangeslinked-summary' => "Ushbu maxsus sahifa unga bogʻlangan sahifalardagi soʻnggi oʻzgarishlarni koʻrsatadi. [[Special:Watchlist|Kuzatuv roʻyxatingizdagi]] sahifalar '''qalin''' qilib koʻrsatilgan.",
 'recentchangeslinked-page' => 'Sahifa nomi:',
+'recentchangeslinked-to' => "Teskarisiga, ko'rsatilgan sahifaga yo'naltirilgan sahifalardagi o'zgarishlarni ko'rish",
 
 # Upload
 'upload' => 'Fayl yuklash',
-'uploadbtn' => 'Fayl yukla',
+'uploadbtn' => 'Fayl yuklash',
 'uploaderror' => 'Yuklashda xatolik',
 'uploadlogpage' => 'Yuklash qaydlari',
+'filename' => 'Fayl nomi',
 'filedesc' => 'Qisqa izoh',
+'fileuploadsummary' => 'Qisqa izoh:',
 'filereuploadsummary' => 'Fayldagi oʻzgarishlar:',
+'filestatus' => 'Tarqatish shartlari:',
 'filesource' => 'Manba:',
-'uploadedimage' => '"[[$1]]" yuklandi',
+'uploadedfiles' => 'Yuklangan fayllar',
+'uploadedimage' => '"[[$1]]"ni yukladi',
+'overwroteimage' => '"[[$1]]"ning yangi versiyasini yukladi',
 
 'license' => 'Litsenziyalash:',
 'license-header' => 'Litsenziyalash',
@@ -617,37 +897,49 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 # Special:ListFiles
 'imgfile' => 'fayl',
 'listfiles' => 'Fayllar roʻyxati',
+'listfiles_thumb' => 'Miniatura',
 'listfiles_date' => 'Sana',
+'listfiles_name' => 'Nomi',
 'listfiles_user' => 'Foydalanuvchi',
 'listfiles_size' => 'Oʻlchami',
 'listfiles_description' => 'Taʻrif',
+'listfiles_count' => 'Versiyalar',
 
 # File description page
 'file-anchor-link' => 'Fayl',
 'filehist' => 'Fayl tarixi',
 'filehist-help' => 'Faylning biror paytdagi holatini koʻrish uchun tegishli sana/vaqtga bosingiz.',
+'filehist-deleteall' => "barini o'chirish",
 'filehist-deleteone' => 'o‘chirish',
 'filehist-revert' => 'qaytarish',
 'filehist-current' => 'joriy',
 'filehist-datetime' => 'Sana/Vaqt',
-'filehist-thumb' => 'Miniatyura',
+'filehist-thumb' => 'Miniatura',
+'filehist-thumbtext' => '$1 dagi versiya uchun tasvir',
+'filehist-nothumb' => "Miniatura yo'q",
 'filehist-user' => 'Foydalanuvchi',
 'filehist-dimensions' => 'Oʻlchamlari',
 'filehist-filesize' => 'Fayl hajmi',
 'filehist-comment' => 'Izoh',
+'filehist-missing' => 'Fayl mavjud emas',
 'imagelinks' => 'Fayllarga ishoratlar',
 'linkstoimage' => 'Bu faylga quyidagi {{PLURAL:$1|sahifa|$1 sahifalar}} bogʻlangan:',
 'nolinkstoimage' => 'Bu faylga bogʻlangan sahifalar yoʻq.',
 'sharedupload' => 'This file is from $1 and may be used by other projects.',
 'sharedupload-desc-here' => 'Ushbu fayl $1dan boʻlib, boshqa loyihalarda ham ishlatilishi mumkin.
 Uning [$2 fayl tavsifi sahifasidan] olingan tavsifi quyida keltirilgan.',
-'uploadnewversion-linktext' => 'Bu faylning yangi versiyasini yukla',
+'uploadnewversion-linktext' => 'Bu faylning yangi versiyasini yuklash',
 
 # File reversion
 'filerevert-comment' => 'Sabab:',
 
 # File deletion
 'filedelete-comment' => 'Sabab:',
+'filedelete-submit' => 'O‘chirish',
+
+# MIME search
+'mimetype' => 'MIME-tur:',
+'download' => 'yuklash',
 
 # Unused templates
 'unusedtemplates' => 'Ishlatilinmagan andozalar',
@@ -662,8 +954,9 @@ Uning [$2 fayl tavsifi sahifasidan] olingan tavsifi quyida keltirilgan.',
 'disambiguationspage' => '{{ns:template}}:Disambig',
 
 # Miscellaneous special pages
-'nbytes' => '$1 bayt',
+'nbytes' => '$1 {{PLURAL:$1|bayt}}',
 'ncategories' => '$1 {{PLURAL:$1|turkum|turkumlar}}',
+'nmembers' => "$1 {{PLURAL:$1|ta a'zo}}",
 'lonelypages' => 'Yetim sahifalar',
 'uncategorizedpages' => 'Turkumlashtirilmagan sahifalar',
 'uncategorizedcategories' => 'Turkumlashtirilmagan turkumlar',
@@ -673,32 +966,43 @@ Uning [$2 fayl tavsifi sahifasidan] olingan tavsifi quyida keltirilgan.',
 'unusedimages' => 'Ishlatilinmagan fayllar',
 'wantedcategories' => 'Talab qilinayotgan turkumlar',
 'mostcategories' => 'Eng koʻp turkumli sahifalar',
+'prefixindex' => 'Prefiksli barcha sahifalar',
 'protectedpages' => 'Himoyalangan sahifalar',
 'listusers' => 'Foydalanuvchilar roʻyxati',
+'usercreated' => "$1 $2da {{GENDER:$3|ro'yxatdan o'tdi}}",
 'newpages' => 'Yangi sahifalar',
 'move' => 'Ko‘chirish',
-'movethispage' => 'Bu sahifani koʻchir',
+'movethispage' => 'Bu sahifani koʻchirish',
 'pager-newer-n' => '{{PLURAL:$1|yangiroq 1|yangiroq $1}}',
 'pager-older-n' => '{{PLURAL:$1|eskiroq 1|eskiroq $1}}',
+'suppress' => 'Bekitish',
 
 # Book sources
-'booksources' => 'Kitob manbaʻlar',
+'booksources' => 'Kitob manbalari',
+'booksources-search-legend' => "Kitob haqida ma'lumot qidirish",
 'booksources-go' => 'O‘tish',
 
 # Special:Log
+'specialloguserlabel' => 'Ijrochi:',
+'speciallogtitlelabel' => "Mo'ljal (nom yoki ishtirokchi):",
 'log' => 'Qaydlar',
-'all-logs-page' => 'Barcha qaydlar',
+'all-logs-page' => 'Barcha ochiq qaydlar',
+'log-title-wildcard' => 'Shu matndan boshlanuvchi sarlavhalarni izlash',
 
 # Special:AllPages
 'allpages' => 'Barcha sahifalar',
 'alphaindexline' => '$1 dan $2 ga',
 'nextpage' => 'Keyingi sahifa ($1)',
 'prevpage' => 'Avvalgi sahifa ($1)',
-'allpagesfrom' => 'Sahifalarni koʻrsat:',
+'allpagesfrom' => 'Quyidagidan boshlanuvchi sahifalarni koʻrsatish:',
 'allarticles' => 'Barcha sahifalar',
+'allpagesprev' => 'Oldingi',
 'allpagesnext' => 'Keyingi',
-'allpagessubmit' => 'Oʻt',
-'allpagesprefix' => 'Bunday prefiksli sahifalarni koʻrsat:',
+'allpagessubmit' => 'Oʻtish',
+'allpagesprefix' => 'Shunday prefiksli sahifalarni koʻrsatish:',
+
+# SpecialCachedPage
+'cachedspecial-refresh-now' => "Oxirgi versiyasini ko'rish",
 
 # Special:Categories
 'categories' => 'Turkumlar',
@@ -712,9 +1016,13 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:LinkSearch
 'linksearch-ns' => 'Nomfazo:',
 'linksearch-ok' => 'Qidirish',
+'linksearch-line' => '$2 ichidan $1 ga havola',
 
 # Special:ListUsers
-'listusers-submit' => 'Koʻrsat',
+'listusers-submit' => 'Koʻrsatish',
+
+# Special:Log/newusers
+'newuserlogpage' => "Ishtirokchilarni ro'yxatga olish qaydlari",
 
 # Special:ListGroupRights
 'listgrouprights-group' => 'Guruh',
@@ -722,69 +1030,178 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listgrouprights-members' => '(a’zolar ro‘yxati)',
 
 # E-mail user
-'emailuser' => 'Bu foydalanuvchiga e-maktub joʻnat',
+'emailuser' => 'Bu foydalanuvchiga e-maktub',
 'noemailtext' => "Bu foydalanuvchi e-mail manzil ko'rsatgani yo'q.",
+'emailtarget' => 'Oluvchi ishtirokchining ismini kiriting',
+'emailusername' => 'Ishtirokchi nomi:',
+'emailusernamesubmit' => "Jo'natish",
+'email-legend' => "Boshqa {{SITENAME}} ishtirokchisiga xat jo'natish",
+'emailfrom' => 'Kimdan:',
+'emailto' => 'Kimga:',
+'emailsubject' => 'Sarlavha:',
+'emailmessage' => 'Xabar',
 'emailsend' => 'Joʻnatish',
+'emailsent' => "Xat jo'natildi",
+
+# User Messenger
+'usermessage-summary' => 'Tizimli xabar qoldirish.',
+'usermessage-editor' => 'Tizimli etkazish',
 
 # Watchlist
 'watchlist' => 'Kuzatuv roʻyxatim',
 'mywatchlist' => 'Kuzatuv roʻyxatim',
+'watchlistfor2' => '$1 $2 uchun',
 'nowatchlist' => "Kuzatuv ro'yxatingizda hech narsa yo'q.",
+'watchnologin' => "Siz tizimda o'zingizni tanishtirmadingiz",
+'addwatch' => "Kuzatuv ro'yxatiga qo'shish",
 'addedwatchtext' => "\"[[:\$1]]\" sahifasi sizning [[Special:Watchlist|kuzatuv ro'yxatingizga]] qo'shildi. Bu sahifada va unga mos munozara sahifasida bo'ladigan kelajakdagi o'zgarishlar bu yerda ro'yxatga olinadi, hamda bu sahifa topish qulay bo'lishi uchun [[Special:RecentChanges|yangi o'zgarishlar ro'yxati]]da '''qalin''' harflar bilan ko'rsatiladi.
 
 Agar siz bu sahifani kuzatuv ro'yxatingizdan o'chirmoqchi bo'lsangiz \"Kuzatmaslik\" yozuvini bosing.",
+'removewatch' => "Kuzatuv ro'yxatidan o'chirish",
 'removedwatchtext' => '"[[:$1]]" sahifasi kuzatuv ro\'yxatingizdan o\'chirildi.',
-'watch' => 'kuzatish',
+'watch' => 'Kuzatish',
 'watchthispage' => 'Sahifani kuzatish',
-'unwatch' => 'kuzatmaslik',
+'unwatch' => 'Kuzatmaslik',
+'unwatchthispage' => "Kuzatuvni to'xtatish",
+'notanarticle' => 'Maqola emas',
+'watchlist-details' => "Sizning kuzatuv ro'yxatingizda $1 {{PLURAL:$1|ta sahifa}} (munozara sahifalarini hisobga olmaganda)",
 'wlnote' => "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
 'wlshowlast' => 'Oxirgi $1 soatdagi $2 kundagi tahrirlarni ko‘rsatish. $3 tahrirlarni ko‘rsatish',
 'watchlist-options' => "Kuzatuv ro'yxati moslamalari",
 
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Kuzatish...',
+'unwatching' => "Kuzatuv ro'yxatidan o'chirish...",
+
+'enotif_mailer' => "{{SITENAME}} Pochta orqali e'lon qilish xizmati",
+'enotif_reset' => "Hamma sahifalarni ko'rib chiqilgan deb belgilash",
+'enotif_newpagetext' => 'Bu yangi sahifa',
+'enotif_impersonal_salutation' => '{{SITENAME}} ishtirokchisi',
+'changed' => 'o‘zgartirildi',
+'created' => 'yaratildi',
+'enotif_subject' => '"{{SITENAME}}" loyihasining $PAGETITLE sahifasi $PAGEEDITOR tomonidan $CHANGEDORCREATED',
+'enotif_lastvisited' => "Oxirgi tashrifingizdan buyon sodir bo'lgan barcha o'zgarishlarni ko'rish uchun $1 ga qarang.",
+'enotif_lastdiff' => "O'zgarishlar bilan tanishish uchun $1 ga qarang.",
+'enotif_anon_editor' => 'anonim ishtirokchi $1',
+'enotif_body' => "Hurmatli \$WATCHINGUSERNAME,
+
+\$PAGEEDITDATE kuni \"{{SITENAME}}\" loyihasining \$PAGETITLE sahifasi ishtirokchi \$PAGEEDITOR tomonidan \$CHANGEDORCREATED, joriy versiyani ko'rish uchun \$PAGETITLE_URL havolasi bo'yicha o'ting.
+
+\$NEWPAGE
+
+O'zgarish bo'yicha qisqacha izoh: \$PAGESUMMARY \$PAGEMINOREDIT
+
+Tahrirlovchiga murojaat qilish:
+el. pochta: \$PAGEEDITOR_EMAIL
+viki: \$PAGEEDITOR_WIKI
+
+Agar siz sahifaga o'tib ko'rmasangiz, u holda uning keyingi o'zgarishlari bo'yicha boshqa bildirish xabarlari kelmaydi.
+Siz shuningdek o'zingizning kuzatuv ro'yxatingizda barcha sahifalar uchun bildirish moslamasini o'chirishingiz mumkin.
+
+             {{grammar:genitive|{{SITENAME}}}}ning axborot berish tizimi
+
+--
+Bildirishlar moslamalarini o'zgartirish
+{{canonicalurl:{{#special:Preferences}}}}
+
+O'zingizning kuzatuv ro'yxatingiz moslamalarini o'zgartirish
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Sizning kuzatuv ro'yxatingizdagi sahifalarni o'chirish
+\$UNWATCHURL
+
+Qayta aloqa va yordam
+{{canonicalurl:{{MediaWiki:Helppage}}}}",
+
 # Delete
+'deletepage' => "Sahifani o'chirish",
+'confirm' => 'Tasdiqlash',
 'actioncomplete' => 'Bajarildi',
 'actionfailed' => 'Jarayon amalga oshmadi',
 'deletedtext' => '"$1" yoʻqotildi.
 Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'dellogpage' => 'Yoʻqotish qaydlari',
+'deletionlog' => 'yoʻqotish qaydlari',
 'deletecomment' => 'Sabab:',
 'deleteotherreason' => 'Boshqa/qoʻshimcha sabab:',
 'deletereasonotherlist' => 'Boshqa sabab',
 
 # Rollback
-'rollbacklink' => 'eski holiga keltir',
+'rollbacklink' => 'eski holiga keltirish',
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|munozara]]) tahrirlari [[User:$1|$1]] versiyasiga qaytarildi',
 
 # Protect
 'protectlogpage' => 'Himoyalash qaydlari',
 'protectedarticle' => '"[[$1]]" sahifasi himoyalandi',
+'modifiedarticleprotection' => '"[[$1]]" uchun himoyalash darajasini o\'zgartirdi',
+'movedarticleprotection' => 'himoyalash moslamalarini "[[$2]]"dan "[[$1]]"ga o\'tkazdi',
 'protect-level-sysop' => 'Faqat administratorlar uchun',
-'protect-expiry-options' => '2 soat:2 hours,1 kun:1 day,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite',
+'protect-expiry-indefinite' => 'muddatsiz',
+'protect-edit-reasonlist' => "Sabablar ro'yxatini tahrirlash",
+'protect-expiry-options' => '1 soat:1 hours,1 kun:1 day,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite',
+'restriction-type' => 'Huquqlar:',
+'restriction-level' => 'Ruxsat etilganlik darajasi:',
+'minimum-size' => 'Eng kichik hajm',
+'maximum-size' => 'Eng katta hajm:',
+'pagesize' => '(bayt)',
 
 # Restrictions (nouns)
 'restriction-edit' => 'Tahrirlash',
+'restriction-move' => "Ko'chirish",
+'restriction-create' => 'Yaratish',
+'restriction-upload' => 'Yuklash',
+
+# Restriction levels
+'restriction-level-sysop' => "to'liq himoya",
+'restriction-level-autoconfirmed' => 'qisman himoya',
+'restriction-level-all' => 'barcha darajalar',
 
 # Undelete
-'undeletebtn' => 'Qayta tikla',
+'undelete' => "O'chirilgan sahifalarni ko'rish",
+'undeletepage' => "O'chirilgan sahifalarni ko'rish va tiklash",
+'viewdeletedpage' => "O'chirilgan sahifalarni ko'rish",
+'undelete-nodiff' => 'Oldingi versiya topilmadi.',
+'undeletebtn' => 'Tiklash',
 'undeletelink' => 'ko‘rib chiqish/tiklash',
 'undeleteviewlink' => "ko'rib chiqish",
+'undeletereset' => 'Tozalash',
+'undeleteinvert' => 'Tanlash tartibini almashtirish',
+'undeletecomment' => 'Sabab:',
+'undelete-search-title' => "O'chirilgan sahifalarni qidirish",
+'undelete-search-box' => "O'chirilgan sahifalarni qidirish",
+'undelete-search-prefix' => "Bundan boshlangan sahifalarni ko'rsatish:",
+'undelete-search-submit' => 'Qidirish',
+'undelete-show-file-submit' => 'Ha',
 
 # Namespace form on various pages
-'namespace' => 'Soha:',
+'namespace' => 'Nomfazo:',
 'invert' => 'Tanlash tartibini almashtirish',
+'namespace_association' => "Bog'liq nomfazo",
 'blanknamespace' => '(asosiy)',
 
 # Contributions
 'contributions' => 'Foydalanuvchining hissasi',
+'contributions-title' => '$1 {{GENDER:$1|foydalanuvchisining}} hissasi',
 'mycontris' => 'Hissam',
 'contribsub2' => '$1 uchun ($2)',
+'nocontribs' => "Belgilangan shartlarga muvofiq o'zgarishlar topilmadi",
+'uctop' => '(oxirgi)',
+'month' => 'Oydan (va avvalroq)',
+'year' => 'Yildan (va avvalroq)',
 
 'sp-contributions-newbies' => 'Faqatgina yangi foydalanuvchilarning hissalarini koʻrsat',
+'sp-contributions-newbies-sub' => 'Yangi hisob yozuvlaridan',
+'sp-contributions-newbies-title' => 'Yangi hisob yozuvlarining hissalari',
 'sp-contributions-blocklog' => 'Chetlashtirish qaydlari',
+'sp-contributions-deleted' => "o'chirilgan tahrirlar",
+'sp-contributions-uploads' => 'yuklanmalar',
 'sp-contributions-logs' => 'qaydlar',
 'sp-contributions-talk' => 'munozara',
-'sp-contributions-search' => 'Hissalarni qidir',
-'sp-contributions-username' => 'IP manzil yoki foydalanuvchi ismi:',
-'sp-contributions-submit' => 'Qidir',
+'sp-contributions-userrights' => 'foydalanuvchining huquqlarini boshqarish',
+'sp-contributions-search' => 'Hissalarni qidirish',
+'sp-contributions-username' => 'IP-manzil yoki foydalanuvchi nomi:',
+'sp-contributions-toponly' => "Faqat oxirgi versiya hisoblangan tahrirlarni ko'rsatish",
+'sp-contributions-submit' => 'Qidirish',
 
 # What links here
 'whatlinkshere' => "Bu sahifaga bog'langan sahifalar",
@@ -794,40 +1211,83 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'nolinkshere' => "'''[[:$1]]''' sahifasiga hech qaysi sahifa bog‘lanmagan.",
 'isredirect' => 'yoʻnaltiruvchi sahifa',
 'istemplate' => 'qoʻshimcha',
+'isimage' => 'faylli havola',
+'whatlinkshere-prev' => '{{PLURAL:$1|oldingi}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|keyingi}} $1',
 'whatlinkshere-links' => '← ishoratlar',
 'whatlinkshere-hideredirs' => "$1 qayta yo'naltirishlar",
+'whatlinkshere-hidetrans' => '$1 kiritmalar',
 'whatlinkshere-hidelinks' => '$1 havolalar',
+'whatlinkshere-hideimages' => '$1 rasmlar uchun havolalar',
 'whatlinkshere-filters' => 'Filtrlar',
 
 # Block/unblock
+'autoblockid' => 'Avtochetlashtirish #$1',
+'block' => 'Foydalanuvchini muhosara qilish',
+'unblock' => "Foydalanuvchiga yo'l ochish",
 'blockip' => 'Foydalanuvchini chetlashtir',
+'blockip-title' => 'Foydalanuvchini muhosara qilish',
+'blockip-legend' => 'Foydalanuvchini muhosara qilish',
+'ipadressorusername' => 'IP-manzil yoki foydalanuvchi nomi:',
+'ipbexpiry' => 'Tugaydi:',
+'ipbreason' => 'Sabab:',
+'ipbreasonotherlist' => 'Boshqa sabab',
+'ipbreason-dropdown' => "* Chetlashtirishning andazaviy sabablari
+** Yolg'on axborot kiritish
+** Sahifa matnini o'chirish
+** Tashqi saytlarga spam-yo'llanmalar
+** Ma'nosiz matn/axlat qo'shish
+** Tahdid, ishtirokchilarni ta'qib qilish
+** Bir necha hisob yozuvlaridan o'z manfaatlarida foydalanish
+** Ishtirokchining nomaqbul ismi",
+'ipbother' => 'Boshqa vaqt:',
 'ipboptions' => '2 soat:2 hours,1 kun:1 day,3 kun:3 days,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite',
 'ipblocklist' => 'Chetlashtirilgan IP manzillari va foydalanuvchilar',
-'blocklink' => 'chetlashtir',
+'emailblock' => "xatlar jo'natish taqiqlandi",
+'blocklink' => 'chetlashtirish',
 'unblocklink' => "muhosarani (to'sishni) bekor qilish",
 'change-blocklink' => "Muhosarani (to'siqni) o'zgartirmoq",
 'contribslink' => 'hissasi',
 'blocklogpage' => 'Chetlashtirish qaydlari',
+'blocklogentry' => '$2 davrga [[$1]]ni chetlashtirdi $3',
 'block-log-flags-nocreate' => 'hisob ochish toʻxtatilgan',
+'block-log-flags-nousertalk' => "o'zining munozara sahifasini tahrirlay olmaydi",
 
 # Move page
 'movearticle' => "Sahifani ko'chirish",
-'movepagebtn' => 'Sahifani koʻchir',
+'movepagebtn' => 'Sahifani koʻchirish',
 'pagemovedsub' => 'Koʻchirildi',
 'movepage-moved' => '\'\'\'"$1" nomli sahifa "$2" nomli sahifaga koʻchirildi\'\'\'',
 'movelogpage' => 'Koʻchirish qaydlari',
 'movereason' => 'Sabab:',
-'revertmove' => 'qaytar',
+'revertmove' => 'qaytarish',
 
 # Export
 'export' => 'Sahifalar eksporti',
+'export-submit' => 'Eksport',
+'export-addcattext' => "Shu turkumdan sahifalarni qo'shish:",
+'export-addcat' => "Qo'shish",
+'export-addnstext' => "Shu nomfazodan sahifalarni qo'shish:",
+'export-addns' => "Qo'shish",
+'export-download' => 'Fayl sifatida saqlash',
+'export-templates' => 'Andozalarni kiritish',
 
 # Namespace 8 related
-'allmessagesname' => 'Ism',
+'allmessages' => 'Tizim xabarlari',
+'allmessagesname' => 'Nomi',
 'allmessagesdefault' => "Boshlang'ich matn",
+'allmessagescurrent' => 'Joriy xabar matni',
+'allmessages-filter-all' => 'Barcha',
+'allmessages-language' => 'Til:',
+'allmessages-filter-submit' => 'Oʻtish',
 
 # Thumbnails
 'thumbnail-more' => 'Kattalashtir',
+'thumbnail_error' => 'Tasvir yaratishda xatolik: $1',
+
+# Import log
+'importlogpage' => 'Import qilish qaydlari',
+'import-logentry-upload' => '"[[$1]]"ni yuklash yo\'li bilan import qildi',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Foydalanuvchi sahifangiz',
@@ -842,16 +1302,17 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'tooltip-pt-logout' => 'Chiqish',
 'tooltip-ca-talk' => 'Sahifa matni borasida munozara',
 'tooltip-ca-edit' => "Siz bu sahifani tahrirlashingiz mumkin. Iltimos, saqlashdan oldim ko'rib chiqish tugmasidan foydalaning.",
-'tooltip-ca-addsection' => 'Yangi boʻlim och',
+'tooltip-ca-addsection' => 'Yangi boʻlim ochish',
 'tooltip-ca-viewsource' => "Bu sahifa himoyalangan. Siz uning manbasini ko'rishingiz mumkin.",
 'tooltip-ca-history' => 'Bu sahifaning oldingi versiyalari.',
 'tooltip-ca-protect' => 'Bu sahifani himoyalash',
-'tooltip-ca-delete' => 'Ushbu sahifani o‘chirib tashlash',
+'tooltip-ca-unprotect' => "Ushbu sahifaning himoyasini o'zgaritish",
+'tooltip-ca-delete' => 'Ushbu sahifani o‘chirish',
 'tooltip-ca-undelete' => "Bu sahifa o'chirilmasdan oldin qilingan tahrirlarni tiklash",
 'tooltip-ca-move' => 'Bu sahifani koʻchir',
 'tooltip-ca-watch' => "Bu sahifani kuzatuv ro'yxatingizga qo'shish",
 'tooltip-ca-unwatch' => "Bu sahifani kuzatuv ro'yxatingizga o'chirish",
-'tooltip-search' => '{{SITENAME}}da qidirish',
+'tooltip-search' => '{{SITENAME}}dan qidirish',
 'tooltip-search-go' => 'Xuddi shu nomli sahifa bor boʻlsa, uni och',
 'tooltip-search-fulltext' => 'Sahifalarda ushbu matnni izlash',
 'tooltip-p-logo' => 'Bosh sahifaga o‘tish',
@@ -896,9 +1357,25 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 
 # Info page
 'pageinfo-title' => '"$1" sahifasi haqida maʼlumot',
-'pageinfo-header-edits' => 'Tahrirlar',
-'pageinfo-watchers' => 'Kuzatuvchilar soni',
-'pageinfo-edits' => 'Tahrirlar soni',
+'pageinfo-header-basic' => 'Asosiy maʼlumot',
+'pageinfo-header-edits' => "O'zgarishlar tarixi",
+'pageinfo-display-title' => "Ko'rsatiladigan sarlavha",
+'pageinfo-article-id' => 'Sahifa identifikatori',
+'pageinfo-watchers' => 'Sahifa kuzatuvchilari soni',
+'pageinfo-edits' => 'Jami tahrirlar soni',
+
+# Skin names
+'skinname-standard' => 'Klassik',
+'skinname-nostalgia' => "Sog'inch",
+'skinname-cologneblue' => "Kyolncha sog'inch",
+'skinname-myskin' => "O'zimniki",
+'skinname-chick' => "Jo'ja",
+'skinname-simple' => 'Oddiy',
+'skinname-modern' => 'Zamonaviy',
+'skinname-vector' => 'Vektor',
+
+# Patrol log
+'patrol-log-page' => 'Patrullash qaydlari',
 
 # Browsing diffs
 'previousdiff' => '← Avvalgi tahrir',
@@ -910,15 +1387,16 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'file-info-size' => '$1 × $2 piksel, fayl hajmi: $3, MIME tipi: $4',
 'file-nohires' => 'Bundan kattaroq tasvir yoʻq.',
 'svg-long-desc' => 'SVG fayl, asl oʻlchamlari $1 × $2 piksel, fayl hajmi: $3',
-'show-big-image' => 'Asl hajmdagi tasvir',
+'show-big-image' => "To'liq hajmdagi tasvir",
 
 # Special:NewFiles
+'noimages' => 'Tasvir mavjud emas.',
 'ilsubmit' => 'Qidirish',
 
 # Metadata
 'metadata' => 'Metama’lumot',
-'metadata-expand' => 'Batafsil axborot koʻrsat',
-'metadata-collapse' => 'Batafsil axborotni yashir',
+'metadata-expand' => 'Batafsil axborot koʻrsatisg',
+'metadata-collapse' => 'Batafsil axborotni yashirish',
 
 # EXIF tags
 'exif-imagewidth' => 'Eni',
@@ -962,7 +1440,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'namespacesall' => 'Barchasi',
 'monthsall' => 'barchasi',
 
-'unit-pixel' => 'piksel',
+'unit-pixel' => ' piksel',
 
 # Multipage image navigation
 'imgmultipageprev' => '← oldingi sahifa',
@@ -979,6 +1457,9 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'autoredircomment' => '[[$1]]ga yoʻnaltirildi',
 'autosumm-new' => '"$1" yozuvi orqali yangi sahifa yaratildi',
 
+# Size units
+'size-bytes' => '$1 bayt',
+
 # Watchlist editing tools
 'watchlisttools-view' => "Muhim o'zgarishlarni ko'rish",
 'watchlisttools-edit' => 'Kuzatuv roʻyxatimni koʻrish/oʻzgartirish',
@@ -987,6 +1468,9 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|munozara]])',
 
+# Core parser functions
+'duplicate-defaultsort' => "'''Diqqat:''' \"\$2\" boshlang'ich saralash kaliti oldingi \"\$1\" boshlang'ich saralash kalitini qayta aniqlayapti.",
+
 # Special:Version
 'version-specialpages' => 'Maxsus sahifalar',
 
@@ -998,9 +1482,12 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 
 # HTML forms
 'htmlform-reset' => 'Oʻzgarishlarni bekor qilish',
+'htmlform-selectorother-other' => 'Boshqa',
 
 # New logging system
 'logentry-move-move' => '$1 $3 sahifasini $4ga koʻchirdi',
+'logentry-newusers-newusers' => '$1 ishtirokchisining hisob yozuvi yaratildi',
+'logentry-newusers-create' => '$1 ishtirokchisining hisob yozuvi yaratildi',
 
 # Feedback
 'feedback-close' => 'Bajarildi',
@@ -1009,4 +1496,6 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'api-error-unknown-code' => 'Noaniq xato: "$1".',
 'api-error-unknownerror' => 'Noaniq xato: "$1".',
 
+# Unknown messages
+'searchsuggest-search' => 'Qidiruv',
 );
index 5a924c6..7abc78f 100644 (file)
@@ -1139,8 +1139,6 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
 'search-interwiki-caption' => 'Projeti fradei',
 'search-interwiki-default' => 'Risultati da $1:',
 'search-interwiki-more' => '(altro)',
-'search-mwsuggest-enabled' => 'con sujerimenti',
-'search-mwsuggest-disabled' => 'sensa sujerimenti',
 'search-relatedarticle' => 'Ligà',
 'mwsuggest-disable' => 'Disabilita sugerimenti AJAX',
 'searcheverything-enable' => 'Serca in tuti quanti i namespace',
@@ -3378,4 +3376,7 @@ Le imagini le vien mostrà a la risoluzion pi granda che se pol, par i altri tip
 'logentry-newusers-autocreate' => "L'utensa $1 xè stà creà automategamente",
 'newuserlog-byemail' => 'password spedìa par e-mail',
 
+# Unknown messages
+'searchsuggest-containing' => 'che contien...',
+'searchsuggest-search' => 'Serca',
 );
index 6e7d406..cde55e0 100644 (file)
@@ -954,8 +954,6 @@ Tö ei voigoi kävutada sidä.',
 'search-interwiki-caption' => 'Heimolaižed projektad',
 'search-interwiki-default' => "$1 rezul'tatad:",
 'search-interwiki-more' => '(völ)',
-'search-mwsuggest-enabled' => 'ozuta taričendad',
-'search-mwsuggest-disabled' => 'taričendoita',
 'search-relatedarticle' => 'Sidotud lehtpoled',
 'mwsuggest-disable' => 'Ala ozuta AJAX-taričendoid',
 'searcheverything-enable' => 'Ectä kaikiš nimiavarusiš',
@@ -2282,7 +2280,6 @@ Ei ole pordaigašt failhodrad.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScriptan kodvmine',
-'javascripttest-disabled' => 'Nece funkcii ei ole kävutamas neciš vikiš.',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => "Teiden kävutajan lehtpol'",
@@ -3072,4 +3069,7 @@ Kävutagat normaline ezikacund.',
 'api-error-unknown-warning' => 'Tadmatoi varutuz: $1',
 'api-error-unknownerror' => 'Tundmatoi petuz: "$1"',
 
+# Unknown messages
+'searchsuggest-containing' => 'mülütajad...',
+'searchsuggest-search' => 'Ectä',
 );
index 8b762d9..185eba3 100644 (file)
@@ -951,8 +951,7 @@ Nếu bạn là một thành viên vô danh và cảm thấy rằng có những
 Bạn có thể [[Special:Search/{{PAGENAME}}|tìm kiếm tựa trang này]] trong các trang khác, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tìm trong các nhật trình liên quan],
 hoặc [{{fullurl:{{FULLPAGENAME}}|action=edit}} sửa đổi trang này]</span>.',
 'noarticletext-nopermission' => 'Trang này hiện đang trống.
-Bạn có thể [[Special:Search/{{PAGENAME}}|tìm kiếm tựa trang này]] tại các trang khác,
-hoặc <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tìm kiếm các nhật trình liên quan]</span>.',
+Bạn có thể [[Special:Search/{{PAGENAME}}|tìm kiếm tựa trang này]] tại các trang khác, hoặc <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tìm kiếm các nhật trình liên quan]</span>, nhưng bạn không có phép tạo trang này.',
 'missing-revision' => 'Phiên bản #$1 của trang có tên “{{PAGENAME}}” không tồn tại.
 
 Lỗi này thường xuất hiện đối khi theo dõi liên kết lỗi thời đến phiên bản cũ của một trang đã bị xóa.
@@ -1315,8 +1314,6 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-interwiki-caption' => 'Các dự án liên quan',
 'search-interwiki-default' => '$1 kết quả:',
 'search-interwiki-more' => '(thêm)',
-'search-mwsuggest-enabled' => 'có gợi ý',
-'search-mwsuggest-disabled' => 'không có gợi ý',
 'search-relatedarticle' => 'Liên quan',
 'mwsuggest-disable' => 'Tắt gợi ý bằng AJAX',
 'searcheverything-enable' => 'Tìm trong tất cả không gian tên',
@@ -2939,7 +2936,6 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 
 # JavaScriptTest
 'javascripttest' => 'Kiểm thử JavaScript',
-'javascripttest-disabled' => 'Chức năng này chưa được kích hoạt trên wiki này.',
 'javascripttest-title' => 'Đang chạy $1 ca kiểm thử',
 'javascripttest-pagetext-noframework' => 'Trang này dành cho việc chạy các ca kiểm thử JavaScript.',
 'javascripttest-pagetext-unknownframework' => 'Nền tảng kiểm thử không rõ “$1”.',
@@ -4130,4 +4126,7 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'duration-centuries' => '$1 thế kỷ',
 'duration-millennia' => '$1 thiên niên kỷ',
 
+# Unknown messages
+'searchsuggest-containing' => 'có chứa…',
+'searchsuggest-search' => 'Tìm kiếm',
 );
index a485807..28a23e0 100644 (file)
@@ -792,8 +792,6 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'search-interwiki-caption' => 'Sõsarprojektiq',
 'search-interwiki-default' => '$1 tulõmiq:',
 'search-interwiki-more' => '(viil)',
-'search-mwsuggest-enabled' => 'näütäq soovituisi',
-'search-mwsuggest-disabled' => 'ilma soovituisilda',
 'search-relatedarticle' => 'Otsiq samasugutsit lehti',
 'mwsuggest-disable' => 'Näüdäku-i AJAX-i soovituisi',
 'searchrelated' => 'samasugunõ',
index adeb032..a39ed84 100644 (file)
@@ -2409,4 +2409,7 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'duration-centuries' => '$1 sieke{{PLURAL:$1||s}}',
 'duration-millennia' => '$1 meynaire{{PLURAL:$1||s}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'ki contént...',
+'searchsuggest-search' => 'Cweri',
 );
index d968f4e..1369b35 100644 (file)
@@ -78,21 +78,23 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Tugoti in pagliwat hin seksyon ha pag klik-ha-tuo dida hin mga ngaran o titulo hin seksyon (nakinahanglan hin JavaScript)',
 'tog-showtoc' => 'Igpakita in tabla hin sulod (para hin mga pakli nga sobra hin 3 ka titulo o pagngaran)',
 'tog-rememberpassword' => 'Hinumdomi an akon pan-sakob dinhi nga browser (para hin maximum nga $1 {{PLURAL:$1|nga adlaw|nga mga adlaw}})',
-'tog-watchcreations' => 'Igdugang in mga pakli nga akon ginhimo ngadto han akon angay timan-an',
-'tog-watchdefault' => 'Igdugang in mga pakli nga akon ginliwat ngadto han akon angay timan-an',
-'tog-watchmoves' => 'Igdugang in mga pakli nga akon ginpamalhin ngadto han akon angay timan-an',
-'tog-watchdeletion' => 'Igdugang in mga pakli nga akon ginpamara ngadto han akon angay timan-an',
+'tog-watchcreations' => 'Igdugang in mga pakli nga akon ginhimo ngan mga paypay nga akon ginkarga ngadto han akon angay timan-an',
+'tog-watchdefault' => 'Igdugang in mga pakli ngan mga paypay nga akon ginliwat ngadto han akon angay timan-an',
+'tog-watchmoves' => 'Igdugang in mga pakli nga mga paypay nga akon ginpamalhin ngadto han akon angay timan-an',
+'tog-watchdeletion' => 'Igdugang in mga pakli ngan mga paypay nga akon ginpamara ngadto han akon angay timan-an',
 'tog-minordefault' => 'Tigamni an ngatanan nga mga pagliwat nga gudti hin default',
 'tog-previewontop' => 'Igpakita in prevista o pan-ugsa-nga-lantaw ugsa hiton pagliwat nga kahon',
 'tog-previewonfirst' => 'Igpakita in prevista o pan-ugsa-nga-lantaw ha syahan nga pagliwat',
 'tog-nocache' => 'Ayaw patiroka an mga pakli nga pamiling',
-'tog-enotifwatchlistpages' => 'Ig-e-mail ako kun may nagbag-o ha pakli nga akon gintitiman-an (watchlist)',
+'tog-enotifwatchlistpages' => 'Ig-e-mail ako kun may pakli o paypay ha akon gintitiman-an nga gin-iba',
 'tog-enotifusertalkpages' => 'Ig-e-mail ako kun may nagbag-o han akon pakli-himangrawon',
-'tog-enotifminoredits' => 'Ig-e-mail liwat ako ha mga gudti nga mga pagliwat hin mga pakli',
+'tog-enotifminoredits' => 'Ig-e-mail liwat ako hin mga gudti nga mga pagliwat hin mga pakli ngan mga paypay',
 'tog-enotifrevealaddr' => 'Igpakita an akon e-mail nga adres ha mga e-mail hin pagsumat',
 'tog-shownumberswatching' => 'Igpakita an ihap han mga nangingita nga mga nagamit',
 'tog-oldsig' => 'Aada nga pirma:',
 'tog-fancysig' => 'Tratuha it pirma komo uska wikitext (nga waray automatiko nga sumpay)',
+'tog-externaleditor' => 'Gamit hin ha-gawas nga pagliwat ha default (ha mga experto la ini, nakinahanglan hin mga pinaurog nga mga seting ha imo kompyuter. [//www.mediawiki.org/wiki/Manual:External_editors More information.]  )',
+'tog-externaldiff' => 'Gamit hin ha-gawas nga diff ha default (ha mga experto la, nakinahanglan hin mga pinaurog nga mga seting ha imo kompyuter.  [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
 'tog-showjumplinks' => 'Enable "jump to" accessibility links',
 'tog-uselivepreview' => 'Gamita an buhi nga pahiuna nga pagawas (nagkikinahanglan hin JavaScript) (eksperimental)',
 'tog-forceeditsummary' => 'Pasabti ako kun waray ko ginsurat ha dalikyat-nga-tigaman han pagliwat (edit summary)',
@@ -112,6 +114,9 @@ $messages = array(
 'underline-default' => 'An aada-nga-daan nga panngaykayan',
 
 # Font style option in Special:Preferences
+'editfont-style' => 'Estilo hin font ha lugar hin pagliwat',
+'editfont-default' => 'Pandalikyat nga default',
+'editfont-monospace' => 'Monospaced nga font',
 'editfont-sansserif' => 'Sans-serif nga agi',
 'editfont-serif' => 'Serif nga agi',
 
@@ -184,6 +189,7 @@ $messages = array(
 'listingcontinuesabbrev' => 'pdyn.',
 'index-category' => 'Mga nakatudlokan nga pagkli',
 'noindex-category' => 'Mga diri nakatudlokan nga pagkli',
+'broken-file-category' => 'Mga pakli nga mayda utod nga mga sumpay hin paypay',
 
 'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
 
@@ -373,9 +379,9 @@ Listahan o talaan hin puyde nga mga pinaurog nga pakli in mabibilngan ha [[Speci
 'dberrortext' => 'Mayda nahinabo nga sayop hin syntax ha database nga kwery.
 Bangin ini nagpapakita hin bug dida han softweyr.
 An kataposan nga ginsari nga database nga kweri amo in:
-<blockquote><tt>$1</tt></blockquote>
-tikang ha sakob han funsyon nga "<tt>$2</tt>".
-Nagbalik an database hin sayop nga "<tt>$3: $4</tt>".',
+<blockquote><code>$1</code></blockquote>
+tikang ha sakob han funsyon nga "<code>$2</code>".
+Nagbalik an database hin sayop nga "<samp>$3: $4</samp>".',
 'dberrortextcl' => 'Mayda nahitabo nga sayop hin syntax ha database nga kwery.
 An kataposan nga ginsari nga kweri han database amo an:
 "$1"
@@ -392,14 +398,17 @@ Kun diri ini an kaso, bangin ka nakabiling hin bug ha software.
 Alayon la igsumat ini ha [[Special:ListUsers/sysop|administrator]], igsurat la an URL.',
 'missingarticle-rev' => '(pagbag-o#: $1)',
 'missingarticle-diff' => '(Kaibhan: $1, $2)',
+'readonly_lag' => 'Ginlugaring pagtranka han database samtang an mga nasunod nga mga database nga server naglalanat pa han agaron',
 'internalerror' => 'Sayop ha sulod',
 'internalerror_info' => 'Sayop ha sulod: $1',
 'fileappenderrorread' => "Diri nababasahan an ''$1'' han pagdugang.",
 'fileappenderror' => "Diri nadudugngan an ''$1'' ha ''$2''.",
-'filecopyerror' => "Diri nakokopya an fayl nga ''$1'' ha ''$2''.",
-'filerenameerror' => "Diri nababalyuan an ngaran han fayl nga ''$1'' ha ''$2''.",
-'filedeleteerror' => "Diri napapara an fayl nga ''$1''.",
-'fileexistserror' => "Diri nasusuratan ha fayl ''$1'': An fayl aada na.",
+'filecopyerror' => "Diri nakokopya an paypay nga ''$1'' ha ''$2''.",
+'filerenameerror' => "Diri nababalyuan an ngaran han paypay nga ''$1'' ha ''$2''.",
+'filedeleteerror' => "Diri napapara an paypay nga ''$1''.",
+'directorycreateerror' => 'Waray makahimo han direktoryo nga "$1".',
+'filenotfound' => 'Diri nabibilngan an paypay nga "$1"',
+'fileexistserror' => "Diri nasusuratan ha paypay nga ''$1'': Aada na an paypay.",
 'formerror' => 'Sayop: Diri nasusumite an porma.',
 'badarticleerror' => 'Ini nga pagbuhat diri mahihimo dinhi nga pakli',
 'cannotdelete' => 'An pakli o an fayl nga "$1" diri napapara.
@@ -407,10 +416,13 @@ Bangin na ini ginpara hin iba.',
 'badtitle' => 'Maraot nga titulo',
 'badtitletext' => 'An ginhangyo nga pakli diri puyde, waray sulod, o sayop nga nasumpay nga inter-pinunongan o inter-wiki nga titulo.
 Bangin mayda usa o damo nga mga agi nga diri puyde magamit ha mga titulo.',
-'perfcached' => 'An nasunod nga data gin-cache ngan bangin diri amo an yana. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'An nasunod nga data gin-cache, ngan kataposan ginbag-o dida han $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'An nasunod nga data gin-cache ngan bangin diri amo an yana. In maximum hin {{PLURAL:$1|usa ka resulta|$1 ka mga resulta}} aada hit cache.',
+'perfcachedts' => 'An nasunod nga data gin-cache, ngan kataposan ginbag-o dida han $1. In maximum hin {{PLURAL:$4|usa ka resulta|$4 ka resulta}} aada hit cache.',
 'querypage-no-updates' => 'An mga kabag-ohan para hini nga pakli ha yana diri mahihimo.
 An data dini diri mahihimo nga bag-o.',
+'wrong_wfQuery_params' => 'Sayop nga mga parameter ha wfQuery()<br />
+Funsyon: $1<br />
+Kweri: $2',
 'viewsource' => 'Kitaa an ginkuhaan',
 'viewsourcetext' => 'Puydi ka kinmita ngan kinmopya han gintikangan han pakli:',
 'namespaceprotected' => "Diri ka gintutugutan pagliwat han mga pakli ha ngaran-lat'ang nga '''$1'''.",
@@ -472,7 +484,7 @@ Alayon pagutro pagbutang.',
 'accountcreated' => 'Nahimo an akawnt',
 'accountcreatedtext' => 'An akwant han gumaramit para kan $1 in ginhimo.',
 'createaccount-title' => 'Paghimo hin akawnt para han {{SITENAME}}',
-'loginlanguagelabel' => 'Yinaknan: $1',
+'loginlanguagelabel' => 'Pinulongan: $1',
 
 # Change password dialog
 'resetpass' => 'Igliwat an tigaman-pagsulod',
@@ -510,8 +522,8 @@ Temporaryo nga tigaman han pagsakob: $2',
 'headline_tip' => 'Katupngan 2 nga katukiban',
 'nowiki_sample' => 'Igsuksok an diri-nakaayos nga mga teksto dinhi',
 'nowiki_tip' => 'Pabay-i la an pagfoformat nga wiki',
-'image_tip' => 'Nakatampo nga fayl',
-'media_tip' => 'sumpay han fayl',
+'image_tip' => 'Nakatampo nga paypay',
+'media_tip' => 'sumpay han paypay',
 'sig_tip' => 'Imo pirma nga may-ada marka hin oras',
 'hr_tip' => 'Patumba nga bagis (hinay-hinay la it paggamit)',
 
@@ -546,9 +558,9 @@ Kun pidliton mo an \"{{int:savearticle}}\" utro, an imo ginliwat in matitipig bi
 Puyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling para han ngaran hini nga pakli]] ha iba nga mga pakli,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} binga an mga nanginginlabot nga mga log],
 o [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli]</span>.',
-'noarticletext-nopermission' => 'Ha yana waray surat ini nga pakli.
-Puydi nimo [[Special:Search/{{PAGENAME}}|pamilngon ini nga titulo han pakli]] ha iba nga mga pakli,
-o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pamilngon ha mga kasumpay nga talaan]</span>.',
+'noarticletext-nopermission' => 'Waray yana nahasurat hini nga pakli
+Puyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling han ngaran hini nga pakli]] ha iba nga mga pakli,
+o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mamiling han mga nanginginlabot nga mga talaan]</span>, kundi diri ka gintutugotan hin paghímò hini nga pakli.',
 'userpage-userdoesnotexist-view' => "An akawnt han gumaramit ni ''$1'' in diri nakarehistro.",
 'updated' => '(Ginbag-ohan)',
 'note' => "'''Pahibaro:'''",
@@ -1355,8 +1367,8 @@ Kon an paypay ginliwat tikang han orihinal nga kamutangan, mayda mga detalye nga
 'metadata-fields' => 'An mga rumbay han hulagway han metadato nga nakatala dinhi nga mensahe in iglalakip ha padayag hin hulagway nga pakli kun an taramdan metadato in nakalukot.
 An iba in daan nakatago.
 * make
-* model
-* datetimeoriginal
+* modelo
+* pitsaorasorihinal
 * exposuretime
 * fnumber
 * isospeedratings
@@ -1364,9 +1376,9 @@ An iba in daan nakatago.
 * artist
 * copyright
 * imagedescription
-* gpslatitude
-* gpslongitude
-* gpsaltitude',
+* gpsngalatitud
+* gpsngalongitud
+* gpsngaaltitud',
 
 # EXIF tags
 'exif-imagewidth' => 'Kahaluag',
@@ -1375,6 +1387,7 @@ An iba in daan nakatago.
 'exif-imagedescription' => 'Titulo han hulagway',
 'exif-artist' => 'Tag-iya',
 'exif-sharpness' => 'Pagkatarom',
+'exif-gpstimestamp' => 'GPS nga oras (atomiko nga relo)',
 'exif-gpsspeedref' => 'Sukol han kalaksi',
 'exif-headline' => 'Katukiban',
 'exif-source' => 'Tinikangan',
@@ -1463,7 +1476,8 @@ An iba in daan nakatago.
 'table_pager_prev' => 'Naha-una nga pakli',
 'table_pager_first' => 'Una nga pakli',
 'table_pager_last' => 'Kataposan nga pakli',
-'table_pager_limit' => 'Igpakita in $1 nga mga item ha tagsa pakli',
+'table_pager_limit' => 'Igpakita in $1 nga mga butang ha tagsa pakli',
+'table_pager_limit_label' => 'Mga butang ha tagsa pakli:',
 'table_pager_limit_submit' => 'Kadto-a',
 'table_pager_empty' => 'Waray mga resulta',
 
@@ -1491,8 +1505,10 @@ An iba in daan nakatago.
 
 # Special:Version
 'version' => 'Bersyon',
+'version-version' => '(Bersion $1)',
 'version-license' => 'Lisensya',
 'version-software-product' => 'Produkto',
+'version-software-version' => 'Bersyon',
 
 # Special:FilePath
 'filepath-page' => 'Paypay:',
@@ -1500,6 +1516,7 @@ An iba in daan nakatago.
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch-submit' => 'Pamilnga',
+'fileduplicatesearch-noresults' => 'Waray nabilngan nga paypay nga an ngaran "$".',
 
 # Special:SpecialPages
 'specialpages' => 'Mga pinaurog nga pakli',
@@ -1523,6 +1540,7 @@ An iba in daan nakatago.
 'tag-filter' => '[[Special:Tags|Tag]] panara:',
 'tag-filter-submit' => 'Panara',
 'tags-edit' => 'igliwat',
+'tags-hitcount' => '$1 {{PLURAL:$1|nga pagbag-o|nga mga pagbag-o}}',
 
 # Special:ComparePages
 'comparepages' => 'Igkumpara an mga pakli',
index a9d7dd5..bf1a49b 100644 (file)
@@ -884,8 +884,6 @@ $1",
 'search-interwiki-caption' => '姊妹项目',
 'search-interwiki-default' => '$1项结果:',
 'search-interwiki-more' => '(更多)',
-'search-mwsuggest-enabled' => '与建议',
-'search-mwsuggest-disabled' => ' 呒没建议',
 'search-relatedarticle' => '相关',
 'mwsuggest-disable' => '禁用AJAX建议',
 'searcheverything-enable' => '垃拉所有名字空间里向搜索',
index c8f6948..6bcf34e 100644 (file)
@@ -1211,8 +1211,6 @@ $1",
 'search-interwiki-caption' => 'שוועסטער פראיעקטן',
 'search-interwiki-default' => '$1 רעזולטאטן:',
 'search-interwiki-more' => '(נאך)',
-'search-mwsuggest-enabled' => 'מיט פארשלאגן',
-'search-mwsuggest-disabled' => 'אן פארשלאגן',
 'search-relatedarticle' => 'פארבינדן',
 'mwsuggest-disable' => 'בטל מאכן פארשלאגן AJAX',
 'searcheverything-enable' => 'זוכן אין אלע נאמענטיילן',
@@ -2734,7 +2732,6 @@ $1',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript טעסט',
-'javascripttest-disabled' => 'די  פֿונקציע איז אומאַקטיווירט אין דער דאזיקער וויקי.',
 'javascripttest-title' => 'דורכפירנדיק $1 בדיקות',
 'javascripttest-pagetext-skins' => 'קלויבט א באניצער־אייבערפלאך מיט וואס דורכצופירן די בדיקות:',
 'javascripttest-qunit-intro' => 'זעט [$1 דאקומענטאציע פאר טעסטן] בײַ mediawiki.org.',
@@ -3693,4 +3690,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|יארהונדערט|יארהונדערטער}}',
 'duration-millennia' => '$1 {{PLURAL:$1|יארטויזנט|יארטויזנטער}}',
 
+# Unknown messages
+'searchsuggest-containing' => 'כולל…',
+'searchsuggest-search' => 'זוכן',
 );
index 87aa016..da9a87c 100644 (file)
@@ -60,7 +60,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ìbòmọ́lẹ̀ àwọn àtúnṣe oníìṣọ́ nínú àwọn àtúnṣe tuntun',
 'tog-newpageshidepatrolled' => 'Ìbòmọ́lẹ̀ àwọn ojúewé oníìṣọ́ lọ́dọ̀ àtòjọ ojúewé tuntun',
 'tog-extendwatchlist' => "Ìfẹ̀ àmójútó láti ṣ'àfihàn gbogbo àtúnṣe, kìí ṣe tuntun nìkan",
-'tog-usenewrc' => 'Ìlò áwọn àtúnṣe tuntun aláàmúdára (JavaScript pọndandan)',
+'tog-usenewrc' => 'Ìtò àwọn àtúnṣe gẹ́gẹ́bí ojúewé nínú àwọn àtúnṣe tuntun àti ìmújútó (JavaScript pọndandan)',
 'tog-numberheadings' => 'Àwọn àkọlé nọmba-araẹni',
 'tog-showtoolbar' => 'Ìfihàn pẹpẹ irinṣẹ́ àtúnṣe (JavaScript pọndandan)',
 'tog-editondblclick' => "Ṣ'àtúnṣe àwọn ojúewé ní kíkàn lẹ́mẹjì (JavaScript)",
@@ -68,17 +68,17 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Ìgbàláyè àtúnṣe abala nípa klííkì ọ̀tún lórí àkọlé abala (JavaScript pọndandan)',
 'tog-showtoc' => 'Ìfihàn tábìlì àkóónú (fún àwọn ojúewé tó ní ju orí ọ̀rọ̀ 3 lọ)',
 'tog-rememberpassword' => "Ṣè'rántí àkọọ́lẹ̀ ìwọlé mi lórí agbétàkùn yìí (fún {{PLURAL:$1|ọjọ́|ọjọ́}} $1 pípẹ́jùlọ)",
-'tog-watchcreations' => "Ṣ'àfikún ojúewé tí mo dá mọ́ ìmójútó mi",
-'tog-watchdefault' => "S'àfikún ojúewé tí mo s'àtúnse mọ́ ìmójútó mi",
-'tog-watchmoves' => "S'àfikún ojúewé tí mo yípò mọ́ ìmójútó mi",
-'tog-watchdeletion' => "S'àfikún ojúewé tí mo parẹ́ mọ́ ìmójútó mi",
+'tog-watchcreations' => "Ṣ'àfikún ojúewé tí mo dá àti àwọn fáìlì tí mo rùsókè mọ́ ìmójútó mi",
+'tog-watchdefault' => "Ṣ'àfikún àwọn ojúewé àti fáìlì tí mo ṣ'àtúnse mọ́ ìmójútó mi",
+'tog-watchmoves' => "Ṣ'àfikún àwọn ojúewé ati fáìlì tí mo yípò mọ́ ìmójútó mi",
+'tog-watchdeletion' => "Ṣ'àfikún àwọn ojúewé àti fáìlì tí mo parẹ́ mọ́ ìmójútó mi",
 'tog-minordefault' => "Se àmì sí gbogbo àtúnse gẹ́gẹ́ bi kékeré lát'ìbẹ̀rẹ̀.",
 'tog-previewontop' => "Se àyẹ̀wò kí ẹ tó s'àtúnṣe",
 'tog-previewonfirst' => "S'àfihàn àgbéwò fún àtúnse àkọ́kọ́",
 'tog-nocache' => 'Ìdínà fífi ojúewé pamọ́ sínú cache',
-'tog-enotifwatchlistpages' => 'Fi e-mail ránṣẹ́ sími tí ojúewé tí mò ún mójútó bá yípadà',
+'tog-enotifwatchlistpages' => 'Fi e-mail ránṣẹ́ sí mi tí ojúewé tàbí fáìlì tí mò ún mójútó bá yípadà',
 'tog-enotifusertalkpages' => 'Fi e-mail ránṣẹ́ sími tí ojúewé oníṣe mi bá yípadà',
-'tog-enotifminoredits' => 'Fi e-mail ránṣẹ́ sími bákannà fún àtúnṣe kékékèé sí ojúewé',
+'tog-enotifminoredits' => 'Fi e-mail ránṣẹ́ sí mi bákannà fún àtúnṣe kékékèé sí àwọn ojúewé àti fáìlì',
 'tog-enotifrevealaddr' => "Ṣ'àfihàn àdírẹ́ẹ̀sì e-mail mi nínú àwọn ìránṣẹ́ e-mail",
 'tog-shownumberswatching' => "S'àfihàn iye àwọn oníṣe tí wọn tẹjú mọ́ọ",
 'tog-oldsig' => 'Ìtọwọ́bọ̀wé tówà:',
@@ -371,9 +371,9 @@ $1',
 'dberrortext' => 'Àṣìṣe ìsoọ̀rọ̀pọ̀ ìtọrọ ibùdó-dátà kan ti ṣẹlẹ̀.
 Ó lè jẹ́ nítorí àṣìṣe inú atòlànà.
 Ìgbìyànjú ìtọrọ ibùdó-dátà ṣẹlẹ̀ jẹ́: 
-<blockquote><tt>$1</tt></blockquote>
-láti inú ìmúṣiṣẹ́ "<tt>$2</tt>".
-Ibùdó-dátà mú àṣìṣe "<tt>$3: $4</tt>" padà.',
+<blockquote><code>$1</code></blockquote>
+láti inú ìmúṣiṣẹ́ "<code>$2</code>".
+Ibùdó-dátà mú àṣìṣe "<samp>$3: $4</samp>" padà.',
 'dberrortextcl' => 'Àṣìṣe ìsoọ̀rọ̀pọ̀ ìtọrọ ibùdó-dátà kan ti ṣẹlẹ̀.
 Ìgbìyànjú ìtọrọ ibùdó-dátà ṣẹlẹ̀ jẹ́: 
 "$1"
@@ -428,10 +428,10 @@ Oníṣe mìíràn le ti paárẹ́.',
 'protectedpagetext' => 'Ojúewé yìí tijẹ́ títìpa. Ẹ kò le se àtúnṣe.',
 'viewsourcetext' => 'Ẹ lè wo ati ẹ lè se àwòkọ ọ̀rọ̀àmì ojúewé yi:',
 'viewyourtext' => "Ẹ le wò bẹ́ẹ̀sìni ẹ le ṣe àwòkọ orísun '''àwọn àtúnṣe yín''' sí ojúewé yìí:",
-'protectedinterface' => 'Ojúewé yìí n pèsè ìfojúkojú ìkọ̀wé fún software, a ti dínà si láti mọ́ gba ìlòkulò ní ààyè.',
+'protectedinterface' => 'Ojúewé yìí únpèsè ìfojúkojú ìkọ̀wé fún atòlànà, ó ti jẹ́ dídáàbòbò láti dínà ìlòkulò.',
 'editinginterface' => "'''Ìkìlọ̀:''' Ẹ ún ṣàtúnṣe ojúewé tó jẹ́ lílò láti pèsè ìkọ ìfojúkojú fún àtòlànà kọ̀mpútà.
-Àwọn ìyípadà sí ojúewé yìí yíò kan ìhànsí ìfojúkojú oníṣe fún àwọn oníṣe míràn.
-Fún ìyédèpadà, ẹ jọ̀wọ́ ẹ lo [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], iṣẹ́-ọwọ́ ìṣọdìbílẹ̀ MediaWiki.",
+Àwọn ìyípadà sí ojúewé yìí yíò kan ìhànsí ìfojúkojú oníṣe fún àwọn oníṣe míràn lọ́rí wiki yìí.
+Láti ṣ'àfikún tàbí ṣ'àyípadà àwọn ìyédèpadà fún gbogbo àwọn wiki, ẹ jọ̀wọ́ ẹ lo [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], iṣẹ́-ọwọ́ ìṣọdìbílẹ̀ MediaWiki.",
 'sqlhidden' => '(bíbòmọ́lẹ̀ ìbéèrè SQL)',
 'cascadeprotected' => 'Ojúewé yìí ti jẹ́ dídáàbòbò sí àtùnṣe, nítorípé ó wà nínú {{PLURAL:$1|ojúewé ìsàlẹ̀ yìí, tó jẹ́|àwọn ojúewé ìsàlẹ̀ wọ̀nyí, tí wọ́n jẹ́}} dídáàbòbò pẹ̀lú ìyàn "ajámọ́ra" ní títàn: $2',
 'namespaceprotected' => "A kò gbàyín ní ààyè láti ṣ'àtúnṣe àwọn ojúewé tó wà nínú orúkọàyè '''$1'''.",
@@ -610,7 +610,7 @@ $2
 'changeemail-no-info' => 'Ẹ gbódọ̀ wọlé láti bósí ojúewé yìí tààrà.',
 'changeemail-oldemail' => 'Àdírẹ̀sì E-mail ìsinsìnyí:',
 'changeemail-newemail' => 'Àdírẹ̀sì E-mail tuntun:',
-'changeemail-none' => '(kósí)',
+'changeemail-none' => '(kòsí)',
 'changeemail-submit' => 'Ìyípadà E-mail',
 'changeemail-cancel' => 'Fagilé',
 
@@ -709,7 +709,7 @@ Tó bá jẹ́ pé oníṣe aláìlórúkọ ni yín, tí ẹ sì ri pé wọ́n
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wá àkọọ́lẹ̀ rẹ̀], tàbí [{{fullurl:{{FULLPAGENAME}}|action=edit}} kí ẹ ṣ\'àtúnṣe ojúewé òún]</span>.',
 'noarticletext-nopermission' => 'Lọ́wọ́lọ́wọ́ kò sí ìkọ̀ nínú ojúewé yìí.
 Ẹ le [[Special:Search/{{PAGENAME}}|wá àkọlé ojúewé yìí]] nínú àwọn ojúewé mìíràn, tàbí
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wá àwọn àkọọ́lẹ̀ tó bámu]</span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wá àwọn àkọọ́lẹ̀ tó bámu]</span>, sùgbọ́n ẹ kò ní àṣẹ láti ṣ\'ẹ̀dá ojúewé yìí.',
 'userpage-userdoesnotexist' => 'Àkópamọ́ oníṣe "<nowiki>$1</nowiki>" kò tíì jẹ́ fíforúkọsílẹ̀.
 Ẹjọ̀wọ́ ẹ ṣ\'àgbéyẹ̀wò bóyá ẹ fẹ́ dá/ṣàtúnṣe ojúewé yìí.',
 'userpage-userdoesnotexist-view' => 'Àpamọ́ oníṣe "$1" kò jẹ́ fífilórúkọsílẹ̀.',
@@ -719,7 +719,6 @@ Tó bá jẹ́ pé oníṣe aláìlórúkọ ni yín, tí ẹ sì ri pé wọ́n
 * '''Firefox / Safari:''' Ẹ di ''Shift'' mú bí ẹ ṣe ún tẹ ''Reload'', tàbí kí ẹ tẹ ''Ctrl-F5'' tàbí ''Ctrl-R'' (''⌘-R'' lórí Mac)
 * '''Google Chrome:''' Ẹ tẹ ''Ctrl-Shift-R'' (''⌘-Shift-R'' lórí Mac)
 * '''Internet Explorer:''' Ẹ di ''Ctrl'' mú bí ẹ ṣe ún tẹ ''Refresh,'' tàbí kí ẹ tẹ ''Ctrl-F5''
-* '''Konqueror: '''Ẹ tẹ ''Reload'' tàbí kí ẹ tẹ ''F5''
 * '''Opera:''' Ẹ pa cache rẹ́ nínú ''Tools → Preferences''",
 'usercssyoucanpreview' => "'''Ìrànlọ́wọ́:''' Ẹ lo bọ́tìnì \"{{int:showpreview}}\" fún dídánwò CSS tuntun yín kí ẹ tó múupamọ́.",
 'userjsyoucanpreview' => "'''Ìrànlọ́wọ́:''' Ẹ lo bọ́tìnì \"{{int:showpreview}}\" fún dídánwò JavaScript tuntun yín kí ẹ tó múupamọ́.",
@@ -965,10 +964,11 @@ Kò ṣe é bòmọ́lẹ̀.',
 'revdelete-concurrent-change' => 'Àsìṣe ìṣàtúnṣe ohun ọjọ́ọdún $2, $1: Ó dà bíi pé ẹ̀lòmíràn ti yí ibi-ipò rẹ̀ padà lásìkò kannáà tí ẹ̀yin ṣàtúnṣe rẹ̀.
 Ẹ jọ̀wọ́ ẹ yẹ àwọn àkọọ́lẹ̀ wò.',
 'revdelete-only-restricted' => 'Àsìṣe ìbòmọ́lẹ̀ ohun ọjọ́ọdún $2, $1: Ẹ kò le fi àwọn ohun sílẹ̀ láti wò lọ́wọ́ àwọn olùmójútó láì ṣe ìsàyàn ìkan nínú àwọn àṣàyàn ìhàn míràn.',
-'revdelete-reason-dropdown' => '*Àwọn ìdí ìdarẹ́ awọ́pọ̀
+'revdelete-reason-dropdown' => '*Àwọn ìdí tọ́ únsábà fa ìparẹ́ 
 ** Àìtẹ̀lé ẹ̀tọ́àwòkọ
-** Ìwífún taraẹni aláìyẹ
-** Ìwífún tó le fa ẹjọ́',
+** Àwísọ tí kò tọ́ tàbí àròyé àdáni
+** Orúkọ oníṣe tí kò tọ́
+** Àròyé tó le fa ẹjọ́ wá',
 'revdelete-otherreason' => 'Ìdíẹ̀ míràn/àfikún',
 'revdelete-reasonotherlist' => 'Ìdí míràn',
 'revdelete-edit-reasonlist' => 'Àtúnṣe àwọn ìdí ìparẹ́',
@@ -1062,8 +1062,6 @@ Kò ṣe é bòmọ́lẹ̀.',
 'search-interwiki-caption' => 'Àwọn iṣẹ́-ọwọ́ mìràn',
 'search-interwiki-default' => 'èsì $1',
 'search-interwiki-more' => '(tókù)',
-'search-mwsuggest-enabled' => 'pẹ̀lú àbá',
-'search-mwsuggest-disabled' => 'láìsí àbá',
 'search-relatedarticle' => 'Tóbáramu',
 'mwsuggest-disable' => 'Ìdálẹ́kun àwọn àbá AJAX',
 'searcheverything-enable' => 'Àwárí nínú gbogbo orúkọàyè:',
@@ -1157,7 +1155,7 @@ Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 'timezoneregion-indian' => 'Òkun India',
 'timezoneregion-pacific' => 'Òkun Pàsífíkì',
 'allowemail' => 'Ìgbàláyè e-mail látọ̀dọ̀ àwọn oníṣe mìíràn',
-'prefs-searchoptions' => 'Àwọn àṣàyàn àwáàrí',
+'prefs-searchoptions' => 'Ṣàwárí',
 'prefs-namespaces' => 'Àwọn orúkọàyè',
 'defaultns' => 'Bíbẹ́ẹ̀kọ́ ṣe àwárí nínú àwọn orúkọàyè yìí:',
 'default' => 'níbẹ̀rẹ̀',
@@ -1325,7 +1323,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'rightslogtext' => 'Èyì ni àkọọ́lẹ̀ kan àwọn àtúnṣe sí àwọn ẹ̀tọ́ oníṣe.',
 'rightslogentry' => 'yí ẹgbẹ́ tí $1 wà kúrò láti $2 sí $3',
 'rightslogentry-autopromote' => 'jẹ́ gbígbéga láláraẹni láti $2 sí $3',
-'rightsnone' => '(kósí)',
+'rightsnone' => '(kòsí)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'wo ojúewé yìí',
@@ -1771,9 +1769,9 @@ Tó bá jẹ́ jíjọ̀ gẹ́gẹ́bí oníṣe, àwọn fáìlì tí oníṣe
 
 'disambiguations' => 'Àwọn ojúewé tó jápọ̀ mọ́ àwọn ojúewé ìṣeojútùú',
 'disambiguationspage' => 'Template:ojútùú',
-'disambiguations-text' => "Àwọn ojúewé ìsàlẹ̀ yìí jápọ̀ sí '''ojúewé ìṣeojúùtú'''.
-Ó yẹ kí wọn ó jápọ̀ sí oríọ̀rọ̀ tó yẹ wọ́n.<br />
-Ojúewé kan jẹ́ ṣíṣe bíi ojúewé ìṣeojúùtú tí ó bá lo àdàkọ tó jápọ̀ láti [[MediaWiki:Disambiguationspage]]",
+'disambiguations-text' => "Àwọn ojúewé ìsàlẹ̀ yìí, ó kéréjù ní àjápọ̀ kan sí '''ojúewé ìṣeojúùtú'''.
+Ó yẹ kí wọn ó jápọ̀ sí ojúewé tó yẹ wọ́n.<br />
+Ojúewé kan jẹ́ ṣíṣe bíi ojúewé ìṣeojúùtú tí ó bá lo àdàkọ tó jápọ̀ láti [[MediaWiki:Disambiguationspage]].",
 
 'doubleredirects' => 'Àwọn àtúnjúwe ẹ̀mẹjì',
 'double-redirect-fixed-move' => '[[$1]] ti yípò padà.
@@ -2288,6 +2286,14 @@ $1',
 'ipbexpiry' => 'Ìwásópin:',
 'ipbreason' => 'Ìdíẹ̀:',
 'ipbreasonotherlist' => 'Ìdí mìíràn',
+'ipbreason-dropdown' => '*Àwọn ìdí fún ìdínà
+** Àròyé tí kò jẹ́ òtítọ́
+** Yíyọ àkóónú kúrò nínú ojúewé
+** Kíkọ àjápọ̀ sí àwọn ibi tí kò ní ìbámu mọ́ ojúewé
+** Ìkọkúkọ sínú ojúewé
+** Iwùwà ìpayà sí ẹlòmíràn
+** Ìlòkulò ọ̀pọ̀lọpọ̀ àpamọ́
+** Lílo orúkọ oníṣe tí kò tọ́',
 'ipb-hardblock' => 'Ìdínà àwọn oníṣe agbàwọlé láti ṣàtúnṣe láti ibi àdírẹ́ẹ̀sì IP yìí',
 'ipbcreateaccount' => 'Ìdínà dídá àpamọ́',
 'ipbemailban' => 'Ìdínà oníṣe láti fi e-mail ránṣẹ́',
@@ -2328,6 +2334,7 @@ $1',
 'blocklist-timestamp' => 'Àmì àsìkò',
 'blocklist-target' => 'Afojúsùn',
 'blocklist-expiry' => 'Ìparí',
+'blocklist-by' => 'Olùmójútó tó ṣe ìdínà',
 'blocklist-reason' => 'Ìdíẹ̀',
 'ipblocklist-submit' => 'Ṣàwárí',
 'ipblocklist-localblock' => 'Ìdínà abẹ́lé',
@@ -2618,11 +2625,11 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 
 # Info page
 'pageinfo-title' => 'Àròyé fún "$1"',
-'pageinfo-header-edits' => 'Ã\80wá»\8dn àtúnṣe',
+'pageinfo-header-edits' => 'Ã\8ctàn àtúnṣe',
 'pageinfo-views' => 'Iye àwọn ìwò',
-'pageinfo-watchers' => 'Iye àwọn aláàbójúwò',
-'pageinfo-edits' => 'Iye àwọn àtúnṣe',
-'pageinfo-authors' => 'Iye àwọn olùdá ọ̀tọ̀ọ̀tọ̀',
+'pageinfo-watchers' => 'Iye àwọn olùṣọ́ ojúewé',
+'pageinfo-edits' => 'Àpapọ̀ iye àwọn àtúnṣe',
+'pageinfo-authors' => 'Àpapọ̀ iye àwọn olùdá ọ̀tọ̀ọ̀tọ̀',
 
 # Patrolling
 'markaspatrolleddiff' => 'Ìṣààmí sí bíi sísọ́',
@@ -2647,6 +2654,7 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 'file-nohires' => 'Kò sí ìgbéhàn gíga jù báun lọ.',
 'svg-long-desc' => 'faili SVG, pẹ̀lú $1 × $2 pixels, ìtòbi faili: $3',
 'show-big-image' => 'Pẹ̀lú ìgbéhàn gíga',
+'show-big-image-other' => '{{PLURAL:$2|Ìgbéhàn|Àwọn ìgbéhàn}} míràn: $1.',
 'show-big-image-size' => '$1 × $2 pixels',
 'file-info-gif-looped' => 'lílọ́po',
 'file-info-png-looped' => 'lílọ́po',
@@ -2876,6 +2884,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 # Special:Version
 'version' => 'Àtẹ̀jáde',
 'version-specialpages' => 'Àwọn ojúewé pàtàkì',
+'version-variables' => 'Ayàtọ̀',
 'version-skins' => 'Skin (Àwọ̀)',
 'version-other' => 'Òmíràn',
 'version-version' => '(Àtẹ̀jáde $1)',
@@ -2900,7 +2909,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'specialpages' => 'Àwọn ojúewé pàtàkì',
 'specialpages-group-maintenance' => 'Àwọn ìjábọ̀ ìtọ́jú',
 'specialpages-group-other' => 'Àwọn ojúewé pàtàkì míràn',
-'specialpages-group-login' => 'Ìwọlé / ìforúkọsílẹ́',
+'specialpages-group-login' => 'Ìwọlé / ìdá àpamọ́',
 'specialpages-group-users' => 'Àwọn oníṣe àti àwọn ẹ̀tọ́ wọn',
 'specialpages-group-pages' => 'Àkójọ àwọn ojúewé',
 'specialpages-group-pagetools' => 'Àwọn irinṣẹ́ ojúewé',
@@ -2994,4 +3003,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'duration-weeks' => '{{PLURAL:$1|ọ̀sẹ̀|ọ̀sẹ̀}} $1',
 'duration-years' => '{{PLURAL:$1|ọdún|ọdún}} $1',
 
+# Unknown messages
+'searchsuggest-containing' => 'tó ní...',
+'searchsuggest-search' => 'Ṣàwárí',
 );
index fe79a49..755f1ce 100644 (file)
@@ -1147,8 +1147,6 @@ $1",
 'search-interwiki-caption' => '姊妹計劃',
 'search-interwiki-default' => '$1項結果:',
 'search-interwiki-more' => '(更多)',
-'search-mwsuggest-enabled' => '有建議',
-'search-mwsuggest-disabled' => '無建議',
 'search-relatedarticle' => '有關',
 'mwsuggest-disable' => '停用AJAX建議',
 'searcheverything-enable' => '搵全部空間名',
@@ -3376,4 +3374,7 @@ MediaWiki是基於使用目的而加以發佈,但係就唔會負上任何嘅
 'revdelete-unrestricted' => '已經拎走對於操作員嘅限制',
 'newuserlog-byemail' => '密碼已由電郵寄出',
 
+# Unknown messages
+'searchsuggest-containing' => '名單傳送緊...',
+'searchsuggest-search' => '搵嘢',
 );
index d5e806d..2b2cf3b 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Simplified Chinese (‪中文(简体)‬)
+/** Simplified Chinese (中文(简体)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -596,9 +596,12 @@ $1',
 # General errors
 'error' => '错误',
 'databaseerror' => '数据库错误',
-'dberrortext' => '发生了数据库查询语法错误,可能是由于软件自身的错误所引起。最后一次数据库查询指令是:
-<blockquote><tt>$1</tt></blockquote>
-来自函数“<tt>$2</tt>”内。数据库返回错误“<tt>$3: $4</tt>”。',
+'dberrortext' => '发生资料库查询语法错误。
+可能是由于软体自身的错误所引起。
+最后一次资料库查询指令是:
+<blockquote><code>$1</code></blockquote>
+来自于函数 "<code>$2</code>"。
+数据库返回错误 "<samp>$3: $4</samp>"。',
 'dberrortextcl' => '发生了数据库查询语法错误。最后一次数据库查询指令是:
 “$1”
 来自函数“$2”内。数据库返回错误“$3: $4”。',
@@ -649,8 +652,11 @@ $1',
 'protectedpagetext' => '该页面已被保护以防止编辑。',
 'viewsourcetext' => '您可以查看并复制此页面的源代码:',
 'viewyourtext' => "您可以查看并复制'''您对此页面作出编辑后'''的源代码:",
-'protectedinterface' => '该页提供了软件的界面文本,它已被保护以防止随意的修改。',
-'editinginterface' => "'''警告:''' 您正在编辑的页面是用于提供软件的界面文本。改变此页将影响其他用户的界面外观。如要翻译,请考虑使用[//translatewiki.net/wiki/Main_Page?setlang=zh-hans translatewiki.net],一个用来为MediaWiki软件本地化的计划。",
+'protectedinterface' => '该页提供此wiki软件的界面文字,它已被保护以防止恶意修改。
+如欲修改所有wiki的翻译,请到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化计划。',
+'editinginterface' => "'''警告:'''您正在编辑的页面是用于提供软件的界面文字。
+改变此页将影响其他在此wiki上的用户界面外观。
+如欲修改所有wiki的翻译,请到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化计划。",
 'sqlhidden' => '(SQL查询已隐藏)',
 'cascadeprotected' => '此页面已被保护,因为这个页面被以下已标注“联锁保护”的{{PLURAL:$1|一个|多个}}被保护页面包含:
 $2',
@@ -893,8 +899,8 @@ $2
 如果您误入此页,请点击浏览器中的“返回”按钮。',
 'anontalkpagetext' => "---- ''这是一个还未建立账户的匿名用户的讨论页, 因此我们只能用IP地址来与他或她联络。该IP地址可能由几名用户共享。如果您是一名匿名用户并认为此页上的评语与您无关,请[[Special:UserLogin/signup|创建新账户]]或[[Special:UserLogin|登录]]以避免在未来与其他匿名用户混淆。''",
 'noarticletext' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索该页标题]]、<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编辑本页面]。</span>',
-'noarticletext-nopermission' => '此页目前没有内容,您可以在其它页[[Special:Search/{{PAGENAME}}|搜索此页标题]],
\88\96<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} æ\90\9cç´¢æ\9c\89å\85³æ\97¥å¿\97]</span>。',
+'noarticletext-nopermission' => '此页目前没有内容
\82¨å\8f¯ä»¥å\9c¨å\85¶å®\83页[[Special:Search/{{PAGENAME}}|æ\90\9c寻此页æ \87é¢\98]]ï¼\8cæ\88\96<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} æ\90\9c寻æ\9c\89å\85³æ\97¥å¿\97]</span>ï¼\8cä½\86æ\82¨æ²¡æ\9c\89æ\9d\83é\99\90建ç«\8b此页。',
 'missing-revision' => '“{{PAGENAME}}”的修订#$1不存在。
 
 这通常是因为进入了一个已被删除的页面的历史链接。
@@ -1233,8 +1239,6 @@ $1",
 'search-interwiki-caption' => '姊妹项目',
 'search-interwiki-default' => '$1项结果:',
 'search-interwiki-more' => '(更多)',
-'search-mwsuggest-enabled' => '有建议',
-'search-mwsuggest-disabled' => '无建议',
 'search-relatedarticle' => '相关',
 'mwsuggest-disable' => '禁用AJAX建议',
 'searcheverything-enable' => '在所有名字空间中搜索',
@@ -2800,7 +2804,6 @@ $1被封禁的理由是:“$2”',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript测试',
-'javascripttest-disabled' => '该wiki站点上尚未启用此功能。',
 'javascripttest-title' => '运行$1测试',
 'javascripttest-pagetext-noframework' => '此页面被保留用于运行JavaScript测试。',
 'javascripttest-pagetext-unknownframework' => '未知的框架“$1”。',
@@ -3887,4 +3890,7 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 'duration-centuries' => '$1个世纪',
 'duration-millennia' => '$1千年',
 
+# Unknown messages
+'searchsuggest-containing' => '含有...',
+'searchsuggest-search' => '搜索',
 );
index 62f778f..b1d4d56 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Traditional Chinese (‪中文(繁體)‬)
+/** Traditional Chinese (中文(繁體)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -591,7 +591,7 @@ $1',
 'viewyourtext' => "您可以查看並複製'''您對此頁面作出編輯後'''的源代碼:",
 'protectedinterface' => '該頁提供此wiki軟體的介面文字,它已被保護以防止惡意修改。
 如欲修改所有wiki的翻譯,請到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化計畫。',
-'editinginterface' => "'''警告:''' 您正在編輯的頁面是用於提供軟體的介面文字。
+'editinginterface' => "'''警告:'''您正在編輯的頁面是用於提供軟體的介面文字。
 改變此頁將影響其他在此wiki上的用戶介面外觀。
 如欲修改所有wiki的翻譯,請到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化計畫。",
 'sqlhidden' => '(隱藏SQL查詢)',
@@ -1203,8 +1203,6 @@ $1",
 'search-interwiki-caption' => '姊妹計劃',
 'search-interwiki-default' => '$1項結果:',
 'search-interwiki-more' => '(更多)',
-'search-mwsuggest-enabled' => '有建議',
-'search-mwsuggest-disabled' => '無建議',
 'search-relatedarticle' => '相關',
 'mwsuggest-disable' => '停用AJAX建議',
 'searcheverything-enable' => '在所有名字空間中搜尋',
@@ -2810,7 +2808,6 @@ $1被封禁的理由是“$2”',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript測試',
-'javascripttest-disabled' => '此功能在此Wiki上未被使用。',
 'javascripttest-title' => '運行$1測試。',
 'javascripttest-pagetext-noframework' => '這個頁面預留了作JavaScript測試。',
 'javascripttest-pagetext-unknownframework' => '未知框架"$1"',
@@ -3896,4 +3893,7 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'duration-centuries' => '$1世紀',
 'duration-millennia' => '$1千年',
 
+# Unknown messages
+'searchsuggest-containing' => '包含...',
+'searchsuggest-search' => '搜尋',
 );
index 6b11704..1056ece 100644 (file)
@@ -131,7 +131,7 @@ class CLDRPluralRuleEvaluator {
  * Evaluator helper class representing a range list.
  */
 class CLDRPluralRuleEvaluator_Range {
-       var $parts = array();
+       public $parts = array();
 
        function __construct( $start, $end = false ) {
                if ( $end === false ) {
@@ -208,9 +208,9 @@ class CLDRPluralRuleEvaluator_Range {
  * Helper class for converting rules to reverse polish notation (RPN).
  */
 class CLDRPluralRuleConverter {
-       var $rule, $pos, $end;
-       var $operators = array();
-       var $operands = array();
+       public $rule, $pos, $end;
+       public $operators = array();
+       public $operands = array();
 
        /**
         * Precedence levels. Note that there's no need to worry about associativity
@@ -447,7 +447,7 @@ class CLDRPluralRuleConverter {
  * The base class for operators and expressions, describing a region of the input string.
  */
 class CLDRPluralRuleConverter_Fragment {
-       var $parser, $pos, $length, $end;
+       public $parser, $pos, $length, $end;
 
        function __construct( $parser, $pos, $length ) {
                $this->parser = $parser;
@@ -473,7 +473,7 @@ class CLDRPluralRuleConverter_Fragment {
  * validation.
  */
 class CLDRPluralRuleConverter_Expression extends CLDRPluralRuleConverter_Fragment {
-       var $type, $rpn;
+       public $type, $rpn;
 
        function __construct( $parser, $type, $rpn, $pos, $length ) {
                parent::__construct( $parser, $pos, $length );
@@ -498,7 +498,7 @@ class CLDRPluralRuleConverter_Expression extends CLDRPluralRuleConverter_Fragmen
  * messages), and the binary operator at that location.
  */
 class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment {
-       var $name;
+       public $name;
 
        /**
         * Each op type has three characters: left operand type, right operand type and result type
index b60a196..e3ba4e5 100644 (file)
@@ -5,7 +5,6 @@
 # {{OUTPUT_DIRECTORY}}
 # {{CURRENT_VERSION}}
 # {{STRIP_FROM_PATH}}
-# {{SVNSTAT}}
 # {{INPUT}}
 #
 # To generate documentation run: php mwdocgen.php --no-extensions
@@ -114,7 +113,7 @@ SHOW_USED_FILES        = YES
 SHOW_DIRECTORIES       = YES
 SHOW_FILES             = YES
 SHOW_NAMESPACES        = NO
-FILE_VERSION_FILTER    = {{SVNSTAT}}
+FILE_VERSION_FILTER    =
 LAYOUT_FILE            =
 CITE_BIB_FILES         =
 #---------------------------------------------------------------------------
@@ -174,7 +173,6 @@ FILE_PATTERNS          = *.c \
                          *.MM \
                          *.PY
 RECURSIVE              = YES
-EXCLUDE                = {{EXCLUDE}}
 EXCLUDE_SYMLINKS       = YES
 EXCLUDE_PATTERNS       = LocalSettings.php AdminSettings.php StartProfiler.php .svn */.git/* {{EXCLUDE_PATTERNS}}
 EXCLUDE_SYMBOLS        =
index 4151723..c00d7a6 100644 (file)
@@ -482,19 +482,11 @@ abstract class Maintenance {
                        $this->error( 'Cannot get command line arguments, register_argc_argv is set to false', true );
                }
 
-               if ( version_compare( phpversion(), '5.2.4' ) >= 0 ) {
-                       // Send PHP warnings and errors to stderr instead of stdout.
-                       // This aids in diagnosing problems, while keeping messages
-                       // out of redirected output.
-                       if ( ini_get( 'display_errors' ) ) {
-                               ini_set( 'display_errors', 'stderr' );
-                       }
-
-                       // Don't touch the setting on earlier versions of PHP,
-                       // as setting it would disable output if you'd wanted it.
-
-                       // Note that exceptions are also sent to stderr when
-                       // command-line mode is on, regardless of PHP version.
+               // Send PHP warnings and errors to stderr instead of stdout.
+               // This aids in diagnosing problems, while keeping messages
+               // out of redirected output.
+               if ( ini_get( 'display_errors' ) ) {
+                       ini_set( 'display_errors', 'stderr' );
                }
 
                $this->loadParamsAndArgs();
diff --git a/maintenance/archives/patch-drop-ss_admins.sql b/maintenance/archives/patch-drop-ss_admins.sql
new file mode 100644 (file)
index 0000000..13c3d3b
--- /dev/null
@@ -0,0 +1,2 @@
+-- field is deprecated and no longer updated as of 1.5
+ALTER TABLE /*_*/site_stats DROP COLUMN ss_admins;
\ No newline at end of file
index 35950f5..0a375c4 100644 (file)
@@ -1,8 +1,8 @@
 -- Add img_sha1, oi_sha1 and related indexes
 ALTER TABLE /*$wgDBprefix*/image
   ADD COLUMN img_sha1 varbinary(32) NOT NULL default '',
-  ADD INDEX img_sha1 (img_sha1);
+  ADD INDEX img_sha1 (img_sha1(10));
 
 ALTER TABLE /*$wgDBprefix*/oldimage
   ADD COLUMN oi_sha1 varbinary(32) NOT NULL default '',
-  ADD INDEX oi_sha1 (oi_sha1);
+  ADD INDEX oi_sha1 (oi_sha1(10));
diff --git a/maintenance/archives/patch-rc_moved.sql b/maintenance/archives/patch-rc_moved.sql
new file mode 100644 (file)
index 0000000..2fa1de6
--- /dev/null
@@ -0,0 +1,4 @@
+-- rc_moved_to_ns and rc_moved_to_title is no longer used, delete the fields
+
+ALTER TABLE /*$wgDBprefix*/recentchanges DROP COLUMN rc_moved_to_ns,
+                                         DROP COLUMN rc_moved_to_title;
index 2c28011..a957957 100644 (file)
@@ -34,9 +34,9 @@ class UpdateLogging {
        /**
         * @var DatabaseBase
         */
-       var $dbw;
-       var $batchSize = 1000;
-       var $minTs = false;
+       public $dbw;
+       public $batchSize = 1000;
+       public $minTs = false;
 
        function execute() {
                $this->dbw = wfGetDB( DB_MASTER );
index cc32946..6afe9e1 100644 (file)
@@ -41,18 +41,20 @@ class UploadStashCleanup extends Maintenance {
        }
 
        public function execute() {
+               global $wgUploadStashMaxAge;
+
                $repo = RepoGroup::singleton()->getLocalRepo();
 
                $dbr = $repo->getSlaveDb();
 
                // how far back should this look for files to delete?
-               global $wgUploadStashMaxAge;
+               $cutoff = time() - $wgUploadStashMaxAge;
 
                $this->output( "Getting list of files to clean up...\n" );
                $res = $dbr->select(
                        'uploadstash',
                        'us_key',
-                       'us_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( time() - $wgUploadStashMaxAge ) ),
+                       'us_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( $cutoff ) ),
                        __METHOD__
                );
 
@@ -82,6 +84,24 @@ class UploadStashCleanup extends Maintenance {
                                $stash->removeFileNoAuth( $key );
                        } catch ( UploadStashBadPathException $ex ) {
                                $this->output( "Failed removing stashed upload with key: $key\n"  );
+                       } catch ( UploadStashZeroLengthFileException $ex ) {
+                               $this->output( "Failed removing stashed upload with key: $key\n"  );
+                       }
+                       if ( $i % 100 == 0 ) {
+                               $this->output( "$i\n" );
+                       }
+               }
+               $this->output( "$i done\n" );
+
+               $tempRepo = $repo->getTempRepo();
+               $dir      = $tempRepo->getZonePath( 'thumb' );
+               $iterator = $tempRepo->getBackend()->getFileList( array( 'dir' => $dir ) );
+
+               $this->output( "Deleting old thumbnails...\n" );
+               $i = 0;
+               foreach ( $iterator as $file ) {
+                       if ( wfTimestamp( TS_UNIX, $tempRepo->getFileTimestamp( "$dir/$file" ) ) < $cutoff ) {
+                               $tempRepo->quickPurge( "$dir/$file" );
                        }
                        if ( $i % 100 == 0 ) {
                                $this->output( "$i\n" );
index 501bcfc..d98cfe3 100644 (file)
@@ -40,7 +40,8 @@ class TestFileOpPerformance extends Maintenance {
                $this->addOption( 'b2', 'Backend 2', false, true );
                $this->addOption( 'srcdir', 'File source directory', true, true );
                $this->addOption( 'maxfiles', 'Max files', false, true );
-               $this->addOption( 'quick', 'Avoid operation pre-checks' );
+               $this->addOption( 'quick', 'Avoid operation pre-checks (use doQuickOperations())' );
+               $this->addOption( 'parallelize', '"parallelize" flag for doOperations()', false, true );
        }
 
        public function execute() {
@@ -95,8 +96,13 @@ class TestFileOpPerformance extends Maintenance {
 
                $method = $this->hasOption( 'quick' ) ? 'doQuickOperations' : 'doOperations';
 
+               $opts = array( 'force' => 1 );
+               if ( $this->hasOption( 'parallelize' ) ) {
+                       $opts['parallelize'] = ( $this->getOption( 'parallelize' ) === 'true' );
+               }
+
                $start = microtime( true );
-               $status = $backend->$method( $ops1, array( 'force' => 1 ) );
+               $status = $backend->$method( $ops1, $opts );
                $e = ( microtime( true ) - $start ) * 1000;
                if ( $status->getErrorsArray() ) {
                        print_r( $status->getErrorsArray() );
@@ -105,7 +111,7 @@ class TestFileOpPerformance extends Maintenance {
                $this->output( $backend->getName() . ": Stored " . count( $ops1 ) . " files in $e ms.\n" );
 
                $start = microtime( true );
-               $backend->$method( $ops2, array( 'force' => 1 ) );
+               $backend->$method( $ops2, $opts );
                $e = ( microtime( true ) - $start ) * 1000;
                if ( $status->getErrorsArray() ) {
                        print_r( $status->getErrorsArray() );
@@ -114,7 +120,7 @@ class TestFileOpPerformance extends Maintenance {
                $this->output( $backend->getName() . ": Copied " . count( $ops2 ) . " files in $e ms.\n" );
 
                $start = microtime( true );
-               $backend->$method( $ops3, array( 'force' => 1 ) );
+               $backend->$method( $ops3, $opts );
                $e = ( microtime( true ) - $start ) * 1000;
                if ( $status->getErrorsArray() ) {
                        print_r( $status->getErrorsArray() );
@@ -123,7 +129,7 @@ class TestFileOpPerformance extends Maintenance {
                $this->output( $backend->getName() . ": Moved " . count( $ops3 ) . " files in $e ms.\n" );
 
                $start = microtime( true );
-               $backend->$method( $ops4, array( 'force' => 1 ) );
+               $backend->$method( $ops4, $opts );
                $e = ( microtime( true ) - $start ) * 1000;
                if ( $status->getErrorsArray() ) {
                        print_r( $status->getErrorsArray() );
@@ -132,7 +138,7 @@ class TestFileOpPerformance extends Maintenance {
                $this->output( $backend->getName() . ": Deleted " . count( $ops4 ) . " files in $e ms.\n" );
 
                $start = microtime( true );
-               $backend->$method( $ops5, array( 'force' => 1 ) );
+               $backend->$method( $ops5, $opts );
                $e = ( microtime( true ) - $start ) * 1000;
                if ( $status->getErrorsArray() ) {
                        print_r( $status->getErrorsArray() );
index 6f017ec..d808500 100644 (file)
@@ -55,7 +55,12 @@ class FixDoubleRedirects extends Maintenance {
 
                $dbr = wfGetDB( DB_SLAVE );
 
-               $tables = array( 'redirect', 'pa' => 'page', 'pb' => 'page' );
+               // See also SpecialDoubleRedirects
+               $tables = array(
+                       'redirect',
+                       'pa' => 'page',
+                       'pb' => 'page',
+               );
                $fields = array(
                        'pa.page_namespace AS pa_namespace',
                        'pa.page_title AS pa_title',
@@ -66,6 +71,7 @@ class FixDoubleRedirects extends Maintenance {
                        'rd_from = pa.page_id',
                        'rd_namespace = pb.page_namespace',
                        'rd_title = pb.page_title',
+                       '(rd_interwiki IS NULL OR rd_interwiki = "")', // bug 40352
                        'pb.page_is_redirect' => 1,
                );
 
@@ -83,12 +89,18 @@ class FixDoubleRedirects extends Maintenance {
                }
 
                $jobs = array();
+               $processedTitles = "\n";
                $n = 0;
                foreach ( $res as $row ) {
                        $titleA = Title::makeTitle( $row->pa_namespace, $row->pa_title );
                        $titleB = Title::makeTitle( $row->pb_namespace, $row->pb_title );
 
-                       $job = new DoubleRedirectJob( $titleA, array( 'reason' => 'maintenance', 'redirTitle' => $titleB->getPrefixedDBkey() ) );
+                       $processedTitles .= "* [[$titleA]]\n";
+
+                       $job = new DoubleRedirectJob( $titleA, array(
+                               'reason' => 'maintenance',
+                               'redirTitle' => $titleB->getPrefixedDBkey()
+                       ) );
 
                        if ( !$async ) {
                                $success = ( $dryrun ? true : $job->run() );
@@ -112,7 +124,7 @@ class FixDoubleRedirects extends Maintenance {
                if ( count( $jobs ) ) {
                        $this->queueJobs( $jobs, $dryrun );
                }
-               $this->output( "$n double redirects processed.\n" );
+               $this->output( "$n double redirects processed" . $processedTitles . "\n" );
        }
 
        protected function queueJobs( $jobs, $dryrun = false ) {
index f3a5d87..adea97e 100644 (file)
@@ -44,7 +44,7 @@ class GenerateSitemap extends Maintenance {
         *
         * @var int
         */
-       var $url_limit;
+       public $url_limit;
 
        /**
         * The maximum size of a sitemap file
@@ -53,77 +53,77 @@ class GenerateSitemap extends Maintenance {
         *
         * @var int
         */
-       var $size_limit;
+       public $size_limit;
 
        /**
         * The path to prepend to the filename
         *
         * @var string
         */
-       var $fspath;
+       public $fspath;
 
        /**
         * The URL path to prepend to filenames in the index; should resolve to the same directory as $fspath
         *
         * @var string
         */
-       var $urlpath;
+       public $urlpath;
 
        /**
         * Whether or not to use compression
         *
         * @var bool
         */
-       var $compress;
+       public $compress;
 
        /**
         * Whether or not to include redirection pages
         *
         * @var bool
         */
-       var $skipRedirects;
+       public $skipRedirects;
 
        /**
         * The number of entries to save in each sitemap file
         *
         * @var array
         */
-       var $limit = array();
+       public $limit = array();
 
        /**
         * Key => value entries of namespaces and their priorities
         *
         * @var array
         */
-       var $priorities = array();
+       public $priorities = array();
 
        /**
         * A one-dimensional array of namespaces in the wiki
         *
         * @var array
         */
-       var $namespaces = array();
+       public $namespaces = array();
 
        /**
         * When this sitemap batch was generated
         *
         * @var string
         */
-       var $timestamp;
+       public $timestamp;
 
        /**
         * A database slave object
         *
         * @var object
         */
-       var $dbr;
+       public $dbr;
 
        /**
         * A resource pointing to the sitemap index file
         *
         * @var resource
         */
-       var $findex;
+       public $findex;
 
 
        /**
@@ -131,7 +131,7 @@ class GenerateSitemap extends Maintenance {
         *
         * @var resource
         */
-       var $file;
+       public $file;
 
        /**
         * Identifier to use in filenames, default $wgDBname
index f51d7ad..904b624 100644 (file)
@@ -32,13 +32,13 @@ require_once( __DIR__ . '/Maintenance.php' );
  * @ingroup Maintenance
  */
 class BackupReader extends Maintenance {
-       var $reportingInterval = 100;
-       var $pageCount = 0;
-       var $revCount  = 0;
-       var $dryRun    = false;
-       var $uploads   = false;
-       var $imageBasePath = false;
-       var $nsFilter  = false;
+       public $reportingInterval = 100;
+       public $pageCount = 0;
+       public $revCount  = 0;
+       public $dryRun    = false;
+       public $uploads   = false;
+       public $imageBasePath = false;
+       public $nsFilter  = false;
 
        function __construct() {
                parent::__construct();
index 8d92383..a8cd2ff 100644 (file)
  * @author Mij <mij@bitchx.it>
  */
 
-$optionsWithArgs = array( 'extensions', 'comment', 'comment-file', 'comment-ext', 'user', 'license', 'sleep', 'limit', 'from', 'source-wiki-url' );
+$optionsWithArgs = array(
+       'extensions', 'comment', 'comment-file', 'comment-ext', 'summary', 'user',
+       'license', 'sleep', 'limit', 'from', 'source-wiki-url', 'timestamp',
+);
 require_once( __DIR__ . '/commandLine.inc' );
 require_once( __DIR__ . '/importImages.inc' );
 $processed = $added = $ignored = $skipped = $overwritten = $failed = 0;
@@ -98,6 +101,8 @@ if ( $limit ) {
        $limit = (int)$limit;
 }
 
+$timestamp = isset( $options['timestamp'] ) ? $options['timestamp'] : false;
+
 # Get the upload comment. Provide a default one in case there's no comment given.
 $comment = 'Importing image file';
 
@@ -112,6 +117,8 @@ if ( isset( $options['comment-file'] ) ) {
 
 $commentExt = isset( $options['comment-ext'] ) ? $options['comment-ext'] : false;
 
+$summary = isset( $options['summary'] ) ? $options['summary'] : '';
+
 # Get the license specifier
 $license = isset( $options['license'] ) ? $options['license'] : '';
 
@@ -230,9 +237,14 @@ if ( $count > 0 ) {
                        }
                }
 
+               $commentText = SpecialUpload::getInitialPageText( $commentText, $license );
+               if ( !$summary ) {
+                       $summary = $commentText;
+               }
+
                if ( isset( $options['dry'] ) ) {
                        echo( "done.\n" );
-               } elseif ( $image->recordUpload( $archive->value, $commentText, $license ) ) {
+               } elseif ( $image->recordUpload2( $archive->value, $summary, $commentText, false, $timestamp ) ) {
                        # We're done!
                        echo( "done.\n" );
 
@@ -315,24 +327,26 @@ USAGE: php importImages.php [options] <dir>
 
 Options:
 --extensions=<exts>    Comma-separated list of allowable extensions, defaults to \$wgFileExtensions
---overwrite            Overwrite existing images with the same name (default is to skip them)
---limit=<num>          Limit the number of images to process. Ignored or skipped images are not counted.
---from=<name>          Ignore all files until the one with the given name. Useful for resuming
-                                               aborted imports. <name> should be the file's canonical database form.
---skip-dupes           Skip images that were already uploaded under a different name (check SHA1)
---sleep=<sec>          Sleep between files. Useful mostly for debugging.
---user=<username>      Set username of uploader, default 'Maintenance script'
---check-userblock      Check if the user got blocked during import.
---comment=<text>       Set upload summary comment, default 'Importing image file'.
---comment-file=<file>          Set upload summary comment the the content of <file>.
---comment-ext=<ext>    Causes the comment for each file to be loaded from a file with the same name
-                       but the extension <ext>. If a global comment is also given, it is appended.
---license=<code>       Use an optional license template
---dry                  Dry run, don't import anything
+--overwrite             Overwrite existing images with the same name (default is to skip them)
+--limit=<num>           Limit the number of images to process. Ignored or skipped images are not counted.
+--from=<name>           Ignore all files until the one with the given name. Useful for resuming
+                        aborted imports. <name> should be the file's canonical database form.
+--skip-dupes            Skip images that were already uploaded under a different name (check SHA1)
+--sleep=<sec>           Sleep between files. Useful mostly for debugging.
+--user=<username>       Set username of uploader, default 'Maintenance script'
+--check-userblock       Check if the user got blocked during import.
+--comment=<text>        Set file description, default 'Importing image file'.
+--comment-file=<file>   Set description to the content of <file>.
+--comment-ext=<ext>     Causes the description for each file to be loaded from a file with the same name
+                        but the extension <ext>. If a global description is also given, it is appended.
+--license=<code>        Use an optional license template
+--dry                   Dry run, don't import anything
 --protect=<protect>     Specify the protect value (autoconfirmed,sysop)
+--summary=<summary>     Upload summary, description will be used if not provided
+--timestamp=<timestamp> Override upload time/date, all MediaWiki timestamp formats are accepted
 --unprotect             Unprotects all uploaded images
---source-wiki-url   if specified, take User and Comment data for each imported file from this URL.
-                                       For example, --source-wiki-url="http://en.wikipedia.org/"
+--source-wiki-url       If specified, take User and Comment data for each imported file from this URL.
+                        For example, --source-wiki-url="http://en.wikipedia.org/"
 
 TEXT;
        exit( 1 );
index ceafc39..1a2e121 100644 (file)
@@ -29,7 +29,7 @@ require_once( __DIR__ . '/Maintenance.php' );
  * @ingroup Maintenance
  */
 class JSParseHelper extends Maintenance {
-       var $errs = 0;
+       public $errs = 0;
 
        public function __construct() {
                parent::__construct();
index e34d9a1..e2ad6a7 100644 (file)
@@ -30,19 +30,19 @@ require_once( __DIR__ .'/../Maintenance.php' );
  */
 class GenerateCollationData extends Maintenance {
        /** The directory with source data files in it */
-       var $dataDir;
+       public $dataDir;
 
        /** The primary weights, indexed by codepoint */
-       var $weights;
+       public $weights;
 
        /**
         * A hashtable keyed by codepoint, where presence indicates that a character
         * has a decomposition mapping. This makes it non-preferred for group header
         * selection.
         */
-       var $mappedChars;
+       public $mappedChars;
 
-       var $debugOutFile;
+       public $debugOutFile;
 
        /**
         * Important tertiary weights from UTS #10 section 7.2
@@ -285,12 +285,12 @@ class GenerateCollationData extends Maintenance {
 }
 
 class UcdXmlReader {
-       var $fileName;
-       var $callback;
-       var $groupAttrs;
-       var $xml;
-       var $blocks = array();
-       var $currentBlock;
+       public $fileName;
+       public $callback;
+       public $groupAttrs;
+       public $xml;
+       public $blocks = array();
+       public $currentBlock;
 
        function __construct( $fileName ) {
                $this->fileName = $fileName;
index 54dfa39..33163d4 100644 (file)
@@ -32,7 +32,7 @@ require_once( __DIR__ . '/../../includes/normal/UtfNormalUtil.php' );
  * @ingroup MaintenanceLanguage
  */
 class GenerateNormalizerData extends Maintenance {
-       var $dataFile;
+       public $dataFile;
 
        public function __construct() {
                parent::__construct();
index b644d8e..e12b26b 100644 (file)
@@ -910,8 +910,6 @@ $wgMessageStructure = array(
                'search-interwiki-default',
                'search-interwiki-custom',
                'search-interwiki-more',
-               'search-mwsuggest-enabled',
-               'search-mwsuggest-disabled',
                'search-relatedarticle',
                'mwsuggest-disable',
                'searcheverything-enable',
@@ -2453,7 +2451,6 @@ $wgMessageStructure = array(
        'javaccripttest' => array(
                'javascripttest',
                'javascripttest-backlink',
-               'javascripttest-disabled',
                'javascripttest-title',
                'javascripttest-pagetext-noframework',
                'javascripttest-pagetext-unknownframework',
@@ -3738,6 +3735,10 @@ $wgMessageStructure = array(
                'feedback-bugcheck',
                'feedback-bugnew',
        ),
+       'searchsuggestions' => array(
+               'searchsuggest-search',
+               'searchsuggest-containing',
+       ),
        'apierrors' => array(
                'api-error-badaccess-groups',
                'api-error-badtoken',
@@ -4027,6 +4028,7 @@ Variants for Chinese language",
        'logging'               => 'New logging system',
        'logging-irc'           => 'For IRC, see bug 34508. Do not change',
        'feedback'              => 'Feedback',
+       'searchsuggestions'     => 'Search suggestions',
        'apierrors'             => 'API errors',
        'duration'              => 'Durations',
        'cachedspecial'         => 'SpecialCachedPage',
index 9f5a909..0846a64 100644 (file)
@@ -29,7 +29,7 @@ require_once( __DIR__ . '/Maintenance.php' );
  * @ingroup Maintenance
  */
 class MinifyScript extends Maintenance {
-       var $outDir;
+       public $outDir;
 
        public function __construct() {
                parent::__construct();
index 583249a..e36674e 100644 (file)
@@ -60,9 +60,6 @@ $doxygenTemplate = $mwPath . 'maintenance/Doxyfile';
 /** doxygen input filter to tweak source file before they are parsed */
 $doxygenInputFilter = "php {$mwPath}maintenance/mwdoc-filter.php";
 
-/** svnstat command, used to get the version of each file */
-$svnstat = $mwPath . 'bin/svnstat';
-
 /** where Phpdoc should output documentation */
 $doxyOutput = $mwPath . 'docs' . DIRECTORY_SEPARATOR ;
 
@@ -104,31 +101,12 @@ function readaline( $prompt = '' ) {
        return $resp;
 }
 
-/**
- * Copied from SpecialVersion::getSvnRevision()
- * @param $dir String
- * @return Mixed: string or false
- */
-function getSvnRevision( $dir ) {
-       // http://svnbook.red-bean.com/nightly/en/svn.developer.insidewc.html
-       $entries = $dir . '/.svn/entries';
-
-       if ( !file_exists( $entries ) ) {
-               return false;
-       }
-
-       $content = file( $entries );
-
-       return intval( $content[3] );
-}
-
 /**
  * Generate a configuration file given user parameters and return the temporary filename.
  * @param $doxygenTemplate String: full path for the template.
  * @param $outputDirectory String: directory where the stuff will be output.
  * @param $stripFromPath String: path that should be stripped out (usually mediawiki base path).
  * @param $currentVersion String: Version number of the software
- * @param $svnstat String: path to the svnstat file
  * @param $input String: Path to analyze.
  * @param $exclude String: Additionals path regex to exclude
  * @param $excludePatterns String: Additionals path regex to exclude
@@ -136,7 +114,7 @@ function getSvnRevision( $dir ) {
  * @param $doxyGenerateMan Boolean
  * @return string
  */
-function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude, $excludePatterns, $doxyGenerateMan ) {
+function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $input, $exclude, $excludePatterns, $doxyGenerateMan ) {
        global $doxygenInputFilter;
 
        $template = file_get_contents( $doxygenTemplate );
@@ -145,7 +123,6 @@ function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath,
                '{{OUTPUT_DIRECTORY}}' => $outputDirectory,
                '{{STRIP_FROM_PATH}}'  => $stripFromPath,
                '{{CURRENT_VERSION}}'  => $currentVersion,
-               '{{SVNSTAT}}'          => $svnstat,
                '{{INPUT}}'            => $input,
                '{{EXCLUDE}}'          => $exclude,
                '{{EXCLUDE_PATTERNS}}' => $excludePatterns,
@@ -258,20 +235,14 @@ case 6:
        $excludePatterns = 'extensions';
 }
 
-$versionNumber = getSvnRevision( $input );
-if ( $versionNumber === false ) { # Not using subversion ?
-       $svnstat = ''; # Not really useful if subversion not available
-       # @todo FIXME
-       $version = 'trunk';
-} else {
-       $version = "trunk (r$versionNumber)";
-}
+// @todo FIXME to work on git
+$version = 'master';
 
 // Generate path exclusions
 $excludedPaths = $mwPath . join( " $mwPath", $mwExcludePaths );
 print "EXCLUDE: $excludedPaths\n\n";
 
-$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input, $excludedPaths, $excludePatterns, $doxyGenerateMan );
+$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $input, $excludedPaths, $excludePatterns, $doxyGenerateMan );
 $command = $doxygenBin . ' ' . $generatedConf;
 
 echo <<<TEXT
index a53bc88..49c7aee 100644 (file)
@@ -26,7 +26,7 @@ require_once( __DIR__ . '/commandLine.inc' );
 $wgHooks['BeforeParserFetchTemplateAndtitle'][] = 'PPFuzzTester::templateHook';
 
 class PPFuzzTester {
-       var $hairs = array(
+       public $hairs = array(
                '[[', ']]', '{{', '{{', '}}', '}}', '{{{', '}}}',
                '<', '>', '<nowiki', '<gallery', '</nowiki>', '</gallery>', '<nOwIkI>', '</NoWiKi>',
                '<!--' , '-->',
@@ -39,12 +39,12 @@ class PPFuzzTester {
                // extensions
                // '<ref>', '</ref>', '<references/>',
        );
-       var $minLength = 0;
-       var $maxLength = 20;
-       var $maxTemplates = 5;
-       // var $outputTypes = array( 'OT_HTML', 'OT_WIKI', 'OT_PREPROCESS' );
-       var $entryPoints = array( 'testSrvus', 'testPst', 'testPreprocess' );
-       var $verbose = false;
+       public $minLength = 0;
+       public $maxLength = 20;
+       public $maxTemplates = 5;
+       // public $outputTypes = array( 'OT_HTML', 'OT_WIKI', 'OT_PREPROCESS' );
+       public $entryPoints = array( 'testSrvus', 'testPst', 'testPreprocess' );
+       public $verbose = false;
        static $currentTest = false;
 
        function execute() {
@@ -140,7 +140,7 @@ class PPFuzzTester {
 }
 
 class PPFuzzTest {
-       var $templates, $mainText, $title, $entryPoint, $output;
+       public $templates, $mainText, $title, $entryPoint, $output;
 
        function __construct( $tester ) {
                global $wgMaxSigChars;
@@ -219,7 +219,7 @@ class PPFuzzTest {
 }
 
 class PPFuzzUser extends User {
-       var $ppfz_test, $mDataLoaded;
+       public $ppfz_test, $mDataLoaded;
 
        function load() {
                if ( $this->mDataLoaded ) {
index 1c41798..f067dc6 100644 (file)
@@ -30,7 +30,7 @@ require( __DIR__ . '/Maintenance.php' );
  * @ingroup Maintenance
  */
 class PurgeParserCache extends Maintenance {
-       var $lastProgress;
+       public $lastProgress;
 
        function __construct() {
                parent::__construct();
index 0278f72..bfaaab5 100644 (file)
@@ -218,24 +218,17 @@ class RebuildRecentchanges extends Maintenance {
         * DOCUMENT ME!
         */
        private function rebuildRecentChangesTablePass4() {
-               global $wgGroupPermissions, $wgUseRCPatrol;
+               global $wgUseRCPatrol;
 
                $dbw = wfGetDB( DB_MASTER );
 
                list( $recentchanges, $usergroups, $user ) = $dbw->tableNamesN( 'recentchanges', 'user_groups', 'user' );
 
-               $botgroups = $autopatrolgroups = array();
-               foreach ( $wgGroupPermissions as $group => $rights ) {
-                       if ( isset( $rights['bot'] ) && $rights['bot'] ) {
-                               $botgroups[] = $dbw->addQuotes( $group );
-                       }
-                       if ( $wgUseRCPatrol && isset( $rights['autopatrol'] ) && $rights['autopatrol'] ) {
-                               $autopatrolgroups[] = $dbw->addQuotes( $group );
-                       }
-               }
+               $botgroups = User::getGroupsWithPermission( 'bot' );
+               $autopatrolgroups = $wgUseRCPatrol ? User::getGroupsWithPermission( 'autopatrol' ) : array();
                # Flag our recent bot edits
                if ( !empty( $botgroups ) ) {
-                       $botwhere = implode( ',', $botgroups );
+                       $botwhere = $dbw->makeList( $botgroups );
                        $botusers = array();
 
                        $this->output( "Flagging bot account edits...\n" );
@@ -259,7 +252,7 @@ class RebuildRecentchanges extends Maintenance {
                global $wgMiserMode;
                # Flag our recent autopatrolled edits
                if ( !$wgMiserMode && !empty( $autopatrolgroups ) ) {
-                       $patrolwhere = implode( ',', $autopatrolgroups );
+                       $patrolwhere = $dbw->makeList( $autopatrolgroups );
                        $patrolusers = array();
 
                        $this->output( "Flagging auto-patrolled edits...\n" );
diff --git a/maintenance/sqlite/archives/patch-drop-ss_admins.sql b/maintenance/sqlite/archives/patch-drop-ss_admins.sql
new file mode 100644 (file)
index 0000000..9951e17
--- /dev/null
@@ -0,0 +1,22 @@
+-- field is deprecated and no longer updated as of 1.5
+CREATE TABLE /*_*/site_stats_tmp (
+  ss_row_id int unsigned NOT NULL,
+  ss_total_views bigint unsigned default 0,
+  ss_total_edits bigint unsigned default 0,
+  ss_good_articles bigint unsigned default 0,
+  ss_total_pages bigint default '-1',
+  ss_users bigint default '-1',
+  ss_active_users bigint default '-1',
+  ss_images int default 0
+) /*$wgDBTableOptions*/;
+
+INSERT INTO /*_*/site_stats_tmp
+       SELECT ss_row_id, ss_total_views, ss_total_edits, ss_good_articles,
+               ss_total_pages, ss_users, ss_active_users, ss_images
+               FROM /*_*/site_stats;
+
+DROP TABLE /*_*/site_stats;
+
+ALTER TABLE /*_*/site_stats_tmp RENAME TO /*_*/site_stats;
+
+CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats (ss_row_id);
\ No newline at end of file
diff --git a/maintenance/sqlite/archives/patch-rc_moved.sql b/maintenance/sqlite/archives/patch-rc_moved.sql
new file mode 100644 (file)
index 0000000..70248d5
--- /dev/null
@@ -0,0 +1,46 @@
+-- rc_moved_to_ns and rc_moved_to_title is no longer used, delete the fields
+
+CREATE TABLE /*_*/recentchanges_tmp (
+  rc_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+  rc_timestamp varbinary(14) NOT NULL default '',
+  rc_cur_time varbinary(14) NOT NULL default '',
+  rc_user int unsigned NOT NULL default 0,
+  rc_user_text varchar(255) binary NOT NULL,
+  rc_namespace int NOT NULL default 0,
+  rc_title varchar(255) binary NOT NULL default '',
+  rc_comment varchar(255) binary NOT NULL default '',
+  rc_minor tinyint unsigned NOT NULL default 0,
+  rc_bot tinyint unsigned NOT NULL default 0,
+  rc_new tinyint unsigned NOT NULL default 0,
+  rc_cur_id int unsigned NOT NULL default 0,
+  rc_this_oldid int unsigned NOT NULL default 0,
+  rc_last_oldid int unsigned NOT NULL default 0,
+  rc_type tinyint unsigned NOT NULL default 0,
+  rc_patrolled tinyint unsigned NOT NULL default 0,
+  rc_ip varbinary(40) NOT NULL default '',
+  rc_old_len int,
+  rc_new_len int,
+  rc_deleted tinyint unsigned NOT NULL default 0,
+  rc_logid int unsigned NOT NULL default 0,
+  rc_log_type varbinary(255) NULL default NULL,
+  rc_log_action varbinary(255) NULL default NULL,
+  rc_params blob NULL
+) /*$wgDBTableOptions*/;
+
+INSERT INTO /*_*/recentchanges_tmp
+       SELECT rc_id, rc_timestamp, rc_cur_time, rc_user, rc_user_text, rc_namespace, rc_title, rc_comment,
+               rc_minor, rc_bot, rc_new, rc_cur_id, rc_this_oldid, rc_last_oldid, rc_type, rc_patrolled, rc_ip,
+               rc_old_len, rc_new_len, rc_deleted, rc_logid, rc_log_type, rc_log_action, rc_params
+               FROM /*_*/recentchanges;
+
+DROP TABLE /*_*/recentchanges;
+
+ALTER TABLE /*_*/recentchanges_tmp RENAME TO /*_*/recentchanges;
+
+CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp);
+CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title);
+CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id);
+CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp);
+CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip);
+CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text);
+CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp);
index 5797a6c..fd9393f 100644 (file)
@@ -44,10 +44,10 @@ if ( !defined( 'MEDIAWIKI' ) ) {
  */
 class CheckStorage {
        const CONCAT_HEADER = 'O:27:"concatenatedgziphistoryblob"';
-       var $oldIdMap, $errors;
-       var $dbStore = null;
+       public $oldIdMap, $errors;
+       public $dbStore = null;
 
-       var $errorDescriptions = array(
+       public $errorDescriptions = array(
                'restore text' => 'Damaged text, need to be restored from a backup',
                'restore revision' => 'Damaged revision row, need to be restored from a backup',
                'unfixable' => 'Unexpected errors with no automated fixing method',
index 21a4957..d394558 100644 (file)
@@ -29,10 +29,10 @@ require_once( __DIR__ . '/../Maintenance.php' );
  * @ingroup Maintenance ExternalStorage
  */
 class FixBug20757 extends Maintenance {
-       var $batchSize = 10000;
-       var $mapCache = array();
-       var $mapCacheSize = 0;
-       var $maxMapCacheSize = 1000000;
+       public $batchSize = 10000;
+       public $mapCache = array();
+       public $mapCacheSize = 0;
+       public $maxMapCacheSize = 1000000;
 
        function __construct() {
                parent::__construct();
index f770681..fe62ddf 100644 (file)
@@ -49,19 +49,19 @@ $job->execute();
  * @ingroup Maintenance ExternalStorage
  */
 class RecompressTracked {
-       var $destClusters;
-       var $batchSize = 1000;
-       var $orphanBatchSize = 1000;
-       var $reportingInterval = 10;
-       var $numProcs = 1;
-       var $useDiff, $pageBlobClass, $orphanBlobClass;
-       var $slavePipes, $slaveProcs, $prevSlaveId;
-       var $copyOnly = false;
-       var $isChild = false;
-       var $slaveId = false;
-       var $noCount = false;
-       var $debugLog, $infoLog, $criticalLog;
-       var $store;
+       public $destClusters;
+       public $batchSize = 1000;
+       public $orphanBatchSize = 1000;
+       public $reportingInterval = 10;
+       public $numProcs = 1;
+       public $useDiff, $pageBlobClass, $orphanBlobClass;
+       public $slavePipes, $slaveProcs, $prevSlaveId;
+       public $copyOnly = false;
+       public $isChild = false;
+       public $slaveId = false;
+       public $noCount = false;
+       public $debugLog, $infoLog, $criticalLog;
+       public $store;
 
        static $optionsWithArgs = array( 'procs', 'slave-id', 'debug-log', 'info-log', 'critical-log' );
        static $cmdLineOptionMap = array(
@@ -676,10 +676,10 @@ class RecompressTracked {
  * Class to represent a recompression operation for a single CGZ blob
  */
 class CgzCopyTransaction {
-       var $parent;
-       var $blobClass;
-       var $cgz;
-       var $referrers;
+       public $parent;
+       public $blobClass;
+       public $cgz;
+       public $referrers;
 
        /**
         * Create a transaction from a RecompressTracked object
index 214168a..2f3c8c6 100644 (file)
@@ -37,12 +37,12 @@ $tracker->run();
 echo "All done.\n";
 
 class TrackBlobs {
-       var $clusters, $textClause;
-       var $doBlobOrphans;
-       var $trackedBlobs = array();
+       public $clusters, $textClause;
+       public $doBlobOrphans;
+       public $trackedBlobs = array();
 
-       var $batchSize = 1000;
-       var $reportingInterval = 10;
+       public $batchSize = 1000;
+       public $reportingInterval = 10;
 
        function __construct( $clusters ) {
                $this->clusters = $clusters;
index 062052f..4f52289 100644 (file)
@@ -689,9 +689,6 @@ CREATE TABLE /*_*/site_stats (
   -- Number of users that still edit
   ss_active_users bigint default '-1',
 
-  -- Deprecated, no longer updated as of 1.5
-  ss_admins int default '-1',
-
   -- Number of images, equivalent to SELECT COUNT(*) FROM image
   ss_images int default 0
 ) /*$wgDBTableOptions*/;
@@ -846,7 +843,7 @@ CREATE INDEX /*i*/img_size ON /*_*/image (img_size);
 -- Used by Special:Newimages and Special:ListFiles
 CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp);
 -- Used in API and duplicate search
-CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1);
+CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1(10));
 
 
 --
@@ -884,7 +881,7 @@ CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timest
 CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp);
 -- oi_archive_name truncated to 14 to avoid key length overflow
 CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14));
-CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1);
+CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1(10));
 
 
 --
@@ -1045,10 +1042,6 @@ CREATE TABLE /*_*/recentchanges (
   -- The type of change entry (RC_EDIT,RC_NEW,RC_LOG)
   rc_type tinyint unsigned NOT NULL default 0,
 
-  -- These may no longer be used, with the new move log.
-  rc_moved_to_ns tinyint unsigned NOT NULL default 0,
-  rc_moved_to_title varchar(255) binary NOT NULL default '',
-
   -- If the Recent Changes Patrol option is enabled,
   -- users may mark edits as having been reviewed to
   -- remove a warning flag on the RC list.
index ca0f95d..1cb97f9 100644 (file)
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @ingroup Testing
+ * @ingroup Maintenance Testing
  * @todo Fixme: Make this more generic
  */
 
 /**
  * Terminal that supports ANSI escape sequences.
+ *
+ * @ingroup Maintenance Testing
  */
 class AnsiTermColorer {
        function __construct() {
@@ -56,6 +58,8 @@ class AnsiTermColorer {
 
 /**
  * A colour-less terminal
+ *
+ * @ingroup Maintenance Testing
  */
 class DummyTermColorer {
        public function color( $color ) {
index b732508..04a2d47 100644 (file)
@@ -38,7 +38,7 @@ class UpdateCollation extends Maintenance {
        const BATCH_SIZE = 50; // Number of rows to process in one batch
        const SYNC_INTERVAL = 20; // Wait for slaves after this many batches
 
-       var $sizeHistogram = array();
+       public $sizeHistogram = array();
 
        public function __construct() {
                parent::__construct();
index 2a71e7e..ac78484 100644 (file)
@@ -96,9 +96,9 @@ class UpdateSearchIndex extends Maintenance {
                $end = $dbw->timestamp( $end );
 
                $page = $dbw->tableName( 'page' );
-               $sql = "SELECT rc_cur_id,rc_type,rc_moved_to_ns,rc_moved_to_title FROM $recentchanges
+               $sql = "SELECT rc_cur_id FROM $recentchanges
                  JOIN $page ON rc_cur_id=page_id AND rc_this_oldid=page_latest
-                 WHERE rc_timestamp BETWEEN '$start' AND '$end'
+                 WHERE rc_type != " . RC_LOG . " AND rc_timestamp BETWEEN '$start' AND '$end'
                  ";
                $res = $dbw->query( $sql, __METHOD__ );
 
@@ -108,17 +108,7 @@ class UpdateSearchIndex extends Maintenance {
        }
 
        public function searchIndexUpdateCallback( $dbw, $row ) {
-               if ( $row->rc_type == RC_MOVE || $row->rc_type == RC_MOVE_OVER_REDIRECT ) {
-                       # Rename searchindex entry
-                       $titleObj = Title::makeTitle( $row->rc_moved_to_ns, $row->rc_moved_to_title );
-                       $title = $titleObj->getPrefixedDBkey();
-                       $this->output( "$title..." );
-                       $u = new SearchUpdate( $row->rc_cur_id, $title, false );
-                       $u->doUpdate();
-                       $this->output( "\n" );
-               } elseif ( $row->rc_type !== RC_LOG ) {
-                       $this->updateSearchIndexForPage( $dbw, $row->rc_cur_id );
-               }
+               $this->updateSearchIndexForPage( $dbw, $row->rc_cur_id );
        }
 }
 
index 065d187..2823210 100644 (file)
@@ -2,6 +2,21 @@
 /**
  * New version of MediaWiki web-based config/installation
  *
+ * 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
  */
 
index 8e6ceda..8e9c368 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Version of mw-config/index.php to used in web server requiring .php5
+ * extension to execute scripts with PHP5 egine.
+ *
+ * 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
+ */
 
 define('MW_INSTALL_PHP5_EXT', 1);
 require './index.php';
index ae98295..d3d85bb 100644 (file)
@@ -5,6 +5,23 @@
  * Altering it is preferred over changing anything in /includes.
  *
  * Note: this file doesn't gets included from a global scope, don't use globals directly.
+ *
+ * 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
  */
 
 /*
index bbd5fc8..068c58b 100644 (file)
@@ -38,58 +38,128 @@ if ( isset( $_SERVER['MW_COMPILED'] ) ) {
 header( 'Content-Type: text/html; charset=utf-8' );
 
 ?>
+<!DOCTYPE html>
 <html>
 <head>
+<meta charset="UTF-8">
 <title>Profiling data</title>
-<style type="text/css">
-       th {
-               text-align: left;
-               border-bottom: solid 1px black;
+<style>
+       /* noc.wikimedia.org/base.css */
+
+       * {
+               margin: 0;
+               padding: 0;
        }
 
-       th, td {
-               padding-left: 0.5em;
-               padding-right: 0.5em;
+       body {
+               padding: 0.5em 1em;
+               background: #fff;
+               font: 14px/1.6 sans-serif;
+               color: #333;
        }
 
-       td.timep, td.memoryp, td.count, td.cpr, td.tpc, td.mpc, td.tpr, td.mpr {
-               text-align: right;
+       p, ul, ol, table {
+               margin: 0.5em 0;
        }
-       td.timep, td.tpc, td.tpr {
-               background-color: #ffff80;
+
+       a {
+               color: #0645AD;
+               text-decoration: none;
        }
-       td.memoryp, td.mpc, td.mpr {
-               background-color: #80f8ff;
+
+       a:hover {
+               text-decoration: underline;
        }
-       td.count, td,cpr {
-               background-color: #80ff80;
+
+       /*!
+        * Bootstrap v2.1.1
+        *
+        * Copyright 2012 Twitter, Inc
+        * Licensed under the Apache License v2.0
+        * http://www.apache.org/licenses/LICENSE-2.0
+        *
+        * Designed and built with all the love in the world @twitter by @mdo and @fat.
+        */
+
+       table {
+               max-width: 100%;
+               background-color: transparent;
+               border-collapse: collapse;
+               border-spacing: 0;
        }
-       td.name {
-               background-color: #89f9f9;
+
+       .table {
+               width: 100%;
+               margin-bottom: 20px;
+       }
+
+       .table th,
+       .table td {
+               padding: 8px;
+               line-height: 20px;
+               text-align: left;
+               vertical-align: top;
+               border-top: 1px solid #ddd;
        }
 
-       tr:hover {
+       .table th {
                font-weight: bold;
        }
+
+       .table thead th {
+               vertical-align: bottom;
+       }
+
+       .table thead:first-child tr:first-child th,
+       .table thead:first-child tr:first-child td {
+               border-top: 0;
+       }
+
+       .table tbody + tbody {
+               border-top: 2px solid #ddd;
+       }
+
+       .table-condensed th,
+       .table-condensed td {
+               padding: 4px 5px;
+       }
+
+       .table-striped tbody tr:nth-child(odd) td,
+       .table-striped tbody tr:nth-child(odd) th {
+               background-color: #f9f9f9;
+       }
+
+       .table-hover tbody tr:hover td,
+       .table-hover tbody tr:hover th {
+               background-color: #f5f5f5;
+       }
+
+       hr {
+               margin: 20px 0;
+               border: 0;
+               border-top: 1px solid #eee;
+               border-bottom: 1px solid #fff;
+       }
+
 </style>
 </head>
 <body>
 <?php
 
 if ( !$wgEnableProfileInfo ) {
-       echo "<p>Disabled</p>\n";
-       echo "</body></html>";
+       echo '<p>Disabled</p>'
+               . '</body></html>';
        exit( 1 );
 }
 
 $dbr = wfGetDB( DB_SLAVE );
 
 if( !$dbr->tableExists( 'profiling' ) ) {
-       echo "<p>No 'profiling' table exists, so we can't show you anything.</p>\n";
-       echo "<p>If you want to log profiling data, create the table using "
-               . "<tt>maintenance/archives/patch-profiling.sql</tt> and enable "
-               . "<tt>\$wgProfileToDatabase</tt>.</p>\n";
-       echo "</body></html>";
+       echo '<p>No <code>profiling</code> table exists, so we can\'t show you anything.</p>'
+               . '<p>If you want to log profiling data, create the table using '
+               . '<code>maintenance/archives/patch-profiling.sql</code> and enable '
+               . '<code>$wgProfileToDatabase</code>.</p>'
+               . '</body></html>';
        exit( 1 );
 }
 
@@ -126,7 +196,7 @@ class profile_point {
                if ( !$ex ) {
                        if ( count( $this->children ) ) {
                                $url = getEscapedProfileUrl( false, false, $expand + array( $this->name() => true ) );
-                               $extet = " <a href=\"$url\">[+]</a>";
+                               $extet = ' <a href="' . $url . '">[+]</a>';
                        } else {
                                $extet = '';
                        }
@@ -138,21 +208,21 @@ class profile_point {
                                }
                        }
 
-                       $extet = " <a href=\"" . getEscapedProfileUrl( false, false, $e ) . "\">[–]</a>";
+                       $extet = ' <a href="' . getEscapedProfileUrl( false, false, $e ) . '">[–]</a>';
                }
                ?>
                <tr>
-               <td class="name" style="padding-left: <?php echo $indent ?>em;">
+               <th><div style="margin-left: <?php echo (int)$indent; ?>em;">
                        <?php echo htmlspecialchars( $this->name() ) . $extet ?>
-               </td>
-               <td class="timep"><?php echo @wfPercent( $this->time() / self::$totaltime * 100 ) ?></td>
-               <td class="memoryp"><?php echo @wfPercent( $this->memory() / self::$totalmemory * 100 ) ?></td>
-               <td class="count"><?php echo $this->count() ?></td>
-               <td class="cpr"><?php echo round( sprintf( '%.2f', $this->callsPerRequest() ), 2 ) ?></td>
-               <td class="tpc"><?php echo round( sprintf( '%.2f', $this->timePerCall() ), 2 ) ?></td>
-               <td class="mpc"><?php echo round( sprintf( '%.2f' ,$this->memoryPerCall() / 1024 ), 2 ) ?></td>
-               <td class="tpr"><?php echo @round( sprintf( '%.2f', $this->time() / self::$totalcount ), 2 ) ?></td>
-               <td class="mpr"><?php echo @round( sprintf( '%.2f' ,$this->memory() / self::$totalcount / 1024 ), 2 ) ?></td>
+               </div></th>
+               <td class="mw-profileinfo-timep"><?php echo @wfPercent( $this->time() / self::$totaltime * 100 ); ?></td>
+               <td class="mw-profileinfo-memoryp"><?php echo @wfPercent( $this->memory() / self::$totalmemory * 100 ); ?></td>
+               <td class="mw-profileinfo-count"><?php echo $this->count(); ?></td>
+               <td class="mw-profileinfo-cpr"><?php echo round( sprintf( '%.2f', $this->callsPerRequest() ), 2 ); ?></td>
+               <td class="mw-profileinfo-tpc"><?php echo round( sprintf( '%.2f', $this->timePerCall() ), 2 ); ?></td>
+               <td class="mw-profileinfo-mpc"><?php echo round( sprintf( '%.2f' ,$this->memoryPerCall() / 1024 ), 2 ); ?></td>
+               <td class="mw-profileinfo-tpr"><?php echo @round( sprintf( '%.2f', $this->time() / self::$totalcount ), 2 ); ?></td>
+               <td class="mw-profileinfo-mpr"><?php echo @round( sprintf( '%.2f' ,$this->memory() / self::$totalcount / 1024 ), 2 ); ?></td>
                </tr>
                <?php
                if ( $ex ) {
@@ -173,56 +243,56 @@ class profile_point {
        function time() {
                return $this->time;
        }
-       
+
        function memory() {
                return $this->memory;
        }
-       
+
        function timePerCall() {
                return @( $this->time / $this->count );
        }
-       
+
        function memoryPerCall() {
                return @( $this->memory / $this->count );
        }
-       
+
        function callsPerRequest() {
                return @( $this->count / self::$totalcount );
        }
-       
+
        function timePerRequest() {
                return @( $this->time / self::$totalcount );
        }
-       
+
        function memoryPerRequest() {
                return @( $this->memory / self::$totalcount );
        }
 
        function fmttime() {
-               return sprintf( "%5.02f", $this->time );
+               return sprintf( '%5.02f', $this->time );
        }
 };
 
 function compare_point(profile_point $a, profile_point $b) {
        global $sort;
        switch ( $sort ) {
-       case "name":
+       case 'name':
                return strcmp( $a->name(), $b->name() );
-       case "time":
+       case 'time':
                return $a->time() > $b->time() ? -1 : 1;
-       case "memory":
+       case 'memory':
                return $a->memory() > $b->memory() ? -1 : 1;
-       case "count":
+       case 'count':
                return $a->count() > $b->count() ? -1 : 1;
-       case "time_per_call":
+       case 'time_per_call':
                return $a->timePerCall() > $b->timePerCall() ? -1 : 1;
-       case "memory_per_call":
+       case 'memory_per_call':
                return $a->memoryPerCall() > $b->memoryPerCall() ? -1 : 1;
-       case "calls_per_req":
+       case 'calls_per_req':
                return $a->callsPerRequest() > $b->callsPerRequest() ? -1 : 1;
-       case "time_per_req":
+       case 'time_per_req':
                return $a->timePerRequest() > $b->timePerRequest() ? -1 : 1;
-       case "memory_per_req":
+       case 'memory_per_req':
                return $a->memoryPerRequest() > $b->memoryPerRequest() ? -1 : 1;
        }
 }
@@ -243,25 +313,28 @@ else
 ?>
 <form method="get" action="profileinfo.php">
 <p>
-<input type="text" name="filter" value="<?php echo htmlspecialchars($filter)?>"/>
-<input type="hidden" name="sort" value="<?php echo htmlspecialchars($sort)?>"/>
-<input type="hidden" name="expand" value="<?php echo htmlspecialchars(implode(",", array_keys($expand)))?>"/>
-<input type="submit" value="Filter" />
+<input type="text" name="filter" value="<?php echo htmlspecialchars($filter); ?>">
+<input type="hidden" name="sort" value="<?php echo htmlspecialchars($sort); ?>">
+<input type="hidden" name="expand" value="<?php echo htmlspecialchars(implode(",", array_keys($expand))); ?>">
+<input type="submit" value="Filter">
 </p>
 </form>
 
-<table cellspacing="0" border="1">
-<tr id="top">
-<th><a href="<?php echo getEscapedProfileUrl( false, 'name' ) ?>">Name</a></th>
-<th><a href="<?php echo getEscapedProfileUrl( false, 'time' ) ?>">Time (%)</a></th>
-<th><a href="<?php echo getEscapedProfileUrl( false, 'memory' ) ?>">Memory (%)</a></th>
-<th><a href="<?php echo getEscapedProfileUrl( false, 'count' ) ?>">Count</a></th>
-<th><a href="<?php echo getEscapedProfileUrl( false, 'calls_per_req' ) ?>">Calls/req</a></th>
-<th><a href="<?php echo getEscapedProfileUrl( false, 'time_per_call' ) ?>">ms/call</a></th>
-<th><a href="<?php echo getEscapedProfileUrl( false, 'memory_per_call' ) ?>">kb/call</a></th>
-<th><a href="<?php echo getEscapedProfileUrl( false, 'time_per_req' ) ?>">ms/req</a></th>
-<th><a href="<?php echo getEscapedProfileUrl( false, 'memory_per_req' ) ?>">kb/req</a></th>
-</tr>
+<table class="mw-profileinfo-table table table-striped table-hover">
+       <thead>
+               <tr>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'name' ); ?>">Name</a></th>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'time' ); ?>">Time (%)</a></th>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'memory' ); ?>">Memory (%)</a></th>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'count' ); ?>">Count</a></th>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'calls_per_req' ); ?>">Calls/req</a></th>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'time_per_call' ); ?>">ms/call</a></th>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'memory_per_call' ); ?>">kb/call</a></th>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'time_per_req' ); ?>">ms/req</a></th>
+                       <th><a href="<?php echo getEscapedProfileUrl( false, 'memory_per_req' ); ?>">kb/req</a></th>
+               </tr>
+       </thead>
+       <tbody>
 <?php
 profile_point::$totaltime = 0.0;
 profile_point::$totalcount = 0;
@@ -274,11 +347,11 @@ function getEscapedProfileUrl( $_filter = false, $_sort = false, $_expand = fals
                $_expand = $expand;
 
        return htmlspecialchars(
-               '?' . 
+               '?' .
                wfArrayToCGI( array(
                        'filter' => $_filter ? $_filter : $filter,
                        'sort' => $_sort ? $_sort : $sort,
-                       'expand' => implode( ',', array_keys( $_expand ) ) 
+                       'expand' => implode( ',', array_keys( $_expand ) )
                ) )
        );
 }
@@ -296,13 +369,13 @@ foreach( $res as $o ) {
                profile_point::$totalmemory = $next->memory();
        }
        if ( $last !== false ) {
-               if ( preg_match( "/^".preg_quote( $last->name(), "/" )."/", $next->name() ) ) {
+               if ( preg_match( '/^'.preg_quote( $last->name(), '/' ).'/', $next->name() ) ) {
                        $last->add_child($next);
                        continue;
                }
        }
        $last = $next;
-       if ( preg_match( "/^query: /", $next->name() ) || preg_match( "/^query-m: /", $next->name() ) ) {
+       if ( preg_match( '/^query: /', $next->name() ) || preg_match( '/^query-m: /', $next->name() ) ) {
                $sqltotal += $next->time();
                $queries[] = $next;
        } else {
@@ -310,12 +383,12 @@ foreach( $res as $o ) {
        }
 }
 
-$s = new profile_point( "SQL Queries", 0, $sqltotal, 0, 0 );
+$s = new profile_point( 'SQL Queries', 0, $sqltotal, 0, 0 );
 foreach ( $queries as $q )
        $s->add_child($q);
 $points[] = $s;
 
-usort( $points, "compare_point" );
+usort( $points, 'compare_point' );
 
 foreach ( $points as $point ) {
        if ( strlen( $filter ) && !strstr( $point->name(), $filter ) )
@@ -324,9 +397,11 @@ foreach ( $points as $point ) {
        $point->display( $expand );
 }
 ?>
+       </tbody>
 </table>
-
-<p>Total time: <tt><?php printf("%5.02f", profile_point::$totaltime) ?></tt></p>
-<p>Total memory: <tt><?php printf("%5.02f", profile_point::$totalmemory / 1024 ) ?></tt></p>
+<hr>
+<p>Total time: <code><?php printf('%5.02f', profile_point::$totaltime); ?></code></p>
+<p>Total memory: <code><?php printf('%5.02f', profile_point::$totalmemory / 1024 ); ?></code></p>
+<hr>
 </body>
 </html>
index a0761fc..cccc645 100644 (file)
@@ -1,4 +1,24 @@
 <?php
+/**
+ * Definition of core ResourceLoader 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
+ */
 
 return array(
 
@@ -614,6 +634,19 @@ return array(
        'mediawiki.notify' => array(
                'scripts' => 'resources/mediawiki/mediawiki.notify.js',
        ),
+       'mediawiki.searchSuggest' => array(
+               'scripts' => 'resources/mediawiki/mediawiki.searchSuggest.js',
+               'messages' => array(
+                       'searchsuggest-search',
+                       'searchsuggest-containing',
+               ),
+               'dependencies' => array(
+                       'jquery.autoEllipsis',
+                       'jquery.client',
+                       'jquery.placeholder',
+                       'jquery.suggestions',
+               ),
+       ),
        'mediawiki.Title' => array(
                'scripts' => 'resources/mediawiki/mediawiki.Title.js',
                'dependencies' => 'mediawiki.util',
@@ -652,6 +685,13 @@ return array(
                ),
                'position' => 'top',
        ),
+       'mediawiki.action.edit.preview' => array(
+               'scripts' => 'resources/mediawiki.action/mediawiki.action.edit.preview.js',
+               'dependencies' => array(
+                       'jquery.form',
+                       'jquery.spinner',
+               ),
+       ),
        'mediawiki.action.history' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.history.js',
                'group' => 'mediawiki.action.history',
@@ -894,22 +934,6 @@ return array(
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
                'dependencies' => 'mediawiki.legacy.wikibits',
        ),
-       'mediawiki.legacy.mwsuggest' => array(
-               'scripts' => 'common/mwsuggest.js',
-               'remoteBasePath' => $GLOBALS['wgStylePath'],
-               'localBasePath' => $GLOBALS['wgStyleDirectory'],
-               'dependencies' => 'mediawiki.legacy.wikibits',
-               'messages' => array( 'search-mwsuggest-enabled', 'search-mwsuggest-disabled' ),
-       ),
-       'mediawiki.legacy.preview' => array(
-               'scripts' => 'common/preview.js',
-               'remoteBasePath' => $GLOBALS['wgStylePath'],
-               'localBasePath' => $GLOBALS['wgStyleDirectory'],
-               'dependencies' => array(
-                       'mediawiki.legacy.wikibits',
-                       'jquery.form',
-               )
-       ),
        'mediawiki.legacy.protect' => array(
                'scripts' => 'common/protect.js',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
index 484651e..75dc2b9 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * jQuery byteLimit plugin
+ * jQuery byteLimit plugin.
  *
  * @author Jan Paul Posma, 2011
  * @author Timo Tijhof, 2011-2012
 ( function ( $ ) {
 
        /**
-        * Enforces a byte limit to a textbox, so that UTF-8 entries are counted as well, when, for example,
-        * a database field has a byte limit rather than a character limit.
-        * Plugin rationale: Browser has native maxlength for number of characters, this plugin exists to
-        * limit number of bytes instead.
+        * Utility function to trim down a string, based on byteLimit
+        * and given a safe start position. It supports insertion anywhere
+        * in the string, so "foo" to "fobaro" if limit is 4 will result in
+        * "fobo", not "foba". Basically emulating the native maxlength by
+        * reconstructing where the insertion occured.
         *
-        * Can be called with a custom limit (to use that limit instead of the maxlength attribute value),
-        * a filter function (in case the limit should apply to something other than the exact input value),
-        * or both. Order of arguments is important!
+        * @param {string} safeVal Known value that was previously returned by this
+        * function, if none, pass empty string.
+        * @param {string} newVal New value that may have to be trimmed down.
+        * @param {number} byteLimit Number of bytes the value may be in size.
+        * @param {Function} fn [optional] See $.fn.byteLimit.
+        * @return {Object} Object with:
+        *  - {string} newVal
+        *  - {boolean} trimmed
+        */
+       function trimValForByteLength( safeVal, newVal, byteLimit, fn ) {
+               var startMatches, endMatches, matchesLen, inpParts,
+                       oldVal = safeVal;
+
+               // Run the hook if one was provided, but only on the length
+               // assessment. The value itself is not to be affected by the hook.
+               if ( $.byteLength( fn ? fn( newVal ) : newVal ) <= byteLimit ) {
+                       // Limit was not reached, just remember the new value
+                       // and let the user continue.
+                       return {
+                               newVal: newVal,
+                               trimmed: false
+                       };
+               }
+
+               // Current input is longer than the active limit.
+               // Figure out what was added and limit the addition.
+               startMatches = 0;
+               endMatches = 0;
+
+               // It is important that we keep the search within the range of
+               // the shortest string's length.
+               // Imagine a user adds text that matches the end of the old value
+               // (e.g. "foo" -> "foofoo"). startMatches would be 3, but without
+               // limiting both searches to the shortest length, endMatches would
+               // also be 3.
+               matchesLen = Math.min( newVal.length, oldVal.length );
+
+               // Count same characters from the left, first.
+               // (if "foo" -> "foofoo", assume addition was at the end).
+               while (
+                       startMatches < matchesLen &&
+                       oldVal.charAt( startMatches ) === newVal.charAt( startMatches )
+               ) {
+                       startMatches += 1;
+               }
+
+               while (
+                       endMatches < ( matchesLen - startMatches ) &&
+                       oldVal.charAt( oldVal.length - 1 - endMatches ) === newVal.charAt( newVal.length - 1 - endMatches )
+               ) {
+                       endMatches += 1;
+               }
+
+               inpParts = [
+                       // Same start
+                       newVal.substring( 0, startMatches ),
+                       // Inserted content
+                       newVal.substring( startMatches, newVal.length - endMatches ),
+                       // Same end
+                       newVal.substring( newVal.length - endMatches )
+               ];
+
+               // Chop off characters from the end of the "inserted content" string
+               // until the limit is statisfied.
+               if ( fn ) {
+                       while ( $.byteLength( fn( inpParts.join( '' ) ) ) > byteLimit ) {
+                               inpParts[1] = inpParts[1].slice( 0, -1 );
+                       }
+               } else {
+                       while ( $.byteLength( inpParts.join( '' ) ) > byteLimit ) {
+                               inpParts[1] = inpParts[1].slice( 0, -1 );
+                       }
+               }
+
+               newVal = inpParts.join( '' );
+
+               return {
+                       newVal: newVal,
+                       trimmed: true
+               };
+       }
+
+       var eventKeys = [
+               'keyup.byteLimit',
+               'keydown.byteLimit',
+               'change.byteLimit',
+               'mouseup.byteLimit',
+               'cut.byteLimit',
+               'paste.byteLimit',
+               'focus.byteLimit',
+               'blur.byteLimit'
+       ].join( ' ' );
+
+       /**
+        * Enforces a byte limit on an input field, so that UTF-8 entries are counted as well,
+        * when, for example, a database field has a byte limit rather than a character limit.
+        * Plugin rationale: Browser has native maxlength for number of characters, this plugin
+        * exists to limit number of bytes instead.
+        *
+        * Can be called with a custom limit (to use that limit instead of the maxlength attribute
+        * value), a filter function (in case the limit should apply to something other than the
+        * exact input value), or both. Order of parameters is important!
         *
         * @context {jQuery} Instance of jQuery for one or more input elements
-        * @param limit {Number} [optional] Limit to enforce, fallsback to maxLength-attribute,
-        * called with fetched value as argument.
-        * @param fn {Function} [optional] Function to call on the input string before assessing the length
+        * @param {Number} limit [optional] Limit to enforce, fallsback to maxLength-attribute,
+        *  called with fetched value as argument.
+        * @param {Function} fn [optional] Function to call on the string before assessing the length.
         * @return {jQuery} The context
         */
        $.fn.byteLimit = function ( limit, fn ) {
                if ( $.isFunction( limit ) ) {
                        fn = limit;
                        limit = undefined;
+               // Either way, verify it is a function so we don't have to call
+               // isFunction again after this.
+               } else if ( !fn || !$.isFunction( fn ) ) {
+                       fn = undefined;
                }
 
-               // The following is specific to each element in the collection
+               // The following is specific to each element in the collection.
                return this.each( function ( i, el ) {
-                       var $el, elLimit;
+                       var $el, elLimit, prevSafeVal;
 
                        $el = $( el );
 
-                       // Default limit to current attribute value
+                       // If no limit was passed to byteLimit(), use the maxlength value.
                        // Can't re-use 'limit' variable because it's in the higher scope
-                       // that affects the next each() iteration as well.
-                       elLimit = limit === undefined ? $el.prop( 'maxLength' ) : limit;
-       
+                       // that would affect the next each() iteration as well.
+                       // Note that we use attribute to read the value instead of property,
+                       // because in Chrome the maxLength property by default returns the
+                       // highest supported value (no indication that it is being enforced
+                       // by choice). We don't want to bind all of this for some ridiculously
+                       // high default number, unless it was explicitly set in the HTML.
+                       // Also cast to a (primitive) number (most commonly because the maxlength
+                       // attribute contains a string, but theoretically the limit parameter
+                       // could be something else as well).
+                       elLimit = Number( limit === undefined ? $el.attr( 'maxlength' ) : limit );
+
                        // If there is no (valid) limit passed or found in the property,
                        // skip this. The < 0 check is required for Firefox, which returns
                        // -1  (instead of undefined) for maxLength if it is not set.
                                return;
                        }
 
-                       // Update/set attribute value, but only if there is no callback set.
-                       // If there's a callback set, it's possible that the limit being enforced
-                       // is too low (ie. if the callback would return "Foo" for "User:Foo").
-                       // Usually this isn't a problem since browsers ignore maxLength when setting
-                       // the value property through JavaScript, but Safari 4 violates that rule, so
-                       // we have to remove or not set the property if we have a callback.
-                       if ( fn === undefined ) {
-                               $el.prop( 'maxLength', elLimit );
+                       if ( fn ) {
+                               // Save function for reference
+                               $el.data( 'byteLimit.callback', fn );
+                       }
+
+                       // Remove old event handlers (if there are any)
+                       $el.off( '.byteLimit' );
+
+                       if ( fn ) {
+                               // Disable the native maxLength (if there is any), because it interferes
+                               // with the (differently calculated) byte limit.
+                               // Aside from being differently calculated (average chars with byteLimit
+                               // is lower), we also support a callback which can make it to allow longer
+                               // values (e.g. count "Foo" from "User:Foo").
+                               // maxLength is a strange property. Removing or setting the property to
+                               // undefined directly doesn't work. Instead, it can only be unset internally
+                               // by the browser when removing the associated attribute (Firefox/Chrome).
+                               // http://code.google.com/p/chromium/issues/detail?id=136004
+                               $el.removeAttr( 'maxlength' );
+
                        } else {
-                               $el.removeProp( 'maxLength' );
+                               // If we don't have a callback the bytelimit can only be lower than the charlimit
+                               // (that is, there are no characters less than 1 byte in size). So lets (re-)enforce
+                               // the native limit for efficiency when possible (it will make the while-loop below
+                               // faster by there being less left to interate over).
+                               $el.attr( 'maxlength', elLimit );
                        }
-       
-                       // Save function for reference
-                       $el.data( 'byteLimitCallback', fn );
-       
-                       // We've got something, go for it:
-                       $el.keypress( function ( e ) {
-                               var val, len, charLen;
-                               // First check to see if this is actually a character key
-                               // being pressed.
-                               // Based on key-event info from http://unixpapa.com/js/key.html
-                               // jQuery should also normalize e.which to be consistent cross-browser,
-                               // however the same check is still needed regardless of jQuery.
-       
-                               // Note: At the moment, for some older opera versions (~< 10.5)
-                               // some special keys won't be recognized (aka left arrow key).
-                               // Backspace will be, so not big issue.
-       
-                               if ( e.which === 0 || e.charCode === 0 || e.which === 8 ||
-                                       e.ctrlKey || e.altKey || e.metaKey )
-                               {
-                                       // A special key (backspace, etc) so don't interfere
-                                       return true;
-                               }
-       
-                               val = fn !== undefined ? fn( $( this ).val() ): $( this ).val();
-                               len = $.byteLength( val );
-                               // Note that keypress returns a character code point, not a keycode.
-                               // However, this may not be super reliable depending on how keys come in...
-                               charLen = $.byteLength( String.fromCharCode( e.which ) );
-       
-                               if ( ( len + charLen ) > elLimit ) {
-                                       e.preventDefault();
+
+
+                       // Safe base value, used to determine the path between the previous state
+                       // and the state that triggered the event handler below - and enforce the
+                       // limit approppiately (e.g. don't chop from the end if text was inserted
+                       // at the beginning of the string).
+                       prevSafeVal = '';
+
+                       // We need to listen to after the change has already happened because we've
+                       // learned that trying to guess the new value and canceling the event
+                       // accordingly doesn't work because the new value is not always as simple as:
+                       // oldValue + String.fromCharCode( e.which ); because of cut, paste, select-drag
+                       // replacements, and custom input methods and what not.
+                       // Even though we only trim input after it was changed (never prevent it), we do
+                       // listen on events that input text, because there are cases where the text has
+                       // changed while text is being entered and keyup/change will not be fired yet
+                       // (such as holding down a single key, fires keydown, and after each keydown,
+                       // we can trim the previous one).
+                       // See http://www.w3.org/TR/DOM-Level-3-Events/#events-keyboard-event-order for
+                       // the order and characteristics of the key events.
+                       $el.on( eventKeys, function () {
+                               var res = trimValForByteLength(
+                                       prevSafeVal,
+                                       this.value,
+                                       elLimit,
+                                       fn
+                               );
+
+                               // Only set value property if it was trimmed, because whenever the
+                               // value property is set, the browser needs to re-initiate the text context,
+                               // which moves the cursor at the end the input, moving it away from wherever it was.
+                               // This is a side-effect of limiting after the fact.
+                               if ( res.trimmed === true ) {
+                                       this.value = res.newVal;
+                                       prevSafeVal = res.newVal;
                                }
-                       });
-               });
+                       } );
+               } );
        };
 }( jQuery ) );
index 95959cf..6ca21b5 100644 (file)
@@ -3,12 +3,9 @@
  * Simple local storage wrapper to save data on the browser side, supporting
  * all major browsers - IE6+, Firefox2+, Safari4+, Chrome4+ and Opera 10.5+
  *
- * Copyright (c) 2010 Andris Reinman, andris.reinman@gmail.com
+ * Copyright (c) 2010 - 2012 Andris Reinman, andris.reinman@gmail.com
  * Project homepage: www.jstorage.info
  *
- * Taken from Github with slight modifications by Hoo man
- * https://raw.github.com/andris9/jStorage/master/jstorage.js
- *
  * Licensed under MIT-style license:
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * SOFTWARE.
  */
 
-/**
- * $.jStorage
- *
- * USAGE:
- *
- * jStorage requires Prototype, MooTools or jQuery! If jQuery is used, then
- * jQuery-JSON (http://code.google.com/p/jquery-json/) is also needed.
- * (jQuery-JSON needs to be loaded BEFORE jStorage!)
- *
- * Methods:
- *
- * -set(key, value[, options])
- * $.jStorage.set(key, value) -> saves a value
- *
- * -get(key[, default])
- * value = $.jStorage.get(key [, default]) ->
- *    retrieves value if key exists, or default if it doesn't
- *
- * -deleteKey(key)
- * $.jStorage.deleteKey(key) -> removes a key from the storage
- *
- * -flush()
- * $.jStorage.flush() -> clears the cache
- *
- * -storageObj()
- * $.jStorage.storageObj() -> returns a read-ony copy of the actual storage
- *
- * -storageSize()
- * $.jStorage.storageSize() -> returns the size of the storage in bytes
- *
- * -index()
- * $.jStorage.index() -> returns the used keys as an array
- *
- * -storageAvailable()
- * $.jStorage.storageAvailable() -> returns true if storage is available
- *
- * -reInit()
- * $.jStorage.reInit() -> reloads the data from browser storage
- *
- * <value> can be any JSON-able value, including objects and arrays.
- *
- **/
+ (function(){
+    var
+        /* jStorage version */
+        JSTORAGE_VERSION = "0.3.0",
+
+        /* detect a dollar object or create one if not found */
+        $ = window.jQuery || window.$ || (window.$ = {}),
 
-(function($){
-    if(!$ || !($.toJSON || Object.toJSON || window.JSON)){
-        throw new Error("jQuery, MooTools or Prototype needs to be loaded before jStorage!");
+        /* check for a JSON handling support */
+        JSON = {
+            parse:
+                window.JSON && (window.JSON.parse || window.JSON.decode) ||
+                String.prototype.evalJSON && function(str){return String(str).evalJSON();} ||
+                $.parseJSON ||
+                $.evalJSON,
+            stringify:
+                Object.toJSON ||
+                window.JSON && (window.JSON.stringify || window.JSON.encode) ||
+                $.toJSON
+        };
+
+    // Break if no JSON support was found
+    if(!JSON.parse || !JSON.stringify){
+        throw new Error("No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page");
     }
 
     var
         /* How much space does the storage take */
         _storage_size = 0,
 
-        /* function to encode objects to JSON strings */
-        json_encode = $.toJSON || Object.toJSON || (window.JSON && (JSON.encode || JSON.stringify)),
-
-        /* function to decode objects from JSON strings */
-        json_decode = $.evalJSON || (window.JSON && (JSON.decode || JSON.parse)) || function(str){
-            return String(str).evalJSON();
-        },
-
         /* which backend is currently used */
         _backend = false,
 
+        /* onchange observers */
+        _observers = {},
+
+        /* timeout to wait after onchange event */
+        _observer_timeout = false,
+
+        /* last update time */
+        _observer_update = 0,
+
+        /* pubsub observers */
+        _pubsub_observers = {},
+
+        /* skip published items older than current timestamp */
+        _pubsub_last = +new Date(), 
+
         /* Next check for TTL */
         _ttl_timeout,
 
+        /* crc32 table */
+        _crc32Table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 "+
+             "0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 "+
+             "6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 "+
+             "FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 "+
+             "A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 "+
+             "32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 "+
+             "56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 "+
+             "C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 "+
+             "E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 "+
+             "6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 "+
+             "12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE "+
+             "A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 "+
+             "DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 "+
+             "5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 "+
+             "2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF "+
+             "04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 "+
+             "7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 "+
+             "FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 "+
+             "A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C "+
+             "36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 "+
+             "5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 "+
+             "C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 "+
+             "EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D "+
+             "7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 "+
+             "18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 "+
+             "A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A "+
+             "D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A "+
+             "53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 "+
+             "2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D",
+
         /**
          * XML encoding and decoding as XML nodes can't be JSON'ized
          * XML nodes are encoded and decoded if the node is the value to be saved
                 resultXML = dom_parser.call("DOMParser" in window && (new DOMParser()) || window, xmlString, 'text/xml');
                 return this.isXML(resultXML)?resultXML:false;
             }
-        };
+        },
+
+        _localStoragePolyfillSetKey = function(){};
+
 
     ////////////////////////// PRIVATE METHODS ////////////////////////
 
     /**
      * Initialization function. Detects if the browser supports DOM Storage
      * or userData behavior and behaves accordingly.
-     * @returns undefined
      */
     function _init(){
         /* Check if browser supports localStorage */
                 // QUOTA_EXCEEDED_ERRROR DOM Exception 22.
             }
         }
+
         if(localStorageReallyWorks){
             try {
                 if(window.localStorage) {
                     _storage_service = window.localStorage;
                     _backend = "localStorage";
+                    _observer_update = _storage_service.jStorage_update;
                 }
             } catch(E3) {/* Firefox fails when touching localStorage and cookies are disabled */}
         }
                 if(window.globalStorage) {
                     _storage_service = window.globalStorage[window.location.hostname];
                     _backend = "globalStorage";
+                    _observer_update = _storage_service.jStorage_update;
                 }
             } catch(E4) {/* Firefox fails when touching localStorage and cookies are disabled */}
         }
                 /* userData element needs to be inserted into the DOM! */
                 document.getElementsByTagName('head')[0].appendChild(_storage_elm);
 
-                _storage_elm.load("jStorage");
+                try{
+                    _storage_elm.load("jStorage");
+                }catch(E){
+                    // try to reset cache
+                    _storage_elm.setAttribute("jStorage", "{}");
+                    _storage_elm.save("jStorage");
+                    _storage_elm.load("jStorage");
+                }
+
                 var data = "{}";
                 try{
                     data = _storage_elm.getAttribute("jStorage");
                 }catch(E5){}
+
+                try{
+                    _observer_update = _storage_elm.getAttribute("jStorage_update");
+                }catch(E6){}
+
                 _storage_service.jStorage = data;
                 _backend = "userDataBehavior";
             }else{
             }
         }
 
+        // Load data from storage
+        _load_storage();
+
+        // remove dead keys
+        _handleTTL();
+
+        // create localStorage and sessionStorage polyfills if needed
+        _createPolyfillStorage("local");
+        _createPolyfillStorage("session");
+
+        // start listening for changes
+        _setupObserver();
+
+        // initialize publish-subscribe service
+        _handlePubSub();
+
+        // handle cached navigation
+        if("addEventListener" in window){
+            window.addEventListener("pageshow", function(event){
+                if(event.persisted){
+                    _storageObserver();
+                }
+            }, false);
+        }
+    }
+
+    /**
+     * Create a polyfill for localStorage (type="local") or sessionStorage (type="session")
+     *
+     * @param {String} type Either "local" or "session"
+     * @param {Boolean} forceCreate If set to true, recreate the polyfill (needed with flush)
+     */
+    function _createPolyfillStorage(type, forceCreate){
+        var _skipSave = false,
+            _length = 0,
+            i, 
+            storage,
+            storage_source = {};
+
+            var rand = Math.random();
+
+        if(!forceCreate && typeof window[type+"Storage"] != "undefined"){
+            return;
+        }
+
+        // Use globalStorage for localStorage if available
+        if(type == "local" && window.globalStorage){
+            localStorage = window.globalStorage[window.location.hostname];
+            return;
+        }
+
+        // only IE6/7 from this point on 
+        if(_backend != "userDataBehavior"){
+            return;
+        }
+
+        // Remove existing storage element if available
+        if(forceCreate && window[type+"Storage"] && window[type+"Storage"].parentNode){
+            window[type+"Storage"].parentNode.removeChild(window[type+"Storage"]);
+        }
+
+        storage = document.createElement("button");
+        document.getElementsByTagName('head')[0].appendChild(storage);
+
+        if(type == "local"){
+            storage_source = _storage;
+        }else if(type == "session"){
+            _sessionStoragePolyfillUpdate();
+        }
+
+        for(i in storage_source){
+
+            if(storage_source.hasOwnProperty(i) && i != "__jstorage_meta" && i != "length" && typeof storage_source[i] != "undefined"){
+                if(!(i in storage)){
+                    _length++;
+                }
+                storage[i] = storage_source[i];
+            }
+        }
+        
+        // Polyfill API
+
+        /**
+         * Indicates how many keys are stored in the storage
+         */
+        storage.length = _length;
+
+        /**
+         * Returns the key of the nth stored value
+         * 
+         * @param {Number} n Index position
+         * @return {String} Key name of the nth stored value
+         */
+        storage.key = function(n){
+            var count = 0, i;
+            _sessionStoragePolyfillUpdate();
+            for(i in storage_source){
+                if(storage_source.hasOwnProperty(i) && i != "__jstorage_meta" && i!="length" && typeof storage_source[i] != "undefined"){
+                    if(count == n){
+                        return i;
+                    }
+                    count++;
+                }
+            }
+        }
+
+        /**
+         * Returns the current value associated with the given key
+         *
+         * @param {String} key key name
+         * @return {Mixed} Stored value
+         */
+        storage.getItem = function(key){
+            _sessionStoragePolyfillUpdate();
+            if(type == "session"){
+                return storage_source[key];
+            }
+            return $.jStorage.get(key);
+        }
+
+        /**
+         * Sets or updates value for a give key
+         *
+         * @param {String} key Key name to be updated
+         * @param {String} value String value to be stored 
+         */
+        storage.setItem = function(key, value){
+            if(typeof value == "undefined"){
+                return;
+            }
+            storage[key] = (value || "").toString();
+        }
+
+        /**
+         * Removes key from the storage
+         *
+         * @param {String} key Key name to be removed
+         */
+        storage.removeItem = function(key){
+            if(type == "local"){
+                return $.jStorage.deleteKey(key);
+            }
+
+            storage[key] = undefined;
+            
+            _skipSave = true;
+            if(key in storage){
+                storage.removeAttribute(key);
+            }
+            _skipSave = false;
+        }
+
+        /**
+         * Clear storage
+         */
+        storage.clear = function(){
+            if(type == "session"){
+                window.name = "";
+                _createPolyfillStorage("session", true);
+                return;
+            }
+            $.jStorage.flush();
+        }
+
+        if(type == "local"){
+
+            _localStoragePolyfillSetKey = function(key, value){
+                if(key == "length"){
+                    return;
+                }
+                _skipSave = true;
+                if(typeof value == "undefined"){
+                    if(key in storage){
+                        _length--;
+                        storage.removeAttribute(key);
+                    }
+                }else{
+                    if(!(key in storage)){
+                        _length++;
+                    }
+                    storage[key] = (value || "").toString();
+                }
+                storage.length = _length;
+                _skipSave = false;
+            }
+        }
+
+        function _sessionStoragePolyfillUpdate(){
+                if(type != "session"){
+                    return;
+                }
+                try{
+                    storage_source = JSON.parse(window.name || "{}");
+                }catch(E){
+                    storage_source = {};
+                }
+            }
+
+        function _sessionStoragePolyfillSave(){
+            if(type != "session"){
+                return;
+            }
+            window.name = JSON.stringify(storage_source);
+        };
+
+        storage.attachEvent("onpropertychange", function(e){
+            if(e.propertyName == "length"){
+                return;
+            }
+
+            if(_skipSave || e.propertyName == "length"){
+                return;
+            }
+
+            if(type == "local"){
+                if(!(e.propertyName in storage_source) && typeof storage[e.propertyName] != "undefined"){
+                    _length ++;
+                }
+            }else if(type == "session"){
+                _sessionStoragePolyfillUpdate();
+                if(typeof storage[e.propertyName] != "undefined" && !(e.propertyName in storage_source)){
+                    storage_source[e.propertyName] = storage[e.propertyName];
+                    _length++;
+                }else if(typeof storage[e.propertyName] == "undefined" && e.propertyName in storage_source){
+                    delete storage_source[e.propertyName];
+                    _length--;
+                }else{
+                    storage_source[e.propertyName] = storage[e.propertyName];
+                }
+
+                _sessionStoragePolyfillSave();
+                storage.length = _length;
+                return;
+            }
+
+            $.jStorage.set(e.propertyName, storage[e.propertyName]);
+            storage.length = _length;
+        });
+
+        window[type+"Storage"] = storage;
+    }
+
+    /**
+     * Reload data from storage when needed
+     */
+    function _reloadData(){
+        var data = "{}";
+
+        if(_backend == "userDataBehavior"){
+            _storage_elm.load("jStorage");
+
+            try{
+                data = _storage_elm.getAttribute("jStorage");
+            }catch(E5){}
+
+            try{
+                _observer_update = _storage_elm.getAttribute("jStorage_update");
+            }catch(E6){}
+
+            _storage_service.jStorage = data;
+        }
+
         _load_storage();
 
         // remove dead keys
         _handleTTL();
+
+        _handlePubSub();
+    }
+
+    /**
+     * Sets up a storage change observer
+     */
+    function _setupObserver(){
+        if(_backend == "localStorage" || _backend == "globalStorage"){
+            if("addEventListener" in window){
+                window.addEventListener("storage", _storageObserver, false);
+            }else{
+                document.attachEvent("onstorage", _storageObserver);
+            }
+        }else if(_backend == "userDataBehavior"){
+            setInterval(_storageObserver, 1000);
+        }
+    }
+
+    /**
+     * Fired on any kind of data change, needs to check if anything has
+     * really been changed
+     */
+    function _storageObserver(){
+        var updateTime;
+        // cumulate change notifications with timeout
+        clearTimeout(_observer_timeout);
+        _observer_timeout = setTimeout(function(){
+
+            if(_backend == "localStorage" || _backend == "globalStorage"){
+                updateTime = _storage_service.jStorage_update;
+            }else if(_backend == "userDataBehavior"){
+                _storage_elm.load("jStorage");
+                try{
+                    updateTime = _storage_elm.getAttribute("jStorage_update");
+                }catch(E5){}
+            }
+
+            if(updateTime && updateTime != _observer_update){
+                _observer_update = updateTime;
+                _checkUpdatedKeys();
+            }
+
+        }, 25);
+    }
+
+    /**
+     * Reloads the data and checks if any keys are changed
+     */
+    function _checkUpdatedKeys(){
+        var oldCrc32List = JSON.parse(JSON.stringify(_storage.__jstorage_meta.CRC32)),
+            newCrc32List;
+
+        _reloadData();
+        newCrc32List = JSON.parse(JSON.stringify(_storage.__jstorage_meta.CRC32));
+
+        var key,
+            updated = [],
+            removed = [];
+
+        for(key in oldCrc32List){
+            if(oldCrc32List.hasOwnProperty(key)){
+                if(!newCrc32List[key]){
+                    removed.push(key);
+                    continue;
+                }
+                if(oldCrc32List[key] != newCrc32List[key]){
+                    updated.push(key);
+                }
+            }
+        }
+
+        for(key in newCrc32List){
+            if(newCrc32List.hasOwnProperty(key)){
+                if(!oldCrc32List[key]){
+                    updated.push(key);
+                }
+            }
+        }
+
+        _fireObservers(updated, "updated");
+        _fireObservers(removed, "deleted");
+    }
+
+    /**
+     * Fires observers for updated keys
+     *
+     * @param {Array|String} keys Array of key names or a key
+     * @param {String} action What happened with the value (updated, deleted, flushed)
+     */
+    function _fireObservers(keys, action){
+        keys = [].concat(keys || []);
+        if(action == "flushed"){
+            keys = [];
+            for(var key in _observers){
+                if(_observers.hasOwnProperty(key)){
+                    keys.push(key);
+                }
+            }
+            action = "deleted";
+        }
+        for(var i=0, len = keys.length; i<len; i++){
+            if(_observers[keys[i]]){
+                for(var j=0, jlen = _observers[keys[i]].length; j<jlen; j++){
+                    _observers[keys[i]][j](keys[i], action);
+                }
+            }
+        }
+    }
+
+    /**
+     * Publishes key change to listeners
+     */
+    function _publishChange(){
+        var updateTime = (+new Date()).toString();
+
+        if(_backend == "localStorage" || _backend == "globalStorage"){
+            _storage_service.jStorage_update = updateTime;
+        }else if(_backend == "userDataBehavior"){
+            _storage_elm.setAttribute("jStorage_update", updateTime);
+            _storage_elm.save("jStorage");
+        }
+
+        _storageObserver();
     }
 
     /**
      * Loads the data from the storage based on the supported mechanism
-     * @returns undefined
      */
     function _load_storage(){
         /* if jStorage string is retrieved, then decode it */
         if(_storage_service.jStorage){
             try{
-                _storage = json_decode(String(_storage_service.jStorage));
+                _storage = JSON.parse(String(_storage_service.jStorage));
             }catch(E6){_storage_service.jStorage = "{}";}
         }else{
             _storage_service.jStorage = "{}";
         }
         _storage_size = _storage_service.jStorage?String(_storage_service.jStorage).length:0;
+
+        if(!_storage.__jstorage_meta){
+            _storage.__jstorage_meta = {};
+        }
+        if(!_storage.__jstorage_meta.CRC32){
+            _storage.__jstorage_meta.CRC32 = {};
+        }
     }
 
     /**
      * This functions provides the "save" mechanism to store the jStorage object
-     * @returns undefined
      */
     function _save(){
+        _dropOldEvents(); // remove expired events
         try{
-            _storage_service.jStorage = json_encode(_storage);
+            _storage_service.jStorage = JSON.stringify(_storage);
             // If userData is used as the storage engine, additional
             if(_storage_elm) {
                 _storage_elm.setAttribute("jStorage",_storage_service.jStorage);
 
     /**
      * Function checks if a key is set and is string or numberic
+     *
+     * @param {String} key Key name
      */
     function _checkKey(key){
-        if(!key || (typeof key !== "string" && typeof key !== "number")){
+        if(!key || (typeof key != "string" && typeof key != "number")){
             throw new TypeError('Key name must be string or numeric');
         }
-        if(key === "__jstorage_meta"){
+        if(key == "__jstorage_meta"){
             throw new TypeError('Reserved key name');
         }
         return true;
      * Removes expired keys
      */
     function _handleTTL(){
-        var curtime, i, TTL, nextExpire = Infinity, changed = false;
+        var curtime, i, TTL, CRC32, nextExpire = Infinity, changed = false, deleted = [];
 
         clearTimeout(_ttl_timeout);
 
-        if(!_storage.__jstorage_meta || typeof _storage.__jstorage_meta.TTL !== "object"){
+        if(!_storage.__jstorage_meta || typeof _storage.__jstorage_meta.TTL != "object"){
             // nothing to do here
             return;
         }
 
         curtime = +new Date();
         TTL = _storage.__jstorage_meta.TTL;
+
+        CRC32 = _storage.__jstorage_meta.CRC32;
         for(i in TTL){
             if(TTL.hasOwnProperty(i)){
                 if(TTL[i] <= curtime){
                     delete TTL[i];
+                    delete CRC32[i];
                     delete _storage[i];
                     changed = true;
+                    deleted.push(i);
                 }else if(TTL[i] < nextExpire){
                     nextExpire = TTL[i];
                 }
         // save changes
         if(changed){
             _save();
+            _publishChange();
+            _fireObservers(deleted, "deleted");
         }
     }
 
+    /**
+     * Checks if there's any events on hold to be fired to listeners
+     */
+    function _handlePubSub(){
+        if(!_storage.__jstorage_meta.PubSub){
+            return;
+        }
+        var pubelm,
+            _pubsubCurrent = _pubsub_last;
+
+        for(var i=len=_storage.__jstorage_meta.PubSub.length-1; i>=0; i--){
+            pubelm = _storage.__jstorage_meta.PubSub[i];
+            if(pubelm[0] > _pubsub_last){
+                _pubsubCurrent = pubelm[0];
+                _fireSubscribers(pubelm[1], pubelm[2]);
+            }
+        }
+
+        _pubsub_last = _pubsubCurrent;
+    }
+
+    /**
+     * Fires all subscriber listeners for a pubsub channel
+     *
+     * @param {String} channel Channel name
+     * @param {Mixed} payload Payload data to deliver
+     */
+    function _fireSubscribers(channel, payload){
+        if(_pubsub_observers[channel]){
+            for(var i=0, len = _pubsub_observers[channel].length; i<len; i++){
+                // send immutable data that can't be modified by listeners
+                _pubsub_observers[channel][i](channel, JSON.parse(JSON.stringify(payload)));
+            }
+        }
+    }
+
+    /**
+     * Remove old events from the publish stream (at least 2sec old)
+     */
+    function _dropOldEvents(){
+        if(!_storage.__jstorage_meta.PubSub){
+            return;
+        }
+
+        var retire = +new Date() - 2000;
+
+        for(var i=0, len = _storage.__jstorage_meta.PubSub.length; i<len; i++){
+            if(_storage.__jstorage_meta.PubSub[i][0] <= retire){
+                // deleteCount is needed for IE6
+                _storage.__jstorage_meta.PubSub.splice(i, _storage.__jstorage_meta.PubSub.length - i);
+                break;
+            }
+        }
+
+        if(!_storage.__jstorage_meta.PubSub.length){
+            delete _storage.__jstorage_meta.PubSub;
+        }
+
+    }
+
+    /**
+     * Publish payload to a channel
+     *
+     * @param {String} channel Channel name
+     * @param {Mixed} payload Payload to send to the subscribers
+     */
+    function _publish(channel, payload){
+        if(!_storage.__jstorage_meta){
+            _storage.__jstorage_meta = {};
+        }
+        if(!_storage.__jstorage_meta.PubSub){
+            _storage.__jstorage_meta.PubSub = [];
+        }
+        
+        _storage.__jstorage_meta.PubSub.unshift([+new Date, channel, payload]);
+
+        _save();
+        _publishChange();
+    }
+
+    /**
+     * CRC32 calculation based on http://noteslog.com/post/crc32-for-javascript/
+     *
+     * @param {String} str String to be hashed
+     * @param {Number} [crc] Last crc value in case of streams
+     */
+    function _crc32(str, crc){
+        crc = crc || 0;
+
+        var n = 0, //a number between 0 and 255
+            x = 0; //an hex number
+        crc = crc ^ (-1);
+        for(var i = 0, len = str.length; i < len; i++){
+            n = (crc ^ str.charCodeAt(i)) & 0xFF;
+            x = "0x" + _crc32Table.substr(n * 9, 8);
+            crc = (crc >>> 8)^x;
+        }
+        return crc^(-1);
+    }
+
     ////////////////////////// PUBLIC INTERFACE /////////////////////////
 
     $.jStorage = {
         /* Version number */
-        version: "0.1.7.0",
+        version: JSTORAGE_VERSION,
 
         /**
          * Sets a key's value.
          *
-         * @param {String} key Key to set. If this value is not set or not
+         * @param {String} key Key to set. If this value is not set or not
          *              a string an exception is raised.
-         * @param {Mixed} value Value to set. This can be any value that is JSON
+         * @param {Mixed} value Value to set. This can be any value that is JSON
          *              compatible (Numbers, Strings, Objects etc.).
          * @param {Object} [options] - possible options to use
          * @param {Number} [options.TTL] - optional TTL value
-         * @returns the used value
+         * @return {Mixed} the used value
          */
         set: function(key, value, options){
             _checkKey(key);
 
             options = options || {};
 
+            // undefined values are deleted automatically
+            if(typeof value == "undefined"){
+                this.deleteKey(key);
+                return value;
+            }
+
             if(_XMLService.isXML(value)){
                 value = {_is_xml:true,xml:_XMLService.encode(value)};
-            }else if(typeof value === "function"){
-                value = null; // functions can't be saved!
-            }else if(value && typeof value === "object"){
+            }else if(typeof value == "function"){
+                return undefined; // functions can't be saved!
+            }else if(value && typeof value == "object"){
                 // clone the object before saving to _storage tree
-                value = json_decode(json_encode(value));
+                value = JSON.parse(JSON.stringify(value));
             }
+
             _storage[key] = value;
 
-            if(!isNaN(options.TTL)){
-                this.setTTL(key, options.TTL);
-                // also handles saving
-            }else{
-                _save();
-            }
+            _storage.__jstorage_meta.CRC32[key] = _crc32(JSON.stringify(value));
+
+            this.setTTL(key, options.TTL || 0); // also handles saving and _publishChange
+
+            _localStoragePolyfillSetKey(key, value);
+
+            _fireObservers(key, "updated");
             return value;
         },
 
          *
          * @param {String} key - Key to look up.
          * @param {mixed} def - Default value to return, if key didn't exist.
-         * @returns the key value, default value or <null>
+         * @return {Mixed} the key value, default value or null
          */
         get: function(key, def){
             _checkKey(key);
             if(key in _storage){
-                if(_storage[key] && typeof _storage[key] === "object" &&
+                if(_storage[key] && typeof _storage[key] == "object" &&
                         _storage[key]._is_xml &&
                             _storage[key]._is_xml){
                     return _XMLService.decode(_storage[key].xml);
                     return _storage[key];
                 }
             }
-            return typeof(def) === 'undefined' ? null : def;
+            return typeof(def) == 'undefined' ? null : def;
         },
 
         /**
          * Deletes a key from cache.
          *
          * @param {String} key - Key to delete.
-         * @returns true if key existed or false if it didn't
+         * @return {Boolean} true if key existed or false if it didn't
          */
         deleteKey: function(key){
             _checkKey(key);
             if(key in _storage){
                 delete _storage[key];
                 // remove from TTL list
-                if(_storage.__jstorage_meta &&
-                  typeof _storage.__jstorage_meta.TTL === "object" &&
+                if(typeof _storage.__jstorage_meta.TTL == "object" &&
                   key in _storage.__jstorage_meta.TTL){
                     delete _storage.__jstorage_meta.TTL[key];
                 }
+
+                delete _storage.__jstorage_meta.CRC32[key];
+                _localStoragePolyfillSetKey(key, undefined);
+
                 _save();
+                _publishChange();
+                _fireObservers(key, "deleted");
                 return true;
             }
             return false;
          *
          * @param {String} key - key to set the TTL for
          * @param {Number} ttl - TTL timeout in milliseconds
-         * @returns true if key existed or false if it didn't
+         * @return {Boolean} true if key existed or false if it didn't
          */
         setTTL: function(key, ttl){
             var curtime = +new Date();
             ttl = Number(ttl) || 0;
             if(key in _storage){
 
-                if(!_storage.__jstorage_meta){
-                    _storage.__jstorage_meta = {};
-                }
                 if(!_storage.__jstorage_meta.TTL){
                     _storage.__jstorage_meta.TTL = {};
                 }
                 _save();
 
                 _handleTTL();
+
+                _publishChange();
                 return true;
             }
             return false;
         },
 
+        /**
+         * Gets remaining TTL (in milliseconds) for a key or 0 when no TTL has been set
+         *
+         * @param {String} key Key to check
+         * @return {Number} Remaining TTL in milliseconds
+         */
+        getTTL: function(key){
+            var curtime = +new Date(), ttl;
+            _checkKey(key);
+            if(key in _storage && _storage.__jstorage_meta.TTL && _storage.__jstorage_meta.TTL[key]){
+                ttl = _storage.__jstorage_meta.TTL[key] - curtime;
+                return ttl || 0;
+            }
+            return 0;
+        },
+
         /**
          * Deletes everything in cache.
          *
-         * @return true
+         * @return {Boolean} Always true
          */
         flush: function(){
-            _storage = {};
+            _storage = {__jstorage_meta:{CRC32:{}}};
+            _createPolyfillStorage("local", true);
             _save();
+            _publishChange();
+            _fireObservers(null, "flushed");
             return true;
         },
 
         /**
          * Returns a read-only copy of _storage
          *
-         * @returns Object
+         * @return {Object} Read-only copy of _storage
         */
         storageObj: function(){
             function F() {}
          * Returns an index of all used keys as an array
          * ['key1', 'key2',..'keyN']
          *
-         * @returns Array
+         * @return {Array} Used keys
         */
         index: function(){
             var index = [], i;
             for(i in _storage){
-                if(_storage.hasOwnProperty(i) && i !== "__jstorage_meta"){
+                if(_storage.hasOwnProperty(i) && i != "__jstorage_meta"){
                     index.push(i);
                 }
             }
         /**
          * How much space in bytes does the storage take?
          *
-         * @returns Number
+         * @return {Number} Storage size in chars (not the same as in bytes,
+         *                  since some chars may take several bytes)
          */
         storageSize: function(){
             return _storage_size;
         /**
          * Which backend is currently in use?
          *
-         * @returns String
+         * @return {String} Backend name
          */
         currentBackend: function(){
             return _backend;
         /**
          * Test if storage is available
          *
-         * @returns Boolean
+         * @return {Boolean} True if storage can be used
          */
         storageAvailable: function(){
             return !!_backend;
         },
 
         /**
-         * Reloads the data from browser storage
+         * Register change listeners
          *
-         * @returns undefined
+         * @param {String} key Key name
+         * @param {Function} callback Function to run when the key changes
          */
-        reInit: function(){
-            var new_storage_elm, data;
-            if(_storage_elm && _storage_elm.addBehavior){
-                new_storage_elm = document.createElement('link');
+        listenKeyChange: function(key, callback){
+            _checkKey(key);
+            if(!_observers[key]){
+                _observers[key] = [];
+            }
+            _observers[key].push(callback);
+        },
 
-                _storage_elm.parentNode.replaceChild(new_storage_elm, _storage_elm);
-                _storage_elm = new_storage_elm;
+        /**
+         * Remove change listeners
+         *
+         * @param {String} key Key name to unregister listeners against
+         * @param {Function} [callback] If set, unregister the callback, if not - unregister all
+         */
+        stopListening: function(key, callback){
+            _checkKey(key);
 
-                /* Use a DOM element to act as userData storage */
-                _storage_elm.style.behavior = 'url(#default#userData)';
+            if(!_observers[key]){
+                return;
+            }
 
-                /* userData element needs to be inserted into the DOM! */
-                document.getElementsByTagName('head')[0].appendChild(_storage_elm);
+            if(!callback){
+                delete _observers[key];
+                return;
+            }
 
-                _storage_elm.load("jStorage");
-                data = "{}";
-                try{
-                    data = _storage_elm.getAttribute("jStorage");
-                }catch(E5){}
-                _storage_service.jStorage = data;
-                _backend = "userDataBehavior";
+            for(var i = _observers[key].length - 1; i>=0; i--){
+                if(_observers[key][i] == callback){
+                    _observers[key].splice(i,1);
+                }
             }
+        },
+
+        /**
+         * Subscribe to a Publish/Subscribe event stream
+         *
+         * @param {String} channel Channel name
+         * @param {Function} callback Function to run when the something is published to the channel
+         */
+        subscribe: function(channel, callback){
+            channel = (channel || "").toString();
+            if(!channel){
+                throw new TypeError('Channel not defined');
+            }
+            if(!_pubsub_observers[channel]){
+                _pubsub_observers[channel] = [];
+            }
+            _pubsub_observers[channel].push(callback);
+        },
 
-            _load_storage();
+        /**
+         * Publish data to an event stream
+         *
+         * @param {String} channel Channel name
+         * @param {Mixed} payload Payload to deliver
+         */
+        publish: function(channel, payload){
+            channel = (channel || "").toString();
+            if(!channel){
+                throw new TypeError('Channel not defined');
+            }
+
+            _publish(channel, payload);
+        },
+
+        /**
+         * Reloads the data from browser storage
+         */
+        reInit: function(){
+            _reloadData();
         }
     };
 
     // Initialize jStorage
     _init();
 
-})(window.$ || window.jQuery);
+})();
index 3cbdad2..e0ba647 100644 (file)
        padding: 0;
        margin: -1px -1px 0 0;
 }
+
 /* IGNORED BY IE6 */
 html > body .suggestions {
        margin: -1px 0 0 0;
 }
+
 .suggestions-special {
        position: relative;
        background-color: white;
-       font-size: 0.8em;
        cursor: pointer;
        border: solid 1px #aaaaaa;
        padding: 0;
@@ -28,14 +29,15 @@ html > body .suggestions {
        padding: 0.25em 0.25em;
        line-height: 1.25em;
 }
+
 .suggestions-results {
        background-color: white;
-       font-size: 0.8em;
        cursor: pointer;
        border: solid 1px #aaaaaa;
        padding: 0;
        margin: 0;
 }
+
 .suggestions-result {
        color: black;
        margin: 0;
@@ -43,28 +45,33 @@ html > body .suggestions {
        padding: 0.01em 0.25em;
        text-align: left;
 }
+
 .suggestions-result-current {
        background-color: #4C59A6;
        color: white;
 }
+
 .suggestions-special .special-label {
-       font-size: 0.8em;
        color: gray;
        text-align: left;
 }
+
 .suggestions-special .special-query {
        color: black;
        font-style: italic;
        text-align: left;
 }
+
 .suggestions-special .special-hover {
        background-color: silver;
 }
+
 .suggestions-result-current .special-label,
 .suggestions-result-current .special-query {
        color: white;
 }
+
 .autoellipsis-matched,
 .highlight {
        font-weight: bold;
-}
\ No newline at end of file
+}
index dff5535..d80680f 100644 (file)
  * maxExpandFactor: Maximum suggestions box width relative to the textbox width. If set to e.g. 2, the suggestions box
  *             will never be grown beyond 2 times the width of the textbox.
  *             Type: Number, Range: 1 - infinity, Default: 3
- * positionFromLeft: Whether to position the suggestion box with the left attribute or the right
+ * expandFrom: Which direction to offset the suggestion box from.
+ *      Values 'start' and 'end' translate to left and right respectively depending on the directionality
+ *      of the current document, according to $( 'html' ).css( 'direction' ).
+ *      Type: String, default: 'auto', options: 'left', 'right', 'start', 'end', 'auto'.
+ * positionFromLeft: Sets expandFrom=left, for backwards compatibility
  *             Type: Boolean, Default: true
  * highlightInput: Whether to hightlight matched portions of the input or not
  *             Type: Boolean, Default: false
@@ -114,6 +118,7 @@ $.suggestions = {
         * @param value Mixed Value to set property with
         */
        configure: function ( context, property, value ) {
+               var newCSS;
                // Validate creation using fallback values
                switch( property ) {
                        case 'fetch':
@@ -121,6 +126,7 @@ $.suggestions = {
                        case 'special':
                        case 'result':
                        case '$region':
+                       case 'expandFrom':
                                context.config[property] = value;
                                break;
                        case 'suggestions':
@@ -134,19 +140,77 @@ $.suggestions = {
                                                // Rebuild the suggestions list
                                                context.data.$container.show();
                                                // Update the size and position of the list
-                                               var newCSS = {
+                                               newCSS = {
                                                        top: context.config.$region.offset().top + context.config.$region.outerHeight(),
                                                        bottom: 'auto',
                                                        width: context.config.$region.outerWidth(),
                                                        height: 'auto'
                                                };
-                                               if ( context.config.positionFromLeft ) {
+
+                                               // Process expandFrom, after this it is set to left or right.
+                                               context.config.expandFrom = ( function ( expandFrom ) {
+                                                       var regionWidth, docWidth, regionCenter, docCenter,
+                                                               docDir = $( document.documentElement ).css( 'direction' ),
+                                                               $region = context.config.$region;
+
+                                                       // Backwards compatible
+                                                       if ( context.config.positionFromLeft ) {
+                                                               expandFrom = 'left';
+
+                                                       // Catch invalid values, default to 'auto'
+                                                       } else if ( $.inArray( expandFrom, ['left', 'right', 'start', 'end', 'auto'] ) === -1 ) {
+                                                               expandFrom = 'auto';
+                                                       }
+
+                                                       if ( expandFrom === 'auto' ) {
+                                                               if ( $region.data( 'searchsuggest-expand-dir' ) ) {
+                                                                       // If the markup explicitly contains a direction, use it.
+                                                                       expandFrom = $region.data( 'searchsuggest-expand-dir' );
+                                                               } else {
+                                                                       regionWidth = $region.outerWidth();
+                                                                       docWidth = $( document ).width();
+                                                                       if ( ( regionWidth / docWidth  ) > 0.85 ) {
+                                                                               // If the input size takes up more than 85% of the document horizontally
+                                                                               // expand the suggestions to the writing direction's native end.
+                                                                               expandFrom = 'start';
+                                                                       } else {
+                                                                               // Calculate the center points of the input and document
+                                                                               regionCenter = $region.offset().left + regionWidth / 2;
+                                                                               docCenter = docWidth / 2;
+                                                                               if ( Math.abs( regionCenter - docCenter ) / docCenter < 0.10 ) {
+                                                                                       // If the input's center is within 10% of the document center
+                                                                                       // use the writing direction's native end.
+                                                                                       expandFrom = 'start';
+                                                                               } else {
+                                                                                       // Otherwise expand the input from the closest side of the page,
+                                                                                       // towards the side of the page with the most free open space
+                                                                                       expandFrom = regionCenter > docCenter ? 'right' : 'left';
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+
+                                                       if ( expandFrom === 'start' ) {
+                                                               expandFrom = docDir === 'rtl' ? 'right': 'left';
+
+                                                       } else if ( expandFrom === 'end' ) {
+                                                               expandFrom = docDir === 'rtl' ? 'left': 'right';
+                                                       }
+
+                                                       return expandFrom;
+
+                                               }( context.config.expandFrom ) );
+
+                                               if ( context.config.expandFrom === 'left' ) {
+                                                       // Expand from left
                                                        newCSS.left = context.config.$region.offset().left;
                                                        newCSS.right = 'auto';
                                                } else {
+                                                       // Expand from right
                                                        newCSS.left = 'auto';
                                                        newCSS.right = $( 'body' ).width() - ( context.config.$region.offset().left + context.config.$region.outerWidth() );
                                                }
+
                                                context.data.$container.css( newCSS );
                                                var $results = context.data.$container.children( '.suggestions-results' );
                                                $results.empty();
@@ -344,14 +408,15 @@ $.suggestions = {
 $.fn.suggestions = function () {
 
        // Multi-context fields
-       var returnValue;
-       var args = arguments;
+       var returnValue,
+               args = arguments;
 
        $(this).each( function () {
+               var context, key;
 
                /* Construction / Loading */
 
-               var context = $(this).data( 'suggestions-context' );
+               context = $(this).data( 'suggestions-context' );
                if ( context === undefined || context === null ) {
                        context = {
                                config: {
@@ -365,7 +430,7 @@ $.fn.suggestions = function () {
                                        'delay': 120,
                                        'submitOnClick': false,
                                        'maxExpandFactor': 3,
-                                       'positionFromLeft': true,
+                                       'expandFrom': 'auto',
                                        'highlightInput': false
                                }
                        };
@@ -377,7 +442,7 @@ $.fn.suggestions = function () {
                if ( args.length > 0 ) {
                        if ( typeof args[0] === 'object' ) {
                                // Apply set of properties
-                               for ( var key in args[0] ) {
+                               for ( key in args[0] ) {
                                        $.suggestions.configure( context, key, args[0][key] );
                                }
                        } else if ( typeof args[0] === 'string' ) {
@@ -409,22 +474,9 @@ $.fn.suggestions = function () {
                                $textbox: $(this),
                                selectedWithMouse: false
                        };
-                       // Setup the css for positioning the results box
-                       var newCSS = {
-                               top: Math.round( context.data.$textbox.offset().top + context.data.$textbox.outerHeight() ),
-                               width: context.data.$textbox.outerWidth(),
-                               display: 'none'
-                       };
-                       if ( context.config.positionFromLeft ) {
-                               newCSS.left = context.config.$region.offset().left;
-                               newCSS.right = 'auto';
-                       } else {
-                               newCSS.left = 'auto';
-                               newCSS.right = $( 'body' ).width() - ( context.config.$region.offset().left + context.config.$region.outerWidth() );
-                       }
 
                        context.data.$container = $( '<div>' )
-                               .css( newCSS )
+                               .css( 'display', 'none' )
                                .addClass( 'suggestions' )
                                .append(
                                        $( '<div>' ).addClass( 'suggestions-results' )
@@ -476,6 +528,7 @@ $.fn.suggestions = function () {
                                                } )
                                )
                                .appendTo( $( 'body' ) );
+
                        $(this)
                                // Stop browser autocomplete from interfering
                                .attr( 'autocomplete', 'off')
@@ -521,6 +574,7 @@ $.fn.suggestions = function () {
                                        $.suggestions.cancel( context );
                                } );
                }
+
                // Store the context for next time
                $(this).data( 'suggestions-context', context );
        } );
diff --git a/resources/mediawiki.action/mediawiki.action.edit.preview.js b/resources/mediawiki.action/mediawiki.action.edit.preview.js
new file mode 100644 (file)
index 0000000..cddf6cc
--- /dev/null
@@ -0,0 +1,135 @@
+/**
+ * Live edit preview.
+ */
+( function ( mw, $ ) {
+
+       /**
+        * @param {jQuery.Event} e
+        */
+       function doLivePreview( e ) {
+               var $wikiPreview, copySelectors, removeSelectors, $copyElements, $spinner,
+                       targetUrl, postData, $previewDataHolder;
+
+               e.preventDefault();
+
+               $( mw ).trigger( 'LivePreviewPrepare' );
+
+               $wikiPreview = $( '#wikiPreview' );
+
+               // Show #wikiPreview if it's hidden to be able to scroll to it
+               // (if it is hidden, it's also empty, so nothing changes in the rendering)
+               $wikiPreview.show();
+
+               // Jump to where the preview will appear
+               $wikiPreview[0].scrollIntoView();
+
+               // List of selectors matching elements that we will
+               // update from from the ajax-loaded preview page.
+               copySelectors = [
+                       // Main
+                       '#wikiPreview',
+                       '#wikiDiff',
+                       '#catlinks',
+                       '.hiddencats',
+                       '#p-lang',
+                       // Editing-related
+                       '.templatesUsed',
+                       '.mw-summary-preview'
+               ];
+               $copyElements = $( copySelectors.join( ',' ) );
+
+               // Not shown during normal preview, to be removed if present
+               removeSelectors = [
+                       '.mw-newarticletext'
+               ];
+
+               $( removeSelectors.join( ',' ) ).remove();
+
+               $spinner = $.createSpinner( {
+                       size: 'large',
+                       type: 'block'
+               });
+               $wikiPreview.before( $spinner );
+               $spinner.css( {
+                       position: 'absolute',
+                       marginTop: $spinner.height()
+               } );
+               // Make sure preview area is at least as tall as 2x the height of the spinner.
+               // 1x because if its smaller, it will spin behind the edit toolbar.
+               // (this happens on the first preview when editPreview is still empty)
+               // 2x because the spinner has 1x margin top breathing room.
+               $wikiPreview.css( 'minHeight', $spinner.height() * 2 );
+
+               // Can't use fadeTo because it calls show(), and we might want to keep some elements hidden
+               // (e.g. empty #catlinks)
+               $copyElements.animate( {
+                       opacity: 0.4
+               }, 'fast' );
+
+               $previewDataHolder = $( '<div>' );
+               targetUrl = $( '#editform' ).attr( 'action' );
+
+               // Gather all the data from the form
+               postData = $( '#editform' ).formToArray();
+               postData.push( {
+                       name: e.target.name,
+                       value: ''
+               } );
+
+               // Load new preview data.
+               // TODO: This should use the action=parse API instead of loading the entire page
+               // Though that requires figuring out how to conver that raw data into proper HTML.
+               $previewDataHolder.load( targetUrl + ' ' + copySelectors.join( ',' ), postData, function () {
+                       var i, $from;
+                       // Copy the contents of the specified elements from the loaded page to the real page.
+                       // Also copy their class attributes.
+                       for ( i = 0; i < copySelectors.length; i++ ) {
+                               $from = $previewDataHolder.find( copySelectors[i] );
+
+                               $( copySelectors[i] )
+                                       .empty()
+                                       .append( $from.contents() )
+                                       .attr( 'class', $from.attr( 'class' ) );
+                       }
+
+                       $spinner.remove();
+                       $copyElements.animate( {
+                               opacity: 1
+                       }, 'fast' );
+
+                       $( mw ).trigger( 'LivePreviewDone', [copySelectors] );
+               } );
+       }
+
+       $( document ).ready( function () {
+               // The following elements can change in a preview but are not output
+               // by the server when they're empty until the preview reponse.
+               // TODO: Make the server output these always (in a hidden state), so we don't
+               // have to fish and (hopefully) put them in the right place (since skins
+               // can change where they are output).
+
+               if ( !document.getElementById( 'p-lang' ) && document.getElementById( 'p-tb' ) ) {
+                       $( '#p-tb' ).after(
+                               $( '<div>' ).prop( 'id', 'p-lang' )
+                       );
+               }
+
+               if ( !$( '.mw-summary-preview' ).length ) {
+                       $( '.editCheckboxes' ).before(
+                               $( '<div>' ).prop( 'className', 'mw-summary-preview' )
+                       );
+               }
+
+               if ( !document.getElementById( 'wikiDiff' ) && document.getElementById( 'wikiPreview' ) ) {
+                       $( '#wikiPreview' ).after(
+                               $( '<div>' ).prop( 'id', 'wikiDiff')
+                       );
+               }
+
+               // Make sure diff styles are loaded
+               mw.loader.load( 'mediawiki.action.history.diff' );
+
+               $( document.body ).on( 'click', '#wpPreview, #wpDiff', doLivePreview );
+       } );
+
+}( mediaWiki, jQuery ) );
index 9e030fa..33cca58 100644 (file)
@@ -132,7 +132,7 @@ var
        setAll = function ( title, s ) {
                // In normal browsers the match-array contains null/undefined if there's no match,
                // IE returns an empty string.
-               var     matches = s.match( /^(?:([^:]+):)?(.*?)(?:\.(\w{1,5}))?$/ ),
+               var matches = s.match( /^(?:([^:]+):)?(.*?)(?:\.(\w+))?$/ ),
                        ns_match = getNsIdByName( matches[1] );
 
                // Namespace must be valid, and title must be a non-empty string.
@@ -160,7 +160,7 @@ var
        setNameAndExtension = function ( title, raw ) {
                // In normal browsers the match-array contains null/undefined if there's no match,
                // IE returns an empty string.
-               var matches = raw.match( /^(?:)?(.*?)(?:\.(\w{1,5}))?$/ );
+               var matches = raw.match( /^(?:)?(.*?)(?:\.(\w+))?$/ );
 
                // Title must be a non-empty string.
                if ( typeof matches[1] === 'string' && matches[1] !== '' ) {
index f0f78c2..634d02b 100644 (file)
                },
 
                submit: function () {
-                       var fb = this;
-
-                       // get the values to submit
-                       var subject = this.subjectInput.value;
-
-                       var message = '<small>User agent: ' + mw.html.escape( navigator.userAgent ) + '</small>\n\n'
-                                + this.messageInput.value;
-                       if ( message.indexOf( '~~~' ) === -1 ) {
-                               message += ' ~~~~';
-                       }
-
-                       this.displaySubmitting();
+                       var subject, message,
+                               fb = this;
 
-                       var ok = function ( result ) {
+                       function ok( result ) {
                                if ( result.edit !== undefined ) {
                                        if ( result.edit.result === 'Success' ) {
                                                fb.displayThanks();
                                        // edit failed
                                        fb.displayError( 'feedback-error2' );
                                }
-                       };
+                       }
 
-                       var err = function ( code, info ) {
+                       function err( code, info ) {
                                // ajax request failed
                                fb.displayError( 'feedback-error3' );
-                       };
+                       }
+
+                       // Get the values to submit.
+                       subject = this.subjectInput.value;
+
+                       // We used to include "mw.html.escape( navigator.userAgent )" but there are legal issues
+                       // with posting this without their explicit consent
+                       message = this.messageInput.value;
+                       if ( message.indexOf( '~~~' ) === -1 ) {
+                               message += ' ~~~~';
+                       }
+
+                       this.displaySubmitting();
 
                        this.api.newSection( this.title, subject, message, ok, err );
-               }, // close submit button function
+               },
 
                /**
                 * Modify the display form, and then open it, focusing interface on the subject.
index f0e464d..b484629 100644 (file)
@@ -393,48 +393,82 @@ var mw = ( function ( $, undefined ) {
                         * Create a new style tag and add it to the DOM.
                         *
                         * @param text String: CSS text
-                        * @param $nextnode mixed: [optional] An Element or jQuery object for an element where
+                        * @param nextnode mixed: [optional] An Element or jQuery object for an element where
                         * the style tag should be inserted before. Otherwise appended to the <head>.
                         * @return HTMLStyleElement
                         */
-                       function addStyleTag( text, $nextnode ) {
+                       function addStyleTag( text, nextnode ) {
                                var s = document.createElement( 'style' );
-                               s.type = 'text/css';
-                               s.rel = 'stylesheet';
                                // Insert into document before setting cssText (bug 33305)
-                               if ( $nextnode ) {
-                                       // If a raw element, create a jQuery object, otherwise use directly
-                                       if ( $nextnode.nodeType ) {
-                                               $nextnode = $( $nextnode );
+                               if ( nextnode ) {
+                                       // Must be inserted with native insertBefore, not $.fn.before.
+                                       // When using jQuery to insert it, like $nextnode.before( s ),
+                                       // then IE6 will throw "Access is denied" when trying to append
+                                       // to .cssText later. Some kind of weird security measure.
+                                       // http://stackoverflow.com/q/12586482/319266
+                                       // Works: jsfiddle.net/zJzMy/1
+                                       // Fails: jsfiddle.net/uJTQz
+                                       // Works again: http://jsfiddle.net/Azr4w/ (diff: the next 3 lines)
+                                       if ( nextnode.jquery ) {
+                                               nextnode = nextnode.get( 0 );
                                        }
-                                       $nextnode.before( s );
+                                       nextnode.parentNode.insertBefore( s, nextnode );
                                } else {
-                                       document.getElementsByTagName('head')[0].appendChild( s );
+                                       document.getElementsByTagName( 'head' )[0].appendChild( s );
                                }
                                if ( s.styleSheet ) {
-                                       s.styleSheet.cssText = text; // IE
+                                       // IE
+                                       s.styleSheet.cssText = text;
                                } else {
-                                       // Safari sometimes borks on null
+                                       // Other browsers.
+                                       // (Safari sometimes borks on non-string values,
+                                       // play safe by casting to a string, just in case.)
                                        s.appendChild( document.createTextNode( String( text ) ) );
                                }
                                return s;
                        }
 
-                       function addInlineCSS( css ) {
-                               var $style, style, $newStyle;
+                       /**
+                        * Checks if certain cssText is safe to append to
+                        * a stylesheet.
+                        *
+                        * Right now it only makes sure that cssText containing @import
+                        * rules will end up in a new stylesheet (as those only work when
+                        * placed at the start of a stylesheet; bug 35562).
+                        * This could later be extended to take care of other bugs, such as
+                        * the IE cssRules limit - not the same as the IE styleSheets limit).
+                        */
+                       function canExpandStylesheetWith( $style, cssText ) {
+                               return cssText.indexOf( '@import' ) === -1;
+                       }
+
+                       function addEmbeddedCSS( cssText ) {
+                               var $style, styleEl;
                                $style = getMarker().prev();
-                               // Disable <style> tag recycling/concatenation because of bug 34669
-                               if ( false && $style.is( 'style' ) && $style.data( 'ResourceLoaderDynamicStyleTag' ) === true ) {
-                                       // There's already a dynamic <style> tag present, append to it. This recycling of
-                                       // <style> tags is for bug 31676 (can't have more than 32 <style> tags in IE)
-                                       style = $style.get( 0 );
-                                       if ( style.styleSheet ) {
-                                               style.styleSheet.cssText += css; // IE
+                               // Re-use <style> tags if possible, this to try to stay
+                               // under the IE stylesheet limit (bug 31676).
+                               // Also verify that the the element before Marker actually is one
+                               // that came from ResourceLoader, and not a style tag that some
+                               // other script inserted before our marker, or, more importantly,
+                               // it may not be a style tag at all (could be <meta> or <script>).
+                               if (
+                                       $style.data( 'ResourceLoaderDynamicStyleTag' ) === true &&
+                                       canExpandStylesheetWith( $style, cssText )
+                               ) {
+                                       // There's already a dynamic <style> tag present and
+                                       // canExpandStylesheetWith() gave a green light to append more to it.
+                                       styleEl = $style.get( 0 );
+                                       if ( styleEl.styleSheet ) {
+                                               try {
+                                                       styleEl.styleSheet.cssText += cssText; // IE
+                                               } catch ( e ) {
+                                                       log( 'addEmbeddedCSS fail\ne.message: ' + e.message, e );
+                                               }
                                        } else {
-                                               style.appendChild( document.createTextNode( String( css ) ) );
+                                               styleEl.appendChild( document.createTextNode( String( cssText ) ) );
                                        }
                                } else {
-                                       $newStyle = $( addStyleTag( css, getMarker() ) )
+                                       $( addStyleTag( cssText, getMarker() ) )
                                                .data( 'ResourceLoaderDynamicStyleTag', true );
                                }
                        }
@@ -794,7 +828,7 @@ var mw = ( function ( $, undefined ) {
                         * @param module string module name to execute
                         */
                        function execute( module ) {
-                               var style, media, i, script, markModuleReady, nestedAddScript;
+                               var key, value, media, i, script, markModuleReady, nestedAddScript;
 
                                if ( registry[module] === undefined ) {
                                        throw new Error( 'Module has not been registered yet: ' + module );
@@ -806,28 +840,72 @@ var mw = ( function ( $, undefined ) {
                                        throw new Error( 'Module has already been loaded: ' + module );
                                }
 
-                               // Add styles
+                               /**
+                                * Define loop-function here for efficiency
+                                * and to avoid re-using badly scoped variables.
+                                */
+                               function addLink( media, url ) {
+                                       var el = document.createElement( 'link' );
+                                       getMarker().before( el ); // IE: Insert in dom before setting href
+                                       el.rel = 'stylesheet';
+                                       if ( media && media !== 'all' ) {
+                                               el.media = media;
+                                       }
+                                       el.href = url;
+                               }
+
+                               // Process styles (see also mw.loader.implement)
+                               // * back-compat: { <media>: css }
+                               // * back-compat: { <media>: [url, ..] }
+                               // * { "css": [css, ..] }
+                               // * { "url": { <media>: [url, ..] } }
                                if ( $.isPlainObject( registry[module].style ) ) {
-                                       // 'media' type ignored, see documentation of mw.loader.implement
-                                       for ( media in registry[module].style ) {
-                                               style = registry[module].style[media];
-                                               if ( $.isArray( style ) ) {
-                                                       for ( i = 0; i < style.length; i += 1 ) {
-                                                               getMarker().before( mw.html.element( 'link', {
-                                                                       'type': 'text/css',
-                                                                       'rel': 'stylesheet',
-                                                                       'href': style[i]
-                                                               } ) );
+                                       for ( key in registry[module].style ) {
+                                               value = registry[module].style[key];
+                                               media = undefined;
+
+                                               if ( key !== 'url' && key !== 'css' ) {
+                                                       // Backwards compatibility, key is a media-type
+                                                       if ( typeof value === 'string' ) {
+                                                               // back-compat: { <media>: css }
+                                                               // Ignore 'media' because it isn't supported (nor was it used).
+                                                               // Strings are pre-wrapped in "@media". The media-type was just ""
+                                                               // (because it had to be set to something).
+                                                               // This is one of the reasons why this format is no longer used.
+                                                               addEmbeddedCSS( value );
+                                                       } else {
+                                                               // back-compat: { <media>: [url, ..] }
+                                                               media = key;
+                                                               key = 'bc-url';
                                                        }
-                                               } else if ( typeof style === 'string' ) {
-                                                       addInlineCSS( style );
+                                               }
+
+                                               // Array of css strings in key 'css',
+                                               // or back-compat array of urls from media-type
+                                               if ( $.isArray( value ) ) {
+                                                       for ( i = 0; i < value.length; i += 1 ) {
+                                                               if ( key === 'bc-url' ) {
+                                                                       // back-compat: { <media>: [url, ..] }
+                                                                       addLink( media, value[i] );
+                                                               } else if ( key === 'css' ) {
+                                                                       // { "css": [css, ..] }
+                                                                       addEmbeddedCSS( value[i] );
+                                                               }
+                                                       }
+                                               // Not an array, but a regular object
+                                               // Array of urls inside media-type key
+                                               } else if ( typeof value === 'object' ) {
+                                                       // { "url": { <media>: [url, ..] } }
+                                                       $.each( value, addLink );
                                                }
                                        }
                                }
+
                                // Add localizations to message system
                                if ( $.isPlainObject( registry[module].messages ) ) {
                                        mw.messages.set( registry[module].messages );
                                }
+
                                // Execute script
                                try {
                                        script = registry[module].script;
@@ -860,7 +938,7 @@ var mw = ( function ( $, undefined ) {
                                } catch ( e ) {
                                        // This needs to NOT use mw.log because these errors are common in production mode
                                        // and not in debug mode, such as when a symbol that should be global isn't exported
-                                       log('mw.loader::execute> Exception thrown by ' + module + ': ' + e.message, e);
+                                       log( 'Exception thrown by ' + module + ': ' + e.message, e );
                                        registry[module].state = 'error';
                                        handlePending( module );
                                }
@@ -1182,17 +1260,20 @@ var mw = ( function ( $, undefined ) {
                                 *
                                 * All arguments are required.
                                 *
-                                * @param module String: Name of module
-                                * @param script Mixed: Function of module code or String of URL to be used as the src
-                                *  attribute when adding a script element to the body
-                                * @param style Object: Object of CSS strings keyed by media-type or Object of lists of URLs
-                                *  keyed by media-type. Media-type should be "all" or "", actual types are not supported
-                                *  right now due to the way execute() processes the stylesheets (they are concatenated
-                                *  into a single <style> tag). In the past these weren't concatenated together (which is
-                                *  these are keyed by media-type),  but bug 31676 forces us to. In practice this is not a
-                                *  problem because ResourceLoader only generates stylesheets for media-type all (e.g. print
-                                *  stylesheets are wrapped in @media print {} and concatenated with the others).
-                                * @param msgs Object: List of key/value pairs to be passed through mw.messages.set
+                                * @param {String} module Name of module
+                                * @param {Function|Array} script Function with module code or Array of URLs to
+                                *  be used as the src attribute of a new <script> tag.
+                                * @param {Object} style Should follow one of the following patterns:
+                                *  { "css": [css, ..] }
+                                *  { "url": { <media>: [url, ..] } }
+                                *  And for backwards compatibility (needs to be supported forever due to caching):
+                                *  { <media>: css }
+                                *  { <media>: [url, ..] }
+                                *
+                                *  The reason css strings are not concatenated anymore is bug 31676. We now check
+                                *  whether it's safe to extend the stylesheet (see canExpandStylesheetWith).
+                                *
+                                * @param {Object} msgs List of key/value pairs to be passed through mw.messages.set
                                 */
                                implement: function ( module, script, style, msgs ) {
                                        // Validate input
diff --git a/resources/mediawiki/mediawiki.searchSuggest.js b/resources/mediawiki/mediawiki.searchSuggest.js
new file mode 100644 (file)
index 0000000..42c839c
--- /dev/null
@@ -0,0 +1,161 @@
+/**
+ * Add search suggestions to the search form.
+ */
+( function ( mw, $ ) {
+       $( document ).ready( function ( $ ) {
+               var map,
+                       // Region where the suggestions box will appear directly below
+                       // (using the same width). Can be a container element or the input
+                       // itself, depending on what suits best in the environment.
+                       // For Vector the suggestion box should align with the simpleSearch
+                       // container's borders, in other skins it should align with the input
+                       // element (not the search form, as that would leave the buttons
+                       // vertically between the input and the suggestions).
+                       $searchRegion = $( '#simpleSearch, #searchInput' ).first(),
+                       $searchInput = $( '#searchInput' );
+
+               // Ensure that the thing is actually present!
+               if ( $searchRegion.length === 0 ) {
+                       // Don't try to set anything up if simpleSearch is disabled sitewide.
+                       // The loader code loads us if the option is present, even if we're
+                       // not actually enabled (anymore).
+                       return;
+               }
+
+               // Compatibility map
+               map = {
+                       browsers: {
+                               // Left-to-right languages
+                               ltr: {
+                                       // SimpleSearch is broken in Opera < 9.6
+                                       opera: [['>=', 9.6]],
+                                       docomo: false,
+                                       blackberry: false,
+                                       ipod: false,
+                                       iphone: false
+                               },
+                               // Right-to-left languages
+                               rtl: {
+                                       opera: [['>=', 9.6]],
+                                       docomo: false,
+                                       blackberry: false,
+                                       ipod: false,
+                                       iphone: false
+                               }
+                       }
+               };
+
+               if ( !$.client.test( map ) ) {
+                       return;
+               }
+
+               // Placeholder text for search box
+               $searchInput
+                       .attr( 'placeholder', mw.msg( 'searchsuggest-search' ) )
+                       .placeholder();
+
+               // General suggestions functionality for all search boxes
+               $( '#searchInput, #searchInput2, #powerSearchText, #searchText' )
+                       .suggestions( {
+                               fetch: function ( query ) {
+                                       var $el, jqXhr;
+
+                                       if ( query.length !== 0 ) {
+                                               $el = $(this);
+                                               jqXhr = $.ajax( {
+                                                       url: mw.util.wikiScript( 'api' ),
+                                                       data: {
+                                                               format: 'json',
+                                                               action: 'opensearch',
+                                                               search: query,
+                                                               namespace: 0,
+                                                               suggest: ''
+                                                       },
+                                                       dataType: 'json',
+                                                       success: function ( data ) {
+                                                               if ( $.isArray( data ) && data.length ) {
+                                                                       $el.suggestions( 'suggestions', data[1] );
+                                                               }
+                                                       }
+                                               });
+                                               $el.data( 'request', jqXhr );
+                                       }
+                               },
+                               cancel: function () {
+                                       var jqXhr = $(this).data( 'request' );
+                                       // If the delay setting has caused the fetch to have not even happened
+                                       // yet, the jqXHR object will have never been set.
+                                       if ( jqXhr && $.isFunction ( jqXhr.abort ) ) {
+                                               jqXhr.abort();
+                                               $(this).removeData( 'request' );
+                                       }
+                               },
+                               result: {
+                                       select: function ( $input ) {
+                                               $input.closest( 'form' ).submit();
+                                       }
+                               },
+                               delay: 120,
+                               highlightInput: true
+                       } )
+                       .bind( 'paste cut drop', function () {
+                               // make sure paste and cut events from the mouse and drag&drop events
+                               // trigger the keypress handler and cause the suggestions to update
+                               $( this ).trigger( 'keypress' );
+                       } );
+
+               // Special suggestions functionality for skin-provided search box
+               $searchInput.suggestions( {
+                       result: {
+                               select: function ( $input ) {
+                                       $input.closest( 'form' ).submit();
+                               }
+                       },
+                       special: {
+                               render: function ( query ) {
+                                       var $el = this;
+                                       if ( $el.children().length === 0 ) {
+                                               $el
+                                                       .append(
+                                                               $( '<div>' )
+                                                                       .addClass( 'special-label' )
+                                                                       .text( mw.msg( 'searchsuggest-containing' ) )
+                                                       )
+                                                       .append(
+                                                               $( '<div>' )
+                                                                       .addClass( 'special-query' )
+                                                                       .text( query )
+                                                                       .autoEllipsis()
+                                                       )
+                                                       .show();
+                                       } else {
+                                               $el.find( '.special-query' )
+                                                       .empty()
+                                                       .text( query )
+                                                       .autoEllipsis();
+                                       }
+                               },
+                               select: function ( $input ) {
+                                       $input.closest( 'form' ).append(
+                                               $( '<input type="hidden"/>', {
+                                                       name: 'fulltext',
+                                                       val: '1'
+                                               })
+                                       );
+                                       $input.closest( 'form' ).submit();
+                               }
+                       },
+                       $region: $searchRegion
+               } );
+
+               // In most skins (at least Monobook and Vector), the font-size is messed up in <body>.
+               // (they use 2 elements to get a sane font-height). So, instead of making exceptions for
+               // each skin or adding more stylesheets, just copy it from the active element so auto-fit.
+               $searchInput
+                       .data( 'suggestions-context' )
+                       .data.$container
+                               .css( 'fontSize', $searchInput.css( 'fontSize' ) );
+
+       } );
+
+}( mediaWiki, jQuery ) );
\ No newline at end of file
index 0e0ce80..0be614a 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Serialize variables found in input file and store the result in the
+ * specified 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
+ */
 
 if ( !defined( 'MEDIAWIKI' ) ) {
        $wgNoDBParam = true;
@@ -62,7 +83,7 @@ function unixLineEndings( $var ) {
                fwrite( $stderr, "Error: Recursion limit exceeded. Possible circular reference in array variable.\n" );
                exit( 2 );
        }
-       
+
        if ( is_array( $var ) ) {
                ++$recursionLevel;
                $var = array_map( 'unixLineEndings', $var );
diff --git a/skins/common/mwsuggest.js b/skins/common/mwsuggest.js
deleted file mode 100644 (file)
index dac5954..0000000
+++ /dev/null
@@ -1,1063 +0,0 @@
-/*
- * OpenSearch ajax suggestion engine for MediaWiki
- *
- * uses core MediaWiki open search support to fetch suggestions
- * and show them below search boxes and other inputs
- *
- * by Robert Stojnic (April 2008)
- */
-
-// Make sure wgMWSuggestTemplate is defined
-if ( !mw.config.exists( 'wgMWSuggestTemplate' ) ) {
-       mw.config.set( 'wgMWSuggestTemplate', mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' )
-                + "/api.php?action=opensearch\x26search={searchTerms}\x26namespace={namespaces}\x26suggest" );
-}
-
-// search_box_id -> Results object
-window.os_map = {};
-// cached data, url -> json_text
-window.os_cache = {};
-// global variables for suggest_keypress
-window.os_cur_keypressed = 0;
-window.os_keypressed_count = 0;
-// type: Timer
-window.os_timer = null;
-// tie mousedown/up events
-window.os_mouse_pressed = false;
-window.os_mouse_num = -1;
-// if true, the last change was made by mouse (and not keyboard)
-window.os_mouse_moved = false;
-// delay between keypress and suggestion (in ms)
-window.os_search_timeout = 250;
-// these pairs of inputs/forms will be autoloaded at startup
-window.os_autoload_inputs = ['searchInput', 'searchInput2', 'powerSearchText', 'searchText'];
-window.os_autoload_forms = ['searchform', 'searchform2', 'powersearch', 'search'];
-// if we stopped the service
-window.os_is_stopped = false;
-// max lines to show in suggest table
-window.os_max_lines_per_suggest = 7;
-// number of steps to animate expansion/contraction of container width
-window.os_animation_steps = 6;
-// num of pixels of smallest step
-window.os_animation_min_step = 2;
-// delay between steps (in ms)
-window.os_animation_delay = 30;
-// max width of container in percent of normal size (1 == 100%)
-window.os_container_max_width = 2;
-// currently active animation timer
-window.os_animation_timer = null;
-// whether MWSuggest is enabled. Set to false when os_MWSuggestDisable() is called
-window.os_enabled = true;
-
-/**
- * <datalist> is a new HTML5 element that allows you to manually
- * supply suggestion lists and have them rendered according to the
- * right platform conventions.  Opera as of version 11 has a fatal
- * problem: the suggestion lags behind what the user types by one
- * keypress.  (Reported as DSK-276870 to Opera's secret bug tracker.)
- * There are also problems with other browsers, including Firefox and
- * Safari: See bug 31602 for details.
- */
-window.os_use_datalist = false;
-
-/** Timeout timer class that will fetch the results */
-window.os_Timer = function( id, r, query ) {
-       this.id = id;
-       this.r = r;
-       this.query = query;
-};
-
-/** Property class for single search box */
-window.os_Results = function( name, formname ) {
-       this.searchform = formname; // id of the searchform
-       this.searchbox = name; // id of the searchbox
-       this.container = name + 'Suggest'; // div that holds results
-       this.resultTable = name + 'Result'; // id base for the result table (+num = table row)
-       this.resultText = name + 'ResultText'; // id base for the spans within result tables (+num)
-       this.toggle = name + 'Toggle'; // div that has the toggle (enable/disable) link
-       this.query = null; // last processed query
-       this.results = null;  // parsed titles
-       this.resultCount = 0; // number of results
-       this.original = null; // query that user entered
-       this.selected = -1; // which result is selected
-       this.containerCount = 0; // number of results visible in container
-       this.containerRow = 0; // height of result field in the container
-       this.containerTotal = 0; // total height of the container will all results
-       this.visible = false; // if container is visible
-       this.stayHidden = false; // don't try to show if lost focus
-};
-
-/** Timer user to animate expansion/contraction of container width */
-window.os_AnimationTimer = function( r, target ) {
-       this.r = r;
-       var current = document.getElementById(r.container).offsetWidth;
-       this.inc = Math.round( ( target - current ) / os_animation_steps );
-       if( this.inc < os_animation_min_step && this.inc >=0 ) {
-               this.inc = os_animation_min_step; // minimal animation step
-       }
-       if( this.inc > -os_animation_min_step && this.inc < 0 ) {
-               this.inc = -os_animation_min_step;
-       }
-       this.target = target;
-};
-
-/******************
- * Initialization
- ******************/
-
-/** Initialization, call upon page onload */
-window.os_MWSuggestInit = function() {
-       if ( !window.os_enabled ) {
-               return;
-       }
-       
-       for( var i = 0; i < os_autoload_inputs.length; i++ ) {
-               var id = os_autoload_inputs[i];
-               var form = os_autoload_forms[i];
-               element = document.getElementById( id );
-               if( element != null ) {
-                       os_initHandlers( id, form, element );
-               }
-       }
-};
-
-/* Teardown, called when things like SimpleSearch need to disable MWSuggest */
-window.os_MWSuggestTeardown = function() {
-       for( var i = 0; i < os_autoload_inputs.length; i++ ) {
-               var id = os_autoload_inputs[i];
-               var form = os_autoload_forms[i];
-               element = document.getElementById( id );
-               if( element != null ) {
-                       os_teardownHandlers( id, form, element );
-               }
-       }
-};
-
-/* Call this to disable MWSuggest. Works regardless of whether MWSuggest has been initialized already. */
-window.os_MWSuggestDisable = function() {
-       window.os_MWSuggestTeardown();
-       window.os_enabled = false;
-}
-       
-
-/** Init Result objects and event handlers */
-window.os_initHandlers = function( name, formname, element ) {
-       var r = new os_Results( name, formname );
-       var formElement = document.getElementById( formname );
-       if( !formElement ) {
-               // Older browsers (Opera 8) cannot get form elements
-               return;
-       }
-       // event handler
-       os_hookEvent( element, 'keyup', os_eventKeyup );
-       os_hookEvent( element, 'keydown', os_eventKeydown );
-       os_hookEvent( element, 'keypress', os_eventKeypress );
-       if ( !os_use_datalist ) {
-               // These are needed for the div hack to hide it if the user blurs.
-               os_hookEvent( element, 'blur', os_eventBlur );
-               os_hookEvent( element, 'focus', os_eventFocus );
-               // We don't want browser auto-suggestions interfering with our div, but
-               // autocomplete must be on for datalist to work (at least in Opera
-               // 10.10).
-               element.setAttribute( 'autocomplete', 'off' );
-       }
-       // stopping handler
-       os_hookEvent( formElement, 'submit', os_eventOnsubmit );
-       os_map[name] = r;
-       // toggle link
-       if( document.getElementById( r.toggle ) == null ) {
-               // TODO: disable this while we figure out a way for this to work in all browsers
-               /* if( name == 'searchInput' ) {
-                       // special case: place above the main search box
-                       var t = os_createToggle( r, 'os-suggest-toggle' );
-                       var searchBody = document.getElementById( 'searchBody' );
-                       var first = searchBody.parentNode.firstChild.nextSibling.appendChild(t);
-               } else {
-                       // default: place below search box to the right
-                       var t = os_createToggle( r, 'os-suggest-toggle-def' );
-                       var top = element.offsetTop + element.offsetHeight;
-                       var left = element.offsetLeft + element.offsetWidth;
-                       t.style.position = 'absolute';
-                       t.style.top = top + 'px';
-                       t.style.left = left + 'px';
-                       element.parentNode.appendChild( t );
-                       // only now width gets calculated, shift right
-                       left -= t.offsetWidth;
-                       t.style.left = left + 'px';
-                       t.style.visibility = 'visible';
-               } */
-       }
-
-};
-
-window.os_teardownHandlers = function( name, formname, element ) {
-       var formElement = document.getElementById( formname );
-       if( !formElement ) {
-               // Older browsers (Opera 8) cannot get form elements
-               return;
-       }
-
-       os_unhookEvent( element, 'keyup', os_eventKeyup );
-       os_unhookEvent( element, 'keydown', os_eventKeydown );
-       os_unhookEvent( element, 'keypress', os_eventKeypress );
-       if ( !os_use_datalist ) {
-               // These are needed for the div hack to hide it if the user blurs.
-               os_unhookEvent( element, 'blur', os_eventBlur );
-               os_unhookEvent( element, 'focus', os_eventFocus );
-               // We don't want browser auto-suggestions interfering with our div, but
-               // autocomplete must be on for datalist to work (at least in Opera
-               // 10.10).
-               element.removeAttribute( 'autocomplete' );
-       }
-       // stopping handler
-       os_unhookEvent( formElement, 'submit', os_eventOnsubmit );
-};
-
-
-window.os_hookEvent = function( element, hookName, hookFunct ) {
-       if ( element.addEventListener ) {
-               element.addEventListener( hookName, hookFunct, false );
-       } else if ( window.attachEvent ) {
-               element.attachEvent( 'on' + hookName, hookFunct );
-       }
-};
-
-window.os_unhookEvent = function( element, hookName, hookFunct ) {
-       if ( element.removeEventListener ) {
-               element.removeEventListener( hookName, hookFunct, false );
-       } else if ( element.detachEvent ) {
-               element.detachEvent( 'on' + hookName, hookFunct );
-       }
-}
-
-/********************
- *  Keyboard events
- ********************/
-
-/** Event handler that will fetch results on keyup */
-window.os_eventKeyup = function( e ) {
-       var targ = os_getTarget( e );
-       var r = os_map[targ.id];
-       if( r == null ) {
-               return; // not our event
-       }
-
-       // some browsers won't generate keypressed for arrow keys, catch it
-       if( os_keypressed_count == 0 ) {
-               os_processKey( r, os_cur_keypressed, targ );
-       }
-       var query = targ.value;
-       os_fetchResults( r, query, os_search_timeout );
-};
-
-/** catch arrows up/down and escape to hide the suggestions */
-window.os_processKey = function( r, keypressed, targ ) {
-       if ( keypressed == 40 && !r.visible && os_timer == null ) {
-               // If the user hits the down arrow, fetch results immediately if none
-               // are already displayed.
-               r.query = '';
-               os_fetchResults( r, targ.value, 0 );
-       }
-       // Otherwise, if we're not using datalist, we need to handle scrolling and
-       // so on.
-       if ( os_use_datalist ) {
-               return;
-       }
-       if ( keypressed == 40 ) { // Arrow Down
-               if ( r.visible ) {
-                       os_changeHighlight( r, r.selected, r.selected + 1, true );
-               }
-       } else if ( keypressed == 38 ) { // Arrow Up
-               if ( r.visible ) {
-                       os_changeHighlight( r, r.selected, r.selected - 1, true );
-               }
-       } else if( keypressed == 27 ) { // Escape
-               document.getElementById( r.searchbox ).value = r.original;
-               r.query = r.original;
-               os_hideResults( r );
-       } else if( r.query != document.getElementById( r.searchbox ).value ) {
-               // os_hideResults( r ); // don't show old suggestions
-       }
-};
-
-/** When keys is held down use a timer to output regular events */
-window.os_eventKeypress = function( e ) {
-       var targ = os_getTarget( e );
-       var r = os_map[targ.id];
-       if( r == null ) {
-               return; // not our event
-       }
-
-       var keypressed = os_cur_keypressed;
-
-       os_keypressed_count++;
-       os_processKey( r, keypressed, targ );
-};
-
-/** Catch the key code (Firefox bug) */
-window.os_eventKeydown = function( e ) {
-       if ( !e ) {
-               e = window.event;
-       }
-       var targ = os_getTarget( e );
-       var r = os_map[targ.id];
-       if( r == null ) {
-               return; // not our event
-       }
-
-       os_mouse_moved = false;
-
-       os_cur_keypressed = ( e.keyCode == undefined ) ? e.which : e.keyCode;
-       os_keypressed_count = 0;
-};
-
-
-/** When the form is submitted hide everything, cancel updates... */
-window.os_eventOnsubmit = function( e ) {
-       var targ = os_getTarget( e );
-
-       os_is_stopped = true;
-       // kill timed requests
-       if( os_timer != null && os_timer.id != null ) {
-               clearTimeout( os_timer.id );
-               os_timer = null;
-       }
-       // Hide all suggestions
-       for( i = 0; i < os_autoload_inputs.length; i++ ) {
-               var r = os_map[os_autoload_inputs[i]];
-               if( r != null ) {
-                       var b = document.getElementById( r.searchform );
-                       if( b != null && b == targ ) {
-                               // set query value so the handler won't try to fetch additional results
-                               r.query = document.getElementById( r.searchbox ).value;
-                       }
-                       os_hideResults( r );
-               }
-       }
-       return true;
-};
-
-
-
-/** Hide results from the user, either making the div visibility=hidden or
- * detaching the datalist from the input. */
-window.os_hideResults = function( r ) {
-       if ( os_use_datalist ) {
-               document.getElementById( r.searchbox ).setAttribute( 'list', '' );
-       } else {
-               var c = document.getElementById( r.container );
-               if ( c != null ) {
-                       c.style.visibility = 'hidden';
-               }
-       }
-       r.visible = false;
-       r.selected = -1;
-};
-
-window.os_decodeValue = function( value ) {
-       if ( decodeURIComponent ) {
-               return decodeURIComponent( value );
-       }
-       if( unescape ) {
-               return unescape( value );
-       }
-       return null;
-};
-
-window.os_encodeQuery = function( value ) {
-       if ( encodeURIComponent ) {
-               return encodeURIComponent( value );
-       }
-       if( escape ) {
-               return escape( value );
-       }
-       return null;
-};
-
-/** Handles data from XMLHttpRequest, and updates the suggest results */
-window.os_updateResults = function( r, query, text, cacheKey ) {
-       os_cache[cacheKey] = text;
-       r.query = query;
-       r.original = query;
-       if( text == '' ) {
-               r.results = null;
-               r.resultCount = 0;
-               os_hideResults( r );
-       } else {
-               try {
-                       var p = eval( '(' + text + ')' ); // simple json parse, could do a safer one
-                       if( p.length < 2 || p[1].length == 0 ) {
-                               r.results = null;
-                               r.resultCount = 0;
-                               os_hideResults( r );
-                               return;
-                       }
-                       if ( os_use_datalist ) {
-                               os_setupDatalist( r, p[1] );
-                       } else {
-                               os_setupDiv( r, p[1] );
-                       }
-               } catch( e ) {
-                       // bad response from server or such
-                       os_hideResults( r );
-                       os_cache[cacheKey] = null;
-               }
-       }
-};
-
-/**
- * Create and populate a <datalist>.
- *
- * @param r       os_Result object
- * @param results Array of the new results to replace existing ones
- */
-window.os_setupDatalist = function( r, results ) {
-       var s = document.getElementById( r.searchbox );
-       var c = document.getElementById( r.container );
-       if ( c == null ) {
-               c = document.createElement( 'datalist' );
-               c.setAttribute( 'id', r.container );
-               document.body.appendChild( c );
-       } else {
-               c.innerHTML = '';
-       }
-       s.setAttribute( 'list', r.container );
-
-       r.results = [];
-       r.resultCount = results.length;
-       r.visible = true;
-       for ( i = 0; i < results.length; i++ ) {
-               var title = os_decodeValue( results[i] );
-               var opt = document.createElement( 'option' );
-               opt.value = title;
-               r.results[i] = title;
-               c.appendChild( opt );
-       }
-};
-
-/** Fetch namespaces from checkboxes or hidden fields in the search form,
-    if none defined use wgSearchNamespaces */
-window.os_getNamespaces = function( r ) {
-       var namespaces = '';
-       var elements = document.forms[r.searchform].elements;
-       for( i = 0; i < elements.length; i++ ) {
-               var name = elements[i].name;
-               if( typeof name != 'undefined' && name.length > 2 && name[0] == 'n' &&
-                       name[1] == 's' && (
-                               ( elements[i].type == 'checkbox' && elements[i].checked ) ||
-                               ( elements[i].type == 'hidden' && elements[i].value == '1' )
-                       )
-               ) {
-                       if( namespaces != '' ) {
-                               namespaces += '|';
-                       }
-                       namespaces += name.substring( 2 );
-               }
-       }
-       if( namespaces == '' ) {
-               namespaces = mw.config.get( 'wgSearchNamespaces' ).join('|');
-       }
-       return namespaces;
-};
-
-/** Update results if user hasn't already typed something else */
-window.os_updateIfRelevant = function( r, query, text, cacheKey ) {
-       var t = document.getElementById( r.searchbox );
-       if( t != null && t.value == query ) { // check if response is still relevant
-               os_updateResults( r, query, text, cacheKey );
-       }
-       r.query = query;
-};
-
-/** Fetch results after some timeout */
-window.os_delayedFetch = function() {
-       if( os_timer == null ) {
-               return;
-       }
-       var r = os_timer.r;
-       var query = os_timer.query;
-       os_timer = null;
-       var path = mw.config.get( 'wgMWSuggestTemplate' ).replace( "{namespaces}", os_getNamespaces( r ) )
-                                                                       .replace( "{dbname}", mw.config.get( 'wgDBname' ) )
-                                                                       .replace( "{searchTerms}", os_encodeQuery( query ) );
-
-       // try to get from cache, if not fetch using ajax
-       var cached = os_cache[path];
-       if( cached != null && cached != undefined ) {
-               os_updateIfRelevant( r, query, cached, path );
-       } else {
-               var xmlhttp = sajax_init_object();
-               if( xmlhttp ) {
-                       try {
-                               xmlhttp.open( 'GET', path, true );
-                               xmlhttp.onreadystatechange = function() {
-                                       if ( xmlhttp.readyState == 4 && typeof os_updateIfRelevant == 'function' ) {
-                                               os_updateIfRelevant( r, query, xmlhttp.responseText, path );
-                                       }
-                               };
-                               xmlhttp.send( null );
-                       } catch ( e ) {
-                               if ( window.location.hostname == 'localhost' ) {
-                                       alert( "Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing." );
-                               }
-                               throw e;
-                       }
-               }
-       }
-};
-
-/** Init timed update via os_delayedUpdate() */
-window.os_fetchResults = function( r, query, timeout ) {
-       if( query == '' ) {
-               r.query = '';
-               os_hideResults( r );
-               return;
-       } else if( query == r.query ) {
-               return; // no change
-       }
-
-       os_is_stopped = false; // make sure we're running
-
-       // cancel any pending fetches
-       if( os_timer != null && os_timer.id != null ) {
-               clearTimeout( os_timer.id );
-       }
-       // schedule delayed fetching of results
-       if( timeout != 0 ) {
-               os_timer = new os_Timer( setTimeout( "os_delayedFetch()", timeout ), r, query );
-       } else {
-               os_timer = new os_Timer( null, r, query );
-               os_delayedFetch(); // do it now!
-       }
-};
-
-/** Find event target */
-window.os_getTarget = function( e ) {
-       if ( !e ) {
-               e = window.event;
-       }
-       if ( e.target ) {
-               return e.target;
-       } else if ( e.srcElement ) {
-               return e.srcElement;
-       } else {
-               return null;
-       }
-};
-
-/** Check if x is a valid integer */
-window.os_isNumber = function( x ) {
-       if( x == '' || isNaN( x ) ) {
-               return false;
-       }
-       for( var i = 0; i < x.length; i++ ) {
-               var c = x.charAt( i );
-               if( !( c >= '0' && c <= '9' ) ) {
-                       return false;
-               }
-       }
-       return true;
-};
-
-/** Call this to enable suggestions on input (id=inputId), on a form (name=formName) */
-window.os_enableSuggestionsOn = function( inputId, formName ) {
-       os_initHandlers( inputId, formName, document.getElementById( inputId ) );
-};
-
-/** Call this to disable suggestios on input box (id=inputId) */
-window.os_disableSuggestionsOn = function( inputId ) {
-       r = os_map[inputId];
-       if( r != null ) {
-               // cancel/hide results
-               os_timer = null;
-               os_hideResults( r );
-               // turn autocomplete on !
-               document.getElementById( inputId ).setAttribute( 'autocomplete', 'on' );
-               // remove descriptor
-               os_map[inputId] = null;
-       }
-
-       // Remove the element from the os_autoload_* arrays
-       var index = os_autoload_inputs.indexOf( inputId );
-       if ( index >= 0 ) {
-               os_autoload_inputs[index] = os_autoload_forms[index] = '';
-       }
-};
-
-/************************************************
- * Div-only functions (irrelevant for datalist)
- ************************************************/
-
-/** Event: loss of focus of input box */
-window.os_eventBlur = function( e ) {
-       var targ = os_getTarget( e );
-       var r = os_map[targ.id];
-       if( r == null ) {
-               return; // not our event
-       }
-       if( !os_mouse_pressed ) {
-               os_hideResults( r );
-               // force canvas to stay hidden
-               r.stayHidden = true;
-               // cancel any pending fetches
-               if( os_timer != null && os_timer.id != null ) {
-                       clearTimeout( os_timer.id );
-               }
-               os_timer = null;
-       }
-};
-
-/** Event: focus (catch only when stopped) */
-window.os_eventFocus = function( e ) {
-       var targ = os_getTarget( e );
-       var r = os_map[targ.id];
-       if( r == null ) {
-               return; // not our event
-       }
-       r.stayHidden = false;
-};
-
-/**
- * Create and populate a <div>, for non-<datalist>-supporting browsers.
- *
- * @param r       os_Result object
- * @param results Array of the new results to replace existing ones
- */
-window.os_setupDiv = function( r, results ) {
-       var c = document.getElementById( r.container );
-       if ( c == null ) {
-               c = os_createContainer( r );
-       }
-       c.innerHTML = os_createResultTable( r, results );
-       // init container table sizes
-       var t = document.getElementById( r.resultTable );
-       r.containerTotal = t.offsetHeight;
-       r.containerRow = t.offsetHeight / r.resultCount;
-       os_fitContainer( r );
-       os_trimResultText( r );
-       os_showResults( r );
-};
-
-/** Create the result table to be placed in the container div */
-window.os_createResultTable = function( r, results ) {
-       var c = document.getElementById( r.container );
-       var width = c.offsetWidth - os_operaWidthFix( c.offsetWidth );
-       var html = '<table class="os-suggest-results" id="' + r.resultTable + '" style="width: ' + width + 'px;">';
-       r.results = [];
-       r.resultCount = results.length;
-       for( i = 0; i < results.length; i++ ) {
-               var title = os_decodeValue( results[i] );
-               r.results[i] = title;
-               html += '<tr><td class="os-suggest-result" id="' + r.resultTable + i + '"><span id="' + r.resultText + i + '">' + title + '</span></td></tr>';
-       }
-       html += '</table>';
-       return html;
-};
-
-/** Show results div */
-window.os_showResults = function( r ) {
-       if( os_is_stopped ) {
-               return;
-       }
-       if( r.stayHidden ) {
-               return;
-       }
-       os_fitContainer( r );
-       var c = document.getElementById( r.container );
-       r.selected = -1;
-       if( c != null ) {
-               c.scrollTop = 0;
-               c.style.visibility = 'visible';
-               r.visible = true;
-       }
-};
-
-window.os_operaWidthFix = function( x ) {
-       // For browsers that don't understand overflow-x, estimate scrollbar width
-       if( typeof document.body.style.overflowX != 'string' ) {
-               return 30;
-       }
-       return 0;
-};
-
-/** Brower-dependent functions to find window inner size, and scroll status */
-window.f_clientWidth = function() {
-       return f_filterResults(
-               window.innerWidth ? window.innerWidth : 0,
-               document.documentElement ? document.documentElement.clientWidth : 0,
-               document.body ? document.body.clientWidth : 0
-       );
-};
-
-window.f_clientHeight = function() {
-       return f_filterResults(
-               window.innerHeight ? window.innerHeight : 0,
-               document.documentElement ? document.documentElement.clientHeight : 0,
-               document.body ? document.body.clientHeight : 0
-       );
-};
-
-window.f_scrollLeft = function() {
-       return f_filterResults(
-               window.pageXOffset ? window.pageXOffset : 0,
-               document.documentElement ? document.documentElement.scrollLeft : 0,
-               document.body ? document.body.scrollLeft : 0
-       );
-};
-
-window.f_scrollTop = function() {
-       return f_filterResults(
-               window.pageYOffset ? window.pageYOffset : 0,
-               document.documentElement ? document.documentElement.scrollTop : 0,
-               document.body ? document.body.scrollTop : 0
-       );
-};
-
-window.f_filterResults = function( n_win, n_docel, n_body ) {
-       var n_result = n_win ? n_win : 0;
-       if ( n_docel && ( !n_result || ( n_result > n_docel ) ) ) {
-               n_result = n_docel;
-       }
-       return n_body && ( !n_result || ( n_result > n_body ) ) ? n_body : n_result;
-};
-
-/** Get the height available for the results container */
-window.os_availableHeight = function( r ) {
-       var absTop = document.getElementById( r.container ).style.top;
-       var px = absTop.lastIndexOf( 'px' );
-       if( px > 0 ) {
-               absTop = absTop.substring( 0, px );
-       }
-       return f_clientHeight() - ( absTop - f_scrollTop() );
-};
-
-/** Get element absolute position {left,top} */
-window.os_getElementPosition = function( elemID ) {
-       var offsetTrail = document.getElementById( elemID );
-       var offsetLeft = 0;
-       var offsetTop = 0;
-       while ( offsetTrail ) {
-               offsetLeft += offsetTrail.offsetLeft;
-               offsetTop += offsetTrail.offsetTop;
-               offsetTrail = offsetTrail.offsetParent;
-       }
-       if ( navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined' ) {
-               offsetLeft += document.body.leftMargin;
-               offsetTop += document.body.topMargin;
-       }
-       return { left:offsetLeft, top:offsetTop };
-};
-
-/** Create the container div that will hold the suggested titles */
-window.os_createContainer = function( r ) {
-       var c = document.createElement( 'div' );
-       var s = document.getElementById( r.searchbox );
-       var pos = os_getElementPosition( r.searchbox );
-       var left = pos.left;
-       var top = pos.top + s.offsetHeight;
-       c.className = 'os-suggest';
-       c.setAttribute( 'id', r.container );
-       document.body.appendChild( c );
-
-       // dynamically generated style params
-       // IE workaround, cannot explicitely set "style" attribute
-       c = document.getElementById( r.container );
-       c.style.top = top + 'px';
-       c.style.left = left + 'px';
-       c.style.width = s.offsetWidth + 'px';
-
-       // mouse event handlers
-       c.onmouseover = function( event ) { os_eventMouseover( r.searchbox, event ); };
-       c.onmousemove = function( event ) { os_eventMousemove( r.searchbox, event ); };
-       c.onmousedown = function( event ) { return os_eventMousedown( r.searchbox, event ); };
-       c.onmouseup = function( event ) { os_eventMouseup( r.searchbox, event ); };
-       return c;
-};
-
-/** change container height to fit to screen */
-window.os_fitContainer = function( r ) {
-       var c = document.getElementById( r.container );
-       var h = os_availableHeight( r ) - 20;
-       var inc = r.containerRow;
-       h = parseInt( h / inc ) * inc;
-       if( h < ( 2 * inc ) && r.resultCount > 1 ) { // min: two results
-               h = 2 * inc;
-       }
-       if( ( h / inc ) > os_max_lines_per_suggest ) {
-               h = inc * os_max_lines_per_suggest;
-       }
-       if( h < r.containerTotal ) {
-               c.style.height = h + 'px';
-               r.containerCount = parseInt( Math.round( h / inc ) );
-       } else {
-               c.style.height = r.containerTotal + 'px';
-               r.containerCount = r.resultCount;
-       }
-};
-
-/** If some entries are longer than the box, replace text with "..." */
-window.os_trimResultText = function( r ) {
-       // find max width, first see if we could expand the container to fit it
-       var maxW = 0;
-       for( var i = 0; i < r.resultCount; i++ ) {
-               var e = document.getElementById( r.resultText + i );
-               if( e.offsetWidth > maxW ) {
-                       maxW = e.offsetWidth;
-               }
-       }
-       var w = document.getElementById( r.container ).offsetWidth;
-       var fix = 0;
-       if( r.containerCount < r.resultCount ) {
-               fix = 20; // give 20px for scrollbar
-       } else {
-               fix = os_operaWidthFix( w );
-       }
-       if( fix < 4 ) {
-               fix = 4; // basic padding
-       }
-       maxW += fix;
-
-       // resize container to fit more data if permitted
-       var normW = document.getElementById( r.searchbox ).offsetWidth;
-       var prop = maxW / normW;
-       if( prop > os_container_max_width ) {
-               prop = os_container_max_width;
-       } else if( prop < 1 ) {
-               prop = 1;
-       }
-       var newW = Math.round( normW * prop );
-       if( w != newW ) {
-               w = newW;
-               if( os_animation_timer != null ) {
-                       clearInterval( os_animation_timer.id );
-               }
-               os_animation_timer = new os_AnimationTimer( r, w );
-               os_animation_timer.id = setInterval( "os_animateChangeWidth()", os_animation_delay );
-               w -= fix; // this much is reserved
-       }
-
-       // trim results
-       if( w < 10 ) {
-               return;
-       }
-       for( var i = 0; i < r.resultCount; i++ ) {
-               var e = document.getElementById( r.resultText + i );
-               var replace = 1;
-               var lastW = e.offsetWidth + 1;
-               var iteration = 0;
-               var changedText = false;
-               while( e.offsetWidth > w && ( e.offsetWidth < lastW || iteration < 2 ) ) {
-                       changedText = true;
-                       lastW = e.offsetWidth;
-                       var l = e.innerHTML;
-                       e.innerHTML = l.substring( 0, l.length - replace ) + '...';
-                       iteration++;
-                       replace = 4; // how many chars to replace
-               }
-               if( changedText ) {
-                       // show hint for trimmed titles
-                       document.getElementById( r.resultTable + i ).setAttribute( 'title', r.results[i] );
-               }
-       }
-};
-
-/** Invoked on timer to animate change in container width */
-window.os_animateChangeWidth = function() {
-       var r = os_animation_timer.r;
-       var c = document.getElementById( r.container );
-       var w = c.offsetWidth;
-       var normW = document.getElementById( r.searchbox ).offsetWidth;
-       var normL = os_getElementPosition( r.searchbox ).left;
-       var inc = os_animation_timer.inc;
-       var target = os_animation_timer.target;
-       var nw = w + inc;
-       if( ( inc > 0 && nw >= target ) || ( inc <= 0 && nw <= target ) ) {
-               // finished !
-               c.style.width = target + 'px';
-               clearInterval( os_animation_timer.id );
-               os_animation_timer = null;
-       } else {
-               // in-progress
-               c.style.width = nw + 'px';
-               if( document.documentElement.dir == 'rtl' ) {
-                       c.style.left = ( normL + normW + ( target - nw ) - os_animation_timer.target - 1 ) + 'px';
-               }
-       }
-};
-
-/** Change the highlighted row (i.e. suggestion), from position cur to next */
-window.os_changeHighlight = function( r, cur, next, updateSearchBox ) {
-       if ( next >= r.resultCount ) {
-               next = r.resultCount - 1;
-       }
-       if ( next < -1 ) {
-               next = -1;
-       }
-       r.selected = next;
-       if ( cur == next ) {
-               return; // nothing to do.
-       }
-
-       if( cur >= 0 ) {
-               var curRow = document.getElementById( r.resultTable + cur );
-               if( curRow != null ) {
-                       curRow.className = 'os-suggest-result';
-               }
-       }
-       var newText;
-       if( next >= 0 ) {
-               var nextRow = document.getElementById( r.resultTable + next );
-               if( nextRow != null ) {
-                       nextRow.className = os_HighlightClass();
-               }
-               newText = r.results[next];
-       } else {
-               newText = r.original;
-       }
-
-       // adjust the scrollbar if any
-       if( r.containerCount < r.resultCount ) {
-               var c = document.getElementById( r.container );
-               var vStart = c.scrollTop / r.containerRow;
-               var vEnd = vStart + r.containerCount;
-               if( next < vStart ) {
-                       c.scrollTop = next * r.containerRow;
-               } else if( next >= vEnd ) {
-                       c.scrollTop = ( next - r.containerCount + 1 ) * r.containerRow;
-               }
-       }
-
-       // update the contents of the search box
-       if( updateSearchBox ) {
-               os_updateSearchQuery( r, newText );
-       }
-};
-
-window.os_HighlightClass = function() {
-       var match = navigator.userAgent.match(/AppleWebKit\/(\d+)/);
-       if ( match ) {
-               var webKitVersion = parseInt( match[1] );
-               if ( webKitVersion < 523 ) {
-                       // CSS system highlight colors broken on old Safari
-                       // https://bugs.webkit.org/show_bug.cgi?id=6129
-                       // Safari 3.0.4, 3.1 known ok
-                       return 'os-suggest-result-hl-webkit';
-               }
-       }
-       return 'os-suggest-result-hl';
-};
-
-window.os_updateSearchQuery = function( r, newText ) {
-       document.getElementById( r.searchbox ).value = newText;
-       r.query = newText;
-};
-
-
-/********************
- *  Mouse events
- ********************/
-
-/** Mouse over the container */
-window.os_eventMouseover = function( srcId, e ) {
-       var targ = os_getTarget( e );
-       var r = os_map[srcId];
-       if( r == null || !os_mouse_moved ) {
-               return; // not our event
-       }
-       var num = os_getNumberSuffix( targ.id );
-       if( num >= 0 ) {
-               os_changeHighlight( r, r.selected, num, false );
-       }
-};
-
-/* Get row where the event occured (from its id) */
-window.os_getNumberSuffix = function( id ) {
-       var num = id.substring( id.length - 2 );
-       if( !( num.charAt( 0 ) >= '0' && num.charAt( 0 ) <= '9' ) ) {
-               num = num.substring( 1 );
-       }
-       if( os_isNumber( num ) ) {
-               return parseInt( num );
-       } else {
-               return -1;
-       }
-};
-
-/** Save mouse move as last action */
-window.os_eventMousemove = function( srcId, e ) {
-       os_mouse_moved = true;
-};
-
-/** Mouse button held down, register possible click */
-window.os_eventMousedown = function( srcId, e ) {
-       var targ = os_getTarget( e );
-       var r = os_map[srcId];
-       if( r == null ) {
-               return; // not our event
-       }
-       var num = os_getNumberSuffix( targ.id );
-
-       os_mouse_pressed = true;
-       if( num >= 0 ) {
-               os_mouse_num = num;
-               // os_updateSearchQuery( r, r.results[num] );
-       }
-       // keep the focus on the search field
-       document.getElementById( r.searchbox ).focus();
-
-       return false; // prevents selection
-};
-
-/** Mouse button released, check for click on some row */
-window.os_eventMouseup = function( srcId, e ) {
-       var targ = os_getTarget( e );
-       var r = os_map[srcId];
-       if( r == null ) {
-               return; // not our event
-       }
-       var num = os_getNumberSuffix( targ.id );
-
-       if( num >= 0 && os_mouse_num == num ) {
-               os_updateSearchQuery( r, r.results[num] );
-               os_hideResults( r );
-               document.getElementById( r.searchform ).submit();
-       }
-       os_mouse_pressed = false;
-       // keep the focus on the search field
-       document.getElementById( r.searchbox ).focus();
-};
-
-/** Toggle stuff seems to be dead code? */
-
-/** Return the span element that contains the toggle link */
-window.os_createToggle = function( r, className ) {
-       var t = document.createElement( 'span' );
-       t.className = className;
-       t.setAttribute( 'id', r.toggle );
-       var link = document.createElement( 'a' );
-       link.setAttribute( 'href', 'javascript:void(0);' );
-       link.onclick = function() { os_toggle( r.searchbox, r.searchform ); };
-       var msg = document.createTextNode( wgMWSuggestMessages[0] );
-       link.appendChild( msg );
-       t.appendChild( link );
-       return t;
-};
-
-/** Call when user clicks on some of the toggle links */
-window.os_toggle = function( inputId, formName ) {
-       r = os_map[inputId];
-       var msg = '';
-       if( r == null ) {
-               os_enableSuggestionsOn( inputId, formName );
-               r = os_map[inputId];
-               msg = wgMWSuggestMessages[0];
-       } else{
-               os_disableSuggestionsOn( inputId, formName );
-               msg = wgMWSuggestMessages[1];
-       }
-       // change message
-       var link = document.getElementById( r.toggle ).firstChild;
-       link.replaceChild( document.createTextNode( msg ), link.firstChild );
-};
-
-hookEvent( 'load', os_MWSuggestInit );
diff --git a/skins/common/preview.js b/skins/common/preview.js
deleted file mode 100644 (file)
index 5b5a3c6..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Live preview script for MediaWiki
- */
-( function( mw, $ ) {
-       var doLivePreview = function( e ) {
-               e.preventDefault();
-
-               $( mw ).trigger( 'LivePreviewPrepare' );
-
-               var $wikiPreview = $( '#wikiPreview' );
-
-               // this needs to be checked before we unconditionally show the preview
-               var overlaySpinner = false;
-               if ( $wikiPreview.is( ':visible' ) || $( '.mw-newarticletext:visible' ).length > 0 ) {
-                       overlaySpinner = true;
-               }
-
-               // show #wikiPreview if it's hidden to be able to scroll to it
-               // (if it is hidden, it's also empty, so nothing changes in the rendering)
-               $wikiPreview.show();
-               // jump to where the preview will appear
-               $wikiPreview[0].scrollIntoView();
-
-               // list of elements that will be loaded from the preview page
-               // elements absent in the preview page (such as .mw-newarticletext) will be cleared using .empty()
-               var copySelectors = [
-                       '#wikiPreview', '#wikiDiff', '#catlinks', '.hiddencats', '#p-lang', // the meat
-                       '.templatesUsed', '.mw-summary-preview', // editing-related
-                       '.mw-newarticletext' // it is not shown during normal preview, and looks weird with throbber overlaid
-               ];
-               var $copyElements = $( copySelectors.join( ',' ) );
-
-               var $loadSpinner = $( '<div>' ).addClass( 'mw-ajax-loader' );
-               $loadSpinner.css( 'top', '0' ); // move away from header (default is -16px)
-
-               // If the preview is already visible, overlay the spinner on top of it.
-               if ( overlaySpinner ) {
-                       $( '#mw-content-text' ).css( 'position', 'relative' ); // FIXME this seems like a bad idea
-
-                       $loadSpinner.css( {
-                               'position': 'absolute',
-                               'z-index': '3',
-                               'left': '50%',
-                               'margin-left': '-16px'
-                       } );
-               }
-
-               // fade out the elements and display the throbber
-               $( '#mw-content-text' ).prepend( $loadSpinner );
-               // we can't use fadeTo because it calls show(), and we might want to keep some elements hidden
-               // (e.g. empty #catlinks)
-               $copyElements.animate( { 'opacity': 0.4 }, 'fast' );
-
-               var $previewDataHolder = $( '<div>' );
-               var target = $( '#editform' ).attr( 'action' ) || window.location.href;
-
-               // gather all the data from the form
-               var postData = $( '#editform' ).formToArray(); // formToArray: from jquery.form
-               postData.push( { 'name' : e.target.name, 'value' : '1' } );
-
-               // load new preview data
-               // FIXME this should use the action=parse API instead of loading the entire page
-               $previewDataHolder.load( target + ' ' + copySelectors.join( ',' ), postData, function() {
-                       // Copy the contents of the specified elements from the loaded page to the real page.
-                       // Also copy their class attributes.
-                       for ( var i = 0; i < copySelectors.length; i++ ) {
-                               var $from = $previewDataHolder.find( copySelectors[i] );
-                               var $to = $( copySelectors[i] );
-
-                               $to.empty().append( $from.contents() );
-                               $to.attr( 'class', $from.attr( 'class' ) );
-                       }
-
-                       $loadSpinner.remove();
-                       $copyElements.animate( { 'opacity': 1 }, 'fast' );
-
-                       $( mw ).trigger( 'LivePreviewDone', [copySelectors] );
-               } );
-       };
-
-       $( document ).ready( function() {
-               // construct the elements we need if they are missing (usually when action=edit)
-               // we don't need to hide them, because they are empty when created
-
-               // interwiki links
-               if ( !document.getElementById( 'p-lang' ) && document.getElementById( 'p-tb' ) ) {
-                       $( '#p-tb' ).after( $( '<div>' ).attr( 'id', 'p-lang' ) );
-               }
-
-               // summary preview
-               if ( $( '.mw-summary-preview' ).length === 0 ) {
-                       $( '.editCheckboxes' ).before( $( '<div>' ).addClass( 'mw-summary-preview' ) );
-               }
-
-               // diff
-               if ( !document.getElementById( 'wikiDiff' ) && document.getElementById( 'wikiPreview' ) ) {
-                       $( '#wikiPreview' ).after( $( '<div>' ).attr( 'id', 'wikiDiff' ) );
-               }
-
-               // diff styles are usually only loaded during, well, diff, and we might need them
-               // (mw.loader takes care of stuff if they happen to be loaded already)
-               mw.loader.load( 'mediawiki.action.history.diff' );
-
-               $( document.body ).on( 'click', '#wpPreview, #wpDiff', doLivePreview );
-       } );
-} )( mediaWiki, jQuery );
index 4069d9e..9042ff7 100644 (file)
@@ -399,6 +399,12 @@ div#simpleSearch input.placeholder {
 div#simpleSearch input::-webkit-input-placeholder {
        color: #999;
 }
+div#simpleSearch input:-moz-placeholder {
+       color: #999;
+}
+div#simpleSearch input:-ms-input-placeholder {
+       color: #999;
+}
 div#simpleSearch input#searchInput {
        position: absolute;
        top: 0;
index 42f5f68..2fc8907 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * AutoLoader for the testing suite.
+ *
+ * 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 Testing
+ */
 
 global $wgAutoloadClasses;
 $testFolder = __DIR__;
index cd59833..10ca5a5 100644 (file)
@@ -1,23 +1,25 @@
 <?php
-# Copyright (C) 2004, 2010 Brion Vibber <brion@pobox.com>
-# http://www.mediawiki.org/
-#
-# 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
-
 /**
+ * Helper code for the MediaWiki parser test suite.
+ *
+ * Copyright © 2004, 2010 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * 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
+ *
  * @todo Make this more independent of the configuration (and if possible the database)
  * @todo document
  * @file
index 43d4271..f9c7f14 100644 (file)
@@ -36,13 +36,13 @@ Main Page
 blah blah
 !! endarticle
 
-!!article 
+!!article
 Template:Foo
 !!text
 FOO
 !!endarticle
 
-!! article 
+!! article
 Template:Blank
 !! text
 !! endarticle
@@ -65,6 +65,12 @@ Template:inner list
 * item 1
 !! endarticle
 
+!! article
+Template:echo
+!! text
+{{{1}}}
+!! endarticle
+
 ###
 ### Basic tests
 ###
@@ -499,14 +505,30 @@ nowiki 3
 ### Comments
 ###
 !! test
-Comment test 1
+Comments and Pre
 !! input
+<!-- comment 1 --> asdf
+
 <!-- comment 1 --> asdf
 <!-- comment 2 -->
+
+<!-- comment 1 --> asdf
+<!-- comment 2 -->xyz
+
+<!-- comment 1 --> asdf
+<!-- comment 2 --> xyz
 !! result
 <pre>asdf
 </pre>
-
+<pre>asdf
+</pre>
+<pre>asdf
+</pre>
+<p>xyz
+</p>
+<pre>asdf
+xyz
+</pre>
 !! end
 
 !! test
@@ -868,6 +890,83 @@ Bug 6200: Preformatted in <blockquote>
 </p>
 !! end
 
+!!test
+Templates: Pre: 1a. Templates that break a line should suppress <pre>
+!!input
+ {{echo|}}
+!!result
+
+!!end
+
+!!test
+Templates: Pre: 1b. Templates that break a line should suppress <pre>
+!!input
+ {{echo|
+foo}}
+!!result
+<p>foo
+</p>
+!!end
+
+!! test
+Templates: Pre: 1c: Wrapping should be based on expanded content
+!! input
+ {{echo|a
+b}}
+!!result
+<pre>a
+</pre>
+<p>b
+</p>
+!!end
+
+!! test
+Templates: Pre: 1d: Wrapping should be based on expanded content
+!! input
+ {{echo|a
+b
+c
+ d
+e
+}}
+!!result
+<pre>a
+</pre>
+<p>b
+c
+</p>
+<pre>d
+</pre>
+<p>e
+</p>
+!!end
+
+!!test
+Templates: Pre: 1e. Wrapping should be based on expanded content
+!!input
+{{echo| foo}}
+
+{{echo| foo}}
+{{echo| bar}}
+
+{{echo|<!--cmt--> foo}}
+
+<!--cmt-->{{echo| foo}}
+
+{{echo|{{echo| }}bar}}
+!!result
+<pre>foo
+</pre>
+<pre>foo
+bar
+</pre>
+<pre>foo
+</pre>
+<pre>foo
+</pre>
+<pre>bar
+</pre>
+!!end
 
 ###
 ### Definition lists
@@ -1123,7 +1222,7 @@ Definition Lists: Indentation: Multi-level indent
 ##
 ## All Parsoid only definition list tests have this difference.
 ##
-## See also: https://bugzilla.wikimedia.org/show_bug.cgi?id=6569 
+## See also: https://bugzilla.wikimedia.org/show_bug.cgi?id=6569
 ## and http://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
 
 !! test
@@ -1505,6 +1604,15 @@ second]
 </p>
 !!end
 
+!! test
+External links: Pipe char between url and text
+!! input
+[http://example.com | link]
+!! result
+<p><a rel="nofollow" class="external text" href="http://example.com">| link</a>
+</p>
+!!end
+
 !! test
 External links: protocol-relative URL in brackets
 !! input
@@ -2076,7 +2184,7 @@ A table with no data.
 # this as <p>caption</p>
 !! test
 A table with nothing but a caption
-!! input 
+!! input
 {|
 |+ caption
 |}
@@ -2816,6 +2924,16 @@ Blah blah blah
 </p>
 !! end
 
+!! test
+Parsoid-specific test: Wikilinks with &nbsp; should RT properly
+!! options
+language=ln
+!! input
+[[WW&nbsp;II]]
+!!result
+<p><a href="/index.php?title=WW_II&amp;action=edit&amp;redlink=1" class="new" title="WW II (lonkásá  ezalí tɛ̂)">WW&#160;II</a>
+</p>
+!! end
 
 ##
 ## XHTML tidiness
@@ -2839,7 +2957,7 @@ Incorrecly removing closing slashes from correctly formed XHTML
 </p>
 !! end
 
-!! test 
+!! test
 Failing to transform badly formed HTML into correct XHTML
 !! input
 <br style="clear: left;">
@@ -2852,6 +2970,47 @@ Failing to transform badly formed HTML into correct XHTML
 </p>
 !!end
 
+!! test
+Handling html with a div self-closing tag
+!! input
+<div title />
+<div title/>
+<div title/ >
+<div title=bar />
+<div title=bar/>
+<div title=bar/ >
+!! result
+<p>&lt;div title /&gt;
+&lt;div title/&gt;
+</p>
+<div>
+<p>&lt;div title=bar /&gt;
+&lt;div title=bar/&gt;
+</p>
+<div title="bar/"></div>
+</div>
+
+!! end
+
+!! test
+Handling html with a br self-closing tag
+!! input
+<br title />
+<br title/>
+<br title/ >
+<br title=bar />
+<br title=bar/>
+<br title=bar/ >
+!! result
+<p><br title="title" />
+<br title="title" />
+<br />
+<br title="bar" />
+<br title="bar" />
+<br title="bar/" />
+</p>
+!! end
+
 !! test
 Horizontal ruler (should it add that extra space?)
 !! input
@@ -4119,6 +4278,355 @@ section=1
 ==Section 1==
 !! end
 
+###
+### Testing parsing of templates where a template arg
+### has the same name as the template itself.
+###
+
+!! article
+Template:quote
+!! text
+{{{quote|{{{1}}}}}}
+!! endarticle
+
+!!test
+Templates: Template Name/Arg clash: 1. Use of positional param
+!!input
+{{quote|foo}}
+!!result
+<p>foo
+</p>
+!!end
+
+!!test
+Templates: Template Name/Arg clash: 2. Use of named param
+!!input
+{{quote|quote=foo}}
+!!result
+<p>foo
+</p>
+!!end
+
+!!test
+Templates: Template Name/Arg clash: 3. Use of named param with empty input
+!!input
+{{quote|quote}}
+!!result
+<p>quote
+</p>
+!!end
+
+###
+### Parsoid-centric tests to stress Parsoid's ability to RT them unchanged
+###
+
+!!test
+Templates: 1. Simple use
+!!input
+{{echo|Foo}}
+!!result
+<p>Foo
+</p>
+!!end
+
+!!test
+Templates: 2. Inside a block tag
+!!input
+<div>{{echo|Foo}}</div>
+!!result
+<div>Foo</div>
+
+!!end
+
+!!test
+Templates: P-wrapping: 1a. Templates on consecutive lines
+!!input
+{{echo|Foo}}
+{{echo|bar}}
+!!result
+<p>Foo
+bar
+</p>
+!!end
+
+!!test
+Templates: P-wrapping: 1b. Templates on consecutive lines
+!!input
+Foo
+
+{{echo|bar}}
+{{echo|baz}}
+!!result
+<p>Foo
+</p><p>bar
+baz
+</p>
+!!end
+
+!!test
+Templates: P-wrapping: 1c. Templates on consecutive lines
+!!input
+{{echo|Foo}}
+{{echo|bar}} <div>baz</div>
+!!result
+<p>Foo
+</p>
+bar <div>baz</div>
+
+!!end
+
+!!test
+Templates: Inline Text: 1. Multiple tmeplate uses
+!!input
+{{echo|Foo}}bar{{echo|baz}}
+!!result
+<p>Foobarbaz
+</p>
+!!end
+
+!!test
+Templates: Inline Text: 2. Back-to-back template uses
+!!input
+{{echo|Foo}}{{echo|bar}}
+!!result
+<p>Foobar
+</p>
+!!end
+
+!!test
+Templates: Block Tags: 1. Multiple template uses
+!!input
+{{echo|<div>Foo</div>}}<div>bar</div>{{echo|<div>baz</div>}}
+!!result
+<div>Foo</div><div>bar</div><div>baz</div>
+
+!!end
+
+!!test
+Templates: Block Tags: 2. Back-to-back template uses
+!!input
+{{echo|<div>Foo</div>}}{{echo|<div>bar</div>}}
+!!result
+<div>Foo</div><div>bar</div>
+
+!!end
+
+!!test
+Templates: Links: 1. Simple example
+!!input
+{{echo|[[Foo|bar]]}}
+!!result
+<p><a href="/index.php?title=Foo&amp;action=edit&amp;redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+</p>
+!!end
+
+!!test
+Templates: Links: 2. Generation of link href
+!!input
+[[{{echo|Foo}}|bar]]
+!!result
+<p><a href="/index.php?title=Foo&amp;action=edit&amp;redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+</p>
+!!end
+
+!!test
+Templates: Links: 3. Generation of part of a link href
+!!input
+[[Fo{{echo|o}}|bar]]
+!!result
+<p><a href="/index.php?title=Foo&amp;action=edit&amp;redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+</p>
+!!end
+
+!!test
+Templates: Links: 4. Multiple templates generating link href
+!!input
+[[{{echo|F}}{{echo|o}}ob{{echo|ar}}]]
+!!result
+<p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
+</p>
+!!end
+
+!!test
+Templates: Links: 5. Generation of link text
+!!input
+[[Foo|{{echo|bar}}]]
+!!result
+<p><a href="/index.php?title=Foo&amp;action=edit&amp;redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+</p>
+!!end
+
+!!test
+Templates: Links: 5. Nested templates (only outermost template should be marked)
+!!input
+{{echo|[[{{echo|Foo}}|bar]]}}
+!!result
+<p><a href="/index.php?title=Foo&amp;action=edit&amp;redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+</p>
+!!end
+
+!!test
+Templates: HTML Tag: 1. Generation of HTML attr. key
+!!input
+<div {{echo|style}}="color:red;">foo</div>
+!!result
+<div style="color:red;">foo</div>
+
+!!end
+
+!!test
+Templates: HTML Tag: 2. Generation of HTML attr. value
+!!input
+<div style={{echo|'color:red;'}}>foo</div>
+!!result
+<div style="color:red;">foo</div>
+
+!!end
+
+!!test
+Templates: HTML Tag: 3. Generation of HTML attr key and value
+!!input
+<div {{echo|style}}={{echo|'color:red;'}}>foo</div>
+!!result
+<div style="color:red;">foo</div>
+
+!!end
+
+!!test
+Templates: HTML Tag: 4. Generation of starting piece of HTML attr value
+!!input
+<div title="{{echo|This is a long title}} with just one piece templated">foo</div>
+!!result
+<div title="This is a long title with just one piece templated">foo</div>
+
+!!end
+
+!!test
+Templates: HTML Tag: 5. Generation of middle piece of HTML attr value
+!!input
+<div title="This is a long title with just {{echo|one piece}} templated">foo</div>
+!!result
+<div title="This is a long title with just one piece templated">foo</div>
+
+!!end
+
+!!test
+Templates: HTML Tag: 6. Generation of end piece of HTML attr value
+!!input
+<div title="This is a long title with just one piece {{echo|templated}}">foo</div>
+!!result
+<div title="This is a long title with just one piece templated">foo</div>
+
+!!end
+
+!!test
+Templates: Tables: 1. Generating start of a HTML table
+!!input
+{{echo|<table><tr><td>foo</td>}}</tr></table>
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 2a. Generating middle of a HTML table
+!!input
+<table><tr>{{echo|<td>foo</td>}}</tr></table>
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 2b. Generating middle of a HTML table
+!!input
+<table>{{echo|<tr><td>foo</td></tr>}}</table>
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 3. Generating end of a HTML table
+!!input
+<table><tr>{{echo|<td>foo</td></tr></table>}}
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 4a. Generating a single tag of a HTML table
+!!input
+{{echo|<table>}}<tr><td>foo</td></tr></table>
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 4b. Generating a single tag of a HTML table
+!!input
+<table>{{echo|<tr>}}<td>foo</td></tr></table>
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 4c. Generating a single tag of a HTML table
+!!input
+<table><tr>{{echo|<td>}}foo</td></tr></table>
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 4d. Generating a single tag of a HTML table
+!!input
+<table><tr><td>foo{{echo|</td>}}</tr></table>
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 4e. Generating a single tag of a HTML table
+!!input
+<table><tr><td>foo</td>{{echo|</tr>}}</table>
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: Tables: 4f. Generating a single tag of a HTML table
+!!input
+<table><tr><td>foo</td></tr>{{echo|</table>}}
+!!result
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Parser Functions: 1. Simple example
+!!input
+{{uc:foo}}
+!!result
+<p>FOO
+</p>
+!!end
+
+!!test
+Parser Functions: 2. Nested use (only outermost should be marked up)
+!!input
+{{uc:{{lc:FOO}}}}
+!!result
+<p>FOO
+</p>
+!!end
+
 ###
 ### Pre-save transform tests
 ###
@@ -5089,7 +5597,7 @@ Custom class
 </p>
 !! end
 
-!! article 
+!! article
 File:Barfoo.jpg
 !! text
 #REDIRECT [[File:Barfoo.jpg]]
@@ -5204,6 +5712,48 @@ PAGESINCATEGORY invalid title fatal (r33546 fix)
 </p>
 !! end
 
+!! test
+Category with different sort key
+!! options
+cat
+!! input
+[[Category:MediaWiki User's Guide|Foo]]
+!! result
+<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
+!! end
+
+!! test
+Category with identical sort key
+!! options
+cat
+!! input
+[[Category:MediaWiki User's Guide|MediaWiki User's Guide]]
+!! result
+<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
+!! end
+
+!! test
+Category with empty sort key
+!! options
+cat
+pst
+!! input
+[[Category:MediaWiki User's Guide|]]
+!! result
+[[Category:MediaWiki User's Guide|MediaWiki User's Guide]]
+!! end
+
+!! test
+Category with empty sort key and parentheses
+!! options
+cat
+pst
+!! input
+[[Category:Foo (bar)|]]
+!! result
+[[Category:Foo (bar)|Foo]]
+!! end
+
 ###
 ### Inter-language links
 ###
@@ -5292,7 +5842,7 @@ Some text
 # perl -e 'print "="x$_," Level $_ heading","="x$_,"\n" for 1..10'
 !! test
 Handling of sections up to level 6 and beyond
-!! input 
+!! input
 = Level 1 Heading=
 == Level 2 Heading==
 === Level 3 Heading===
@@ -7501,7 +8051,7 @@ section=2
 !! end
 
 
-# Formerly testing for bug 2587, now resolved by the use of unmarked sections 
+# Formerly testing for bug 2587, now resolved by the use of unmarked sections
 # instead of respecting commented sections
 !! test
 Section extraction prefixed by comment (section 1)
@@ -7526,7 +8076,7 @@ section=2
 !!end
 
 
-# Formerly testing for bug 2607, now resolved by the use of unmarked sections 
+# Formerly testing for bug 2607, now resolved by the use of unmarked sections
 # instead of respecting HTML-style headings
 !! test
 Section extraction, mixed wiki and html (section 1)
@@ -8309,7 +8859,7 @@ HTML Hex character encoding mixed case
 
 !! test
 __FORCETOC__ override
-!! input 
+!! input
 __NEWSECTIONLINK__
 __FORCETOC__
 !! result
@@ -8363,7 +8913,7 @@ RFC RFC 1234
 !! end
 
 !! test
-Double RFC with a wiki link 
+Double RFC with a wiki link
 !! input
 RFC [[RFC 1234]]
 !! result
@@ -9083,7 +9633,7 @@ Fridrih IV je car.
 
 !! test
 Unclosed language converter markup "-{"
-!! options 
+!! options
 language=sr
 !! input
 -{T|hello
@@ -9098,12 +9648,12 @@ Don't convert raw rule "-{R|=&gt;}-" to "=>"
 language=sr
 !! input
 -{R|=&gt;}-
-!! result 
+!! result
 <p>=&gt;
 </p>
 !!end
 
-!!article 
+!!article
 Template:Bullet
 !!text
 * Bar
@@ -9853,7 +10403,7 @@ Screen
 <p>this is not the the title
 </p>
 !! end
+
 !! test
 preload: check <noinclude> and <includeonly>
 !! options
@@ -9863,7 +10413,7 @@ Hello <noinclude>cruel</noinclude><includeonly>kind</includeonly> world.
 !! result
 Hello kind world.
 !! end
+
 !! test
 preload: check <onlyinclude>
 !! options
@@ -9895,7 +10445,7 @@ preload
 !! end
 
 !! test
-Play a bit with r67090 and bug 3158 
+Play a bit with r67090 and bug 3158
 !! options
 disabled
 !! input
@@ -10104,7 +10654,7 @@ __TOC__
 !! end
 
 !! test
-Bug 26375: TOC with bold 
+Bug 26375: TOC with bold
 !! options
 title=[[Main Page]]
 !! input
@@ -10213,6 +10763,37 @@ __TOC__
 
 !! end
 
+!! test
+span tags with directionality in TOC
+!! input
+__TOC__
+== <span dir="ltr">C++</span> ==
+
+== <span dir="rtl">זבנג!</span> ==
+
+== <span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span> ==
+
+== <span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span> ==
+
+== <span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span> ==
+!! result
+<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
+<ul>
+<li class="toclevel-1 tocsection-1"><a href="#C.2B.2B"><span class="tocnumber">1</span> <span class="toctext"><span dir="ltr">C++</span></span></a></li>
+<li class="toclevel-1 tocsection-2"><a href="#.D7.96.D7.91.D7.A0.D7.92.21"><span class="tocnumber">2</span> <span class="toctext"><span dir="rtl">זבנג!</span></span></a></li>
+<li class="toclevel-1 tocsection-3"><a href="#The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">3</span> <span class="toctext"><span>The attributes on these span tags must be deleted from the TOC</span></span></a></li>
+<li class="toclevel-1 tocsection-4"><a href="#All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">4</span> <span class="toctext"><span>All attributes on these span tags must be deleted from the TOC</span></span></a></li>
+<li class="toclevel-1 tocsection-5"><a href="#Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">5</span> <span class="toctext"><span dir="ltr">Attributes after dir on these span tags must be deleted from the TOC</span></span></a></li>
+</ul>
+</td></tr></table>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: C++">edit</a>]</span> <span class="mw-headline" id="C.2B.2B"> <span dir="ltr">C++</span> </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: זבנג!">edit</a>]</span> <span class="mw-headline" id=".D7.96.D7.91.D7.A0.D7.92.21"> <span dir="rtl">זבנג!</span> </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: The attributes on these span tags must be deleted from the TOC">edit</a>]</span> <span class="mw-headline" id="The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"> <span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span> </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: All attributes on these span tags must be deleted from the TOC">edit</a>]</span> <span class="mw-headline" id="All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"> <span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span> </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Attributes after dir on these span tags must be deleted from the TOC">edit</a>]</span> <span class="mw-headline" id="Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"> <span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span> </span></h2>
+
+!! end
+
 !! article
 MediaWiki:Bug32057
 !! text
index 1cc45e0..f9e9f77 100644 (file)
@@ -536,7 +536,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @param string $message
         */
        protected function assertType( $type, $actual, $message = '' ) {
-               if ( is_object( $actual ) ) {
+               if ( class_exists( $type ) || interface_exists( $type ) ) {
                        $this->assertInstanceOf( $type, $actual, $message );
                }
                else {
index 192689f..8867cd5 100644 (file)
@@ -34,8 +34,18 @@ class wfExpandUrl extends MediaWikiTestCase {
         */
        public function provideExpandableUrls() {
                $modes = array( 'http', 'https' );
-               $servers = array( 'http' => 'http://example.com', 'https' => 'https://example.com', 'protocol-relative' => '//example.com' );
-               $defaultProtos = array( 'http' => PROTO_HTTP, 'https' => PROTO_HTTPS, 'protocol-relative' => PROTO_RELATIVE, 'current' => PROTO_CURRENT, 'canonical' => PROTO_CANONICAL );
+               $servers = array(
+                       'http' => 'http://example.com',
+                       'https' => 'https://example.com',
+                       'protocol-relative' => '//example.com'
+               );
+               $defaultProtos = array(
+                       'http' => PROTO_HTTP,
+                       'https' => PROTO_HTTPS,
+                       'protocol-relative' => PROTO_RELATIVE,
+                       'current' => PROTO_CURRENT,
+                       'canonical' => PROTO_CANONICAL
+               );
 
                $retval = array();
                foreach ( $modes as $mode ) {
@@ -44,13 +54,27 @@ class wfExpandUrl extends MediaWikiTestCase {
                                foreach ( $modes as $canServerMode  ) {
                                        $canServer = "$canServerMode://example2.com";
                                        foreach ( $defaultProtos as $protoDesc => $defaultProto ) {
-                                               $retval[] = array( 'http://example.com', 'http://example.com', $defaultProto, $server, $canServer, $httpsMode, "Testing fully qualified http URLs (no need to expand) (defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
-                                               $retval[] = array( 'https://example.com', 'https://example.com', $defaultProto, $server, $canServer, $httpsMode, "Testing fully qualified https URLs (no need to expand) (defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
+                                               $retval[] = array(
+                                                       'http://example.com', 'http://example.com',
+                                                       $defaultProto, $server, $canServer, $httpsMode,
+                                                       "Testing fully qualified http URLs (no need to expand) ' .
+                                                       '(defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )"
+                                               );
+                                               $retval[] = array(
+                                                       'https://example.com', 'https://example.com',
+                                                       $defaultProto, $server, $canServer, $httpsMode,
+                                                       "Testing fully qualified https URLs (no need to expand) ' .
+                                                       '(defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )"
+                                               );
                                                # Would be nice to support this, see fixme on wfExpandUrl()
-                                               $retval[] = array( "wiki/FooBar", 'wiki/FooBar', $defaultProto, $server, $canServer, $httpsMode, "Test non-expandable relative URLs (defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
+                                               $retval[] = array(
+                                                       "wiki/FooBar", 'wiki/FooBar',
+                                                       $defaultProto, $server, $canServer, $httpsMode,
+                                                       "Test non-expandable relative URLs ' .
+                                                       '(defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )"
+                                               );
 
                                                // Determine expected protocol
-                                               $p = $protoDesc . ':'; // default case
                                                if ( $protoDesc == 'protocol-relative' ) {
                                                        $p = '';
                                                } elseif ( $protoDesc == 'current' ) {
@@ -69,8 +93,18 @@ class wfExpandUrl extends MediaWikiTestCase {
                                                        $srv = $server;
                                                }
 
-                                               $retval[] = array( "$p//wikipedia.org", '//wikipedia.org', $defaultProto, $server, $canServer, $httpsMode, "Test protocol-relative URL (defaultProto: $protoDesc, wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
-                                               $retval[] = array( "$srv/wiki/FooBar", '/wiki/FooBar', $defaultProto, $server, $canServer, $httpsMode, "Testing expanding URL beginning with / (defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
+                                               $retval[] = array(
+                                                       "$p//wikipedia.org", '//wikipedia.org',
+                                                       $defaultProto, $server, $canServer, $httpsMode,
+                                                       "Test protocol-relative URL ' .
+                                                       '(defaultProto: $protoDesc, wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )"
+                                               );
+                                               $retval[] = array(
+                                                       "$srv/wiki/FooBar", '/wiki/FooBar',
+                                                       $defaultProto, $server, $canServer, $httpsMode,
+                                                       "Testing expanding URL beginning with / ' .
+                                                       '(defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )"
+                                               );
                                        }
                                }
                        }
index a18f792..6e936aa 100644 (file)
@@ -9,14 +9,14 @@ class HtmlTest extends MediaWikiTestCase {
        private static $oldHTML5;
 
        public function setUp() {
-               global $wgLang, $wgContLang, $wgLanguageCode, $wgHTML5;
+               global $wgLang, $wgContLang, $wgLanguageCode, $wgHtml5;
 
                // Save globals
                self::$oldLang = $wgLang;
                self::$oldContLang = $wgContLang;
                self::$oldNamespaces = $wgContLang->getNamespaces();
                self::$oldLanguageCode = $wgLanguageCode;
-               self::$oldHTML5 = $wgHTML5;
+               self::$oldHTML5 = $wgHtml5;
 
                $wgLanguageCode = 'en';
                $wgContLang = $wgLang = Language::factory( $wgLanguageCode );
@@ -47,33 +47,33 @@ class HtmlTest extends MediaWikiTestCase {
        }
 
        public function tearDown() {
-               global $wgLang, $wgContLang, $wgLanguageCode, $wgHTML5;
+               global $wgLang, $wgContLang, $wgLanguageCode, $wgHtml5;
 
                // Restore globals
                $wgContLang->setNamespaces( self::$oldNamespaces );
                $wgLang = self::$oldLang;
                $wgContLang = self::$oldContLang;
                $wgLanguageCode = self::$oldLanguageCode;
-               $wgHTML5 = self::$oldHTML5;
+               $wgHtml5 = self::$oldHTML5;
        }
 
        /**
-        * Wrapper to easily set $wgHTML5 = true.
+        * Wrapper to easily set $wgHtml5 = true.
         * Original value will be restored after test completion.
         * @todo Move to MediaWikiTestCase
         */
        public function enableHTML5() {
-               global $wgHTML5;
-               $wgHTML5 = true;
+               global $wgHtml5;
+               $wgHtml5 = true;
        }
        /**
-        * Wrapper to easily set $wgHTML5 = false
+        * Wrapper to easily set $wgHtml5 = false
         * Original value will be restored after test completion.
         * @todo Move to MediaWikiTestCase
         */
        public function disableHTML5() {
-               global $wgHTML5;
-               $wgHTML5 = false;
+               global $wgHtml5;
+               $wgHtml5 = false;
        }
 
        public function testExpandAttributesSkipsNullAndFalse() {
@@ -372,7 +372,7 @@ class HtmlTest extends MediaWikiTestCase {
                $this->enableHTML5();
                $this->assertEquals(
                        '<input type="' . $HTML5InputType . '" />',
-                       HTML::element( 'input', array( 'type' => $HTML5InputType ) ),
+                       Html::element( 'input', array( 'type' => $HTML5InputType ) ),
                        'In HTML5, HTML::element() should accept type="' . $HTML5InputType . '"'
                );
        }
index 4946200..09858b0 100644 (file)
@@ -10,30 +10,35 @@ class LinksUpdateTest extends MediaWikiTestCase {
        function  __construct( $name = null, array $data = array(), $dataName = '' ) {
                parent::__construct( $name, $data, $dataName );
 
-               $this->tablesUsed = array_merge ( $this->tablesUsed,
-                                                                                       array( 'interwiki',
-
-                                                                                               'page_props',
-                                                                                               'pagelinks',
-                                                                                               'categorylinks',
-                                                                                               'langlinks',
-                                                                                               'externallinks',
-                                                                                               'imagelinks',
-                                                                                               'templatelinks',
-                                                                                               'iwlinks' ) );
+               $this->tablesUsed = array_merge( $this->tablesUsed,
+                       array(
+                               'interwiki',
+                               'page_props',
+                               'pagelinks',
+                               'categorylinks',
+                               'langlinks',
+                               'externallinks',
+                               'imagelinks',
+                               'templatelinks',
+                               'iwlinks'
+                       )
+               );
        }
 
        function setUp() {
                $dbw = wfGetDB( DB_MASTER );
-               $dbw->replace( 'interwiki',
-                                               array('iw_prefix'),
-                                               array( 'iw_prefix' => 'linksupdatetest',
-                                                      'iw_url' => 'http://testing.com/wiki/$1',
-                                                      'iw_api' => 'http://testing.com/w/api.php',
-                                                      'iw_local' => 0,
-                                                      'iw_trans' => 0,
-                                                      'iw_wikiid' => 'linksupdatetest',
-                                               ) );
+               $dbw->replace(
+                       'interwiki',
+                       array( 'iw_prefix' ),
+                       array(
+                               'iw_prefix' => 'linksupdatetest',
+                               'iw_url' => 'http://testing.com/wiki/$1',
+                               'iw_api' => 'http://testing.com/w/api.php',
+                               'iw_local' => 0,
+                               'iw_trans' => 0,
+                               'iw_wikiid' => 'linksupdatetest',
+                       )
+               );
        }
 
        protected function makeTitleAndParserOutput( $name, $id ) {
index d67f905..ac9971e 100644 (file)
@@ -182,6 +182,12 @@ class SanitizerTest extends MediaWikiTestCase {
                                'Remove anything after a comment-start token' ),
                        array( '', "\\2f\\2a unifinished comment'",
                                'Remove anything after a backslash-escaped comment-start token' ),
+                       array( '/* insecure input */', 'filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'asdf.png\',sizingMethod=\'scale\');'),
+                       array( '/* insecure input */', '-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'asdf.png\',sizingMethod=\'scale\')";'),
+                       array( '/* insecure input */', 'width: expression(1+1);'),
+                       array( '/* insecure input */', 'background-image: image(asdf.png);'),
+                       array( '/* insecure input */', 'background-image: -webkit-image(asdf.png);'),
+                       array( '/* insecure input */', 'background-image: -moz-image(asdf.png);'),
                );
        }
 }
index f61652d..c74daae 100644 (file)
@@ -75,8 +75,7 @@ class TitleTest extends MediaWikiTestCase {
                        array( 'File:Test.jpg', 'Page', 'imagenocrossnamespace' )
                );
        }
-       
-       
+
        /**
         * @dataProvider provideCasesForGetpageviewlanguage
         */
@@ -152,4 +151,63 @@ class TitleTest extends MediaWikiTestCase {
 
                );
        }
+
+       /**
+        * @dataProvider provideBaseTitleCases
+        */
+       function testExtractingBaseTextFromTitle( $title, $expected, $msg='' ) {
+               $title = Title::newFromText( $title );
+               $this->assertEquals( $expected,
+                       $title->getBaseText(),
+                       $msg
+               );
+       }
+
+       function provideBaseTitleCases() {
+               return array(
+                       # Title, expected base, optional message
+                       array('User:John_Doe/subOne/subTwo', 'John Doe/subOne' ),
+                       array('User:Foo/Bar/Baz', 'Foo/Bar' ),
+               );
+       }
+
+       /**
+        * @dataProvider provideRootTitleCases
+        */
+       function testExtractingRootTextFromTitle( $title, $expected, $msg='' ) {
+               $title = Title::newFromText( $title );
+               $this->assertEquals( $expected,
+                       $title->getRootText(),
+                       $msg
+               );
+       }
+
+       function provideRootTitleCases() {
+               return array(
+                       # Title, expected base, optional message
+                       array('User:John_Doe/subOne/subTwo', 'John Doe' ),
+                       array('User:Foo/Bar/Baz', 'Foo' ),
+               );
+       }
+
+       /**
+        * @todo Handle $wgNamespacesWithSubpages cases
+        * @dataProvider provideSubpageTitleCases
+        */
+       function testExtractingSubpageTextFromTitle( $title, $expected, $msg='' ) {
+               $title = Title::newFromText( $title );
+               $this->assertEquals( $expected,
+                       $title->getSubpageText(),
+                       $msg
+               );
+       }
+
+       function provideSubpageTitleCases() {
+               return array(
+                       # Title, expected base, optional message
+                       array('User:John_Doe/subOne/subTwo', 'subTwo' ),
+                       array('User:John_Doe/subOne', 'subOne' ),
+               );
+       }
+
 }
index 93ed3dc..7f25f58 100644 (file)
@@ -37,7 +37,7 @@ class XmlTest extends MediaWikiTestCase {
        public function tearDown() {
                global $wgLang, $wgContLang;
                $wgLang = self::$oldLang;
-               
+
                $wgContLang->setNamespaces( self::$oldNamespaces );
        }
 
@@ -112,9 +112,6 @@ class XmlTest extends MediaWikiTestCase {
                $this->assertEquals( '</element>', Xml::closeElement( 'element' ), 'closeElement() shortcut' );
        }
 
-       /**
-        * @group Broken
-        */
        public function testDateMenu( ) {
                $curYear   = intval(gmdate('Y'));
                $prevYear  = $curYear - 1;
@@ -126,7 +123,7 @@ class XmlTest extends MediaWikiTestCase {
                if( $nextMonth == 13 ) { $nextMonth = 1; }
 
                $this->assertEquals(
-                       '<label for="year">From year (and earlier):</label> <input name="year" size="4" value="2011" id="year" maxlength="4" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
+                       '<label for="year">From year (and earlier):</label> <input id="year" maxlength="4" size="7" type="number" value="2011" name="year" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
 '<option value="1">January</option>' . "\n" .
 '<option value="2" selected="">February</option>' . "\n" .
 '<option value="3">March</option>' . "\n" .
@@ -143,7 +140,7 @@ class XmlTest extends MediaWikiTestCase {
                        "Date menu for february 2011"
                );
                $this->assertEquals(
-                       '<label for="year">From year (and earlier):</label> <input name="year" size="4" value="2011" id="year" maxlength="4" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
+                       '<label for="year">From year (and earlier):</label> <input id="year" maxlength="4" size="7" type="number" value="2011" name="year" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
 '<option value="1">January</option>' . "\n" .
 '<option value="2">February</option>' . "\n" .
 '<option value="3">March</option>' . "\n" .
@@ -165,17 +162,15 @@ class XmlTest extends MediaWikiTestCase {
                        "Date menu year is the current one when not specified"
                );
 
-               // @todo FIXME: next month can be in the next year
-               // test failing because it is now december
+               $wantedYear = $nextMonth == 1 ? $curYear : $prevYear;
                $this->assertEquals(
-                       Xml::dateMenu( $prevYear, $nextMonth ),
+                       Xml::dateMenu( $wantedYear, $nextMonth ),
                        Xml::dateMenu( '', $nextMonth ),
                        "Date menu next month is 11 months ago"
                );
 
-               # @todo FIXME: Please note there is no year there!
                $this->assertEquals(
-                       '<label for="year">From year (and earlier):</label> <input name="year" size="4" value="" id="year" maxlength="4" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
+                       '<label for="year">From year (and earlier):</label> <input id="year" maxlength="4" size="7" type="number" name="year" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
 '<option value="1">January</option>' . "\n" .
 '<option value="2">February</option>' . "\n" .
 '<option value="3">March</option>' . "\n" .
index 8acdc1c..d54d7df 100644 (file)
@@ -5,7 +5,7 @@
  */
 class ApiOptionsTest extends MediaWikiLangTestCase {
 
-       private $mTested, $mApiMainMock, $mUserMock, $mContext, $mSession;
+       private $mTested, $mUserMock, $mContext, $mSession;
 
        private static $Success = array( 'options' => 'success' );
 
@@ -16,27 +16,16 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                        ->disableOriginalConstructor()
                        ->getMock();
 
-               $this->mApiMainMock = $this->getMockBuilder( 'ApiBase' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
                // Create a new context
                $this->mContext = new DerivativeContext( new RequestContext() );
                $this->mContext->setUser( $this->mUserMock );
 
-               $this->mApiMainMock->expects( $this->any() )
-                       ->method( 'getContext' )
-                       ->will( $this->returnValue( $this->mContext ) );
-
-               $this->mApiMainMock->expects( $this->any() )
-                       ->method( 'getResult' )
-                       ->will( $this->returnValue( new ApiResult( $this->mApiMainMock ) ) );
-
+               $main = new ApiMain( $this->mContext );
 
                // Empty session
                $this->mSession = array();
 
-               $this->mTested = new ApiOptions( $this->mApiMainMock, 'options' );
+               $this->mTested = new ApiOptions( $main, 'options' );
        }
 
        private function getSampleRequest( $custom = array() ) {
index c3eacd5..9806a1c 100644 (file)
@@ -194,26 +194,6 @@ class ApiTest extends ApiTestCase {
 
                return $cj;
        }
-
-       /**
-        * @todo Finish filling me out...what are we trying to test here?
-        */
-       function testApiListPages() {
-               global $wgServer;
-               if ( !isset( $wgServer ) ) {
-                       $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
-               }
-
-               $ret = $this->doApiRequest( array(
-                       'action' => 'query',
-                       'prop'   => 'revisions',
-                       'titles' => 'Main Page',
-                       'rvprop' => 'timestamp|user|comment|content',
-               ) );
-
-               $result = $ret[0]['query']['pages'];
-               $this->markTestIncomplete( "Somebody needs to finish loving me" );
-       }
        
        function testRunLogin() {
                $sysopUser = self::$users['sysop'];
index b84292e..3cec99a 100644 (file)
@@ -18,6 +18,8 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
                $wgRequest = new FauxRequest( array() );
 
+               ApiQueryInfo::resetTokenCache(); // tokens are invalid because we cleared the session
+
                self::$users = array(
                        'sysop' => new TestUser(
                                'Apitestsysop',
index 379ffb1..dc12ba5 100644 (file)
@@ -190,9 +190,6 @@ class DatabaseTest extends MediaWikiTestCase {
                        $sql );
        }
 
-       /**
-        * @group Broken
-        */
        function testStoredFunctions() {
                if ( !in_array( wfGetDB( DB_MASTER )->getType(), array( 'mysql', 'postgres' ) ) ) {
                        $this->markTestSkipped( 'MySQL or Postgres required' );
index 093c71f..1870d5a 100644 (file)
 header( 'Content-Type: text/css; charset=utf-8' );
 
 /**
- * Allows characters in ranges [a-z], [A-Z], [0-9] as well as a dot ("."), dash ("-") and hash ("#").
+ * Allows characters in ranges [a-z], [A-Z] and [0-9],
+ * in addition to a dot ("."), dash ("-"), space (" ") and hash ("#").
  * @since 1.20
  *
- * @param $val string
- * @return string: input with illigal characters removed 
+ * @param string $val
+ * @return string Value with any illegal characters removed.
  */
 function cssfilter( $val ) {
-       return preg_replace( '/[^A-Za-z0-9\.\-#]/', '', $val );
+       return preg_replace( '/[^A-Za-z0-9\.\- #]/', '', $val );
 }
 
 // Do basic sanitization
index 23a93a7..4f86eb9 100644 (file)
@@ -1,4 +1,4 @@
-( function ( $ ) {
+( function ( $, mw ) {
        var simpleSample, U_20AC, mbSample;
 
        QUnit.module( 'jquery.byteLimit', QUnit.newMwEnvironment() );
 
        // Basic sendkey-implementation
        function addChars( $input, charstr ) {
-               var len, i, prevVal, code, event;
-               len = charstr.length;
-               for ( i = 0; i < len; i += 1 ) {
-                       // Keep track of the previous value
-                       prevVal = $input.val();
-
-                       // Get the key code
-                       code = charstr.charCodeAt( i );
-
-                       // Trigger event and undo if prevented
-                       event = new jQuery.Event( 'keypress', {
-                               which: code,
-                               keyCode: code,
-                               charCode: code
-                       } );
-                       $input.trigger( event );
-                       if ( !event.isDefaultPrevented() ) {
-                               $input.val( prevVal + charstr.charAt( i ) );
-                       }
+               var c, len;
+               for ( c = 0, len = charstr.length; c < len; c += 1 ) {
+                       $input
+                               .val( function ( i, val ) {
+                                       // Add character to the value
+                                       return val + charstr.charAt( c );
+                               } )
+                               .trigger( 'change' );
                }
        }
 
                        limit: null
                }, options);
 
-               QUnit.test( opt.description, function ( assert ) {
-                       var rawVal, fn, newVal;
+               QUnit.asyncTest( opt.description, opt.hasLimit ? 3 : 2, function ( assert ) {
+               setTimeout( function () {
+                       var rawVal, fn, effectiveVal;
 
                        opt.$input.appendTo( '#qunit-fixture' );
 
                        // Simulate pressing keys for each of the sample characters
                        addChars( opt.$input, opt.sample );
+
                        rawVal = opt.$input.val();
-                       fn = opt.$input.data( 'byteLimit-callback' );
-                       newVal = $.isFunction( fn ) ? fn( rawVal ) : rawVal;
+                       fn = opt.$input.data( 'byteLimit.callback' );
+                       effectiveVal = fn ? fn( rawVal ) : rawVal;
 
                        if ( opt.hasLimit ) {
-                               QUnit.expect(3);
-
                                assert.ltOrEq(
-                                       $.byteLength( newVal ),
+                                       $.byteLength( effectiveVal ),
                                        opt.limit,
                                        'Prevent keypresses after byteLimit was reached, length never exceeded the limit'
                                );
                                assert.equal( rawVal, opt.expected, 'New value matches the expected string' );
 
                        } else {
-                               QUnit.expect(2);
-                               assert.equal( newVal, opt.expected, 'New value matches the expected string' );
                                assert.equal(
-                                       $.byteLength( newVal ),
+                                       $.byteLength( effectiveVal ),
                                        $.byteLength( opt.expected ),
                                        'Unlimited scenarios are not affected, expected length reached'
                                );
+                               assert.equal( rawVal, opt.expected, 'New value matches the expected string' );
                        }
+                       QUnit.start();
+               }, 10 );
                } );
        }
 
        byteLimitTest({
                description: 'Plain text input',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' ),
+               $input: $( '<input type="text"/>' ),
                sample: simpleSample,
                hasLimit: false,
                expected: simpleSample
        });
 
        byteLimitTest({
-               description: 'Plain text input. Calling byteLimit with no parameters and no maxLength property (bug 36310)',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' )
+               description: 'Plain text input. Calling byteLimit with no parameters and no maxlength attribute (bug 36310)',
+               $input: $( '<input type="text"/>' )
                        .byteLimit(),
                sample: simpleSample,
                hasLimit: false,
 
        byteLimitTest({
                description: 'Limit using the maxlength attribute',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' )
-                       .prop( 'maxLength', '10' )
+               $input: $( '<input type="text"/>' )
+                       .attr( 'maxlength', '10' )
                        .byteLimit(),
                sample: simpleSample,
                hasLimit: true,
 
        byteLimitTest({
                description: 'Limit using a custom value',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' )
+               $input: $( '<input type="text"/>' )
                        .byteLimit( 10 ),
                sample: simpleSample,
                hasLimit: true,
 
        byteLimitTest({
                description: 'Limit using a custom value, overriding maxlength attribute',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' )
-                       .prop( 'maxLength', '10' )
+               $input: $( '<input type="text"/>' )
+                       .attr( 'maxlength', '10' )
                        .byteLimit( 15 ),
                sample: simpleSample,
                hasLimit: true,
 
        byteLimitTest({
                description: 'Limit using a custom value (multibyte)',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' )
+               $input: $( '<input type="text"/>' )
                        .byteLimit( 14 ),
                sample: mbSample,
                hasLimit: true,
 
        byteLimitTest({
                description: 'Limit using a custom value (multibyte) overlapping a byte',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' )
+               $input: $( '<input type="text"/>' )
                        .byteLimit( 12 ),
                sample: mbSample,
                hasLimit: true,
 
        byteLimitTest({
                description: 'Pass the limit and a callback as input filter',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' )
+               $input: $( '<input type="text"/>' )
                        .byteLimit( 6, function ( val ) {
                                // Invalid title
                                if ( val === '' ) {
 
        byteLimitTest({
                description: 'Limit using the maxlength attribute and pass a callback as input filter',
-               $input: $( '<input>' )
-                       .attr( 'type', 'text' )
-                       .prop( 'maxLength', '6' )
+               $input: $( '<input type="text"/>' )
+                       .attr( 'maxlength', '6' )
                        .byteLimit( function ( val ) {
                                // Invalid title
                                if ( val === '' ) {
                expected: 'User:Sample'
        });
 
-       QUnit.test( 'Confirm properties and attributes set', 5, function ( assert ) {
+       QUnit.test( 'Confirm properties and attributes set', 4, function ( assert ) {
                var $el, $elA, $elB;
 
-               $el = $( '<input>' )
-                       .attr( 'type', 'text' )
-                       .prop( 'maxLength', '7' )
+               $el = $( '<input type="text"/>' )
+                       .attr( 'maxlength', '7' )
                        .appendTo( '#qunit-fixture' )
                        .byteLimit();
 
-               assert.strictEqual( $el.prop( 'maxLength' ), 7, 'Pre-set maxLength property unchanged' );
+               assert.strictEqual( $el.attr( 'maxlength' ), '7', 'maxlength attribute unchanged for simple limit' );
 
-               $el = $( '<input>' )
-                       .attr( 'type', 'text' )
-                       .prop( 'maxLength', '7' )
+               $el = $( '<input type="text"/>' )
+                       .attr( 'maxlength', '7' )
                        .appendTo( '#qunit-fixture' )
                        .byteLimit( 12 );
 
-               assert.strictEqual( $el.prop( 'maxLength' ), 12, 'maxLength property updated if value was passed to $.fn.byteLimit' );
+               assert.strictEqual( $el.attr( 'maxlength' ), '12', 'maxlength attribute updated for custom limit' );
 
-               $elA = $( '<input>' )
+               $el = $( '<input type="text"/>' )
+                       .attr( 'maxlength', '7' )
+                       .appendTo( '#qunit-fixture' )
+                       .byteLimit( 12, function ( val ) {
+                               return val;
+                       } );
+
+               assert.strictEqual( $el.attr( 'maxlength' ), undefined, 'maxlength attribute removed for limit with callback' );
+
+               $elA = $( '<input type="text"/>' )
                        .addClass( 'mw-test-byteLimit-foo' )
-                       .attr( 'type', 'text' )
-                       .prop( 'maxLength', '7' )
+                       .attr( 'maxlength', '7' )
                        .appendTo( '#qunit-fixture' );
 
-               $elB = $( '<input>' )
+               $elB = $( '<input type="text"/>' )
                        .addClass( 'mw-test-byteLimit-foo' )
-                       .attr( 'type', 'text' )
-                       .prop( 'maxLength', '12' )
+                       .attr( 'maxlength', '12' )
                        .appendTo( '#qunit-fixture' );
 
                $el = $( '.mw-test-byteLimit-foo' );
                assert.strictEqual( $el.length, 2, 'Verify that there are no other elements clashing with this test suite' );
 
                $el.byteLimit();
-
-               // Before bug 35294 was fixed, both $elA and $elB had maxLength set to 7,
-               // because $.fn.byteLimit sets:
-               // `limit = limitArg || this.prop( 'maxLength' ); this.prop( 'maxLength', limit )`
-               // and did so outside the each() loop.
-               assert.strictEqual( $elA.prop( 'maxLength' ), 7, 'maxLength was not incorrectly set on #1 when calling byteLimit on multiple elements (bug 35294)' );
-               assert.strictEqual( $elB.prop( 'maxLength' ), 12, 'maxLength was not incorrectly set on #2 when calling byteLimit on multiple elements (bug 35294)' );
        });
 
-}( jQuery ) );
+}( jQuery, mediaWiki ) );
index 6360925..a736e12 100644 (file)
@@ -146,7 +146,26 @@ QUnit.test( 'toString / toText', 2, function ( assert ) {
        assert.equal( title.toText(), title.getPrefixedText() );
 });
 
-QUnit.test( 'Exists', 3, function ( assert ) {
+QUnit.test( 'getExtension', 7, function ( assert ) {
+
+       function extTest( pagename, ext, description ) {
+               var title = new mw.Title( pagename );
+               assert.equal( title.getExtension(), ext, description || pagename );
+       }
+
+       extTest( 'MediaWiki:Vector.js', 'js' );
+       extTest( 'User:Example/common.css', 'css' );
+       extTest( 'File:Example.longextension', 'longextension', 'Extension parsing not limited (bug 36151)' );
+       extTest( 'Example/information.json', 'json', 'Extension parsing not restricted from any namespace' );
+       extTest( 'Foo.', null, 'Trailing dot is not an extension' );
+       extTest( 'Foo..', null, 'Trailing dots are not an extension' );
+       extTest( 'Foo.a.', null, 'Page name with dots and ending in a dot does not have an extension' );
+
+       // @broken: Throws an exception
+       // extTest( '.NET', null, 'Leading dot is (or is not?) an extension' );
+});
+
+QUnit.test( 'exists', 3, function ( assert ) {
        var title;
 
        // Empty registry, checks default to null
@@ -165,7 +184,7 @@ QUnit.test( 'Exists', 3, function ( assert ) {
 
 });
 
-QUnit.test( 'Url', 2, function ( assert ) {
+QUnit.test( 'getUrl', 2, function ( assert ) {
        var title;
 
        // Config
index 58e56ad..806058d 100644 (file)
@@ -1,6 +1,8 @@
+( function ( mw ) {
+
 QUnit.module( 'mediawiki', QUnit.newMwEnvironment() );
 
-QUnit.test( '-- Initial check', 8, function ( assert ) {
+QUnit.test( 'Initial check', 8, function ( assert ) {
        assert.ok( window.jQuery, 'jQuery defined' );
        assert.ok( window.$, '$j defined' );
        assert.ok( window.$j, '$j defined' );
@@ -137,6 +139,67 @@ QUnit.test( 'mw.msg', 11, function ( assert ) {
 
 });
 
+/**
+ * The sync style load test (for @import). This is, in a way, also an open bug for
+ * ResourceLoader ("execute js after styles are loaded"), but browsers don't offer a
+ * way to get a callback from when a stylesheet is loaded (that is, including any
+ * @import rules inside). To work around this, we'll have a little time loop to check
+ * if the styles apply.
+ * Note: This test originally used new Image() and onerror to get a callback
+ * when the url is loaded, but that is fragile since it doesn't monitor the
+ * same request as the css @import, and Safari 4 has issues with
+ * onerror/onload not being fired at all in weird cases like this.
+ */
+function assertStyleAsync( assert, $element, prop, val, fn ) {
+       var styleTestStart,
+               el = $element.get( 0 ),
+               styleTestTimeout = ( QUnit.config.testTimeout - 200 ) || 5000;
+
+       function isCssImportApplied() {
+               // Trigger reflow, repaint, redraw, whatever (cross-browser)
+               var x = $element.css( 'height' );
+               x = el.innerHTML;
+               el.className = el.className;
+               x = document.documentElement.clientHeight;
+
+               return $element.css( prop ) === val;
+       }
+
+       function styleTestLoop() {
+               var styleTestSince = new Date().getTime() - styleTestStart;
+               // If it is passing or if we timed out, run the real test and stop the loop
+               if ( isCssImportApplied() || styleTestSince > styleTestTimeout ) {
+                       assert.equal( $element.css( prop ), val,
+                               'style from url is applied (after ' + styleTestSince + 'ms)'
+                       );
+
+                       if ( fn ) {
+                               fn();
+                       }
+
+                       return;
+               }
+               // Otherwise, keep polling
+               setTimeout( styleTestLoop, 150 );
+       }
+
+       // Start the loop
+       styleTestStart = new Date().getTime();
+       styleTestLoop();
+}
+
+function urlStyleTest( selector, prop, val ) {
+       return QUnit.fixurl(
+               mw.config.get( 'wgScriptPath' ) +
+                       '/tests/qunit/data/styleTest.css.php?' +
+                       $.param( {
+                               selector: selector,
+                               prop: prop,
+                               val: val
+                       } )
+       );
+}
+
 QUnit.asyncTest( 'mw.loader', 2, function ( assert ) {
        var isAwesomeDone;
 
@@ -161,83 +224,176 @@ QUnit.asyncTest( 'mw.loader', 2, function ( assert ) {
        });
 });
 
-QUnit.asyncTest( 'mw.loader.implement', 5, function ( assert ) {
-       var isJsExecuted, $element, styleTestUrl;
-
-       styleTestUrl = QUnit.fixurl(
-               mw.config.get( 'wgScriptPath' )
-               + '/tests/qunit/data/styleTest.css.php?'
-               + $.param({
-                       selector: '.mw-test-loaderimplement',
-                       prop: 'float',
-                       val: 'right'
-               })
+QUnit.test( 'mw.loader.implement( styles={ "css": [text, ..] } )', 2, function ( assert ) {
+       var $element = $( '<div class="mw-test-implement-a"></div>' ).appendTo( '#qunit-fixture' );
+
+       assert.notEqual(
+               $element.css( 'float' ),
+               'right',
+               'style is clear'
        );
 
        mw.loader.implement(
-               'test.implement',
+               'test.implement.a',
                function () {
-                       var styleTestTimeout, styleTestStart, styleTestSince;
+                       assert.equal(
+                               $element.css( 'float' ),
+                               'right',
+                               'style is applied'
+                       );
+               },
+               {
+                       'all': '.mw-test-implement-a { float: right; }'
+               },
+               {}
+       );
+
+       mw.loader.load([
+               'test.implement.a'
+       ]);
+} );
 
+QUnit.asyncTest( 'mw.loader.implement( styles={ "url": { <media>: [url, ..] } } )', 4, function ( assert ) {
+       var $element = $( '<div class="mw-test-implement-b"></div>' ).appendTo( '#qunit-fixture' ),
+               $element2 = $( '<div class="mw-test-implement-b2"></div>' ).appendTo( '#qunit-fixture' );
+
+       assert.notEqual(
+               $element.css( 'float' ),
+               'right',
+               'style is clear'
+       );
+       assert.notEqual(
+               $element2.css( 'text-align' ),
+               'center',
+               'style is clear'
+       );
+
+       mw.loader.implement(
+               'test.implement.b',
+               function () {
+                       assertStyleAsync( assert, $element, 'float', 'right', function () {
+
+                               assert.notEqual( $element2.css( 'text-align' ), 'center', 'print style is not applied' );
+
+                               QUnit.start();
+                       } );
+               },
+               {
+                       'url': {
+                               'screen': [urlStyleTest( '.mw-test-implement-b', 'float', 'right' )],
+                               'print': [urlStyleTest( '.mw-test-implement-b2', 'text-align', 'center' )]
+                       }
+               },
+               {}
+       );
+
+       mw.loader.load([
+               'test.implement.b'
+       ]);
+} );
+
+// Backwards compatibility
+QUnit.test( 'mw.loader.implement( styles={ <media>: text } ) (back-compat)', 2, function ( assert ) {
+       var $element = $( '<div class="mw-test-implement-c"></div>' ).appendTo( '#qunit-fixture' );
+
+       assert.notEqual(
+               $element.css( 'float' ),
+               'right',
+               'style is clear'
+       );
+
+       mw.loader.implement(
+               'test.implement.c',
+               function () {
+                       assert.equal(
+                               $element.css( 'float' ),
+                               'right',
+                               'style is applied'
+                       );
+               },
+               {
+                       'all': '.mw-test-implement-c { float: right; }'
+               },
+               {}
+       );
+
+       mw.loader.load([
+               'test.implement.c'
+       ]);
+} );
+
+// Backwards compatibility
+QUnit.asyncTest( 'mw.loader.implement( styles={ <media>: [url, ..] } ) (back-compat)', 4, function ( assert ) {
+       var $element = $( '<div class="mw-test-implement-d"></div>' ).appendTo( '#qunit-fixture' ),
+               $element2 = $( '<div class="mw-test-implement-d2"></div>' ).appendTo( '#qunit-fixture' );
+
+       assert.notEqual(
+               $element.css( 'float' ),
+               'right',
+               'style is clear'
+       );
+       assert.notEqual(
+               $element2.css( 'text-align' ),
+               'center',
+               'style is clear'
+       );
+
+       mw.loader.implement(
+               'test.implement.d',
+               function () {
+                       assertStyleAsync( assert, $element, 'float', 'right', function () {
+
+                               assert.notEqual( $element2.css( 'text-align' ), 'center', 'print style is not applied (bug 40500)' );
+
+                               QUnit.start();
+                       } );
+               },
+               {
+                       'all': [urlStyleTest( '.mw-test-implement-d', 'float', 'right' )],
+                       'print': [urlStyleTest( '.mw-test-implement-d2', 'text-align', 'center' )]
+               },
+               {}
+       );
+
+       mw.loader.load([
+               'test.implement.d'
+       ]);
+} );
+
+// @import (bug 31676)
+QUnit.asyncTest( 'mw.loader.implement( styles has @import)', 5, function ( assert ) {
+       var isJsExecuted, $element;
+
+       mw.loader.implement(
+               'test.implement.import',
+               function () {
                        assert.strictEqual( isJsExecuted, undefined, 'javascript not executed multiple times' );
                        isJsExecuted = true;
 
-                       assert.equal( mw.loader.getState( 'test.implement' ), 'ready', 'module state is "ready" while implement() is executing javascript' );
+                       assert.equal( mw.loader.getState( 'test.implement.import' ), 'ready', 'module state is "ready" while implement() is executing javascript' );
 
-                       $element = $( '<div class="mw-test-loaderimplement">Foo bar</div>' ).appendTo( '#qunit-fixture' );
+                       $element = $( '<div class="mw-test-implement-import">Foo bar</div>' ).appendTo( '#qunit-fixture' );
 
                        assert.equal( mw.msg( 'test-foobar' ), 'Hello Foobar, $1!', 'Messages are loaded before javascript execution' );
 
-                       // The @import test. This is, in a way, also an open bug for ResourceLoader
-                       // ("execute js after styles are loaded"), but browsers don't offer a way to
-                       // get a callback from when a stylesheet is loaded (that is, including any
-                       // @import rules inside).
-                       // To work around this, we'll have a little time loop to check if the styles
-                       // apply.
-                       // Note: This test originally used new Image() and onerror to get a callback
-                       // when the url is loaded, but that is fragile since it doesn't monitor the
-                       // same request as the css @import, and Safari 4 has issues with
-                       // onerror/onload not being fired at all in weird cases like this.
-
-                       styleTestTimeout = QUnit.config.testTimeout || 5000; // milliseconds
-
-                       function isCssImportApplied() {
-                               return $element.css( 'float' ) === 'right';
-                       }
-
-                       function styleTestLoop() {
-                               styleTestSince = new Date().getTime() - styleTestStart;
-                               // If it is passing or if we timed out, run the real test and stop the loop
-                               if ( isCssImportApplied() || styleTestSince > styleTestTimeout ) {
-                                       assert.equal( $element.css( 'float' ), 'right',
-                                               'CSS stylesheet via @import was applied (after ' + styleTestSince + 'ms) (bug 34669). ("float: right")'
-                                       );
-
-                                       assert.equal( $element.css( 'text-align' ),'center',
-                                               'CSS styles after the @import are working ("text-align: center")'
-                                       );
-
-                                       // Async done
-                                       QUnit.start();
-
-                                       return;
-                               }
-                               // Otherwise, keep polling
-                               setTimeout( styleTestLoop, 100 );
-                       }
+                       assertStyleAsync( assert, $element, 'float', 'right', function () {
+                               assert.equal( $element.css( 'text-align' ),'center',
+                                       'CSS styles after the @import rule are working'
+                               );
 
-                       // Start the loop
-                       styleTestStart = new Date().getTime();
-                       styleTestLoop();
+                               QUnit.start();
+                       } );
                },
                {
-                       "all": "@import url('"
-                               + styleTestUrl
-                               + "');\n"
-                               + '.mw-test-loaderimplement { text-align: center; }'
+                       'css': [
+                               '@import url(\''
+                               + urlStyleTest( '.mw-test-implement-import', 'float', 'right' )
+                               + '\');\n'
+                               + '.mw-test-implement-import { text-align: center; }'
+                       ]
                },
                {
-                       "test-foobar": "Hello Foobar, $1!"
+                       'test-foobar': 'Hello Foobar, $1!'
                }
        );
 
@@ -245,6 +401,19 @@ QUnit.asyncTest( 'mw.loader.implement', 5, function ( assert ) {
 
 });
 
+QUnit.asyncTest( 'mw.loader.implement( only messages )' , 2, function ( assert ) {
+       assert.assertFalse( mw.messages.exists( 'bug_29107' ), 'Verify that the test message doesn\'t exist yet' );
+
+       mw.loader.implement( 'test.implement.msgs', [], {}, { 'bug_29107': 'loaded' } );
+       mw.loader.using( 'test.implement.msgs', function() {
+               QUnit.start();
+               assert.ok( mw.messages.exists( 'bug_29107' ), 'Bug 29107: messages-only module should implement ok' );
+       }, function() {
+               QUnit.start();
+               assert.ok( false, 'Error callback fired while implementing "test.implement.msgs" module' );
+       });
+});
+
 QUnit.test( 'mw.loader erroneous indirect dependency', 3, function ( assert ) {
        mw.loader.register( [
                ['test.module1', '0'],
@@ -368,21 +537,7 @@ QUnit.asyncTest( 'mw.loader dependency handling', 5, function ( assert ) {
        );
 } );
 
-QUnit.asyncTest( 'mw.loader bug29107' , 2, function ( assert ) {
-       // Message doesn't exist already
-       assert.ok( !mw.messages.exists( 'bug29107' ) );
-
-       mw.loader.implement( 'bug29107.messages-only', [], {}, {'bug29107': 'loaded'} );
-       mw.loader.using( 'bug29107.messages-only', function() {
-               QUnit.start();
-               assert.ok( mw.messages.exists( 'bug29107' ), 'Bug 29107: messages-only module should implement ok' );
-       }, function() {
-               QUnit.start();
-               assert.ok( false, 'Error callback fired while implementing "bug29107.messages-only" module' );
-       });
-});
-
-QUnit.asyncTest( 'mw.loader.bug30825', 2, function ( assert ) {
+QUnit.asyncTest( 'mw.loader( "//protocol-relative" ) (bug 30825)', 2, function ( assert ) {
        // This bug was actually already fixed in 1.18 and later when discovered in 1.17.
        // Test is for regressions!
 
@@ -476,3 +631,5 @@ QUnit.test( 'mw.html', 13, function ( assert ) {
                'html.element DIV (attribs + content)' );
 
 });
+
+}( mediaWiki ) );
index 39e18c9..4b2e923 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Recording for passing/failing tests.
+ *
+ * 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 Testing
+ */
 
 class TestRecorder {
        var $parent;
@@ -483,7 +504,7 @@ class TestFileIterator implements Iterator {
        private function clearSection() {
                $this->sectionData = array();
                $this->section = null;
-               
+
        }
 
        /**
@@ -492,7 +513,7 @@ class TestFileIterator implements Iterator {
         * Throw an exception if it is not set, referencing current section
         * and adding the current file name and line number
         *
-        * @param $token String: expected token that should have been mentionned before closing this section 
+        * @param $token String: expected token that should have been mentionned before closing this section
         */
        private function checkSection( $token ) {
                if( is_null( $this->section ) ) {
@@ -536,7 +557,7 @@ class DelayedParserTest {
 
        /**
         * Called whenever we actually want to run the hook.
-        * Should be the case if we found the parserTest is not disabled 
+        * Should be the case if we found the parserTest is not disabled
         */
        public function unleash( &$parserTest ) {
                if( !($parserTest instanceof ParserTest || $parserTest instanceof NewParserTest