Merge "makeCollapsible: Reduce duplicate code for adding eventhandlers"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 4 Jun 2018 21:40:38 +0000 (21:40 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 4 Jun 2018 21:40:38 +0000 (21:40 +0000)
123 files changed:
.phpcs.xml
RELEASE-NOTES-1.31
RELEASE-NOTES-1.32
composer.json
includes/DefaultSettings.php
includes/LinkFilter.php
includes/Setup.php
includes/cache/MessageCache.php
includes/collation/IcuCollation.php
includes/installer/Installer.php
includes/installer/MssqlUpdater.php
includes/installer/MysqlUpdater.php
includes/installer/OracleUpdater.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/i18n/ast.json
includes/installer/i18n/ia.json
includes/json/FormatJson.php
includes/libs/CSSMin.php
includes/page/WikiPage.php
includes/preferences/DefaultPreferencesFactory.php
includes/skins/Skin.php
includes/specials/formfields/Licenses.php
includes/specials/forms/EditWatchlistNormalHTMLForm.php
includes/tidy/RemexCompatFormatter.php
languages/Language.php
languages/data/Names.php
languages/i18n/an.json
languages/i18n/ast.json
languages/i18n/be-tarask.json
languages/i18n/btm.json
languages/i18n/cs.json
languages/i18n/cv.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/eu.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/ia.json
languages/i18n/ilo.json
languages/i18n/inh.json
languages/i18n/io.json
languages/i18n/it.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/mk.json
languages/i18n/ms.json
languages/i18n/nl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/sat.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAf.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBr.php
languages/messages/MessagesCs.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFur.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesIt.php
languages/messages/MessagesKaa.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKsh.php
languages/messages/MessagesLa.php
languages/messages/MessagesLbe.php
languages/messages/MessagesLn.php
languages/messages/MessagesLt.php
languages/messages/MessagesLv.php
languages/messages/MessagesMr.php
languages/messages/MessagesNb.php
languages/messages/MessagesNn.php
languages/messages/MessagesOc.php
languages/messages/MessagesPl.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesRu.php
languages/messages/MessagesSe.php
languages/messages/MessagesSk.php
languages/messages/MessagesSv.php
languages/messages/MessagesTa.php
languages/messages/MessagesTe.php
languages/messages/MessagesUdm.php
languages/messages/MessagesUk.php
languages/messages/MessagesUz.php
languages/messages/MessagesWa.php
maintenance/archives/patch-archive-ar_rev_id-unique.sql [new file with mode: 0644]
maintenance/cleanupSpam.php
maintenance/generateSitemap.php
maintenance/language/languages.inc
maintenance/mssql/tables.sql
maintenance/oracle/archives/patch-archive-ar_rev_id-unique.sql [new file with mode: 0644]
maintenance/oracle/tables.sql
maintenance/postgres/tables.sql
maintenance/sqlite/archives/patch-archive-ar_rev_id-unique.sql [new file with mode: 0644]
maintenance/tables.sql
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/collation/CustomUppercaseCollationTest.php
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/libs/rdbms/database/DatabaseMysqlBaseTest.php
tests/phpunit/includes/page/WikiPageDbTestBase.php
tests/phpunit/languages/LanguageTest.php

index 7d8bec6..e15eca0 100644 (file)
@@ -7,7 +7,9 @@
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingReturn" />
                <exclude name="MediaWiki.Commenting.FunctionComment.ExtraParamComment" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.DefaultNullTypeParam" />
                <exclude name="MediaWiki.Commenting.FunctionComment.WrongStyle" />
+               <exclude name="MediaWiki.Commenting.PhpunitAnnotations.NotClassTrait" />
                <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentStart" />
                <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentEnd" />
                <exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
        <rule ref="MediaWiki.Usage.AssignmentInReturn.AssignmentInReturn">
                <exclude-pattern>*/tests/phpunit/*\.php</exclude-pattern>
        </rule>
+       <rule ref="MediaWiki.Usage.ForbiddenFunctions.escapeshellarg">
+               <!--
+                       Whitelist existing violations, but enable the sniff to prevent
+                       any new occurrences.
+               -->
+               <exclude-pattern>*/includes/libs/filebackend/FSFileBackend\.php</exclude-pattern>
+               <exclude-pattern>*/includes/shell/Command\.php</exclude-pattern>
+               <exclude-pattern>*/includes/shell/Shell\.php</exclude-pattern>
+               <exclude-pattern>*/tests/phpunit/structure/StructureTest\.php</exclude-pattern>
+       </rule>
+       <rule ref="MediaWiki.Usage.ForbiddenFunctions.exec">
+               <!--
+                       Whitelist existing violations, but enable the sniff to prevent
+                       any new occurrences.
+               -->
+               <exclude-pattern>*/tests/phpunit/structure/StructureTest\.php</exclude-pattern>
+       </rule>
+       <rule ref="MediaWiki.Usage.ForbiddenFunctions.popen">
+               <!--
+                       Whitelist existing violations, but enable the sniff to prevent
+                       any new occurrences.
+               -->
+               <exclude-pattern>*/includes/GlobalFunctions\.php</exclude-pattern>
+               <exclude-pattern>*/includes/libs/filebackend/FSFileBackend\.php</exclude-pattern>
+               <exclude-pattern>*/maintenance/7zip\.inc</exclude-pattern>
+               <exclude-pattern>*/maintenance/populateImageSha1\.php</exclude-pattern>
+       </rule>
+       <rule ref="MediaWiki.Usage.ForbiddenFunctions.proc_open">
+               <!--
+                       Whitelist existing violations, but enable the sniff to prevent
+                       any new occurrences.
+               -->
+               <exclude-pattern>includes/export/DumpPipeOutput\.php</exclude-pattern>
+               <exclude-pattern>includes/resourceloader/ResourceLoaderImage\.php</exclude-pattern>
+               <exclude-pattern>includes/shell/Command\.php</exclude-pattern>
+               <exclude-pattern>includes/tidy/RaggettExternal\.php</exclude-pattern>
+               <exclude-pattern>maintenance/dumpTextPass\.php</exclude-pattern>
+               <exclude-pattern>maintenance/mysql\.php</exclude-pattern>
+               <exclude-pattern>maintenance/storage/recompressTracked\.php</exclude-pattern>
+               <exclude-pattern>tests/parser/editTests\.php</exclude-pattern>
+       </rule>
+       <rule ref="MediaWiki.Usage.ForbiddenFunctions.shell_exec">
+               <!--
+                       Whitelist existing violations, but enable the sniff to prevent
+                       any new occurrences.
+               -->
+               <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
+               <exclude-pattern>*/maintenance/updateCredits\.php</exclude-pattern>
+       </rule>
+       <rule ref="MediaWiki.Usage.ForbiddenFunctions.system">
+               <!--
+                       Whitelist existing violations, but enable the sniff to prevent
+                       any new occurrences.
+               -->
+               <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
+       </rule>
        <file>.</file>
        <arg name="encoding" value="UTF-8"/>
        <arg name="extensions" value="php,php5,inc,sample"/>
index bf038a7..fbe69eb 100644 (file)
@@ -43,6 +43,8 @@ production.
   framework that it enables. Some extensions mistakenly used this to check
   whether any AJAX functionality at all should be enabled, further making this
   problematic to retain.
+* $wgDBmysql5 is now deprecated, and will be removed in a future version. It
+  has been marked as experimental ever since it was introduced.
 
 === New features in 1.31 ===
 * (T76554) User sub-pages named ….json are now protected in the same way that
index eaa7e86..11e306a 100644 (file)
@@ -24,10 +24,13 @@ production.
 * New configuration variable has been added: $wgCookieSetOnIpBlock.
   This determines whether to set a cookie when an IP user is blocked. Doing so means
   that a blocked user, even after moving to a new IP address, will still be blocked.
+* The archive table's ar_rev_id field is now unique.
 
 === New features in 1.32 ===
 * (T112474) Generalized the ResourceLoader mechanism for overriding modules
   using a particular page during edit previews.
+* (T12331) You can now log page creation events by setting $wgPageCreationLog
+  to true.
 * Added 'ApiParseMakeOutputPage' hook.
 * (T174313) Added checkbox on Special:ListUsers to display only users in
   temporary user groups.
index 3ed41cf..669007c 100644 (file)
@@ -60,7 +60,7 @@
                "jakub-onderka/php-parallel-lint": "0.9.2",
                "jetbrains/phpstorm-stubs": "dev-master#1b9906084d6635456fcf3f3a01f0d7d5b99a578a",
                "justinrainbow/json-schema": "~5.2",
-               "mediawiki/mediawiki-codesniffer": "18.0.0",
+               "mediawiki/mediawiki-codesniffer": "20.0.0",
                "monolog/monolog": "~1.22.1",
                "nikic/php-parser": "3.1.3",
                "nmred/kafka-php": "0.1.5",
index 562d887..949e50a 100644 (file)
@@ -2059,6 +2059,8 @@ $wgDBerrorLogTZ = false;
  * Even correct usage may cause failures with Unicode supplementary
  * characters (those not in the Basic Multilingual Plane) unless MySQL
  * has enhanced their Unicode support.
+ *
+ * @deprecated since 1.31
  */
 $wgDBmysql5 = false;
 
@@ -7869,10 +7871,16 @@ $wgActionFilteredLogs = [
 ];
 
 /**
- * Maintain a log of newusers at Log/newusers?
+ * Maintain a log of newusers at Special:Log/newusers?
  */
 $wgNewUserLog = true;
 
+/**
+ * Maintain a log of page creations at Special:Log/create?
+ * @since 1.32
+ */
+$wgPageCreationLog = false;
+
 /** @} */ # end logging }
 
 /*************************************************************************//**
index 790e2be..17b4d56 100644 (file)
@@ -38,9 +38,10 @@ class LinkFilter {
         *
         * @param Content $content Content to check
         * @param string $filterEntry Domainparts, see makeRegex() for more details
+        * @param string $protocol 'http://' or 'https://'
         * @return int 0 if no match or 1 if there's at least one match
         */
-       static function matchEntry( Content $content, $filterEntry ) {
+       public static function matchEntry( Content $content, $filterEntry, $protocol = 'http://' ) {
                if ( !( $content instanceof TextContent ) ) {
                        // TODO: handle other types of content too.
                        //      Maybe create ContentHandler::matchFilter( LinkFilter ).
@@ -50,7 +51,7 @@ class LinkFilter {
 
                $text = $content->getNativeData();
 
-               $regex = self::makeRegex( $filterEntry );
+               $regex = self::makeRegex( $filterEntry, $protocol );
                return preg_match( $regex, $text );
        }
 
@@ -59,10 +60,12 @@ class LinkFilter {
         *
         * @param string $filterEntry URL, if it begins with "*.", it'll be
         *        replaced to match any subdomain
+        * @param string $protocol 'http://' or 'https://'
+        *
         * @return string Regex pattern, for preg_match()
         */
-       private static function makeRegex( $filterEntry ) {
-               $regex = '!http://';
+       private static function makeRegex( $filterEntry, $protocol ) {
+               $regex = '!' . preg_quote( $protocol );
                if ( substr( $filterEntry, 0, 2 ) == '*.' ) {
                        $regex .= '(?:[A-Za-z0-9.-]+\.|)';
                        $filterEntry = substr( $filterEntry, 2 );
index 3cc52f8..1d16a7e 100644 (file)
@@ -533,7 +533,7 @@ if ( $wgInvalidateCacheOnLocalSettingsChange ) {
 }
 
 if ( $wgNewUserLog ) {
-       // Add a new log type
+       // Add new user log type
        $wgLogTypes[] = 'newusers';
        $wgLogNames['newusers'] = 'newuserlogpage';
        $wgLogHeaders['newusers'] = 'newuserlogpagetext';
@@ -544,6 +544,12 @@ if ( $wgNewUserLog ) {
        $wgLogActionsHandlers['newusers/autocreate'] = NewUsersLogFormatter::class;
 }
 
+if ( $wgPageCreationLog ) {
+       // Add page creation log type
+       $wgLogTypes[] = 'create';
+       $wgLogActionsHandlers['create/create'] = LogFormatter::class;
+}
+
 if ( $wgPageLanguageUseDB ) {
        $wgLogTypes[] = 'pagelang';
        $wgLogActionsHandlers['pagelang/pagelang'] = PageLangLogFormatter::class;
index 23a5da5..b6213c1 100644 (file)
@@ -836,9 +836,9 @@ class MessageCache {
                                ],
                                [
                                        ' ',
-                                       "\xc2\xa0",
-                                       "\xc2\xa0",
-                                       "\xc2\xad"
+                                       "\u{00A0}",
+                                       "\u{00A0}",
+                                       "\u{00AD}"
                                ],
                                $message
                        );
index 3fb7d8b..d92c215 100644 (file)
@@ -94,7 +94,7 @@ class IcuCollation extends Collation {
                'af' => [],
                'am' => [],
                'ar' => [],
-               'as' => [ "\xe0\xa6\x82", "\xe0\xa6\x81", "\xe0\xa6\x83", "\xe0\xa7\x8e", "ক্ষ " ],
+               'as' => [ "\u{0982}", "\u{0981}", "\u{0983}", "\u{09CE}", "ক্ষ " ],
                'ast' => [ "Ch", "Ll", "Ñ" ], // not in libicu
                'az' => [ "Ç", "Ə", "Ğ", "İ", "Ö", "Ş", "Ü" ],
                'be' => [ "Ё" ],
@@ -144,11 +144,11 @@ class IcuCollation extends Collation {
                'ga' => [],
                'gd' => [], // not in libicu
                'gl' => [ "Ch", "Ll", "Ñ" ],
-               'gu' => [ "\xe0\xaa\x82", "\xe0\xaa\x83", "\xe0\xaa\x81", "\xe0\xaa\xb3" ],
+               'gu' => [ "\u{0A82}", "\u{0A83}", "\u{0A81}", "\u{0AB3}" ],
                'ha' => [ 'Ɓ', 'Ɗ', 'Ƙ', 'Sh', 'Ts', 'Ƴ' ],
                'haw' => [ 'ʻ' ],
                'he' => [],
-               'hi' => [ "\xe0\xa4\x82", "\xe0\xa4\x83" ],
+               'hi' => [ "\u{0902}", "\u{0903}" ],
                'hr' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
                'hsb' => [ "Č", "Dź", "Ě", "Ch", "Ł", "Ń", "Ř", "Š", "Ć", "Ž" ],
                'hu' => [ "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ö", "Sz", "Ty", "Ü", "Zs" ],
@@ -161,13 +161,13 @@ class IcuCollation extends Collation {
                'kk' => [ "Ү", "І" ],
                'kl' => [ "Æ", "Ø", "Å" ],
                'km' => [
-                       "រ", "ឫ", "ឬ", "ល", "ឭ", "ឮ", "\xe1\x9e\xbb\xe1\x9f\x86",
-                       "\xe1\x9f\x86", "\xe1\x9e\xb6\xe1\x9f\x86", "\xe1\x9f\x87",
-                       "\xe1\x9e\xb7\xe1\x9f\x87", "\xe1\x9e\xbb\xe1\x9f\x87",
-                       "\xe1\x9f\x81\xe1\x9f\x87", "\xe1\x9f\x84\xe1\x9f\x87",
+                       "រ", "ឫ", "ឬ", "ល", "ឭ", "ឮ", "\u{17BB}\u{17C6}",
+                       "\u{17C6}", "\u{17B6}\u{17C6}", "\u{17C7}",
+                       "\u{17B7}\u{17C7}", "\u{17BB}\u{17C7}",
+                       "\u{17C1}\u{17C7}", "\u{17C4}\u{17C7}",
                ],
-               'kn' => [ "\xe0\xb2\x81", "\xe0\xb2\x83", "\xe0\xb3\xb1", "\xe0\xb3\xb2" ],
-               'kok' => [ "\xe0\xa4\x82", "\xe0\xa4\x83", "ळ", "क्ष" ],
+               'kn' => [ "\u{0C81}", "\u{0C83}", "\u{0CF1}", "\u{0CF2}" ],
+               'kok' => [ "\u{0902}", "\u{0903}", "ळ", "क्ष" ],
                'ku' => [ "Ç", "Ê", "Î", "Ş", "Û" ], // not in libicu
                'ky' => [ "Ё" ],
                'la' => [], // not in libicu
@@ -181,7 +181,7 @@ class IcuCollation extends Collation {
                'ml' => [],
                'mn' => [],
                'mo' => [ "Ă", "Â", "Î", "Ș", "Ț" ], // not in libicu
-               'mr' => [ "\xe0\xa4\x82", "\xe0\xa4\x83", "ळ", "क्ष", "ज्ञ" ],
+               'mr' => [ "\u{0902}", "\u{0903}", "ळ", "क्ष", "ज्ञ" ],
                'ms' => [],
                'mt' => [ "Ċ", "Ġ", "Għ", "Ħ", "Ż" ],
                'nb' => [ "Æ", "Ø", "Å" ],
@@ -191,8 +191,8 @@ class IcuCollation extends Collation {
                'no' => [ "Æ", "Ø", "Å" ], // not in libicu. You should probably use nb or nn instead.
                'oc' => [], // not in libicu
                'om' => [ 'Ch', 'Dh', 'Kh', 'Ny', 'Ph', 'Sh' ],
-               'or' => [ "\xe0\xac\x81", "\xe0\xac\x82", "\xe0\xac\x83", "କ୍ଷ" ],
-               'pa' => [ "\xe0\xa9\x8d" ],
+               'or' => [ "\u{0B01}", "\u{0B02}", "\u{0B03}", "କ୍ଷ" ],
+               'pa' => [ "\u{0A4D}" ],
                'pl' => [ "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ],
                'pt' => [],
                'rm' => [], // not in libicu
@@ -204,7 +204,7 @@ class IcuCollation extends Collation {
                        'Á', 'Č', 'Ʒ', 'Ǯ', 'Đ', 'Ǧ', 'Ǥ', 'Ǩ', 'Ŋ',
                        'Š', 'Ŧ', 'Ž', 'Ø', 'Æ', 'Ȧ', 'Ä', 'Ö'
                ],
-               'si' => [ "\xe0\xb6\x82", "\xe0\xb6\x83", "\xe0\xb6\xa4" ],
+               'si' => [ "\u{0D82}", "\u{0D83}", "\u{0DA4}" ],
                'sk' => [ "Ä", "Č", "Ch", "Ô", "Š", "Ž" ],
                'sl' => [ "Č", "Š", "Ž" ],
                'smn' => [ "Á", "Č", "Đ", "Ŋ", "Š", "Ŧ", "Ž", "Æ", "Ø", "Å", "Ä", "Ö" ],
@@ -215,12 +215,12 @@ class IcuCollation extends Collation {
                'sv@collation=standard' => [ "Å", "Ä", "Ö" ],
                'sw' => [],
                'ta' => [
-                       "\xE0\xAE\x82", "ஃ", "க்ஷ", "க்", "ங்", "ச்", "ஞ்", "ட்", "ண்", "த்", "ந்",
+                       "\u{0B82}", "ஃ", "க்ஷ", "க்", "ங்", "ச்", "ஞ்", "ட்", "ண்", "த்", "ந்",
                        "ப்", "ம்", "ய்", "ர்", "ல்", "வ்", "ழ்", "ள்", "ற்", "ன்", "ஜ்", "ஶ்", "ஷ்",
                        "ஸ்", "ஹ்", "க்ஷ்"
                ],
-               'te' => [ "\xe0\xb0\x81", "\xe0\xb0\x82", "\xe0\xb0\x83" ],
-               'th' => [ "ฯ", "\xe0\xb9\x86", "\xe0\xb9\x8d", "\xe0\xb8\xba" ],
+               'te' => [ "\u{0C01}", "\u{0C02}", "\u{0C03}" ],
+               'th' => [ "ฯ", "\u{0E46}", "\u{0E4D}", "\u{0E3A}" ],
                'tk' => [ "Ç", "Ä", "Ž", "Ň", "Ö", "Ş", "Ü", "Ý" ],
                'tl' => [ "Ñ", "Ng" ], // not in libicu
                'to' => [ "Ng", "ʻ" ],
@@ -231,8 +231,8 @@ class IcuCollation extends Collation {
                'vi' => [ "Ă", "Â", "Đ", "Ê", "Ô", "Ơ", "Ư" ],
                'vo' => [ "Ä", "Ö", "Ü" ],
                'yi' => [
-                       "\xd7\x91\xd6\xbf", "\xd7\x9b\xd6\xbc", "\xd7\xa4\xd6\xbc",
-                       "\xd7\xa9\xd7\x82", "\xd7\xaa\xd6\xbc"
+                       "\u{05D1}\u{05BF}", "\u{05DB}\u{05BC}", "\u{05E4}\u{05BC}",
+                       "\u{05E9}\u{05C2}", "\u{05EA}\u{05BC}"
                ],
                'yo' => [ "Ẹ", "Gb", "Ọ", "Ṣ" ],
                'zu' => [],
index 284d5dd..f5fd3f2 100644 (file)
@@ -811,7 +811,7 @@ abstract class Installer {
                // with utf8 support, but not unicode property support.
                // check that \p{Zs} (space separators) matches
                // U+3000 (Ideographic space)
-               $regexprop = preg_replace( '/\p{Zs}/u', '', "-\xE3\x80\x80-" );
+               $regexprop = preg_replace( '/\p{Zs}/u', '', "-\u{3000}-" );
                Wikimedia\restoreWarnings();
                if ( $regexd != '--' || $regexprop != '--' ) {
                        $this->showError( 'config-pcre-no-utf8' );
@@ -1107,29 +1107,6 @@ abstract class Installer {
                return true;
        }
 
-       /**
-        * Convert a hex string representing a Unicode code point to that code point.
-        * @param string $c
-        * @return string|false
-        */
-       protected function unicodeChar( $c ) {
-               $c = hexdec( $c );
-               if ( $c <= 0x7F ) {
-                       return chr( $c );
-               } elseif ( $c <= 0x7FF ) {
-                       return chr( 0xC0 | $c >> 6 ) . chr( 0x80 | $c & 0x3F );
-               } elseif ( $c <= 0xFFFF ) {
-                       return chr( 0xE0 | $c >> 12 ) . chr( 0x80 | $c >> 6 & 0x3F ) .
-                               chr( 0x80 | $c & 0x3F );
-               } elseif ( $c <= 0x10FFFF ) {
-                       return chr( 0xF0 | $c >> 18 ) . chr( 0x80 | $c >> 12 & 0x3F ) .
-                               chr( 0x80 | $c >> 6 & 0x3F ) .
-                               chr( 0x80 | $c & 0x3F );
-               } else {
-                       return false;
-               }
-       }
-
        /**
         * Check the libicu version
         */
@@ -1141,8 +1118,8 @@ abstract class Installer {
                 * Note that we use the hex representation to create the code
                 * points in order to avoid any Unicode-destroying during transit.
                 */
-               $not_normal_c = $this->unicodeChar( "FA6C" );
-               $normal_c = $this->unicodeChar( "242EE" );
+               $not_normal_c = "\u{FA6C}";
+               $normal_c = "\u{242EE}";
 
                $useNormalizer = 'php';
                $needsUpdate = false;
index 44b4e30..cfa21f4 100644 (file)
@@ -136,6 +136,7 @@ class MssqlUpdater extends DatabaseUpdater {
                                'patch-externallinks-el_index_60-drop-default.sql' ],
                        [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ],
                        [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ],
+                       [ 'addIndex', 'archive', 'ar_revid_uniq', 'patch-archive-ar_rev_id-unique.sql' ],
                ];
        }
 
index d70edea..476e729 100644 (file)
@@ -356,6 +356,7 @@ class MysqlUpdater extends DatabaseUpdater {
                                'patch-externallinks-el_index_60-drop-default.sql' ],
                        [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ],
                        [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ],
+                       [ 'addIndex', 'archive', 'ar_revid_uniq', 'patch-archive-ar_rev_id-unique.sql' ],
                ];
        }
 
index 965187a..9d2fdc6 100644 (file)
@@ -153,6 +153,7 @@ class OracleUpdater extends DatabaseUpdater {
                        [ 'populateExternallinksIndex60' ],
                        [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ],
                        [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ],
+                       [ 'addIndex', 'archive', 'ar_revid_uniq', 'patch-archive-ar_rev_id-unique.sql' ],
 
                        // KEEP THIS AT THE BOTTOM!!
                        [ 'doRebuildDuplicateFunction' ],
index 49419ea..dc1ffdb 100644 (file)
@@ -582,6 +582,8 @@ class PostgresUpdater extends DatabaseUpdater {
                                'change_tag_tag_id_id',
                                '( ct_tag_id, ct_rc_id, ct_rev_id, ct_log_id )'
                        ],
+                       [ 'addPgIndex', 'archive', 'ar_revid_uniq', '(ar_rev_id)', 'unique' ],
+                       [ 'dropPgIndex', 'archive', 'ar_revid' ], // Probably doesn't exist, but do it anyway.
                ];
        }
 
@@ -959,12 +961,13 @@ END;
                }
        }
 
-       public function addPgIndex( $table, $index, $type ) {
+       public function addPgIndex( $table, $index, $type, $unique = false ) {
                if ( $this->db->indexExists( $table, $index ) ) {
                        $this->output( "...index '$index' on table '$table' already exists\n" );
                } else {
                        $this->output( "Creating index '$index' on table '$table' $type\n" );
-                       $this->db->query( "CREATE INDEX $index ON $table $type" );
+                       $unique = $unique ? 'UNIQUE' : '';
+                       $this->db->query( "CREATE $unique INDEX $index ON $table $type" );
                }
        }
 
index 2b27d37..2a67a0a 100644 (file)
@@ -220,6 +220,7 @@ class SqliteUpdater extends DatabaseUpdater {
                                'patch-externallinks-el_index_60-drop-default.sql' ],
                        [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ],
                        [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ],
+                       [ 'addIndex', 'archive', 'ar_revid_uniq', 'patch-archive-ar_rev_id-unique.sql' ],
                ];
        }
 
index 70714b0..0b99eca 100644 (file)
        "config-license-cc-choose": "Escoyer una llicencia Creative Commons  personalizada",
        "config-email-settings": "Configuración de corréu electrónicu",
        "config-enable-email": "Activar el corréu electrónicu de salida",
-       "config-enable-email-help": "Si quies que'l corréu electrónicu funcione, les [Config-dbsupport-oracle/manual/en/mail.configuration.php preferencies de corréu de PHP] tienen de tar configuraes correutamente.\nSi nun quies les funciones de corréu electrónicu, puedes desactivales equí.",
+       "config-enable-email-help": "Si quies que'l corréu electrónicu funcione, les [https://secure.php.net/manual/en/mail.configuration.php preferencies de corréu de PHP] tienen de tar configuraes correutamente.\nSi nun quies les funciones de corréu electrónicu, puedes desactivales equí.",
        "config-email-user": "Activar el corréu electrónicu ente usuarios",
        "config-logo": "URL del logo:",
        "config-instantcommons": "Activar Instant Commons",
index 7203cae..9ba487c 100644 (file)
        "config-support-info": "MediaWiki supporta le sequente systemas de base de datos:\n\n$1\n\nSi tu non vide hic infra le systema de base de datos que tu tenta usar, alora seque le instructiones ligate hic supra pro activar le supporto.",
        "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] es le systema primari pro MediaWiki e le melio supportate. MediaWiki functiona anque con [{{int:version-db-mariadb-url}} MariaDB] e con [{{int:version-db-percona-url}} Percona Server], le quales es compatibile con MySQL. ([https://secure.php.net/manual/en/mysqli.installation.php Como compilar PHP con supporto de MySQL])",
        "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] es un systema de base de datos popular e open source, alternativa a MySQL. ([https://secure.php.net/manual/en/pgsql.installation.php Como compilar PHP con supporto de PostgreSQL])",
-       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] es un systema de base de datos legier que es multo ben supportate. ([http://www.php.net/manual/en/pdo.installation.php Como compilar PHP con supporto de SQLite], usa PDO)",
-       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] es un banca de datos commercial pro interprisas. ([http://www.php.net/manual/en/oci8.installation.php Como compilar PHP con supporto de OCI8])",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] es un systema de base de datos legier que es multo ben supportate. ([https://secure.php.net/manual/en/pdo.installation.php Como compilar PHP con supporto de SQLite], usa PDO)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] es un banca de datos commercial pro interprisas. ([https://secure.php.net/manual/en/oci8.installation.php Como compilar PHP con supporto de OCI8])",
        "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] es un base de datos de interprisa commercial pro Windows. ([https://secure.php.net/manual/en/sqlsrv.installation.php Como compilar PHP con supporto de SQLSRV])",
        "config-header-mysql": "Configuration de MySQL",
        "config-header-postgres": "Configuration de PostgreSQL",
        "config-nofile": "Le file \"$1\" non poteva esser trovate. Ha illo essite delite?",
        "config-extension-link": "Sapeva tu que tu wiki supporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensiones]?\n\nTu pote explorar le [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensiones per category] o le [https://www.mediawiki.org/wiki/Extension_Matrix matrice de extensiones] pro vider le lista complete de extensiones.",
        "config-skins-screenshots": "$1 (capturas de schermo: $2)",
+       "config-extensions-requires": "$1 (require $2)",
        "config-screenshot": "captura de schermo",
        "mainpagetext": "<strong>MediaWiki ha essite installate.</strong>",
        "mainpagedocfooter": "Consulta le [https://meta.wikimedia.org/wiki/Help:Contents Guida del usator] pro information sur le uso del software wiki.\n\n== Pro initiar ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de configurationes]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ a proposito de MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de diffusion pro annuncios de nove versiones de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducer MediaWiki in tu lingua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Como combatter le spam in tu wiki]"
index acbbf26..b99b0b8 100644 (file)
@@ -84,8 +84,8 @@ class FormatJson {
         *       and U+000D (CR). However, PHP already escapes LF and CR according to RFC 4627.
         */
        private static $badChars = [
-               "\xe2\x80\xa8", // U+2028 LINE SEPARATOR
-               "\xe2\x80\xa9", // U+2029 PARAGRAPH SEPARATOR
+               "\u{2028}", // U+2028 LINE SEPARATOR
+               "\u{2029}", // U+2029 PARAGRAPH SEPARATOR
        ];
 
        /**
index da75ed4..74e8b54 100644 (file)
@@ -179,7 +179,7 @@ class CSSMin {
         * @return string
         */
        public static function serializeStringValue( $value ) {
-               $value = strtr( $value, [ "\0" => "\xEF\xBF\xBD", '\\' => '\\\\', '"' => '\\"' ] );
+               $value = strtr( $value, [ "\0" => "\u{FFFD}", '\\' => '\\\\', '"' => '\\"' ] );
                $value = preg_replace_callback( '/[\x01-\x1f\x7f]/', function ( $match ) {
                        return '\\' . base_convert( ord( $match[0] ), 10, 16 ) . ' ';
                }, $value );
index 5c1f92c..e186279 100644 (file)
@@ -1874,7 +1874,7 @@ class WikiPage implements Page, IDBAccessObject {
        private function doCreate(
                Content $content, $flags, User $user, $summary, array $meta
        ) {
-               global $wgUseRCPatrol, $wgUseNPPatrol;
+               global $wgUseRCPatrol, $wgUseNPPatrol, $wgPageCreationLog;
 
                $status = Status::newGood( [ 'new' => true, 'revision' => null ] );
 
@@ -1950,6 +1950,21 @@ class WikiPage implements Page, IDBAccessObject {
 
                $user->incEditCount();
 
+               if ( $wgPageCreationLog ) {
+                       // Log the page creation
+                       // @TODO: Do we want a 'recreate' action?
+                       $logEntry = new ManualLogEntry( 'create', 'create' );
+                       $logEntry->setPerformer( $user );
+                       $logEntry->setTarget( $this->mTitle );
+                       $logEntry->setComment( $summary );
+                       $logEntry->setTimestamp( $now );
+                       $logEntry->setAssociatedRevId( $revisionId );
+                       $logid = $logEntry->insert();
+                       // Note that we don't publish page creation events to recentchanges
+                       // (i.e. $logEntry->publish()) since this would create duplicate entries,
+                       // one for the edit and one for the page creation.
+               }
+
                $dbw->endAtomic( __METHOD__ );
                $this->mTimestamp = $now;
 
index 0a9e9c8..2b497f6 100644 (file)
@@ -1409,8 +1409,8 @@ class DefaultPreferencesFactory implements PreferencesFactory {
                $pixels = $l10n->msg( 'unit-pixel' )->text();
 
                foreach ( $this->config->get( 'ImageLimits' ) as $index => $limits ) {
-                       // Note: A left-to-right marker (\u200e) is inserted, see T144386
-                       $display = "{$limits[0]}" . json_decode( '"\u200e"' ) . "×{$limits[1]}" . $pixels;
+                       // Note: A left-to-right marker (U+200E) is inserted, see T144386
+                       $display = "{$limits[0]}\u{200E}×{$limits[1]}$pixels";
                        $ret[$display] = $index;
                }
 
index 57ca2f4..55d3462 100644 (file)
@@ -1605,8 +1605,7 @@ abstract class Skin extends ContextSource {
        }
 
        /**
-        * Create a section edit link.  This supersedes editSectionLink() and
-        * editSectionLinkForOther().
+        * Create a section edit link.
         *
         * @param Title $nt The title being linked to (may not be the same as
         *   the current page, if the section is included from a template)
index a2f3128..0b6c165 100644 (file)
@@ -186,7 +186,7 @@ class Licenses extends HTMLFormField {
                        $attribs['selected'] = 'selected';
                }
 
-               $val = str_repeat( /* &nbsp */ "\xc2\xa0", $depth * 2 ) . $text;
+               $val = str_repeat( /* &nbsp */ "\u{00A0}", $depth * 2 ) . $text;
                return str_repeat( "\t", $depth ) . Xml::element( 'option', $attribs, $val ) . "\n";
        }
 
index b60882a..5f07073 100644 (file)
@@ -29,4 +29,10 @@ class EditWatchlistNormalHTMLForm extends OOUIHTMLForm {
                        ? $this->msg( 'blanknamespace' )->escaped()
                        : htmlspecialchars( $this->getContext()->getLanguage()->getFormattedNsText( $namespace ) );
        }
+
+       public function displaySection(
+               $fields, $sectionName = '', $fieldsetIDPrefix = '', &$hasUserVisibleFields = false
+       ) {
+               return parent::displaySection( $fields, $sectionName, 'editwatchlist-', $hasUserVisibleFields );
+       }
 }
index c8a715b..4e93382 100644 (file)
@@ -18,9 +18,9 @@ class RemexCompatFormatter extends HtmlFormatter {
 
        public function __construct( $options = [] ) {
                parent::__construct( $options );
-               $this->attributeEscapes["\xc2\xa0"] = '&#160;';
+               $this->attributeEscapes["\u{00A0}"] = '&#160;';
                unset( $this->attributeEscapes["&"] );
-               $this->textEscapes["\xc2\xa0"] = '&#160;';
+               $this->textEscapes["\u{00A0}"] = '&#160;';
                unset( $this->textEscapes["&"] );
        }
 
index 9d2bdb2..da7bc94 100644 (file)
@@ -154,9 +154,9 @@ class Language {
        /**
         * Unicode directional formatting characters, for embedBidi()
         */
-       static private $lre = "\xE2\x80\xAA"; // U+202A LEFT-TO-RIGHT EMBEDDING
-       static private $rle = "\xE2\x80\xAB"; // U+202B RIGHT-TO-LEFT EMBEDDING
-       static private $pdf = "\xE2\x80\xAC"; // U+202C POP DIRECTIONAL FORMATTING
+       static private $lre = "\u{202A}"; // U+202A LEFT-TO-RIGHT EMBEDDING
+       static private $rle = "\u{202B}"; // U+202B RIGHT-TO-LEFT EMBEDDING
+       static private $pdf = "\u{202C}"; // U+202C POP DIRECTIONAL FORMATTING
 
        /**
         * Directionality test regex for embedBidi(). Matches the first strong directionality codepoint:
@@ -2915,33 +2915,33 @@ class Language {
                        if ( $code < 0xac00 || 0xd7a4 <= $code ) {
                                return $matches[1];
                        } elseif ( $code < 0xb098 ) {
-                               return "\xe3\x84\xb1";
+                               return "\u{3131}";
                        } elseif ( $code < 0xb2e4 ) {
-                               return "\xe3\x84\xb4";
+                               return "\u{3134}";
                        } elseif ( $code < 0xb77c ) {
-                               return "\xe3\x84\xb7";
+                               return "\u{3137}";
                        } elseif ( $code < 0xb9c8 ) {
-                               return "\xe3\x84\xb9";
+                               return "\u{3139}";
                        } elseif ( $code < 0xbc14 ) {
-                               return "\xe3\x85\x81";
+                               return "\u{3141}";
                        } elseif ( $code < 0xc0ac ) {
-                               return "\xe3\x85\x82";
+                               return "\u{3142}";
                        } elseif ( $code < 0xc544 ) {
-                               return "\xe3\x85\x85";
+                               return "\u{3145}";
                        } elseif ( $code < 0xc790 ) {
-                               return "\xe3\x85\x87";
+                               return "\u{3147}";
                        } elseif ( $code < 0xcc28 ) {
-                               return "\xe3\x85\x88";
+                               return "\u{3148}";
                        } elseif ( $code < 0xce74 ) {
-                               return "\xe3\x85\x8a";
+                               return "\u{314A}";
                        } elseif ( $code < 0xd0c0 ) {
-                               return "\xe3\x85\x8b";
+                               return "\u{314B}";
                        } elseif ( $code < 0xd30c ) {
-                               return "\xe3\x85\x8c";
+                               return "\u{314C}";
                        } elseif ( $code < 0xd558 ) {
-                               return "\xe3\x85\x8d";
+                               return "\u{314D}";
                        } else {
-                               return "\xe3\x85\x8e";
+                               return "\u{314E}";
                        }
                } else {
                        return '';
@@ -3088,8 +3088,8 @@ class Language {
         * @return string
         */
        function getDirMark( $opposite = false ) {
-               $lrm = "\xE2\x80\x8E"; # LEFT-TO-RIGHT MARK, commonly abbreviated LRM
-               $rlm = "\xE2\x80\x8F"; # RIGHT-TO-LEFT MARK, commonly abbreviated RLM
+               $lrm = "\u{200E}"; # LEFT-TO-RIGHT MARK, commonly abbreviated LRM
+               $rlm = "\u{200F}"; # RIGHT-TO-LEFT MARK, commonly abbreviated RLM
                if ( $opposite ) {
                        return $this->isRTL() ? $lrm : $rlm;
                }
index 3d0ee8e..af844ee 100644 (file)
@@ -29,8 +29,8 @@ namespace MediaWiki\Languages\Data;
  * 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.
+ * \u{200E} is the left-to-right marker and
+ * \u{200F} is the right-to-left marker.
  * They are required for ensuring the correct display of brackets in
  * mixed rtl/ltr environment.
  *
@@ -88,8 +88,8 @@ class Names {
                'bcc' => 'جهلسری بلوچی', # Southern Balochi
                'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
                'be' => 'беларуская', # Belarusian normative
-               'be-tarask' => "беларуская (тарашкевіца)\xE2\x80\x8E", # Belarusian in Taraskievica orthography
-               'be-x-old' => "беларуская (тарашкевіца)\xE2\x80\x8E", # (be-tarask compat)
+               'be-tarask' => "беларуская (тарашкевіца)\u{200E}", # Belarusian in Taraskievica orthography
+               'be-x-old' => "беларуская (тарашкевіца)\u{200E}", # (be-tarask compat)
                'bg' => 'български', # Bulgarian
                'bgn' => 'روچ کپتین بلوچی', # Western Balochi
                'bh' => 'भोजपुरी', # Bihari macro language. Falls back to Bhojpuri (bho)
@@ -122,8 +122,8 @@ class Names {
                'cps' => 'Capiceño', # Capiznon
                'cr' => 'Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ', # Cree
                'crh' => 'qırımtatarca', # Crimean Tatar (multiple scripts - defaults to Latin)
-               'crh-latn' => "qırımtatarca (Latin)\xE2\x80\x8E", # Crimean Tatar (Latin)
-               'crh-cyrl' => "къырымтатарджа (Кирилл)\xE2\x80\x8E", # Crimean Tatar (Cyrillic)
+               'crh-latn' => "qırımtatarca (Latin)\u{200E}", # Crimean Tatar (Latin)
+               'crh-cyrl' => "къырымтатарджа (Кирилл)\u{200E}", # Crimean Tatar (Cyrillic)
                'cs' => 'čeština', # Czech
                'csb' => 'kaszëbsczi', # Cassubian
                'cu' => 'словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ', # Old Church Slavonic (ancient language)
@@ -133,7 +133,7 @@ class Names {
                'de' => 'Deutsch', # German ("Du")
                'de-at' => 'Österreichisches Deutsch', # Austrian German
                'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
-               'de-formal' => "Deutsch (Sie-Form)\xE2\x80\x8E", # German - formal address ("Sie")
+               'de-formal' => "Deutsch (Sie-Form)\u{200E}", # German - formal address ("Sie")
                'din' => 'Thuɔŋjäŋ', # Dinka
                'diq' => 'Zazaki', # Zazaki
                'dsb' => 'dolnoserbski', # Lower Sorbian
@@ -150,7 +150,7 @@ class Names {
                'en-gb' => 'British English', # British English
                'eo' => 'Esperanto', # Esperanto
                'es' => 'español', # Spanish
-               'es-formal' => "español (formal)\xE2\x80\x8E", # Spanish formal address
+               'es-formal' => "español (formal)\u{200E}", # Spanish formal address
                'et' => 'eesti', # Estonian
                'eu' => 'euskara', # Basque
                'ext' => 'estremeñu', # Extremaduran
@@ -170,8 +170,8 @@ class Names {
                'ga' => 'Gaeilge', # Irish
                'gag' => 'Gagauz', # Gagauz
                'gan' => '贛語', # Gan (multiple scripts - defaults to Traditional)
-               'gan-hans' => "赣语(简体)\xE2\x80\x8E", # Gan (Simplified Han)
-               'gan-hant' => "贛語(繁體)\xE2\x80\x8E", # Gan (Traditional Han)
+               'gan-hans' => "赣语(简体)\u{200E}", # Gan (Simplified Han)
+               'gan-hant' => "贛語(繁體)\u{200E}", # Gan (Traditional Han)
                'gcr' => 'kréyòl gwiyanè', # Guianan Creole
                'gd' => 'Gàidhlig', # Scots Gaelic
                'gl' => 'galego', # Galician
@@ -200,7 +200,7 @@ class Names {
                'hsb' => 'hornjoserbsce', # Upper Sorbian
                'ht' => 'Kreyòl ayisyen', # Haitian Creole French
                'hu' => 'magyar', # Hungarian
-               'hu-formal' => "magyar (formal)\xE2\x80\x8E", # Hungarian formal address
+               'hu-formal' => "magyar (formal)\u{200E}", # Hungarian formal address
                'hy' => 'Հայերեն', # Armenian
                'hz' => 'Otsiherero', # Herero
                'ia' => 'interlingua', # Interlingua (IALA)
@@ -234,12 +234,12 @@ class Names {
                'kiu' => 'Kırmancki', # Kirmanjki
                'kj' => 'Kwanyama', # Kwanyama
                'kk' => 'қазақша', # Kazakh (multiple scripts - defaults to Cyrillic)
-               '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)
+               'kk-arab' => "قازاقشا (تٴوتە)\u{200F}", # Kazakh Arabic
+               'kk-cyrl' => "қазақша (кирил)\u{200E}", # Kazakh Cyrillic
+               'kk-latn' => "qazaqşa (latın)\u{200E}", # Kazakh Latin
+               'kk-cn' => "قازاقشا (جۇنگو)\u{200F}", # Kazakh (China)
+               'kk-kz' => "қазақша (Қазақстан)\u{200E}", # Kazakh (Kazakhstan)
+               'kk-tr' => "qazaqşa (Türkïya)\u{200E}", # Kazakh (Turkey)
                'kl' => 'kalaallisut', # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
                'km' => 'ភាសាខ្មែរ', # Khmer, Central
                'kn' => 'ಕನ್ನಡ', # Kannada
@@ -256,8 +256,8 @@ class Names {
                'ks-deva' => 'कॉशुर', # Kashmiri (Devanagari script)
                'ksh' => 'Ripoarisch', # Ripuarian
                'ku' => 'kurdî', # Kurdish (multiple scripts - defaults to Latin)
-               '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)
+               'ku-latn' => "kurdî (latînî)\u{200E}", # Northern Kurdish (Latin script)
+               'ku-arab' => "كوردي (عەرەبی)\u{200F}", # Northern Kurdish (Arabic script) (falls back to ckb)
                'kum' => 'къумукъ', # Kumyk (Cyrillic, 'kum-latn' for Latin script)
                'kv' => 'коми', # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
                'kw' => 'kernowek', # Cornish
@@ -318,7 +318,7 @@ class Names {
                'ng' => 'Oshiwambo', # Ndonga
                'niu' => 'Niuē', # Niuean
                'nl' => 'Nederlands', # Dutch
-               'nl-informal' => "Nederlands (informeel)\xE2\x80\x8E", # Dutch (informal address ("je"))
+               'nl-informal' => "Nederlands (informeel)\u{200E}", # Dutch (informal address ("je"))
                'nn' => 'norsk nynorsk', # Norwegian (Nynorsk)
                'no' => 'norsk', # Norwegian macro language (falls back to nb).
                'nov' => 'Novial', # Novial
@@ -401,8 +401,8 @@ class Names {
                'so' => 'Soomaaliga', # Somali
                'sq' => 'shqip', # Albanian
                'sr' => 'српски / srpski', # Serbian (multiple scripts - defaults to Cyrillic)
-               'sr-ec' => "српски (ћирилица)\xE2\x80\x8E", # Serbian Cyrillic ekavian
-               'sr-el' => "srpski (latinica)\xE2\x80\x8E", # Serbian Latin ekavian
+               'sr-ec' => "српски (ћирилица)\u{200E}", # Serbian Cyrillic ekavian
+               'sr-el' => "srpski (latinica)\u{200E}", # Serbian Latin ekavian
                'srn' => 'Sranantongo', # Sranan Tongo
                'ss' => 'SiSwati', # Swati
                'st' => 'Sesotho', # Southern Sotho
@@ -471,15 +471,15 @@ class Names {
                'zea' => 'Zeêuws', # Zeeuws/Zeaws
                'zh' => '中文', # (Zhōng Wén) - Chinese
                'zh-classical' => '文言', # Classical Chinese/Literary Chinese -- (see T10217)
-               '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-cn' => "中文(中国大陆)\u{200E}", # Chinese (PRC)
+               'zh-hans' => "中文(简体)\u{200E}", # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
+               'zh-hant' => "中文(繁體)\u{200E}", # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
+               'zh-hk' => "中文(香港)\u{200E}", # Chinese (Hong Kong)
                'zh-min-nan' => 'Bân-lâm-gú', # Min-nan -- (see T10217)
-               '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-mo' => "中文(澳門)\u{200E}", # Chinese (Macau)
+               'zh-my' => "中文(马来西亚)\u{200E}", # Chinese (Malaysia)
+               'zh-sg' => "中文(新加坡)\u{200E}", # Chinese (Singapore)
+               'zh-tw' => "中文(台灣)\u{200E}", # Chinese (Taiwan)
                'zh-yue' => '粵語', # Cantonese -- (see T10217)
                'zu' => 'isiZulu' # Zulu
        ];
index 1ae6538..bef9f04 100644 (file)
        "logempty": "No bi ha garra elemento en o rechistro con ixas carauteristicas.",
        "log-title-wildcard": "Mirar títols que prencipien con iste texto",
        "allpages": "Todas as pachinas",
-       "nextpage": "Siguient pachina ($1)",
+       "nextpage": "Pachina siguient ($1)",
        "prevpage": "Pachina anterior ($1)",
        "allpagesfrom": "Amostrar as pachinas que prencipien por:",
        "allpagesto": "Amostrar as pachinas que rematen en:",
index ba3b759..a5ff32b 100644 (file)
        "protectedtitles-submit": "Amosar títulos",
        "listusers": "Llista d'usuarios",
        "listusers-editsonly": "Amosar namái usuarios con ediciones",
+       "listusers-temporarygroupsonly": "Amosar solo usuarios en grupos d'usuariu temporales",
        "listusers-creationsort": "Ordenar por data de creación",
        "listusers-desc": "Ordenar n'orde descendente",
        "usereditcount": "$1 {{PLURAL:$1|edición|ediciones}}",
        "dellogpage": "Rexistru de desanicios",
        "dellogpagetext": "Más abaxo ta la llista de los desanicios más recién.",
        "deletionlog": "rexistru de desanicios",
+       "log-name-create": "Rexistru de creación de páxines",
+       "log-description-create": "Más abaxo ta la llista de les creaciones de páxines más recién.",
+       "logentry-create-create": "$1 {{GENDER:$2|creó}} la páxina $3",
        "reverted": "Revertida a una revisión anterior",
        "deletecomment": "Motivu:",
        "deleteotherreason": "Motivu distintu/adicional:",
        "whatlinkshere": "Lo qu'enllaza equí",
        "whatlinkshere-title": "Páxines qu’enllacien a «$1»",
        "whatlinkshere-page": "Páxina:",
-       "linkshere-2": "Les páxines siguientes enllacien a '''$2''':",
-       "nolinkshere-2": "Nenguna páxina enllaza a '''$2'''.",
+       "linkshere-2": "Les páxines siguientes enllacien a <strong>$2</strong>:",
+       "nolinkshere-2": "Nenguna páxina enllaza a <strong>$2</strong>.",
        "nolinkshere-ns-2": "Nenguna páxina enllaza con <strong>$2</strong> nel espaciu de nomes escoyíu.",
        "isredirect": "páxina de redireición",
        "istemplate": "tresclusión",
        "pagedata-text": "Esta páxina ufre una interfaz de datos pa les páxines. Escribe'l títulu de la páxina na URL, usando la sintaxis de subpáxina.\n* Aplícase la negociación de conteníu en base a la testera Accept del to cliente. Esto significa que los datos de la páxina van dase nel formatu que prefiera'l to cliente.",
        "pagedata-not-acceptable": "Nun s'alcontró nengún formatu que coincidiera. Tipos MIME soportaos: $1",
        "pagedata-bad-title": "Títulu inválidu: $1.",
-       "unregistered-user-config": "Por motivos de seguridá, les subpáxines d'usuariu JavaScript, CSS y JSON nun pueden cargase pa usuarios ensin rexistrar."
+       "unregistered-user-config": "Por motivos de seguridá, les subpáxines d'usuariu JavaScript, CSS y JSON nun pueden cargase pa usuarios ensin rexistrar.",
+       "passwordpolicies": "Polítiques pa les contraseñes",
+       "passwordpolicies-summary": "Esta ye una llista de polítiques de contraseñes efeutives pa los grupos d'usuarios definíos nesta wiki.",
+       "passwordpolicies-group": "Grupu",
+       "passwordpolicies-policies": "Polítiques",
+       "passwordpolicies-policy-minimalpasswordlength": "La contraseña tien de tener polo menos {{PLURAL:$1|1 caráuter|$1 caráuteres}}.",
+       "passwordpolicies-policy-minimumpasswordlengthtologin": "La contraseña tien de tener polo menos {{PLURAL:$1|1 caráuter|$1 caráuteres}} pa poder aniciar sesión",
+       "passwordpolicies-policy-passwordcannotmatchusername": "La contraseña nun puede ser la mesma que'l nome d'usuariu",
+       "passwordpolicies-policy-passwordcannotmatchblacklist": "La contraseña nun puede casar con contraseñes torgaes específicamente",
+       "passwordpolicies-policy-maximalpasswordlength": "La llonxitú de la contraseña tien de ser menor que {{PLURAL:$1|1 caráuter|$1 caráuteres}}",
+       "passwordpolicies-policy-passwordcannotbepopular": "La contraseña nun puede {{PLURAL:$1|ser la contraseña más popular|tar na llista de $1 contraseñes populares}}"
 }
index cbfa950..5fec93c 100644 (file)
        "minlength1": "Назва файлу павінна ўтрымліваць хаця б адну літару.",
        "illegalfilename": "Назва файлу «$1» зьмяшчае сымбалі, якія нельга выкарыстоўваць у назвах старонак. Калі ласка, зьмяніце назву файлу і паспрабуйце загрузіць яго зноў.",
        "filename-toolong": "Назвы файлаў ня могуць быць даўжэй за 240 байтаў.",
-       "badfilename": "Назва файла была зьмененая на «$1».",
-       "filetype-mime-mismatch": "Пашырэньне файла «.$1» не адпавядае выяўленаму MIME-тыпу файла ($2).",
+       "badfilename": "Назва файлу была зьмененая на «$1».",
+       "filetype-mime-mismatch": "Пашырэньне файлу «.$1» не адпавядае выяўленаму MIME-тыпу файлу ($2).",
        "filetype-badmime": "Загрузка файлаў тыпу MIME «$1» забароненая.",
        "filetype-bad-ie-mime": "Немагчыма загрузіць гэты файл, таму што Internet Explorer вызначыў яго як «$1», што азначае, што тып гэтага файла забаронены і патэнцыяльна небясьпечны.",
        "filetype-unwanted-type": "<strong>«.$1»</strong> — непажаданы тып файла.\n{{PLURAL:$3|1=Пажаданым тыпам файла зьяўляецца|Пажаданымі тыпамі файлаў зьяўляюцца:}} $2.",
        "dellogpage": "Журнал выдаленьняў",
        "dellogpagetext": "Сьпіс апошніх выдаленьняў.",
        "deletionlog": "журнал выдаленьняў",
+       "log-name-create": "Журнал стварэньня старонак",
+       "log-description-create": "Ніжэй знаходзіцца сьпіс апошніх стварэньняў старонак.",
        "reverted": "Вернутая да папярэдняй вэрсіі",
        "deletecomment": "Прычына:",
        "deleteotherreason": "Іншая/дадатковая прычына:",
index 180ecd5..a9d34df 100644 (file)
@@ -5,6 +5,57 @@
                        "Apundung"
                ]
        },
+       "tog-underline": "Garis torui pranala:",
+       "tog-hideminor": "Bunion editan namenek i parubaan tarbaru",
+       "tog-hidepatrolled": "Bunion editan tarpatroli parubaan tarbaru",
+       "tog-newpageshidepatrolled": "Bunion alaman tarpatroli tingon daftar alaman baru",
+       "tog-hidecategorization": "Bunion pangkatagorian alaman",
+       "tog-extendwatchlist": "Kombangkon daftar pamataan tuna patidaon sude parubaan, inda umna tarbaru",
+       "tog-usenewrc": "Kalompokkon editan i tampilan parubaan tarbaru dot daftar pamataan mardasorkon alaman",
+       "tog-numberheadings": "Len nomor judul sacara otomatis",
+       "tog-showtoolbar": "Tampilkon bilah alat pangeditan",
+       "tog-editondblclick": "Pature alaman dohot klik ganda",
+       "tog-editsectiononrightclick": "Fungsion pangeditan bagian dohot mangklik siamun i judul bagian",
+       "tog-watchcreations": "Tambaon alaman na ubaen dot berkas na uunggah tu daftar pamataan",
+       "tog-watchdefault": "Tambaon alaman na upature tu daftar pamataan",
+       "tog-watchmoves": "Tambaon alaman na upapindah tu daftar pamataan",
+       "tog-watchdeletion": "Tambaon alaman na uapus tu daftar pantauan",
+       "tog-watchuploads": "Tambaon berkas baru nauunggah tu daftar pamataan",
+       "tog-watchrollback": "Tambaon alaman na unjung ubaen mulak tu bagasan daftar pamataanku",
+       "tog-minordefault": "Partando sude editan manjadi editan namenek sacara baku",
+       "tog-previewontop": "Patidaon pratayang dompakso kotak edit dot inda sidungi",
+       "tog-previewonfirst": "Patidaon pratayang i suntingan parjolo",
+       "tog-enotifwatchlistpages": "Kirimkon tuau surel molo sada alaman sanga berkas na u pamatai maruba",
+       "tog-enotifusertalkpages": "Kirimkon jau surel molo alaman parkobaranku maruba",
+       "tog-enotifminoredits": "Kirimkon jau surel juo i parubaan namenek",
+       "tog-enotifrevealaddr": "Tampilkon alamat surelku i surel notifikasi",
+       "tog-shownumberswatching": "Patidaon bahat ni namamatai",
+       "tog-oldsig": "Tekenanmu namadung adong:",
+       "tog-fancysig": "Baen tekenan manjadi teks wiki (indapake pranala otomatis)",
+       "tog-uselivepreview": "Tampilkon pratayang indapake mamuat mulak alaman",
+       "tog-forceeditsummary": "Paingot au molo kotak ringkasan editan nakosong dope",
+       "tog-watchlisthideown": "Bunion editanku i daftar pamataan",
+       "tog-watchlisthidebots": "Bunion editan bot idaftar pantauan",
+       "tog-watchlisthideminor": "Bunion editan namenek tingon pamataan",
+       "tog-watchlisthideliu": "Bunion suntingan masuk log tingon pamataan",
+       "tog-watchlistreloadautomatically": "Muat mulak daftar pamataan sacara otomatis atia sada tapis maruba (JavaScript iporluon)",
+       "tog-watchlistunwatchlinks": "Tambaon pananda pamatai/apus pamataan tu alaman na imatai na maruba (JavaScript iporluon tu manggonti fungsi on)",
+       "tog-watchlisthideanons": "Bunion editan pamake anonim i daftar pamataan",
+       "tog-watchlisthidepatrolled": "Bunion editan tarpatroli i daftar pantauan",
+       "tog-watchlisthidecategorization": "Bunion pangkatagorian alaman",
+       "tog-ccmeonemails": "Kirimkon jau salinan surel nau kirimkon tu alak nalain",
+       "tog-diffonly": "Ulang patidaon isi alaman i toru parbedaan editan",
+       "tog-showhiddencats": "Patidaon kategori namonjap",
+       "tog-norollbackdiff": "Nangkon patidaon parbedaan sidung mambaen paulakan",
+       "tog-useeditwarning": "Ingotkon au molo maninggalkon alaman pangeditan dompak so manyimpan parubaan",
+       "tog-prefershttps": "Totop pake sambungan aman atia masuk log",
+       "underline-always": "Totop",
+       "underline-never": "Inda unjung",
+       "underline-default": "Ulit sanga pangaraun naiobanna",
+       "editfont-style": "Gaya tulisan komputer i kotak pangeditan:",
+       "editfont-monospace": "Tulisan Monospace",
+       "editfont-sansserif": "Tulisan Sans-serif",
+       "editfont-serif": "Tulisan Serif",
        "sunday": "Akad",
        "monday": "Sinayan",
        "tuesday": "Salasa",
        "oct": "Okt",
        "nov": "Nov",
        "dec": "Des",
+       "january-date": "$1 Januari",
+       "february-date": "$1 Februari",
+       "march-date": "$1 Maret",
+       "april-date": "$1 April",
+       "may-date": "$1 Mei",
+       "june-date": "$1 Juni",
+       "july-date": "$1 Juli",
+       "august-date": "$1 Agustus",
+       "september-date": "$1 September",
+       "october-date": "$1 Oktober",
+       "november-date": "$1 November",
+       "december-date": "$1 Desember",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Category|Kategori}}",
        "category_header": "Alaman i kategori \"$1\"",
        "subcategories": "Subkategori",
        "category-media-header": "Media i kategori \"$1\"",
        "category-empty": "<em>Kategori on sonnari indadong alaman dot media.</em>",
        "hidden-categories": "{{PLURAL:$1|Hidden category|Kategori monjap}}",
+       "hidden-category-category": "Kategori namonjap",
        "category-subcat-count": "{{PLURAL:$2|Kategori on umna puna subkategori ima.|Kategori on puna ima {{PLURAL:$1|subkategori|$1 subkategori}}, tingon bahat $2.}}",
+       "category-subcat-count-limited": "Kategori on puna {{PLURAL:$1|$1 subkategori}} on.",
        "category-article-count": "{{PLURAL:$2|Kategori on umna marisi alaman ima.|Onma{{PLURAL:$1|alaman ima|$1 alaman}} i kategori on, tingon bahat $2.}}",
+       "category-article-count-limited": "Kategori on puna {{PLURAL:$1|$1 alaman}} onma.",
        "category-file-count": "{{PLURAL:$2|Kategori on umna marisi alaman ima.|Onma{{PLURAL:$1|alaman ima|$1 alaman}} i kategori on, tingon bahat $2.}}",
        "listingcontinuesabbrev": "Sat",
+       "index-category": "Alaman na iindeks",
        "noindex-category": "Alaman naso tarindeks",
        "broken-file-category": "Alaman dot link berkas sega",
        "about": "Satontang",
+       "article": "Isi nialaman",
        "newwindow": "(bukak i tingkap nabaru)",
        "cancel": "Antai",
+       "moredotdotdot": "Lainna...",
+       "morenotlisted": "Daftar on mungkin inda singkop",
+       "mypage": "Alaman",
        "mytalk": "Dokon",
+       "anontalk": "Obar",
        "navigation": "Navigasi",
        "and": "&#32;dot",
+       "faq": "FAQ",
        "namespaces": "Ruang gorar",
        "variants": "Mocoman",
        "navigation-heading": "Menu Navigasi",
+       "errorpagetitle": "Sega",
        "returnto": "Keimulak tu $1",
        "tagline": "Tingon {{SITENAME}}",
        "help": "Tolong",
        "search": "Jalaki",
+       "search-ignored-headings": "# <pre>\n# Judul na angkan ipatopi ni panjalakan.\n# Editan on nangkan iterapkon sidung alaman dohot judul on iindeks.\n# Amu bisa mamaksaon pangindekskan mulak alaman on dohot mambaen editan kosong (''null edit'')\n# Sintaksisna ima songon onma:\n#   * Sudena tingon karakter \"#\" tu ujung baris ima sada komentar.\n#   * Satiop baris naso-kosong ima judul pas na angkan ipatopi\nReferensi\nPranala luar\nLigin muse\n #</pre>",
        "searchbutton": "Jalaki",
+       "go": "Kehe",
        "searcharticle": "Kehe",
        "history": "Sejarah alaman",
        "history_short": "Sejarah",
+       "history_small": "sejarah",
+       "updatedmarker": "Iuba sian parabisan uligi",
        "printableversion": "Versi cetak",
        "permalink": "Tautan permanen",
+       "print": "Cetak",
        "view": "Sise",
        "view-foreign": "Sise i $1",
        "edit": "Pature",
+       "edit-local": "Baen deskeipsi lokal",
        "create": "Baen",
        "create-local": "Baen deskripsi lokal",
        "delete": "Apus",
index 6e158c1..dfa2d9c 100644 (file)
        "dellogpage": "Kniha smazaných stránek",
        "dellogpagetext": "Zde je seznam posledních smazaných stránek.",
        "deletionlog": "Kniha smazaných stránek",
+       "log-name-create": "Kniha vytvoření stránek",
+       "log-description-create": "Níže se nachází seznam posledních vyvořených stránek.",
+       "logentry-create-create": "$1 {{GENDER:$2|vytvořil|vytvořila|vytvořil(a)}} stránku $3",
        "reverted": "Obnovení předchozí verze",
        "deletecomment": "Důvod:",
        "deleteotherreason": "Jiný/další důvod:",
        "pagedata-text": "Tato stránka poskytuje datové rozhraní ke stránkám. Uveďte prosím název stránky v URL pomocí syntaxe pro podstránky.\n* Funguje dohadování o obsahu na základě hlavičky Accept vašeho klienta. To znamená, že data stránky budou poskytnuta ve formátu preferovaném vaším klientem.",
        "pagedata-not-acceptable": "Nenalezen odpovídající formát. Podporované MIME typy: $1",
        "pagedata-bad-title": "Neplatný název: $1.",
-       "unregistered-user-config": "Z bezpečnostních důvodů nelze načítat uživatelské podstránky s JavaScriptem, CSS nebo JSONem u neregistrovaných uživatelů."
+       "unregistered-user-config": "Z bezpečnostních důvodů nelze načítat uživatelské podstránky s JavaScriptem, CSS nebo JSONem u neregistrovaných uživatelů.",
+       "passwordpolicies-group": "Skupina",
+       "passwordpolicies-policy-minimalpasswordlength": "Heslo musí být alespoň {{PLURAL:$1|$1 znak|$1 znaky|$1 znaků}} dlouhé",
+       "passwordpolicies-policy-minimumpasswordlengthtologin": "Pro přihlášení je vyžadováno alespoň {{PLURAL:$1|$1 znak|$1 znaky|$1 znaků}} dlouhé heslo",
+       "passwordpolicies-policy-passwordcannotmatchusername": "Heslo se nemůže shodovat s uživatelským jménem",
+       "passwordpolicies-policy-passwordcannotmatchblacklist": "Heslo nesmí být v seznamu určitých zakázaných hesel",
+       "passwordpolicies-policy-maximalpasswordlength": "Heslo musí být kratší než {{PLURAL:$1|$1 znak|$1 znaky|$1 znaků}}",
+       "passwordpolicies-policy-passwordcannotbepopular": "Heslo nesmí být {{PLURAL:$1|dané oblíbené heslo|v seznamu $1 oblíbených hesel}}"
 }
index 76f7fdc..e043517 100644 (file)
        "recentchanges-submit": "Кăтарт",
        "rcfilters-legend-heading": "<strong>Кĕскетнисем:</strong>",
        "rcfilters-other-review-tools": "Урăх пăхмаллисем",
+       "rcfilters-show-new-changes": "Çĕнĕ улăшăннисем",
        "rcfilters-filterlist-title": "Фильтрсем",
        "rcfilters-filter-editsbyself-label": "Хăвăр улăштарнисем",
        "rcfilters-filter-editsbyother-label": "Урăххисем улăштарнисем",
index ab7e2ec..fa9859e 100644 (file)
        "dellogpage": "Lösch-Logbuch",
        "dellogpagetext": "Dies ist das Logbuch der gelöschten Seiten und Dateien.",
        "deletionlog": "Lösch-Logbuch",
+       "log-name-create": "Seitenerstellungs-Logbuch",
+       "log-description-create": "Es folgt eine Liste der letzten Seitenerstellungen.",
+       "logentry-create-create": "$1 hat die Seite $3 {{GENDER:$2|erstellt}}",
        "reverted": "Auf eine alte Version zurückgesetzt",
        "deletecomment": "Grund:",
        "deleteotherreason": "Anderer/ergänzender Grund:",
index ce92179..e2a5941 100644 (file)
        "dellogpage": "Αρχείο καταγραφών διαγραφών",
        "dellogpagetext": "Λίστα των πιο πρόσφατων διαγραφών",
        "deletionlog": "Καταγραφές διαγραφών",
+       "log-name-create": "Αρχείο καταγραφών δημιουργίας σελίδων",
+       "log-description-create": "Παρακάτω υπάρχει ένας κατάλογος των πιο πρόσφατων δημιουργιών σελίδας.",
        "reverted": "Επαναφορά σε προηγούμενη αναθεώρηση",
        "deletecomment": "Λόγος:",
        "deleteotherreason": "Άλλος/πρόσθετος λόγος:",
index 37a682d..8add41f 100644 (file)
        "dellogpage": "Deletion log",
        "dellogpagetext": "Below is a list of the most recent deletions.",
        "deletionlog": "deletion log",
+       "log-name-create": "Page creation log",
+       "log-description-create": "Below is a list of the most recent page creations.",
+       "logentry-create-create": "$1 {{GENDER:$2|created}} page $3",
        "reverted": "Reverted to earlier revision",
        "deletecomment": "Reason:",
        "deleteotherreason": "Other/additional reason:",
index 3bcbe3c..da17ec0 100644 (file)
        "whatlinkshere": "Ligiloj ĉi tien",
        "whatlinkshere-title": "Paĝoj ligantaj al \"$1\"",
        "whatlinkshere-page": "Paĝo:",
-       "linkshere-2": "La jenaj paĝoj ligas al '''$2''':",
-       "nolinkshere-2": "Neniu paĝo ligas al '''$2'''.",
+       "linkshere-2": "La jenaj paĝoj ligas al <strong>$2</strong>:",
+       "nolinkshere-2": "Neniu paĝo ligas al <strong>$2</strong>.",
        "nolinkshere-ns-2": "Neniuj paĝoj ligas al '''$2''' en la elektita nomspaco.",
        "isredirect": "alidirektilo",
        "istemplate": "inkludo",
index eb198d7..b29c8f2 100644 (file)
        "dellogpage": "Registro de borrados",
        "dellogpagetext": "A continuación se muestra una lista de los borrados más recientes.",
        "deletionlog": "registro de borrados",
+       "log-name-create": "Registro de creación de páginas",
+       "log-description-create": "La siguiente es una lista de las páginas creadas recientemente.",
+       "logentry-create-create": "$1 {{GENDER:$2|creó}} la página $3",
        "reverted": "Revertido a una revisión anterior",
        "deletecomment": "Motivo:",
        "deleteotherreason": "Otro motivo:",
index 4c69684..4bd471b 100644 (file)
        "customcssprotected": "Ez duzu baimenik CSS orrialde hau aldatzeko beste erabiltzaile baten hobespen pertsonalak dituelako.",
        "customjsprotected": "Ez duzu baimenik JavaScript orrialde hau aldatzeko beste erabiltzaile baten hobespen pertsonalak dituelako.",
        "mycustomcssprotected": "Ez duzu baimenik CSS orrialde hau aldatzeko.",
+       "mycustomjsonprotected": "Ez duzu baimenik JSON orrialde hau aldatzeko.",
        "mycustomjsprotected": "Ez duzu baimentik JavaScript orrialdea aldatzeko.",
        "myprivateinfoprotected": "Ez duzu eskumenik zure informazio pribatua aldatzeko.",
        "mypreferencesprotected": "Ez daukazu eskumenik zure hobespenak aldatzeko.",
index 42dc32d..2a6817f 100644 (file)
        "dellogpage": "Journal des suppressions",
        "dellogpagetext": "Voici la liste des suppressions les plus récentes.",
        "deletionlog": "journal des suppressions",
+       "log-name-create": "Journal des créations de pages",
+       "log-description-create": "Ci-dessous, la liste des dernières créations de pages.",
+       "logentry-create-create": "$1 {{GENDER:$2|a créé}} la page $3",
        "reverted": "Version précédente rétablie",
        "deletecomment": "Motif :",
        "deleteotherreason": "Motif autre ou supplémentaire :",
index a9a70f9..9bd0e32 100644 (file)
        "subject-preview": "Vista previa do asunto:",
        "previewerrortext": "Produciuse un erro ao intentar previsualizar os cambios.",
        "blockedtitle": "O usuario está bloqueado",
-       "blockedtext": "<strong>Bloqueouse o seu nome de usuario ou enderezo IP.</strong>\n\n$1 estableceu o bloqueo.\nO motivo que achegou foi <em>$2</em>.\n\n* Inicio do bloqueo: $8\n* Caducidade do bloqueo: $6\n* Pretendeuse bloquear: $7\n\nPode contactar con $1 ou con calquera outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir este bloqueo.\nNon pode empregar a característica \"Enviar un correo electrónico a este usuario\" a non ser que dispoña dun enderezo electrónico válido rexistrado nas súas [[Special:Preferences|preferencias de usuario]] e que o seu uso non fose bloqueado.\nO seu enderezo IP actual é $3 e o identificador do bloqueo é #$5.\nPor favor, inclúa todos estes datos nas consultas que faga.",
-       "autoblockedtext": "O seu enderezo IP foi bloqueado automaticamente porque foi empregado por outro usuario que foi bloqueado por $1.\nA razón que deu foi a seguinte:\n\n:''$2''\n\n* Inicio do bloqueo: $8\n* Caducidade do bloqueo: $6\n* Pretendeuse bloquear: $7\n\nPode contactar con $1 ou con calquera outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir este bloqueo.\n\nTeña en conta que non pode empregar a característica \"Enviar un correo electrónico a este usuario\" a non ser que dispoña dun enderezo electrónico válido rexistrado nas súas [[Special:Preferences|preferencias de usuario]] e e que o seu uso non fose bloqueado.\n\nO seu enderezo IP actual é $3 e o ID do bloqueo é #$5.\nPor favor, inclúa eses datos nas consultas que faga.",
+       "blockedtext": "<strong>Bloqueouse o seu nome de usuario ou enderezo IP.</strong>\n\n$1 estableceu o bloqueo.\nO motivo que achegou foi <em>$2</em>.\n\n* Inicio do bloqueo: $8\n* Caducidade do bloqueo: $6\n* Pretendeuse bloquear: $7\n\nPode contactar con $1 ou con calquera outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir este bloqueo.\nNon pode empregar a característica \"{{int:emailuser}}\" a non ser que dispoña dun enderezo electrónico válido rexistrado nas súas [[Special:Preferences|preferencias de usuario]] e que o seu uso non fose bloqueado.\nO seu enderezo IP actual é $3 e o identificador do bloqueo é #$5.\nPor favor, inclúa todos estes datos nas consultas que faga.",
+       "autoblockedtext": "O seu enderezo IP foi bloqueado automaticamente porque foi empregado por outro usuario que foi bloqueado por $1.\nA razón que deu foi a seguinte:\n\n:<em>$2</em>\n\n* Inicio do bloqueo: $8\n* Caducidade do bloqueo: $6\n* Pretendeuse bloquear: $7\n\nPode contactar con $1 ou con calquera outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir este bloqueo.\n\nTeña en conta que non pode empregar a característica \"{{int:emailuser}}\" a non ser que dispoña dun enderezo electrónico válido rexistrado nas súas [[Special:Preferences|preferencias de usuario]] e e que o seu uso non fose bloqueado.\n\nO seu enderezo IP actual é $3 e o ID do bloqueo é #$5.\nPor favor, inclúa eses datos nas consultas que faga.",
        "systemblockedtext": "O seu nome de usuario ou enderezo IP foi bloqueado automaticamente polo sistema MediaWiki.\nO motivo do bloqueo é:\n\n:<em>$2</em>\n\n* Comezo do bloqueo: $8\n* Expiración do bloqueo: $6\n* Destinatario do bloqueo: $7\n\nO seu enderezo IP actual é $3.\nPor favor, inclúa todos estes detalles en calquera consulta que realice.",
        "blockednoreason": "non se deu ningunha razón",
        "whitelistedittext": "Debe $1 para poder editar páxinas.",
        "stub-threshold-disabled": "Desactivado",
        "recentchangesdays": "Número de días a mostrar nos cambios recentes:",
        "recentchangesdays-max": "Máximo: $1 {{PLURAL:$1|día|días}}",
-       "recentchangescount": "Número de edicións a mostrar por defecto:",
+       "recentchangescount": "Número de edicións a amosar por defecto nos cambios recentes, nos historiais de páxina e nos rexistrosː",
        "prefs-help-recentchangescount": "Número máximo: 1000",
        "prefs-help-watchlist-token2": "Esta é a clave secreta da fonte de novas web para a súa lista de vixilancia.\nCalquera persoa que a saiba poderá ler a súa lista de vixilancia; non comparta esta clave.\nSe o precisa, [[Special:ResetTokens|pode restablecela]].",
        "prefs-help-tokenmanagement": "Podes ver e restaurar a chave secreta para a túa conta que pode acceder á fonte web da túa lista de vixiancia. Calquera que coñeza a chave poderá leer a túa lista de vixiancia.",
        "recentchangeslinked-feed": "Cambios relacionados",
        "recentchangeslinked-toolbox": "Cambios relacionados",
        "recentchangeslinked-title": "Cambios relacionados con \"$1\"",
-       "recentchangeslinked-summary": "Introduce un nome de páxina para ver os cambios en páxinas ligadas dende ou ata esa páxina. (Para ver os membros dunha categoría, introduce Categoría:Nome da categoría). Os cambios na túa [[Special:Watchlist|lista de vixiancia]] están en <strong>negra</strong>.",
+       "recentchangeslinked-summary": "Introduce un nome de páxina para ver os cambios en páxinas ligadas dende ou ata esa páxina. (Para ver os membros dunha categoría, introduce {{ns:category}}:Nome da categoría). Os cambios na túa [[Special:Watchlist|lista de vixiancia]] están en <strong>negra</strong>.",
        "recentchangeslinked-page": "Nome da páxina:",
        "recentchangeslinked-to": "Mostrar os cambios relacionados das páxinas que ligan coa dada",
        "recentchanges-page-added-to-category": "\"[[:$1]]\" engadiuse á categoría",
        "protectedtitles-submit": "Mostrar os títulos",
        "listusers": "Lista de usuarios",
        "listusers-editsonly": "Mostrar só os usuarios con edicións",
+       "listusers-temporarygroupsonly": "Amosar só usuarios en grupos de usuario temporais",
        "listusers-creationsort": "Ordenar por data de creación",
        "listusers-desc": "Ordenar de xeito descendente",
        "usereditcount": "$1 {{PLURAL:$1|edición|edicións}}",
        "dellogpage": "Rexistro de borrados",
        "dellogpagetext": "A continuación atópase a lista cos borrados máis recentes.",
        "deletionlog": "rexistro de borrados",
+       "log-name-create": "Rexistro de creación de páxinas",
+       "log-description-create": "Debaixo está a lista das páxinas creadas máis recentemente.",
+       "logentry-create-create": "$1 {{GENDER:$2|creou}} a páxina $3",
        "reverted": "Volveuse a unha versión anterior",
        "deletecomment": "Motivo:",
        "deleteotherreason": "Outro motivo:",
        "whatlinkshere": "Páxinas que ligan con esta",
        "whatlinkshere-title": "Páxinas que ligan con \"$1\"",
        "whatlinkshere-page": "Páxina:",
-       "linkshere-2": "As seguintes páxinas ligan con \"'''$2'''\":",
-       "nolinkshere-2": "Ningunha páxina liga con \"'''$2'''\".",
-       "nolinkshere-ns-2": "Ningunha páxina liga con \"'''$2'''\" no espazo de nomes elixido.",
+       "linkshere-2": "As seguintes páxinas ligan con <strong>$2</strong>:",
+       "nolinkshere-2": "Ningunha páxina liga con <strong>$2</strong>.",
+       "nolinkshere-ns-2": "Ningunha páxina liga con <strong>$2</strong> no espazo de nomes elixido.",
        "isredirect": "páxina redirixida",
        "istemplate": "inclusión",
        "isimage": "ligazón ao ficheiro",
index d419391..1055733 100644 (file)
        "dellogpage": "יומן מחיקות",
        "dellogpagetext": "להלן רשימה של המחיקות האחרונות שבוצעו.",
        "deletionlog": "יומן המחיקות",
+       "log-name-create": "יומן יצירות דפים",
+       "log-description-create": "להלן רשימה של הדפים האחרונים שנוצרו.",
+       "logentry-create-create": "$1 {{GENDER:$2|יצר|יצרה}} את הדף $3",
        "reverted": "שוחזר לגרסה קודמת",
        "deletecomment": "סיבה:",
        "deleteotherreason": "סיבה אחרת/נוספת:",
        "blockipsuccesssub": "החסימה הושלמה בהצלחה",
        "blockipsuccesstext": "{{GENDER:$1|המשתמש|המשתמשת}} [[Special:Contributions/$1|$1]] {{GENDER:$1|נחסם|נחסמה}}.<br />\nניתן לעיין ב[[Special:BlockList|רשימת החסומים]] כדי לצפות בחסימות.",
        "ipb-blockingself": "החשבון שלך ייחסם! האם ברצונך לעשות זאת?",
-       "ipb-confirmhideuser": "×\94×\97ש×\91×\95×\9f ×\99×\99×\97ס×\9d ×¢×\9d ×\94×\90פשר×\95ת \"×\94סתרת ×\9eשת×\9eש\". ×\96×\94 ×\99עלים את שם המשתמש בכל הרשימות ופעולות היומן. האם ברצונך לעשות זאת?",
+       "ipb-confirmhideuser": "×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×\99×\99×\97ס×\9d ×ª×\95×\9a ×\94פע×\9cת ×\94×\90פשר×\95ת \"×\94סתרת ×\9eשת×\9eש\". ×¤×¢×\95×\9c×\94 ×\96×\95 ×ªעלים את שם המשתמש בכל הרשימות ופעולות היומן. האם ברצונך לעשות זאת?",
        "ipb-confirmaction": "אם באמת התכוונת לעשות זאת, יש לסמן את השדה \"{{int:ipb-confirm}}\" שמופיע למטה.",
        "ipb-edit-dropdown": "עריכת סיבות החסימה",
        "ipb-unblock-addr": "שחרור חסימה של $1",
        "unblock-hideuser": "אין באפשרותך לשחרר את החסימה של המשתמש הזה, כיוון ששם המשתמש שלו הוסתר.",
        "ipb_cant_unblock": "שגיאה: חסימה מספר $1 לא נמצאה. ייתכן שהיא כבר שוחררה.",
        "ipb_blocked_as_range": "שגיאה: כתובת ה־IP‏ $1 אינה חסומה ישירות ולכן לא ניתן לשחרר את חסימתה.\nעם זאת, היא חסומה כחלק מהטווח $2, שניתן לשחרר את חסימתו.",
-       "ip_range_invalid": "טווח IP שגוי.",
+       "ip_range_invalid": "טווח כתובות IP שגוי.",
        "ip_range_toolarge": "לא ניתן לחסום טווחים גדולים מ־<span dir=\"ltr\">/$1</span>.",
-       "ip_range_exceeded": "טווח ה־IP חורג מהטווח המרבי. הטווח המותר: /$1.",
+       "ip_range_exceeded": "טווח ה־IP חורג מהטווח המרבי. הטווח המותר: <span dir=\"ltr\">/$1</span>.",
        "ip_range_toolow": "בפועל, טווחי IP אינם מורשים.",
        "proxyblocker": "חוסם פרוקסי",
        "proxyblockreason": "כתובת ה־IP שלכם נחסמה משום שהיא כתובת של שרת פרוקסי פתוח.\nאנא צרו קשר עם ספק האינטרנט שלכם או עם התמיכה הטכנית של הארגון שלכם והודיעו להם על בעיית האבטחה החמורה הזאת.",
        "sorbs_create_account_reason": "כתובת ה־IP שלך רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר {{SITENAME}} משתמש בו.\nאין באפשרותך ליצור חשבון.",
        "softblockrangesreason": "תרומות אנונימיות אינן מותרות מכתובת ה־IP שלך ($1). נא להיכנס לחשבון.",
        "xffblockreason": "כתובת IP הנמצאת בכותרת X-Forwarded-For, בין אם שלכם או של שרת פרוקסי שאתם משתמשים בו, נחסמה. סיבת החסימה המקורית הייתה: $1",
-       "cant-see-hidden-user": "×\94×\9eשת×\9eש ×©×\90ת×\9d ×\9eנס×\99×\9d ×\9c×\97ס×\95×\9d ×\9b×\91ר × ×\97ס×\9d ×\95×\94×\95סתר.\n×\9b×\99×\95×\95×\9f ×©×\90×\99×\9f ×\9c×\9b×\9d ×\94רש×\90×\94 ×\9c×\94סתרת ×\9eשת×\9eש×\99×\9d, ×\90×\99×\9f ×\91×\90פשר×\95ת×\9b×\9d לצפות בחסימת המשתמש או לערוך אותה.",
-       "ipbblocked": "×\90×\99× ×\9b×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9c×\97ס×\95×\9d ×\90×\95 ×\9cש×\97רר ×\90ת ×\97ס×\99×\9eת×\9d ×©×\9c ×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d, ×\9b×\99×\95×\95×\9f ×©×\90ת×\9d ×¢×¦×\9e×\9b×\9d ×\97ס×\95×\9e×\99ם.",
-       "ipbnounblockself": "×\90×\99×\9f ×\91×\90פשר×\95ת×\9a ×\9c×\91×\98×\9c את החסימה של עצמך.",
+       "cant-see-hidden-user": "×\94×\9eשת×\9eש ×©× ×\99ס×\99ת ×\9c×\97ס×\95×\9d ×\9b×\91ר × ×\97ס×\9d ×\95×\94×\95סתר.\n×\9b×\99×\95×\95×\9f ×©×\90×\99×\9f ×\9c×\9a ×\94רש×\90×\94 ×\9c×\94סתרת ×\9eשת×\9eש×\99×\9d, ×\90×\99×\9f ×\91×\90פשר×\95ת×\9a לצפות בחסימת המשתמש או לערוך אותה.",
+       "ipbblocked": "×\90×\99×\9f ×\91×\90פשר×\95ת×\9a ×\9c×\97ס×\95×\9d ×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d ×\90×\95 ×\9cש×\97רר ×\90ת ×\97ס×\99×\9eת×\9d, ×\9b×\99×\95×\95×\9f ×©×\94×\97ש×\91×\95×\9f ×©×\9c×\9a ×\97ס×\95ם.",
+       "ipbnounblockself": "×\90×\99×\9f ×\91×\90פשר×\95ת×\9a ×\9cש×\97רר את החסימה של עצמך.",
        "lockdb": "נעילת בסיס נתונים",
        "unlockdb": "שחרור בסיס נתונים",
        "lockdbtext": "נעילת בסיס הנתונים תמנע ממשתמשים את האפשרות לערוך דפים, לשנות את העדפותיהם, לערוך את רשימות המעקב שלהם, ופעולות אחרות הדורשות ביצוע שינויים בבסיס הנתונים.\n\nאנא אשרו שזה מה שאתם מתכוונים לעשות, ושתשחררו את בסיס הנתונים מנעילה כאשר פעולת התחזוקה תסתיים.",
index eb4b171..77d625b 100644 (file)
        "whatlinkshere-title": "Paginas con ligamines verso $1",
        "whatlinkshere-page": "Pagina:",
        "linkshere-2": "Le sequente paginas contine ligamines a <strong>$2</strong>:",
-       "nolinkshere-2": "Nulle pagina contine un ligamine verso <strong>$2</strong>.",
-       "nolinkshere-ns-2": "Nulle pagina liga a <strong>$2</strong>  in le spatio de nomines seligite.",
+       "nolinkshere-2": "Nulle pagina contine un ligamine a <strong>$2</strong>.",
+       "nolinkshere-ns-2": "Nulle pagina liga a <strong>$2</strong> in le spatio de nomines seligite.",
        "isredirect": "pagina de redirection",
        "istemplate": "transclusion",
        "isimage": "ligamine al file",
index 090f8f2..56b0599 100644 (file)
        "botpasswords-existing": "Dagiti adda a kontrasenias ti bot",
        "botpasswords-createnew": "Agpartuat iti baro a kontrasenias ti bot",
        "botpasswords-editexisting": "Urnosen ti maysa nga adda a kontrasenias ti bot",
+       "botpasswords-label-needsreset": "(nasken a maisaad manen ti kontrasenias)",
        "botpasswords-label-appid": "Nagan ti bot:",
        "botpasswords-label-create": "Agpartuat",
        "botpasswords-label-update": "Pabaruen",
        "subject-preview": "Panangipadas ti suheto:",
        "previewerrortext": "Adda napasamak a maysa a biddut bayat a nagpadpadas kadagiti binawbaliwam.",
        "blockedtitle": "Naseraan ti agar-aramat",
-       "blockedtext": "<strong>Naseraan ti naganmo nga agar-aramat wenno ti adres ti IP.</strong>\n\nTi serra ket inaramid babaen ni $1. \nTi rason a naited ket <em>$2</em>.\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddeng a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno sabali pay nga [[{{MediaWiki:Grouppage-sysop}}|administrador]] no kayatmo a maipalawag daytoy a panagserra.\nDimo mabalin nga aramaten ti ramit nga esuratan daytoy nga agar-aramat malaksid no adda napudno nga adres ti esurat a nainaganan iti [[Special:Preferences|pakabilangan ti kakaykayatm]] ken no saanka a naparitan nga agaramat iti daytoy.\nTi agdama nga adres ti IP ket $3, ti naserraan nga ID ket #$5. \nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti ania man nga aramidem nga usisa.",
-       "autoblockedtext": "Ti bukodmo nga adres ti IP ket automatiko a naserraan ngamin ket inusar ti sabali nga agar-aramat, a sinerraan ni $1.\nTi rason nga inted ket:\n\n:<em>$2</em>\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddenga a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno maysa kadagiti [[{{MediaWiki:Grouppage-sysop}}|administrador]] tapno maipalawag daytoy a panagserra.\n\nLaglagipem a saanmo a mabalin nga usaren ti \"esuratan daytoy nga agar-aramat\" a langa malaksid no addaanka ti napudno nga adres ti esurat a nakarehistro iti [[Special:Preferences|kakaykayatam]] ken saanka a naserraan manipud ti panagusar daytoy.\n\nTi agdama a bukodmo nga adres ti IP ket $3, ken ti ID ti naserraan ket #$5.\nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti ania man nga aramidem nga usisa.",
+       "blockedtext": "<strong>Naseraan ti naganmo nga agar-aramat wenno ti adres ti IP.</strong>\n\nTi serra ket inaramid babaen ni $1. \nTi rason a naited ket <em>$2</em>.\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddeng a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno sabali pay nga [[{{MediaWiki:Grouppage-sysop}}|administrador]] no kayatmo a maipalawag daytoy a panagserra.\nDimo mabalin nga aramaten ti ramit nga {{int:emailuser}} malaksid no adda napudno nga adres ti esurat a nainaganan iti [[Special:Preferences|pakabilangan ti kakaykayatm]] ken no saanka a naparitan nga agaramat iti daytoy.\nTi agdama nga adres ti IP ket $3, ti naserraan nga ID ket #$5. \nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti ania man nga aramidem nga usisa.",
+       "autoblockedtext": "Ti bukodmo nga adres ti IP ket automatiko a naserraan ngamin ket inusar ti sabali nga agar-aramat, a sinerraan ni $1.\nTi rason nga inted ket:\n\n:<em>$2</em>\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddeng a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno maysa kadagiti [[{{MediaWiki:Grouppage-sysop}}|administrador]] tapno maipalawag daytoy a panagserra.\n\nLaglagipem a saanmo a mabalin nga usaren ti \"{{int:emailuser}}\" a langa malaksid no addaanka iti napudno nga adres ti esurat a nakarehistro iti [[Special:Preferences|kakaykayatam]] ken saanka a naserraan manipud iti panagusar daytoy.\n\nTi agdama a bukodmo nga adres ti IP ket $3, ken ti ID ti naserraan ket #$5.\nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti ania man nga aramidem nga usisa.",
        "systemblockedtext": "Ti naganmo nga agar-aramat wenno adres ti IP ket automatikon a sinerraan babaen ti MediaWiki.\nTi naited a rason ket:\n\n:<em>$2</em>\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddeng a maserraan: $7\nTi agdama nga adresmo nga IP ket $3.\nPangngaasi nga iraman amin dagiti salaysay dita ngato kadagiti ania man nga aramidem nga usisa.",
        "blockednoreason": "awan ti naited a rason",
        "whitelistedittext": "Pangngaasi a $1 tapno makaurnos kadagiti panid.",
        "rcfilters-watchlist-markseen-button": "Markaan amin a sinuksukatan a kas nakitan",
        "rcfilters-watchlist-edit-watchlist-button": "Urnosem ti listaam kadagiti mabuybuya a panid",
        "rcfilters-preference-label": "Ilemmeng ti napasayaat a bersion ti Kaudian a Balbaliw",
+       "rcfilters-filter-showlinkedfrom-option-label": "<strong>Pampanid a maisilpo manipud iti</strong> napili a panid",
        "rcfilters-filter-showlinkedto-label": "Ipakita dagiti binaliwan iti pakaisilpuan dagiti panid",
        "rcfilters-filter-showlinkedto-option-label": "<strong>Pampanid a maisilpo iti</strong> napili a panid",
        "rcfilters-target-page-placeholder": "Mangikabil iti nagan ti panid (wenno kategoria)",
        "recentchangeslinked-feed": "Mainaig a sinukatan",
        "recentchangeslinked-toolbox": "Mainaig a sinuksukatan",
        "recentchangeslinked-title": "Sinukatan a mainaig iti \"$1\"",
-       "recentchangeslinked-summary": "Mangikabil iti maysa a nagan ti panid tapno makita dagiti panagbaliw kadagiti naisilpo a panid wenno iti dayta a panid. (Tapno makita dagiti kameng iti maysa a kategoria, ikabil ti Kategoria:Nagan ti kategoria). Dagiti panagbaliw kadagiti panid iti [[Special:Watchlist|Listaan ti bambantayam]] ket addada iti <strong>napuskol</strong>.",
+       "recentchangeslinked-summary": "Mangikabil iti maysa a nagan ti panid tapno makita dagiti panagbaliw kadagiti naisilpo a panid wenno iti dayta a panid. (Tapno makita dagiti kameng iti maysa a kategoria, ikabil ti {{ns:category}}:Nagan ti kategoria). Dagiti panagbaliw kadagiti panid iti [[Special:Watchlist|Listaan ti bambantayam]] ket addada iti <strong>napuskol</strong>.",
        "recentchangeslinked-page": "Nagan ti panid:",
        "recentchangeslinked-to": "Ipakita dagiti sinukatan kadagiti panid nga imbes a naisilpo iti naited a panid",
        "recentchanges-page-added-to-category": "nainayon ti [[:$1]] iti kategoria",
        "uploadbtn": "Agikarga iti papeles",
        "reuploaddesc": "Ukasen ti panagikarga ken agsubli idiay porma ti panagikarga",
        "upload-tryagain": "Mangited iti napabaro a deskripsion ti papeles",
+       "upload-tryagain-nostash": "Mangited iti naikarga manen a papeles ken ti nabaliwan a deskripsion",
        "uploadnologin": "Saan a nakastrek",
        "uploadnologintext": "Pangngaasi a $1 tapno makaikarga kadagiti papeles.",
        "upload_directory_missing": "Ti pagikargaan a direktorio ($1) ket awan ken saan a mabalin a mapartuat babaen ti webserver.",
        "file-deleted-duplicate-notitle": "Ti papales a kapada iti daytoy a papeles ket dati a naikkat, ken nalapdan ti titulo.\nNasken nga agdamagka iti sabali nga addaan iti abilidad a mangrepaso ti nalapdan a datos ti papeles tapno marepaso ti kasasaad sakbay a mapan nga agikarga manen iti daytoy.",
        "uploadwarning": "Ballaag ti panagikarga",
        "uploadwarning-text": "Pangngaasi a baliwam ti deskripsion ti papeles dita baba ken padasen manen.",
+       "uploadwarning-text-nostash": "Pangngaasi nga ikarga manen ti papeles, baliwan ti deskripsion dita baba ken padasen manen.",
        "savefile": "Idulin ti papeles",
        "uploaddisabled": "Nabaldado dagiti panagikarga.",
        "copyuploaddisabled": "Nabaldado ti panagikarga babaen ti URL.",
        "protectedtitles-submit": "Ipakita dagiti titulo",
        "listusers": "Listaan ti agar-aramat",
        "listusers-editsonly": "Ipakita laeng dagiti agar-aramat nga addaan kadagiti inurnos",
+       "listusers-temporarygroupsonly": "Ipakita laeng dagiti agar-aramat kadagiti temporario a grupo ti agar-aramat.",
        "listusers-creationsort": "Ilasin babaen ti petsa a pannakapartuat",
        "listusers-desc": "Ilasin iti agpababa nga urnos",
        "usereditcount": "$1 {{PLURAL:$1|nga inurnos|kadagiti inurnos}}",
        "dellogpage": "Listaan ti panagikkat",
        "dellogpagetext": "Adda dita baba ti listaan dagiti kaudian a panangikkat.",
        "deletionlog": "listaan ti panagikkat",
+       "log-name-create": "Listaan ti panagpartuat iti panid",
+       "log-description-create": "Dita baba ket listaan dagiti kaudian a panagpartuat iti panid.",
+       "logentry-create-create": "{{GENDER:$2|Pinartuat}} ni $1 ti panid ti $3",
        "reverted": "Naisubli iti nasapsapa a rebision",
        "deletecomment": "Rason:",
        "deleteotherreason": "Sabali/maipatinayon a rason:",
        "gotointerwiki-invalid": "Ti nainaganan a titulo ket imbalido.",
        "pagedata-title": "Datos ti panid",
        "pagedata-not-acceptable": "Awan ti kapada a pormat ti nabirukan. Dagiti masuportaran a kita ti MIME: $1",
-       "pagedata-bad-title": "Imbalido ti titulo: $1."
+       "pagedata-bad-title": "Imbalido ti titulo: $1.",
+       "unregistered-user-config": "Para kadagiti rason ti seguridad dagiti subpanid ti agar-aramat iti JavaScript, CSS ken JSON ket saan a maikarga  para kadagiti di nairehistro nga agar-aramat.",
+       "passwordpolicies": "Dagiti annuroten ti kontrasenias",
+       "passwordpolicies-summary": "Daytoy ti listaan dagiti epektibo nga annuroten ti kontrasenias para kadagiti grupo ti agar-aramat iti daytoy a wiki.",
+       "passwordpolicies-group": "Grupo",
+       "passwordpolicies-policies": "Dagiti annuroten",
+       "passwordpolicies-policy-minimalpasswordlength": "Ti kontrasenias ket nasken a saan a basbassit ngem $1 a {{PLURAL:$1|karakter|karkarakter}} iti kaatiddog",
+       "passwordpolicies-policy-minimumpasswordlengthtologin": "Ti kontrasenias ket nasken a saan a basbassit ngem $1 a {{PLURAL:$1|karakter|karkarakter}} iti kaatiddog tapno makabaelan ti sumrek",
+       "passwordpolicies-policy-passwordcannotmatchusername": "Ti kontrasenia ket saan a mabalin a kapada a kas ti nagan ti agar-aramat",
+       "passwordpolicies-policy-passwordcannotmatchblacklist": "Ti kontrasenias ket saan a mabalin a maipada kadagiti naiparit a kontrasenias",
+       "passwordpolicies-policy-maximalpasswordlength": "Ti kontrasenias ket nasken a basbassit ngem $1 a {{PLURAL:$1|karakter|karkarakter}} iti kaatiddog",
+       "passwordpolicies-policy-passwordcannotbepopular": "Ti kontrasenias ket saan a mabalin {{PLURAL:$1|a ti popular a kontrasenias|nga adda iti listaan dagiti $1 a popular a kontrasenias}}"
 }
index d8fb9d1..2c4245f 100644 (file)
        "listgrouprights-namespaceprotection-namespace": "ЦIерий моттиг",
        "listgrants-rights": "Бокъонаш",
        "emailuser": "Доакъашхочоа каьхат",
+       "emailusername": "Доакъашхочун цIи:",
        "usermessage-editor": "Системан дIакхоачадар",
        "watchlist": "Зем",
        "mywatchlist": "Зем",
        "watchlistfor2": "Доакъашхо $1 $2",
+       "addwatch": "Зема хьаязъяьрá юкъеяьккха",
        "addedwatchtext": "Статья «[[:$1]]» а, цун дувца оттадара оагIув а тIатехай хьа [[Special:Watchlist|зем бара хьаязъяьра]].",
        "removedwatchtext": "Статья «[[:$1]]» а, иштта цун дувца оттадара оагIув а дIаяьккхай хьа [[Special:Watchlist|зем бара хьаязъяьр]] чура.",
        "watch": "Зем бе",
        "year": "Укх шер (кхы хьалхагIа):",
        "sp-contributions-newbies": "Хьахьокха алхха керда дагара йоазонашца баь бола къахьегам",
        "sp-contributions-blocklog": "блок тохар",
-       "sp-contributions-deleted": "доакъашхочун дӀадаьха тоадар",
+       "sp-contributions-deleted": "{{GENDER:$1|доакъашхочун}} дӀадаьккха хинна тоадар",
        "sp-contributions-uploads": "чуяьхараш",
        "sp-contributions-logs": "тептараш",
        "sp-contributions-talk": "дувца оттадар",
-       "sp-contributions-userrights": "доакъашхочун бокъонашта урхалдар",
+       "sp-contributions-userrights": "{{GENDER:$1|доакъашхочун}} бокъонашта урхалдар",
        "sp-contributions-search": "Къахьегама лахар",
        "sp-contributions-username": "IP-адрес е доакъашхочун цӀи:",
        "sp-contributions-toponly": "Гойта алхха тIехьара эршаш хинна дола тоадаьраш",
        "whatlinkshere": "Тӏатовжамаш укхаза",
        "whatlinkshere-title": "«$1» яхача оагӏонна тӏатовжаш йола оагӏонаш",
        "whatlinkshere-page": "ОагIув:",
-       "linkshere-2": "«'''$2'''» ← укхунна тӀахьожавеш я тӀехьайоагӀа оагӀонаш:",
-       "nolinkshere-2": "Кхыйолча оагӏонашкара '''$2''' яхача оагӏон тIатовжамаш доацаш да.",
+       "linkshere-2": "<strong>$2</strong> ← укхунна тӀахьожавеш я тӀехьайоагӀа оагӀонаш:",
+       "nolinkshere-2": "Кхыйолча оагӏонашкара <strong>$2</strong> яхача оагӏонна тIатовжамаш доацаш да.",
        "isredirect": "дIа-хьа хьожавара оагIув",
        "istemplate": "юкъейоалаяр",
        "isimage": "Файлови тӏатовжам",
index fe2afdf..e2bd113 100644 (file)
        "redirect-file": "Arkivo-nomo",
        "fileduplicatesearch-submit": "Serchar",
        "specialpages": "Specala pagini",
+       "specialpages-group-maintenance": "Raporti pri manteno",
        "specialpages-group-other": "Altra specala pagini",
        "specialpages-group-login": "Enirar / krear konto",
        "specialpages-group-changes": "Recenta chanji e registri",
index 226a3c8..e205654 100644 (file)
        "dellogpage": "Cancellazioni",
        "dellogpagetext": "Di seguito sono elencate le pagine cancellate di recente.",
        "deletionlog": "cancellazioni",
+       "log-name-create": "Creazioni di pagine",
+       "log-description-create": "Di seguito sono elencate le pagine create di recente.",
+       "logentry-create-create": "$1 {{GENDER:$2|ha creato}} la pagina $3",
        "reverted": "Ripristinata la versione precedente",
        "deletecomment": "Motivo:",
        "deleteotherreason": "Altri motivi/dettagli:",
        "whatlinkshere-title": "Pagine che puntano a \"$1\"",
        "whatlinkshere-page": "Pagina:",
        "linkshere-2": "Le seguenti pagine contengono dei collegamenti a <strong>$2</strong>:",
-       "nolinkshere-2": "Nessuna pagina contiene collegamenti che puntano a '''$2'''.",
-       "nolinkshere-ns-2": "Non vi sono pagine che puntano a '''$2''' nel namespace selezionato.",
+       "nolinkshere-2": "Nessuna pagina contiene collegamenti che puntano a <strong>$2</strong>.",
+       "nolinkshere-ns-2": "Non vi sono pagine che puntano a <strong>$2</strong> nel namespace selezionato.",
        "isredirect": "redirect",
        "istemplate": "inclusione",
        "isimage": "collegamento al file",
index c438f97..b3a81d0 100644 (file)
        "botpasswords-existing": "ពាក្យសម្ងាត់រូបយន្តមានហើយ",
        "botpasswords-createnew": "បង្កើតពាក្យសម្ងាត់រូបយន្តថ្មី",
        "botpasswords-editexisting": "កែប្រែពាក្យសម្ងាត់រូបយន្តមានហើយ",
+       "botpasswords-label-needsreset": "(ពាក្យសម្ងាត់ចាំបាច់ត្រូវកំណត់ឡើងវិញ)",
        "botpasswords-label-appid": "ឈ្មោះរូបយន្ត៖",
        "botpasswords-label-create": "បង្កើត",
        "botpasswords-label-update": "បន្ទាន់សម័យ",
index fe7b8f6..14d6626 100644 (file)
        "dellogpage": "삭제 기록",
        "dellogpagetext": "아래의 목록은 최근에 삭제된 문서입니다.",
        "deletionlog": "삭제 기록",
+       "log-name-create": "문서 만들기 기록",
+       "log-description-create": "아래의 목록은 최근에 생성된 문서입니다.",
+       "logentry-create-create": "$1님이 $3 문서를 {{GENDER:$2|만들었습니다}}",
        "reverted": "이전 판으로 되돌렸습니다",
        "deletecomment": "이유:",
        "deleteotherreason": "다른 이유/추가적인 이유:",
        "whatlinkshere": "여기를 가리키는 문서",
        "whatlinkshere-title": "\"$1\" 문서를 가리키는 문서 목록",
        "whatlinkshere-page": "문서:",
-       "linkshere-2": "다음 문서가 '''$2''' 문서를 가리키고 있습니다:",
-       "nolinkshere-2": "'''$2''' 문서를 가리키는 문서가 없습니다.",
-       "nolinkshere-ns-2": "선택한 이름공간에는 '''$2''' 문서를 가리키는 문서가 없습니다.",
+       "linkshere-2": "다음 문서가 <strong>$2</strong> 문서를 가리키고 있습니다:",
+       "nolinkshere-2": "<strong>$2</strong> 문서를 가리키는 문서가 없습니다.",
+       "nolinkshere-ns-2": "선택한 이름공간에는 <strong>$2</strong> 문서를 가리키는 문서가 없습니다.",
        "isredirect": "넘겨주기 문서",
        "istemplate": "끼워넣기",
        "isimage": "연결된 파일",
index 9e5010b..dffb09b 100644 (file)
        "dellogpage": "Дневник на бришења",
        "dellogpagetext": "Подолу е наведен список на најновите бришења.",
        "deletionlog": "дневник на бришењата",
+       "log-name-create": "Дневник на создавање страници",
+       "log-description-create": "Подолу е наведен список на најновите создавања.",
+       "logentry-create-create": "$1 {{GENDER:$2|ја создаде}} страница $3",
        "reverted": "Вратено на претходната преработка",
        "deletecomment": "Причина:",
        "deleteotherreason": "Друга/дополнителна причина:",
index 4356bbc..91d721b 100644 (file)
        "savechanges": "Simpan perubahan",
        "publishpage": "Terbitkan",
        "publishchanges": "Terbit perubahan",
+       "savearticle-start": "Simpan laman...",
+       "savechanges-start": "Simpan perubahan...",
+       "publishpage-start": "Terbitkan laman...",
+       "publishchanges-start": "Terbitkan perubahan...",
        "preview": "Pralihat",
        "showpreview": "Paparkan pralihat",
        "showdiff": "Lihat perubahan",
index 47316b4..2e6e242 100644 (file)
        "dellogpage": "Verwijderingslogboek",
        "dellogpagetext": "Hieronder wordt een lijst met recent verwijderde pagina's en bestanden weergegeven.",
        "deletionlog": "verwijderingslogboek",
+       "log-name-create": "Logboek nieuwe pagina's",
+       "log-description-create": "Hieronder wordt een lijst met recent aangemaakte pagina's weergegeven.",
+       "logentry-create-create": "$1 {{GENDER:$2|heeft}} de pagina $3 aangemaakt",
        "reverted": "Eerdere versie hersteld",
        "deletecomment": "Reden:",
        "deleteotherreason": "Andere reden:",
index 423443f..faa797a 100644 (file)
        "sp-contributions-newbies-title": "Contribuições de contas novas",
        "sp-contributions-blocklog": "registro de bloqueios",
        "sp-contributions-suppresslog": "Contribuições de {{GENDER:$1|usuário}} suprimidas",
-       "sp-contributions-deleted": "contribuições eliminadas do {{GENDER:$1|usuário}}",
+       "sp-contributions-deleted": "contribuições eliminadas",
        "sp-contributions-uploads": "envios",
        "sp-contributions-logs": "registros",
-       "sp-contributions-talk": "disc",
-       "sp-contributions-userrights": "gerenciamento de privilégios de {{GENDER:$1|usuários}}",
+       "sp-contributions-talk": "discussão",
+       "sp-contributions-userrights": "gerenciamento de privilégios",
        "sp-contributions-blocked-notice": "Este usuário atualmente está bloqueado. O registro de bloqueio mais recente é fornecido abaixo para referência:",
        "sp-contributions-blocked-notice-anon": "Este endereço IP encontra-se bloqueado.\nSegue, para referência, a entrada mais recente no registro de bloqueios:",
        "sp-contributions-search": "Navegar pelas contribuições",
index 00983a6..52eb0bd 100644 (file)
        "actionfailed": "Operação falhou",
        "deletedtext": "\"$1\" foi eliminada.\nConsulte $2 para um registo de eliminações recentes.",
        "dellogpage": "Registo de eliminações",
-       "dellogpagetext": "Abaixo uma lista das eliminações mais recentes.",
+       "dellogpagetext": "Encontra abaixo uma lista das eliminações mais recentes.",
        "deletionlog": "registo de eliminações",
+       "log-name-create": "Registo de criação de páginas",
+       "log-description-create": "Encontra abaixo uma lista das criações de páginas mais recentes.",
+       "logentry-create-create": "$1 {{GENDER:$2|criou}} a página $3",
        "reverted": "Revertido para versão anterior",
        "deletecomment": "Motivo:",
        "deleteotherreason": "Outro/motivo adicional:",
        "sp-contributions-newbies-title": "Contribuições de contas novas",
        "sp-contributions-blocklog": "registo de bloqueios",
        "sp-contributions-suppresslog": "contribuições suprimidas {{GENDER:$1|do utilizador|da utilizadora}}",
-       "sp-contributions-deleted": "contribuições eliminadas {{GENDER:$1|do utilizador|da utilizadora}}",
+       "sp-contributions-deleted": "{{GENDER:$1|contribuições}} eliminadas",
        "sp-contributions-uploads": "carregamentos",
        "sp-contributions-logs": "registos",
        "sp-contributions-talk": "discussão",
-       "sp-contributions-userrights": "Gestão de privilégios {{GENDER:$1|do utilizador|da utilizadora}}",
+       "sp-contributions-userrights": "{{GENDER:$1|gestão}} dos privilégios",
        "sp-contributions-blocked-notice": "Este utilizador está bloqueado neste momento.\nPara referência é apresentado abaixo o último registo de bloqueio:",
        "sp-contributions-blocked-notice-anon": "Este endereço IP está bloqueado neste momento.\nPara referência é apresentado abaixo o último registo de bloqueio:",
        "sp-contributions-search": "Pesquisar contribuições",
index cf1c817..8f5f01f 100644 (file)
        "dellogpage": "{{doc-logpage}}\n\nThe name of the deletion log. Used as heading on [[Special:Log/delete]] and in the drop down menu for selecting logs on [[Special:Log]].\n{{Identical|Deletion log}}",
        "dellogpagetext": "Text in [[Special:Log/delete]].",
        "deletionlog": "Used as text for the link which points to the deletion log:\n* Used as <code>$1</code> in {{msg-mw|Filewasdeleted}}\n* Used as <code>$2</code> in {{msg-mw|Deletedtext}}\n* Used in log lines on [[Special:DeletedContributions]]\n{{Identical|Deletion log}}",
+       "log-name-create": "{{doc-logpage}}\n\nThe name of the page creation log. Used as heading on [[Special:Log/create]] and in the drop down menu for selecting logs on [[Special:Log]].",
+       "log-description-create": "Text in [[Special:Log/create]].",
+       "logentry-create-create": "{{Logentry|[[Special:Log/create]]}}",
        "reverted": "{{Identical|Revert}}",
        "deletecomment": "{{Identical|Reason}}",
        "deleteotherreason": "{{Identical|Other/additional reason}}",
index 0d94241..8edca98 100644 (file)
@@ -35,6 +35,8 @@
        "tog-watchdefault": "ᱤᱧᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹᱨᱮ ᱥᱟᱦᱴᱟᱠᱩ ᱟᱨ ᱨᱮᱫᱠᱩ ᱥᱮᱞᱮᱫ ᱢᱮ",
        "tog-watchmoves": "ᱤᱧᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹᱨᱮ ᱥᱟᱦᱴᱟᱠᱩ ᱟᱨ ᱨᱮᱫᱠᱩ ᱚᱪᱟᱜᱽ ᱢᱮ",
        "tog-watchdeletion": "ᱤᱧᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱧᱮᱞᱚᱜ ᱛᱟᱹᱞᱠᱟᱹᱨᱮ ᱥᱟᱦᱴᱟᱠᱩ ᱟᱨ ᱨᱮᱫᱠᱩ ᱜᱮᱫ ᱜᱤᱰᱤᱭ ᱢᱮ",
+       "tog-watchuploads": "ᱱᱟᱶᱟ ᱨᱮᱫ ᱥᱮᱞᱮᱫᱽᱢᱮ ᱤᱧᱟᱜ ᱧᱮᱞ ᱞᱤᱥᱴᱤ ᱨᱤᱧ ᱞᱟᱫᱮᱭᱟ",
+       "tog-watchrollback": "ᱥᱟᱦᱴᱟ ᱥᱮᱞᱮᱫᱽᱢᱮ ᱡᱟᱦᱟᱸᱨᱮ ᱤᱧᱟᱜ ᱧᱮᱞ ᱞᱤᱥᱴᱤᱧ ᱟᱹᱪᱩᱨ ᱨᱩᱣᱟᱹᱲ ᱟᱠᱟᱫᱼᱟ",
        "tog-minordefault": "ᱮᱛᱦᱚᱵᱨᱮ ᱥᱟᱱᱟᱢ ᱥᱟᱯᱲᱟᱣᱠᱩ ᱦᱩᱰᱤᱧ ᱞᱮᱠᱟᱛᱮ ᱪᱤᱱᱦᱟᱹ ᱠᱟᱜ ᱢᱮ",
        "tog-previewontop": "ᱥᱟᱯᱲᱟᱣ ᱵᱟᱠᱥᱳ ᱞᱟᱦᱟᱨᱮ ᱩᱱᱩᱫᱩᱜ ᱩᱫᱩᱜᱽ ᱢᱮ",
        "tog-previewonfirst": "ᱯᱟᱹᱦᱤᱞ ᱥᱟᱯᱲᱟᱣ ᱨᱮ ᱩᱱᱩᱫᱩᱜ ᱩᱫᱩᱜᱽ ᱢᱮ",
        "october-date": "ᱚᱠᱴᱚᱵᱚᱨ $1",
        "november-date": "ᱱᱚᱵᱷᱮᱢᱵᱚᱨ $1",
        "december-date": "ᱰᱤᱥᱮᱢᱵᱚᱨ $1",
+       "period-am": "ᱮᱹᱮᱢ",
+       "period-pm": "ᱯᱤᱹᱮᱢ",
        "pagecategories": "{{PLURAL:$1|ᱛᱷᱚᱠ|ᱛᱷᱚᱠᱠᱩ}}",
        "category_header": "ᱛᱷᱚᱠ ᱨᱮᱱ ᱥᱟᱦᱴᱟᱞᱩ \"$1\"",
        "subcategories": "ᱦᱩᱰᱤᱧ ᱛᱷᱚᱠᱠᱩ",
        "talk": "ᱜᱟᱞᱢᱟᱨᱟᱣ",
        "views": "ᱧᱮᱞᱚᱜᱚᱜ",
        "toolbox": "ᱦᱟᱹᱛᱭᱟᱹᱨ",
+       "tool-link-emailuser": "ᱤᱢᱮᱞᱟᱭᱢᱮ ᱱᱩᱭ {{GENDER:$1|ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ}}",
        "imagepage": "ᱨᱮᱫ ᱥᱟᱦᱴᱟ ᱧᱮᱞᱢᱮ",
        "mediawikipage": "ᱠᱷᱚᱵᱚᱨ ᱥᱟᱦᱴᱟ ᱧᱮᱞᱢᱮ",
        "templatepage": "ᱪᱷᱟᱸᱪ ᱥᱟᱦᱴᱟ ᱩᱫᱩᱜᱽ ᱢᱮ",
        "pool-timeout": "Somoy paromena cạbi lạgit́te tạṅgi hoyoḱkana",
        "pool-queuefull": "Pool queue is full",
        "pool-errorunknown": "ᱵᱟᱝ ᱵᱟᱰᱟᱭ ᱦᱩᱲᱟᱹᱜ",
+       "poolcounter-usage-error": "ᱵᱮᱵᱷᱟᱨᱟᱜ ᱦᱩᱲᱟᱹᱜᱺ $1",
        "aboutsite": "{{SITENAME}} ᱵᱟᱵᱚᱛ",
        "aboutpage": "Project: ᱵᱟᱵᱚᱛ",
        "copyright": "ᱩᱱᱩᱫᱩᱜ ᱫᱚ ᱧᱟᱢᱚᱜ-ᱟ $1 ᱞᱮᱠᱟᱛᱮ  ᱵᱟᱝᱠᱷᱟᱱ ᱚᱞ ᱛᱟᱦᱮᱱᱟ",
        "retrievedfrom": "\"$1\" ᱠᱷᱚᱱ ᱧᱟᱢ ᱟᱹᱜᱩᱭ",
        "youhavenewmessages": "{{PLURAL:$3|ᱟᱢᱟᱜ ᱢᱮᱱᱟᱜ-ᱟ}} $1 ($2)᱾",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|ᱟᱢ ᱫᱚ}} $1 ᱠᱷᱚᱱ {{PLURAL:$3|ᱟᱨᱢᱤᱫ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ|$3 ᱵᱷᱮᱵᱷᱟᱨᱩᱭᱟᱹ}} ($2) ᱾",
+       "youhavenewmessagesmanyusers": "ᱟᱭᱢᱟ ᱵᱮᱵᱦᱟᱨᱤᱭᱟᱹ ($2) ᱠᱷᱚᱱ ᱟᱢ ᱫᱚ $1",
        "newmessageslinkplural": "{{PLURAL:$1|ᱢᱤᱫ ᱱᱟᱶᱟ ᱢᱮᱥᱮᱡᱽ|999=ᱱᱟᱶᱟ ᱢᱮᱥᱮᱡᱽᱠᱚ}}",
        "newmessagesdifflinkplural": "ᱢᱩᱪᱟᱹᱫ {{PLURAL:$1|ᱵᱚᱫᱚᱞ|999=ᱵᱚᱫᱚᱞᱠᱚ}}",
        "youhavenewmessagesmulti": "ᱟᱢᱟᱜ ᱱᱟᱣᱟ ᱠᱷᱚᱵᱟᱨᱠᱚ ᱫᱚ $1 ᱨᱮ ᱢᱮᱱᱟᱜ-ᱟ",
        "hidetoc": "ᱫᱟᱱᱟᱝ",
        "collapsible-collapse": "ᱢᱩᱨᱪᱷᱟᱹᱣ ᱪᱟᱵᱟ",
        "collapsible-expand": "ᱯᱷᱟᱭᱞᱟᱣ",
+       "confirmable-confirm": "{{GENDER:$1|ᱟᱢ}} ᱴᱷᱟᱹᱣᱠᱟᱹ ᱭᱮᱜ-ᱟᱢ?",
        "confirmable-yes": "ᱦᱮᱸ",
        "confirmable-no": "ᱵᱟᱝ",
        "thisisdeleted": "ᱧᱮᱞ ᱥᱮ ᱨᱩᱭᱟᱹᱲ ᱫᱚᱲᱦᱟ $1?",
        "nospecialpagetext": "<strong>ᱟᱢ ᱫᱚ ᱡᱟᱦᱟᱸ ᱥᱟᱦᱴᱟ ᱞᱟᱹᱜᱤᱫ ᱮᱢ ᱱᱮᱦᱚᱨ ᱟᱠᱟᱫᱟ ᱚᱱᱟᱫᱚ ᱵᱟᱹᱱᱩᱜ-ᱟ </strong>\nᱡᱟᱦᱟᱸ ᱥᱟᱦᱴᱟᱠᱩ ᱱᱚᱸᱰᱮ ᱢᱮᱱᱟᱜ-ᱟ ᱚᱱᱟᱨᱮᱱᱟᱜ ᱛᱟᱹᱞᱠᱟᱹ ᱱᱚᱸᱰᱮᱢ ᱧᱟᱢᱟ [[Special:SpecialPages|{{int:specialpages}}]]᱾",
        "error": "ᱦᱩᱲᱟᱹᱜ",
        "databaseerror": "ᱰᱟᱴᱟᱵᱮᱡᱽ ᱦᱩᱲᱟᱹᱜ",
+       "databaseerror-query": "ᱠᱩᱠᱞᱤ: $1",
+       "databaseerror-function": "ᱠᱟᱹᱢᱤ: $1",
        "databaseerror-error": "ᱦᱩᱲᱟᱹᱜ: $1",
        "laggedslavemode": "'''Sontoroḱme:''' sakamre do nahaḱ nãwãnaḱko paseć bạnuḱa.",
        "readonly": "ᱰᱟᱴᱟᱵᱮᱡᱽ ᱛᱟᱞᱟᱜᱮᱭᱟ",
        "virus-badscanner": "Vul konfigareson: baṅ orom vairas skenar: \"$1\"",
        "virus-scanfailed": "Esken baṅ hoelena (Code $1)",
        "virus-unknownscanner": "Baṅ urum anṭvayras:",
+       "cannotlogoutnow-title": "ᱱᱤᱛ ᱚᱰᱚᱠ ᱵᱟᱭ ᱜᱟᱱᱚᱜ ᱠᱟᱱᱟ",
+       "cannotlogoutnow-text": "ᱚᱰᱚᱠᱚᱜ ᱫᱚ ᱵᱟᱭ ᱜᱟᱱᱚᱜᱼᱟ ᱡᱚᱠᱷᱚᱱ $1 ᱵᱮᱵᱷᱟᱨᱚᱜ ᱠᱟᱱᱟ",
        "welcomeuser": "ᱥᱟᱹᱜᱩᱱ ᱫᱟᱨᱟᱢ, $1!",
-       "welcomecreation-msg": "Amaḱ ekaunṭ do̠ jhićena. Amaḱ pạsindko bodol alom hiṛińa.",
+       "welcomecreation-msg": "ᱟᱢᱟᱜ ᱮᱠᱟᱶᱩᱴ ᱫᱚ ᱛᱮᱭᱟᱨᱮᱱᱟ ᱾\nᱟᱢ ᱥᱟᱱᱟᱢᱮ ᱠᱷᱟᱱ ᱟᱢᱟᱜ {{SITENAME}} [[Special:Preferences|ᱠᱩᱥᱤᱠᱚ]] ᱵᱚᱫᱚᱞ ᱫᱟᱲᱮᱭᱟᱜ ᱟᱢ ᱾",
        "yourname": "ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱧᱩᱛᱩᱢ:",
        "userlogin-yourname": "ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱧᱩᱛᱩᱢ",
        "userlogin-yourname-ph": "ᱟᱢᱟᱜ ᱵᱮᱵᱦᱟᱨᱤᱭᱟᱹ ᱧᱤᱛᱩᱢ ᱵᱚᱞᱚᱭ ᱢᱮ",
        "createacct-yourpasswordagain": "ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱴᱷᱟᱹᱣᱠᱟᱹᱭ ᱢᱮ",
        "createacct-yourpasswordagain-ph": "ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱟᱫᱮᱨᱢᱮ ᱫᱚᱲᱦᱟ",
        "userlogin-remembermypassword": "ᱵᱚᱞᱚ ᱛᱷᱤᱨᱜᱮ ᱫᱚᱦᱚᱠᱟᱹᱧᱢᱮ",
+       "userlogin-signwithsecure": "ᱥᱤᱠᱣᱟᱹᱨ ᱠᱷᱚᱸᱡᱟ ᱵᱮᱵᱷᱟᱨ ᱢᱮ",
+       "cannotlogin-title": "ᱵᱚᱞᱚ ᱵᱟᱭ ᱜᱟᱱ ᱞᱮᱱᱟ",
+       "cannotlogin-text": "ᱵᱚᱞᱚ ᱵᱟᱭ ᱦᱩᱭ ᱫᱟᱲᱮᱭᱟᱜᱼᱟ ᱾",
+       "cannotloginnow-title": "ᱱᱤᱛ ᱵᱟᱝ ᱵᱚᱞᱚᱱᱟ",
+       "cannotloginnow-text": "ᱵᱚᱞᱚᱱ ᱫᱚ ᱵᱟᱭ ᱜᱟᱱᱚᱜᱼᱟ ᱡᱚᱠᱷᱚᱱ $1 ᱵᱮᱵᱷᱟᱨᱚᱜ ᱠᱟᱱᱟ",
+       "cannotcreateaccount-title": "ᱮᱠᱟᱶᱩᱴ ᱵᱟᱝ ᱛᱮᱭᱟᱨᱞᱮᱱᱟ",
        "yourdomainname": "ᱟᱢᱟᱜ ᱧᱩᱛᱩᱢ:",
        "externaldberror": "Hoe daṛeyaḱa jahan bahre reaḱ jacaeaḱ ḍaṭabes vul hoeakana se amaḱ bahre reaḱ ekaunṭ do nahaḱ halot aguire ạidạri bạnuḱa.",
        "login": "ᱵᱚᱞᱚᱜ ᱢᱮ",
        "loginlanguagelabel": "ᱯᱟᱹᱨᱥᱤ: $1",
        "pt-login": "ᱵᱚᱞᱚᱜ ᱫᱩᱭᱟᱹᱨ",
        "pt-login-button": "ᱵᱚᱞᱚᱜ ᱢᱮ",
+       "pt-login-continue-button": "ᱞᱮᱛᱟᱲ ᱵᱚᱞᱚ ᱠᱚᱜᱼᱢᱮ",
        "pt-createaccount": "ᱴᱷᱟᱭ ᱵᱮᱱᱟᱣᱢᱮ",
        "pt-userlogout": "ᱚᱰᱚᱠᱚᱜ ᱢᱮ",
        "user-mail-no-addy": "Jahan e-mail ṭhikana bạgi kate e-mail kul kurumuṭu hoena.",
        "savechanges": "ᱵᱚᱫᱚᱞᱠᱚ ᱨᱩᱠᱷᱤᱭᱟᱹᱭ ᱢᱮ",
        "publishpage": "ᱥᱟᱦᱴᱟ ᱯᱟᱨᱥᱟᱞ ᱢᱮ",
        "publishchanges": "ᱵᱚᱫᱚᱞᱠᱚ ᱯᱟᱨᱥᱟᱞ ᱢᱮ",
+       "savearticle-start": "ᱥᱟᱦᱴᱟ ᱨᱩᱠᱷᱭᱟᱹᱹᱹ",
+       "savechanges-start": "ᱵᱚᱫᱚᱞ ᱨᱩᱠᱷᱭᱟᱹᱹᱹ",
+       "publishpage-start": "ᱥᱟᱦᱴᱟ ᱯᱟᱨᱥᱟᱞᱹᱹᱹ",
+       "publishchanges-start": "ᱵᱚᱫᱚᱞᱠᱚ ᱯᱟᱨᱥᱟᱞ",
        "preview": "ᱧᱮᱞ ᱵᱤᱰᱟᱹᱣ",
        "showpreview": "ᱧᱮᱞᱡᱚᱝ ᱩᱫᱩᱜᱽᱢᱮ",
        "showdiff": "ᱵᱚᱫᱚᱞᱠᱩ ᱩᱫᱩᱜᱽ ᱢᱮ",
        "edit-no-change": "ᱟᱢᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱵᱟᱝ ᱦᱟᱛᱟᱣᱞᱮᱱᱟ ᱡᱮᱫᱟᱜ ᱡᱮ ᱚᱞᱨᱮ ᱡᱟᱸᱦᱟᱸᱱ ᱵᱚᱫᱚᱞ ᱵᱟᱹᱱᱩᱜ-ᱟ᱾",
        "postedit-confirmation-created": "ᱱᱚᱣᱟ ᱥᱟᱦᱴᱟ ᱫᱚ ᱛᱮᱭᱟᱨᱠᱟᱱᱟ᱾",
        "postedit-confirmation-restored": "ᱱᱚᱣᱟ ᱥᱟᱦᱴᱟ ᱫᱚ ᱟᱹᱜᱩ ᱨᱩᱣᱟᱹᱲ ᱦᱩᱭᱠᱟᱱᱟ᱾",
+       "postedit-confirmation-saved": "ᱟᱢᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱫᱚ ᱨᱩᱠᱷᱭᱟᱹᱭᱮᱱᱟ",
+       "postedit-confirmation-published": "ᱟᱢᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱫᱚ ᱯᱟᱨᱥᱟᱞᱮᱱᱟ",
        "edit-already-exists": "ᱱᱟᱣᱟ ᱥᱟᱦᱴᱟ ᱵᱟᱝ ᱛᱮᱭᱟᱨ ᱞᱮᱱᱟ᱾\nᱱᱚᱣᱟ ᱫᱚ ᱞᱟᱦᱟ ᱠᱷᱚᱱ ᱢᱮᱱᱟᱜ ᱜᱮᱭᱟ᱾",
        "defaultmessagetext": "ᱯᱩᱭᱞᱩ ᱚᱞᱠᱟᱱ ᱠᱷᱚᱵᱚᱨ",
        "content-model-wikitext": "ᱣᱤᱠᱤ-ᱚᱞ",
        "deletedhist": "ᱜᱮᱫ ᱜᱤᱰᱤᱭᱟᱠᱟᱱ ᱱᱟᱜᱟᱢ",
        "revdelete-reasonotherlist": "ᱮᱴᱟᱜ ᱚᱡᱮ",
        "mergehistory-from": "ᱯᱷᱮᱰᱟᱛ ᱥᱟᱦᱴᱟᱺ",
+       "mergehistory-no-source": "ᱯᱷᱮᱰᱟᱛ ᱥᱟᱦᱴᱟ $1 ᱵᱟᱹᱱᱩᱜᱼᱟ ᱾",
+       "mergehistory-invalid-source": "ᱯᱷᱮᱰᱟᱛ ᱥᱟᱦᱴᱟ ᱫᱚ ᱡᱚᱛᱟᱛ ᱥᱟᱛᱟᱢ ᱦᱩᱭᱩᱜ ᱞᱟᱹᱠᱛᱤ",
        "mergehistory-reason": "ᱚᱡᱮ:",
        "mergelog": "ᱞᱚᱜᱽ ᱢᱮᱥᱟ",
        "revertmerge": "ᱵᱟᱝ ᱢᱤᱛ",
        "search-result-category-size": "{{PLURAL:$1|1 ᱥᱚᱦᱮᱫ|$1 ᱥᱚᱦᱮᱫᱠᱩ}} ({{PLURAL:$2|1 ᱦᱩᱰᱤᱧ ᱛᱷᱚᱠ|$ 2 ᱦᱩᱰᱤᱧ ᱛᱷᱚᱠᱠᱩ}}, {{PLURAL:$3|1 ᱨᱮᱫ|$3 ᱨᱮᱫᱠᱩ}})",
        "search-redirect": "(ᱥᱚᱡᱷᱮ ᱦᱤᱡᱩᱜ-ᱟ $1 ᱠᱷᱚᱱ)",
        "search-section": "(ᱦᱟᱹᱴᱤᱧ $1)",
+       "search-category": "(ᱛᱷᱚᱠ $1)",
        "search-file-match": "(ᱢᱤᱫᱩᱜᱟᱜ ᱨᱮᱫ ᱩᱱᱩᱫᱩᱜ)",
        "search-suggest": "ᱪᱮᱫ ᱮᱢ ᱢᱮᱱ ᱚᱪᱚᱭᱮᱫᱟ: $1",
        "search-interwiki-caption": "ᱥᱟᱶᱛᱮᱱ ᱯᱨᱚᱡᱮᱠᱴ ᱠᱷᱚᱱ ᱚᱨᱡᱚ",
        "prefs-setemail": "ᱤᱢᱮᱞ ᱵᱩᱴᱟᱹ ᱡᱚᱲᱟᱣᱢᱮ",
        "saveprefs": "ᱨᱩᱠᱷᱤᱭᱟᱹᱭᱢᱮ",
        "searchresultshead": "ᱥᱮᱸᱫᱽᱨᱟ",
+       "timezonelegend": "ᱮᱞᱟᱠᱟ ᱚᱠᱛᱚᱺ",
+       "localtime": "ᱴᱚᱴᱷᱟ ᱚᱠᱛᱚᱺ",
+       "timezoneuseserverdefault": "ᱡᱟᱣᱞᱮᱠᱟ ($1) ᱣᱤᱠᱤ ᱵᱮᱵᱷᱟᱨ",
+       "timezoneuseoffset": "ᱮᱴᱟᱜᱟᱜ (ᱚᱯᱷᱥᱮᱴ ᱥᱚᱫᱚᱨ)",
+       "servertime": "ᱥᱚᱨᱵᱷᱚᱨ ᱚᱠᱛᱚᱺ",
+       "guesstimezone": "ᱵᱨᱟᱣᱡᱟᱨ ᱠᱷᱚᱱ ᱯᱮᱨᱮᱡ",
        "timezoneregion-africa": "ᱟᱯᱷᱨᱤᱠᱟ",
        "timezoneregion-america": "ᱟᱢᱮᱨᱤᱠᱟ",
+       "timezoneregion-antarctica": "ᱟᱱᱴᱟᱨᱠᱴᱤᱠᱟ",
+       "timezoneregion-arctic": "ᱟᱨᱠᱴᱤᱠ",
        "timezoneregion-asia": "ᱮᱥᱤᱭᱟ",
+       "timezoneregion-atlantic": "ᱟᱴᱞᱟᱱᱴᱤᱠ ᱢᱟᱦᱟᱫᱚᱨᱭᱟ",
        "timezoneregion-australia": "ᱚᱥᱴᱨᱮᱞᱤᱭᱟ",
+       "timezoneregion-europe": "ᱤᱣᱨᱚᱯ",
+       "timezoneregion-indian": "ᱥᱤᱧᱚᱛ ᱢᱟᱦᱟᱫᱚᱨᱭᱟ",
+       "timezoneregion-pacific": "ᱯᱮᱥᱤᱯᱷᱤᱠ ᱢᱟᱦᱟᱫᱚᱨᱭᱟ",
        "prefs-searchoptions": "ᱥᱮᱸᱫᱽᱨᱟ",
        "prefs-files": "ᱨᱮᱫᱠᱚ",
        "youremail": "Email:",
index f3059ee..0410602 100644 (file)
        "protectedtitles-submit": "Prikaži naslove",
        "listusers": "Seznam uporabnikov",
        "listusers-editsonly": "Pokaži samo uporabnike z urejanji",
+       "listusers-temporarygroupsonly": "Pokaži samo uporabnike v začasnih uporabniških skupinah",
        "listusers-creationsort": "Razvrsti po datumu ustvaritve",
        "listusers-desc": "Razvrsti padajoče",
        "usereditcount": "$1 {{PLURAL:$1|urejanje|urejanji|urejanja|urejanj}}",
        "apisandbox-dynamic-parameters-add-label": "Dodaj parameter:",
        "apisandbox-dynamic-parameters-add-placeholder": "Ime parametra",
        "apisandbox-dynamic-error-exists": "Parameter z imenom »$1« že obstaja.",
+       "apisandbox-templated-parameter-reason": "Ta [[Special:ApiHelp/main#main/templatedparams|parameter s predlogo]] je ponujen na podlagi {{PLURAL:$1|vrednosti}} $2.",
        "apisandbox-deprecated-parameters": "Zastareli parametri",
        "apisandbox-fetch-token": "Samodejno izpolni žeton",
        "apisandbox-add-multi": "Dodaj",
        "whatlinkshere-title": "Strani, ki se povezujejo na $1",
        "whatlinkshere-page": "Stran:",
        "linkshere-2": "Na '''$1''' kažejo naslednje strani:",
-       "nolinkshere-2": "Nobena stran ne kaže na '''$2'''.",
-       "nolinkshere-ns-2": "Nobena stran se ne povezuje na '''$2''' v izbranem imenskem prostoru.",
+       "nolinkshere-2": "Nobena stran ne kaže na <strong>$2</strong>.",
+       "nolinkshere-ns-2": "Nobena stran se ne povezuje na <strong>$2</strong> v izbranem imenskem prostoru.",
        "isredirect": "preusmeritvena stran",
        "istemplate": "vključitev",
        "isimage": "povezava na datoteko",
        "pagedata-text": "Ta stran nudi podatkovni vmesnik do strani. Prosimo, navedite naslov strani v URL-ju z uporabo skladnje podstrani.\n* Pogajanje o vsebini se nanaša na glavo Accept vašega odjemalca. To pomeni, da bomo podatke strani posredovali v obliki, ki vašemu odjemalcu bolj ustreza.",
        "pagedata-not-acceptable": "Nismo našli ujemajoče oblike. Podprte vrste MIME: $1",
        "pagedata-bad-title": "Neveljaven naslov: $1.",
-       "unregistered-user-config": "Iz varnostnih razlogov uporabniških podstrani JavaScript, CSS in JSON ne moremo naložiti neregistriranim uporabnikom."
+       "unregistered-user-config": "Iz varnostnih razlogov uporabniških podstrani JavaScript, CSS in JSON ne moremo naložiti neregistriranim uporabnikom.",
+       "passwordpolicies": "Pravilniki gesel",
+       "passwordpolicies-summary": "To je seznam trenutno veljavnih pravilnikov gesel za uporabniške skupine, opredeljene v tem wikiju.",
+       "passwordpolicies-group": "Skupina",
+       "passwordpolicies-policies": "Pravilniki",
+       "passwordpolicies-policy-minimalpasswordlength": "Geslo mora dolgo biti vsaj $1 {{PLURAL:$1|znak|znaka|znake|znakov}}",
+       "passwordpolicies-policy-minimumpasswordlengthtologin": "Geslo mora biti dolgo vsaj $1 {{PLURAL:$1|znak|znaka|znake|znakov}}, da je omogočena prijava",
+       "passwordpolicies-policy-passwordcannotmatchusername": "Geslo ne more biti enako kot uporabniško ime",
+       "passwordpolicies-policy-passwordcannotmatchblacklist": "Geslo se ne sme ujemati s posebej prepovedanimi gesli",
+       "passwordpolicies-policy-maximalpasswordlength": "Geslo ne sme biti daljše od $1 {{PLURAL:$1|znak|znaka|znake|znakov}}",
+       "passwordpolicies-policy-passwordcannotbepopular": "Geslo ne sme biti {{PLURAL:$1|1=popularno geslo|na seznamu $1 popularnih gesel}}"
 }
index 299a137..3074297 100644 (file)
        "longpageerror": "<strong>Грешка: текст који сте унели је величине {{PLURAL:$1|један килобајт|$1 килобајта}}, што је веће од {{PLURAL:$2|дозвољеног једног килобајта|дозвољена $2 килобајта|дозвољених $2 килобајта}}.</strong>\nСтраница не може бити сачувана.",
        "readonlywarning": "<strong>Упозорење: база података је закључана ради одржавања, тако да тренутно нећете моћи да сачувате измене.</strong>\nМожда бисте желели сачувати текст за касније у некој текстуалној датотеци.\n\nСистемски администратор је навео следеће објашњење: $1",
        "protectedpagewarning": "<strong>Упозорење: ова страница је заштићена, тако да само администратори могу да је мењају.</strong>\nПоследњи запис у дневнику је приказан испод:",
-       "semiprotectedpagewarning": "<strong>Ð\9dапомена:</strong> Ð\9eва Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\98е Ð·Ð°Ñ\88Ñ\82иÑ\9bена, Ñ\82ако Ð´Ð° Ñ\81амо Ñ\80егиÑ\81Ñ\82Ñ\80овани ÐºÐ¾Ñ\80иÑ\81ниÑ\86и Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ñ\98е Ñ\83Ñ\80еÑ\92Ñ\83Ñ\98Ñ\83.\nÐ\9fоÑ\81ледÑ\9aи Ð·Ð°Ð¿Ð¸Ñ\81 Ñ\83 Ð´Ð½ÐµÐ²Ð½Ð¸ÐºÑ\83 Ñ\98е Ð¿Ñ\80иказан Ð¸Ñ\81под:",
+       "semiprotectedpagewarning": "<strong>Ð\9dапомена:</strong> Ð¾Ð²Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\98е Ð·Ð°Ñ\88Ñ\82иÑ\9bена, Ñ\82ако Ð´Ð° Ñ\81амо Ñ\80егиÑ\81Ñ\82Ñ\80овани ÐºÐ¾Ñ\80иÑ\81ниÑ\86и Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ñ\98е Ñ\83Ñ\80еÑ\92Ñ\83Ñ\98Ñ\83.\nÐ\9fоÑ\81ледÑ\9aи Ð·Ð°Ð¿Ð¸Ñ\81 Ñ\83 Ð´Ð½ÐµÐ²Ð½Ð¸ÐºÑ\83 Ñ\98е Ð¿Ñ\80иказан Ð¸Ñ\81под ÐºÐ°Ð¾ Ñ\80еÑ\84еÑ\80енÑ\86а:",
        "cascadeprotectedwarning": "<strong>Упозорење:</strong> Ова страница је заштићена тако да је могу уређивати само корисници са [[Special:ListGroupRights|одређеним правима]] (администратори), јер је иста укључена у {{PLURAL:$1|следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом” заштитом:",
        "titleprotectedwarning": "<strong>Упозорење: ову страницу могу направити само корисници [[Special:ListGroupRights|с одређеним правима]].</strong>\nПоследњи запис у дневнику је приказан испод:",
        "templatesused": "{{PLURAL:$1|Шаблон који се користи|Шаблони који се користе}} на овој страници:",
index bf662d2..04d55e5 100644 (file)
        "subject-preview": "Pramidang subyék:",
        "previewerrortext": "Aya éror nalika nyobaan nyawang robahan anjeun.",
        "blockedtitle": "Pamaké dipeungpeuk",
-       "blockedtext": "'''Ngaran pamaké atawa alamat IP anjeun dipeungpeuk.'''\n\nDipeungpeuk ku $1.\nAlesanana ''$2''.\n\n* Mimiti dipeungpeuk : $8\n* dipeungpeuk kadaluarsa dina: $6\n* Sasaran nudipeungpeuk : $7\n\nAnjeun bisa nepungan $1 atawa salasahiji [[{{MediaWiki:Grouppage-sysop}}|kuncén]] séjén pikeun nyawalakeun hal ieu.\n'''Catet''': yén anjeun teu bisa maké fungsi \"surélékan pamaké ieu\" mun anjeun teu ngadaptarkeun alamat surélék nu sah kana [[Special:Preferences|préferénsi pamaké]] anjeun.\n\nAlamat IP anjeun $3 jeung ID na #$5.\nLampirkeun informasi ieu dina unggal ''query'' anjeun.",
+       "blockedtext": "<strong>Ngaran pamaké atawa alamat IP anjeun dipeungpeuk.</strong>\n\nDipeungpeuk ku $1.\nAlesanana <em>$2</em>.\n\n* Mimiti dipeungpeuk: $8\n* Anggeusan dipeungpeuk: $6\n* Sasaran anu dipeungpeuk: $7\n\nAnjeun bisa ngontak $1 atawa [[{{MediaWiki:Grouppage-sysop}}|kuncén]] lianna pikeun nyawalakeun ieu hal.\nAnjeun teu bisa maké fitur \"{{int:emailuser}}\" mun anjeun teu ngadaptarkeun alamat surélék nu sah dina [[Special:Preferences|préferénsi akun]] anjeun sarta henteu dipeungpeuk tina migunakeun éta fitur.\nAlamat IP anjeun $3, kalayan ID peungpeukna #$5.\nLampirkeun informasi ieu dina unggal kueri anjeun.",
        "autoblockedtext": "Alamat IP anjeun otomatis dipeungpeuk sabab dipaké ku pamaké séjén nu geus dipeungpeuk ku $1, kalawan alesan:\n\n:''$2''\n\n*Mimiti dipeungpeuk: $8\n*Kadaluwarsa peungpeuk: $6\n*Sasaran peungpeuk: $7\n\nAnjeun bisa nepungan $1 atawa [[{{MediaWiki:Grouppage-sysop}}|kuncé]] lianna pikeun ngabadamikeun ieu peungpeukan.\n\nCatet yén anjeun moal bisa migunakeun fitur \"surélékan ieu pamaké\" mun alamat surélék anu didaptarkeun dina [[Special:Preferences|préferénsi pamaké]]na teu sah, sarta teu dipeungpeuk tina migunakeun ieu fitur.\n\nAlamat IP Anjeun ayeuna nyaéta $3, sarta ID peungpeukan anjeun #$5.\nMangga sebatkeun éta ID dina pamundut-pamundut anjeun.",
        "blockednoreason": "taya alesan",
        "whitelistedittext": "Anjeun kudu asup $1 sangkan bisa ngédit.",
        "recentchangeslinked-feed": "Parobahan nu patali",
        "recentchangeslinked-toolbox": "Parobahan nu patali",
        "recentchangeslinked-title": "Parobahan patali ka \"$1\"",
-       "recentchangeslinked-summary": "Ieu kaca husus ngabéréndélkeun parobahan anyar anu numbu ti kaca husus (atawa uesi katagori husus). Kaca anu [[Special:Watchlist|diawaskeun]] némbongan '''kandel'''.",
+       "recentchangeslinked-summary": "Asupkeun ngaran kaca pikeun nempo parobahan anu nutumbu ka atawa ti éta kaca. (Pikeun nempo anggota kategori, asupkeun {{ns:category}}:Ngaran kategori). Parobahan kaca-kaca anu [[Special:Watchlist|diawaskeun]] némbongan <strong>kandel</strong>.",
        "recentchangeslinked-page": "Ngaran kaca:",
        "recentchangeslinked-to": "Témbongkeun parobahan ka kaca-kaca nu ditumbukeun ka kaca nu dimaksud",
        "recentchanges-page-added-to-category": "[[:$1]] ditambahkeun kana kategori",
        "filehist-comment": "Kamandang",
        "imagelinks": "Pamakéan berkas",
        "linkstoimage": "Kaca ieu  {{PLURAL:$1|numbu|$1 numbu}} ka gambar ieu :",
-       "linkstoimage-more": "Leuwih ti $1 {{PLURAL:$1|kaca nutumbu|kaca nutumbu}} ka ieu berkas.\nBéréndélan di handap némbongkeun {{PLURAL:$1|tutumbu kaca kahiji|$1 tutumbu kaca}} ka ieu berkas hungkul.\n[[Special:WhatLinksHere/$2|Béréndélan lengkepna]] aya.",
+       "linkstoimage-more": "Leuwih ti $1 {{PLURAL:$1|kaca nutumbu|kaca nutumbu}} ka ieu berkas.\nBéréndélan di handap némbongkeun {{PLURAL:$1|tutumbu kaca kahiji|$1 tutumbu kaca kahiji}} ka ieu berkas hungkul.\n[[Special:WhatLinksHere/$2|Béréndélan lengkepna]] ogé aya.",
        "nolinkstoimage": "Teu aya kaca anu nutumbu ka ieu berkas.",
        "morelinkstoimage": "Témbong [[Special:WhatLinksHere/$1|tutumbu lianna]] ka ieu berkas.",
        "linkstoimage-redirect": "$1 (pangalihan berkas) $2",
        "unwatchthispage": "Eureun ngawaskeun",
        "notanarticle": "Sanés kaca eusi",
        "notvisiblerev": "Révisi geus dihapus",
-       "watchlist-details": "Aya {{PLURAL:$1|$1 kaca|$1 kaca}} dina daptar awaseun (pleus kaca obrolanna).",
+       "watchlist-details": "Aya {{PLURAL:$1|$1 kaca|$1 kaca}} dina Awaseun anjeun (kaasup kaca obrolan).",
        "wlheader-enotif": "Iber surélék diaktifkeun.",
-       "wlheader-showupdated": "Kaca nu robah ti panungtungan anjeun sindang ditémbongkeun kalawan '''kandel'''",
-       "wlnote": "Di handap ieu mangrupa $1 {{PLURAL:$1|robahan|robahan}} ahir salila '''$2''' jam.",
+       "wlheader-showupdated": "Kaca nu robah ti panungtungan anjeun sindang ditémbongkeun <strong>kandel</strong>.",
+       "wlnote": "Di handap ieu mangrupa {{PLURAL:$1|robahan|robahan}} <strong>$1</strong> panungtung salila {{PLURAL:$2|jam|<strong>$2</strong> jam}}, ti $3, $4.",
        "wlshowlast": "Témbongkeun $1 jam $2 poé panungtung",
        "watchlist-hide": "Sumputkeun",
        "watchlist-submit": "Témbongkeun",
        "pageinfo-few-visiting-watchers": "Rék aya atawa henteuna pamariksa kaca nu nyorang éditan kiwari",
        "pageinfo-redirects-name": "Jumlah pindahan ka ieu kaca",
        "pageinfo-subpages-name": "Nomor subkaca ieu kaca",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|pindahan|pindahan}}; $3 {{PLURAL:$3|non-pindahan|non-pindahan}})",
        "pageinfo-firstuser": "Panyieun kaca",
        "pageinfo-firsttime": "Tanggal panyieunan kaca",
        "pageinfo-lastuser": "Pangédit panungtung",
index c12487e..4088a67 100644 (file)
        "dellogpage": "Raderingslogg",
        "dellogpagetext": "Nedan listas de senaste raderingarna.",
        "deletionlog": "raderingslogg",
+       "log-name-create": "Sidskapandelogg",
+       "log-description-create": "Nedan listas de senaste skapade sidorna.",
+       "logentry-create-create": "$1 {{GENDER:$2|skapade}} sidan $3",
        "reverted": "Återgått till tidigare version",
        "deletecomment": "Anledning:",
        "deleteotherreason": "Annan/ytterligare anledning:",
index e09751e..475f797 100644 (file)
        "customcssprotected": "Bu sayfayı değiştirmeye yetkiniz bulunmamaktadır, çünkü bu sayfa başka bir kullanıcının kişisel ayarlarını içermektedir.",
        "customjsprotected": "Bu Java Script sayfasını değiştirmeye yetkiniz bulunmamaktadır, çünkü bu sayfa başka bir kullanıcının kişisel ayarlarını içermektedir.",
        "mycustomcssprotected": "Bu CSS sayfasını değiştirmeye yetkiniz yok.",
+       "mycustomjsonprotected": "Bu JSON sayfasını düzenleme izniniz yok.",
        "mycustomjsprotected": "Bu JavaScript sayfasını değiştirmeye yetkiniz yok.",
        "myprivateinfoprotected": "Sizin özel bilgilerinizi düzenleme yetkiniz yok.",
        "mypreferencesprotected": "Tercihlerinizi düzenlemek için yetkiniz yok.",
        "wrongpasswordempty": "Boş parola girdiniz. Lütfen tekrar deneyiniz.",
        "passwordtooshort": "Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.",
        "passwordtoolong": "Parolalar $1 karakterden uzun olamaz.",
-       "passwordtoopopular": "Sıklıkla seçilen parolalar kullanılamaz. Lütfen daha özgün bir parola belirleyin.",
+       "passwordtoopopular": "Yaygın olarak seçilen şifreler kullanılamaz. Lütfen tahmin edilmesi daha zor bir şifre seçin.",
        "password-name-match": "Parolanız kullanıcı adınızdan farklı olmalıdır.",
        "password-login-forbidden": "Bu kullanıcı adı ve parolanın kullanımı yasaklanmıştır.",
        "mailmypassword": "Parolayı sıfırla",
        "passwordremindertitle": "{{SITENAME}} için yeni geçici parola",
-       "passwordremindertext": "Birisi (muhtemelen siz, $1 IP adresinden) {{SITENAME}} ($4) için yeni bir parola gönderilmesi istedi. \"$2\" kullanıcısına geçici olarak \"$3\" parolası oluşturuldu. Eğer bu sizin isteğiniz ise, oturum açıp yeni bir parola oluşturmanız gerekmektedir. Geçici parolanızın süresi {{PLURAL:$5|1 gün|$5 gün}} içinde dolacaktır.\n\nParola değişimini siz istemediyseniz veya parolanızı hatırladıysanız ve artık parolanızı değiştirmek istemiyorsanız; bu mesajı önemsemeyerek eski parolanızı kullanmaya devam edebilirsiniz.",
+       "passwordremindertext": "Birisi ($1 IP adresinden) {{SITENAME}} ($4) için yeni bir parola gönderilmesi istedi. \"$2\" kullanıcısına geçici olarak \"$3\" parolası oluşturuldu. Eğer bu sizin isteğiniz ise, oturum açıp yeni bir parola oluşturmanız gerekmektedir. Geçici parolanızın süresi {{PLURAL:$5|1 gün|$5 gün}} içinde dolacaktır.\n\nParola değişimini siz istemediyseniz veya parolanızı hatırladıysanız ve artık parolanızı değiştirmek istemiyorsanız; bu mesajı önemsemeyerek eski parolanızı kullanmaya devam edebilirsiniz.",
        "noemail": "\"$1\" adlı kullanıcıya kayıtlı bir e-posta adresi yok.",
        "noemailcreate": "Geçerli bir e-posta adresi sağlamalısınız",
        "passwordsent": "\"$1\" adına kayıtlı e-posta adresine yeni bir parola gönderildi. Oturumu, lütfen, iletiyi aldıktan sonra açın.",
        "botpasswords-insert-failed": "Bot adı \"$1\" eklenemedi. Zaten eklenmiş olmalı?",
        "botpasswords-update-failed": "Bot ismini \"$1\" olarak güncelleme başarısız oldu. Silinmiş olabilir mi?",
        "botpasswords-created-title": "Bot parolası oluşturuldu",
-       "botpasswords-created-body": "\"$2\" adlı kullanıcının \"$1\" adlı botu için bot parolası oluşturuldu.",
+       "botpasswords-created-body": "\"$2\" adlı {{GENDER:$2|kullanıcının}} \"$1\" adlı botu için bot parolası oluşturuldu.",
        "botpasswords-updated-title": "Bot parolası güncellendi",
-       "botpasswords-updated-body": "\"$2\" adlı kullanıcının \"$1\" adlı botunun bot parolası güncellendi.",
+       "botpasswords-updated-body": "\"$2\" adlı {{GENDER:$2|kullanıcının}} \"$1\" adlı botunun bot parolası güncellendi.",
        "botpasswords-deleted-title": "Bot parolası silindi",
        "botpasswords-deleted-body": "\"$2\" adlı kullanıcının \"$1\" adlı botunun bot parolası silindi.",
        "botpasswords-newpassword": "<strong>$1</strong> ile oturum açmak için yeni şifre: <strong>$2</strong>. <em>İlerde başvurmak için lütfen kaydedin.</em>",
        "rcfilters-filter-minor-description": "Yazarın küçük olarak etiketlediği düzenlemeler.",
        "rcfilters-filter-major-label": "Küçük olmayan düzenlemeler",
        "rcfilters-filter-major-description": "Küçük olarak etiketlenmemiş düzenlemeler.",
+       "rcfilters-filtergroup-watchlist": "İzlenen sayfalar",
        "rcfilters-filter-watchlist-watched-label": "İzleme listesinde",
+       "rcfilters-filter-watchlist-watched-description": "İzleme listenizdeki sayfalarda değişiklikler.",
+       "rcfilters-filter-watchlist-watchednew-label": "Yeni İzleme listesi değişiklikleri",
+       "rcfilters-filter-watchlist-watchednew-description": "Değişiklikler gerçekleştiğinden beri ziyaret etmediğiniz izleme listenizdeki sayfalarda yapılan değişiklikler.",
        "rcfilters-filter-watchlist-notwatched-label": "İzleme listesinde değil",
+       "rcfilters-filter-watchlist-notwatched-description": "İzleme listenizdeki sayfalardaki değişiklikler hariç her şey.",
        "rcfilters-filtergroup-watchlistactivity": "İzleme listesi faaliyetleri",
        "rcfilters-filter-watchlistactivity-unseen-label": "Görülmemiş değişiklikler",
+       "rcfilters-filter-watchlistactivity-unseen-description": "Değişiklikler gerçekleştiğinden beri ziyaret etmediğiniz sayfalardaki değişiklikler.",
        "rcfilters-filter-watchlistactivity-seen-label": "Görülmüş değişiklikler",
        "rcfilters-filtergroup-changetype": "Değişiklik türü",
        "rcfilters-filter-pageedits-label": "Sayfa düzenlemeleri",
        "rcfilters-exclude-button-off": "Seçileni hariç tut",
        "rcfilters-exclude-button-on": "Seçilen hariç",
        "rcfilters-view-tags": "Etiketli düzenlemeler",
+       "rcfilters-view-namespaces-tooltip": "Sonuçları ad alanına göre filtrele",
+       "rcfilters-view-tags-tooltip": "Sonuçları düzenleme etiketlerini kullanarak filtrele",
+       "rcfilters-view-return-to-default-tooltip": "Ana filtre menüsüne dön",
+       "rcfilters-view-tags-help-icon-tooltip": "Etiketli düzenlemeler hakkında daha fazla bilgi edin",
        "rcfilters-liveupdates-button": "Canlı güncelleme",
        "rcfilters-liveupdates-button-title-on": "Canlı güncellemeyi kapat",
        "rcfilters-liveupdates-button-title-off": "Yeni değişiklikleri yapıldıkları anda görüntüleyin",
        "rcfilters-watchlist-markseen-button": "Tüm değişiklileri görüldü olarak işaretle",
+       "rcfilters-watchlist-edit-watchlist-button": "İzlenen sayfaların listesini düzenle",
        "rcfilters-target-page-placeholder": "Bir sayfa (ya da kategori) adı girin",
        "rcnotefrom": "<strong>$3, $4</strong> tarihinden itibaren yapılan {{PLURAL:$5|değişiklik|değişiklik}} aşağıdadır (<strong>$1</strong> tarhine kadar olanlar gösterilmektedir).",
        "rclistfrom": "$3 $2 tarihinden itibaren yeni değişiklikleri göster",
        "apisandbox-examples": "Örnekler",
        "apisandbox-dynamic-parameters-add-label": "Parametre ekle:",
        "apisandbox-dynamic-parameters-add-placeholder": "Parametre adı",
+       "apisandbox-add-multi": "Ekle",
+       "apisandbox-submit-invalid-fields-title": "Bazı alanlar geçersiz",
        "apisandbox-results": "Sonuçlar",
        "apisandbox-request-url-label": "İstek URL:",
        "apisandbox-request-time": "İstek zamanı: $1",
index b262214..29466ce 100644 (file)
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|көн}}",
        "rcfilters-days-show-hours": "$1 {{PLURAL:$1|сәгать}}",
        "rcfilters-quickfilters": "Сакланган фильтрлар",
+       "rcfilters-quickfilters-placeholder-title": "Әлегә сакланылган фильтрлар юк",
        "rcfilters-savedqueries-remove": "Бетерү",
        "rcfilters-savedqueries-new-name-label": "Исем",
        "rcfilters-savedqueries-cancel-label": "Баш тарту",
        "protect-otherreason-op": "Башка сәбәп",
        "protect-dropdown": "* Гади яклау сәбәпләре\n** вандаллык\n** зур спам\n** кирәксез үзгәртүләр саны\n** популяр бит",
        "protect-edit-reasonlist": "Сәбәпләр исемлеген үзгәртү",
-       "protect-expiry-options": "1 сәгать:1 hour,1 көн:1 day,1 атна:1 week,2 атна:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 ел:1 year,вакытсыз:infinite",
+       "protect-expiry-options": "1 сәгать:1 hour,1 көн:1 day,1 атна:1 week,2 атна:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 ел:1 year,чикләүсез:infinite",
        "restriction-type": "Рөхсәт:",
        "restriction-level": "Мөмкинлек дәрәҗәсе:",
        "minimum-size": "Иң кечкенә зурлык",
        "sp-contributions-username": "Кулланучының IP адресы яки исеме:",
        "sp-contributions-toponly": "Соңгы юрамадагы үзгәртүләр генә күрсәтелсен",
        "sp-contributions-newonly": "Битләр ясау үзгәртмәләрен генә күрсәтү",
+       "sp-contributions-hideminor": "Кече үзгәртүләрне яшерергә",
        "sp-contributions-submit": "Эзләү",
        "whatlinkshere": "Бирегә нәрсә сылтый",
        "whatlinkshere-title": "$1 битенә сылтый торган битләр",
        "ipbenableautoblock": "Кулланучы кулланган 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",
+       "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",
        "ipb-confirm": "Тыюны раслау",
        "badipaddress": "Ялгыш IP адресы",
        "blockipsuccesssub": "Тыю башкарылган",
        "special-characters-group-lao": "Лаос",
        "special-characters-group-khmer": "Кһмер",
        "special-characters-group-canadianaboriginal": "Канада иҗек язуы",
+       "mw-widgets-dateinput-no-date": "Дата сайланмаган",
+       "mw-widgets-dateinput-placeholder-day": "ЕЕЕЕ-АА-КК",
+       "mw-widgets-dateinput-placeholder-month": "ЕЕЕЕ-АА",
+       "date-range-from": "Башлангыч дата:",
+       "date-range-to": "Соңгы дата:",
        "randomrootpage": "Очраклы төп бит",
        "log-action-filter-all": "Барысы",
        "log-action-filter-block-block": "Тыю",
index 286de20..50cc2fb 100644 (file)
        "dellogpage": "删除日志",
        "dellogpagetext": "下面是最近的删除的列表。",
        "deletionlog": "删除日志",
+       "log-name-create": "页面创建日志",
+       "log-description-create": "下方是最近的页面创建列表。",
+       "logentry-create-create": "$1{{GENDER:$2|创建了}}页面$3",
        "reverted": "恢复到较早的版本",
        "deletecomment": "原因:",
        "deleteotherreason": "其他/附加原因:",
        "watchlistedit-clear-done": "您的监视列表已清空。",
        "watchlistedit-clear-jobqueue": "您的监视列表正在清空。这需要花一些时间!",
        "watchlistedit-clear-removed": "$1个标题已移除:",
-       "watchlistedit-too-many": "这里显示了太多页面。",
+       "watchlistedit-too-many": "页面太多,无法显示。",
        "watchlisttools-clear": "清空监视列表",
        "watchlisttools-view": "查看相关更改",
        "watchlisttools-edit": "查看并编辑监视列表",
index 4455823..0955a7e 100644 (file)
        "dellogpage": "刪除日誌",
        "dellogpagetext": "以下為最近刪除記錄的清單。",
        "deletionlog": "刪除日誌",
+       "log-name-create": "頁面建立日誌",
+       "log-description-create": "以下為最近頁面建立的清單。",
+       "logentry-create-create": "$1 {{GENDER:$2|已建立}}頁面 $3",
        "reverted": "還原到較早的版本",
        "deletecomment": "原因:",
        "deleteotherreason": "其它/額外的原因:",
        "watchlistedit-clear-done": "已清空您的監視清單。",
        "watchlistedit-clear-jobqueue": "您的監視列表正在清空。這需要花一些時間!",
        "watchlistedit-clear-removed": "已移除 $1 個標題:",
-       "watchlistedit-too-many": "太多要在此處顯示的頁面。",
+       "watchlistedit-too-many": "頁面太多,無法顯示。",
        "watchlisttools-clear": "清空監視清單",
        "watchlisttools-view": "檢視相關變更",
        "watchlisttools-edit": "檢視並編輯監視清單",
index d82cde7..5c69ac3 100644 (file)
@@ -194,5 +194,5 @@ $specialPageAliases = [
 # South Africa uses space for thousands and comma for decimal
 # Reference: AWS Reël 7.4 p. 52, 2002 edition
 # glibc is wrong in this respect in some versions
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 $linkTrail = "/^([a-z]+)(.*)$/sD";
index ea807fd..c54c613 100644 (file)
@@ -65,7 +65,7 @@ $dateFormats = [
 
 # Per discussion on https://translatewiki.net/wiki/Thread:Support/Customization_of number format
 $separatorTransformTable = [
-       ',' => "\xc2\xa0", # nbsp
+       ',' => "\u{00A0}", # nbsp
        '.' => ','
 ];
 
index ee2bbb3..00295fe 100644 (file)
@@ -233,7 +233,7 @@ $dateFormats = [
 ];
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0", # nbsp
+       ',' => "\u{00A0}", # nbsp
        '.' => ','
 ];
 $minimumGroupingDigits = 2;
index 383a3cd..5c49964 100644 (file)
@@ -217,5 +217,5 @@ $bookstoreList = [
 
 $linkTrail = '/^([a-zабвгдежзийклмнопрстуфхцчшщъыьэюя]+)(.*)$/sDu';
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 $minimumGroupingDigits = 2;
index d7614cc..2aef1ed 100644 (file)
@@ -164,5 +164,5 @@ $dateFormats = [
        'dmy both' => 'j M Y "da" H:i',
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 $linkTrail = "/^((?:c\'h|C\'H|C\'h|c’h|C’H|C’h|[a-zA-ZàâçéèêîôûäëïöüùñÇÉÂÊÎÔÛÄËÏÖÜÀÈÙÑ])+)(.*)$/sDu";
index affcc83..6a2e41d 100644 (file)
@@ -383,4 +383,4 @@ $bookstoreList = [
 # Písmena, která se mají objevit jako část odkazu ve formě '[[jazyk]]y' atd:
 $linkTrail = '/^([a-záčďéěíňóřšťúůýž]+)(.*)$/sDu';
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
index 0ce25e2..2e96cc8 100644 (file)
@@ -275,7 +275,7 @@ $magicWords = [
        'url_query'                 => [ '0', 'INFORMPETO', 'QUERY' ],
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $datePreferences = false;
 $defaultDateFormat = 'dmy';
index e0676a6..0d8258e 100644 (file)
@@ -302,7 +302,7 @@ $dateFormats = [
        'dmy both' => 'H:i j M Y',
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 $minimumGroupingDigits = 2;
 
 $linkTrail = '/^([a-záéíóúñ]+)(.*)$/sDu';
index d2f8f32..63365fd 100644 (file)
@@ -258,7 +258,7 @@ $magicWords = [
        'formatdate'                => [ '0', 'kuupäevavormindus', 'formatdate', 'dateformat' ],
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 $minimumGroupingDigits = 2;
 
 $linkTrail = '/^([äöõšüža-z]+)(.*)$/sDu';
index b019fd6..5fbc47b 100644 (file)
@@ -245,7 +245,7 @@ $magicWords = [
        'protectionlevel'           => [ '1', 'SUOJAUSTASO', 'PROTECTIONLEVEL' ],
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $datePreferences = [
        'default',
index 3e3cf80..9844a5e 100644 (file)
@@ -316,4 +316,4 @@ $dateFormats = [
        'ymd both' => 'Y F j à H:i',
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
index 0ac1caf..fc160b4 100644 (file)
@@ -301,4 +301,4 @@ $dateFormats = [
        'ymd both' => 'Y F j "a" H:i',
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
index 9846686..717538b 100644 (file)
@@ -104,4 +104,4 @@ $dateFormats = [
        'dmy both' => 'j "di" M Y "a lis" H:i',
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
index 7fcfad8..6cab75d 100644 (file)
@@ -40,7 +40,7 @@ $namespaceAliases = [
 ];
 
 $fallback8bitEncoding = "iso8859-2";
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $specialPageAliases = [
        'Activeusers'               => [ 'Aktív_felhasználók', 'Aktív_szerkesztők' ],
index 34306d3..1eeaa60 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0", # nbsp
+       ',' => "\u{00A0}", # nbsp
        '.' => ','
 ];
 $minimumGroupingDigits = 2;
index c3a2905..3192e2a 100644 (file)
@@ -8,7 +8,7 @@
  *
  */
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $namespaceNames = [
        NS_MEDIA            => 'Multimedia',
index e73a2fc..fdbce22 100644 (file)
@@ -32,7 +32,7 @@ $namespaceAliases = [
        'Discussioni_immagine' => NS_FILE_TALK,
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $dateFormats = [
        'mdy time' => 'H:i',
index 2c7cb9e..397af46 100644 (file)
@@ -11,7 +11,7 @@
 $fallback = 'kk-latn, kk-cyrl';
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0",
+       ',' => "\u{00A0}",
        '.' => ',',
 ];
 $minimumGroupingDigits = 2;
index c559d02..aeaa06a 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0",
+       ',' => "\u{00A0}",
        '.' => ',',
 ];
 $minimumGroupingDigits = 2;
index 36e8ecb..9c2b84e 100644 (file)
@@ -15,7 +15,7 @@
 $fallback = 'kk-cyrl';
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0",
+       ',' => "\u{00A0}",
        '.' => ',',
 ];
 
index 291ed14..c96c94d 100644 (file)
@@ -94,7 +94,7 @@ $namespaceAliases = [
        'Katejorije_Klaaf'      => NS_CATEGORY_TALK,
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 $minimumGroupingDigits = 2;
 
 $linkTrail = '/^([äöüėëijßəğåůæœça-z]+)(.*)$/sDu';
index 1fa3e11..e6bedd0 100644 (file)
@@ -51,7 +51,7 @@ $namespaceAliases = [
        'Disputatio_Imaginis' => NS_FILE_TALK,
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0" ];
+$separatorTransformTable = [ ',' => "\u{00A0}" ];
 
 $dateFormats = [
        'mdy time' => 'H:i',
index 9b4aa82..ae72fac 100644 (file)
@@ -12,7 +12,7 @@
 $fallback = 'ru';
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0", # nbsp
+       ',' => "\u{00A0}", # nbsp
        '.' => ','
 ];
 
index 6a71ca7..a92dc02 100644 (file)
@@ -19,4 +19,4 @@ $namespaceGenderAliases = [];
 $linkPrefixExtension = true;
 
 # Same as the French (T10485)
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
index b79f9d8..68d41c0 100644 (file)
@@ -171,7 +171,7 @@ $magicWords = [
 ];
 
 $fallback8bitEncoding = 'windows-1257';
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $dateFormats = [
        'ymd time' => 'H:i',
index 94aac60..6d8e198 100644 (file)
@@ -63,7 +63,7 @@ $namespaceGenderAliases = [
        NS_USER_TALK => [ 'male' => 'Dalībnieka_diskusija', 'female' => 'Dalībnieces_diskusija' ]
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 /**
  * A list of date format preference keys, which can be selected in user
index b51839d..c172d08 100644 (file)
@@ -323,6 +323,6 @@ $digitTransformTable = [
        '9' => '९', # &#x096f;
 ];
 
-$linkTrail = "/^([\xE0\xA4\x80-\xE0\xA5\xA3\xE0\xA5\xB1-\xE0\xA5\xBF\xEF\xBB\xBF\xE2\x80\x8D]+)(.*)$/sDu";
+$linkTrail = "/^([\u{0900}-\u{0963}\u{0971}-\u{097F}\u{FEFF}\u{200D}]+)(.*)$/sDu";
 
 $digitGroupingPattern = "##,##,###";
index 66f0527..002dcac 100644 (file)
@@ -82,7 +82,7 @@ $namespaceAliases = [
        'Bildediskusjon' => NS_FILE_TALK,
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 $linkTrail = '/^([æøåa-z]+)(.*)$/sDu';
 
 $datePreferenceMigrationMap = [
index 816cff0..9107b9a 100644 (file)
@@ -317,7 +317,7 @@ $specialPageAliases = [
 ];
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0",
+       ',' => "\u{00A0}",
        '.' => ','
 ];
 $linkTrail = '/^([æøåa-z]+)(.*)$/sDu';
index eb8ed88..16edc8e 100644 (file)
@@ -286,6 +286,6 @@ $dateFormats = [
        'oc normal both' => 'j F "de" Y "a" H.i',
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $linkTrail = "/^([a-zàâçéèêîôû]+)(.*)$/sDu";
index 1af008f..dcc9a44 100644 (file)
@@ -121,7 +121,7 @@ $dateFormats = [
 $fallback8bitEncoding = 'iso-8859-2';
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0", // T4749
+       ',' => "\u{00A0}", // T4749
        '.' => ','
 ];
 $minimumGroupingDigits = 2;
index 78503cc..f57f322 100644 (file)
@@ -110,7 +110,7 @@ $dateFormats = [
        'dmy both' => 'H\hi\m\i\n \d\e j \d\e F \d\e Y',
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 $linkTrail = '/^([áâãàéêẽçíòóôõq̃úüűũa-z]+)(.*)$/sDu'; # T23168, T29633
 
 $specialPageAliases = [
index 61625e1..499e936 100644 (file)
@@ -120,7 +120,7 @@ $dateFormats = [
 
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $specialPageAliases = [
        'Activeusers'               => [ 'Usuários_ativos' ],
index 1abecad..b513648 100644 (file)
@@ -417,7 +417,7 @@ $bookstoreList = [
 ];
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0", # nbsp
+       ',' => "\u{00A0}", # nbsp
        '.' => ','
 ];
 $minimumGroupingDigits = 2;
index 8e1d476..4859719 100644 (file)
@@ -134,6 +134,6 @@ $magicWords = [
        'img_link'                  => [ '1', 'liŋka=$1', 'link=$1' ],
 ];
 
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 $linkTrail = '/^(:?[a-zàáâçčʒǯđðéèêëǧǥȟíìîïıǩŋñóòôõßšŧúùûýÿüžþæøåäö]+)(.*)$/sDu';
index 0399bfa..847a13d 100644 (file)
@@ -285,7 +285,7 @@ $namespaceGenderAliases = [
 ];
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0",
+       ',' => "\u{00A0}",
        '.' => ','
 ];
 
index d2ce357..5511dab 100644 (file)
@@ -321,7 +321,7 @@ $magicWords = [
 
 $linkTrail = '/^([a-zåäöéÅÄÖÉ]+)(.*)$/sDu';
 $separatorTransformTable = [
-       ',' => "\xc2\xa0", // T4749
+       ',' => "\u{00A0}", // T4749
        '.' => ','
 ];
 
index f089896..48a96c4 100644 (file)
@@ -80,6 +80,6 @@ $magicWords = [
        'url_wiki'                  => [ '0', 'விக்கி', 'WIKI' ],
 ];
 
-$linkTrail = "/^([\xE0\xAE\x80-\xE0\xAF\xBF]+)(.*)$/sDu";
+$linkTrail = "/^([\u{0B80}-\u{0BFF}]+)(.*)$/sDu";
 
 $digitGroupingPattern = "##,##,###";
index 4f385cf..47bc707 100644 (file)
@@ -144,6 +144,6 @@ $magicWords = [
        'special'                   => [ '0', 'ప్రత్యేక', 'special' ],
 ];
 
-$linkTrail = "/^([\xE0\xB0\x81-\xE0\xB1\xAF]+)(.*)$/sDu";
+$linkTrail = "/^([\u{0C01}-\u{0C6F}]+)(.*)$/sDu";
 
 $digitGroupingPattern = "##,##,###";
index 46d5dcb..cdfe308 100644 (file)
@@ -44,4 +44,4 @@ $namespaceGenderAliases = [];
 
 $linkTrail = '/^([a-zа-яёӝӟӥӧӵ]+)(.*)$/sDu';
 $fallback8bitEncoding = 'windows-1251';
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
index 68d37c9..2b68572 100644 (file)
@@ -55,7 +55,7 @@
  */
 
 $separatorTransformTable = [
-       ',' => "\xc2\xa0", # nbsp
+       ',' => "\u{00A0}", # nbsp
        '.' => ','
 ];
 $minimumGroupingDigits = 2;
index 53d8efa..1720545 100644 (file)
@@ -121,5 +121,5 @@ $dateFormats = [
  */
 $separatorTransformTable = [
        '.' => ',',
-       ',' => "\xc2\xa0", # nbsp
+       ',' => "\u{00A0}", # nbsp
 ];
index 68f3ae7..f42dd8c 100644 (file)
@@ -79,7 +79,7 @@ $specialPageAliases = [
 # definixha del cogne po les limeros
 # (number format definition)
 # en: 12,345.67 -> wa: 12 345,67
-$separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ];
+$separatorTransformTable = [ ',' => "\u{00A0}", '.' => ',' ];
 
 # $linkTrail = '/^([a-zåâêîôûçéèA-ZÅÂÊÎÔÛÇÉÈ]+)(.*)$/sDu';
 $linkTrail = '/^([a-zåâêîôûçéè]+)(.*)$/sDu';
diff --git a/maintenance/archives/patch-archive-ar_rev_id-unique.sql b/maintenance/archives/patch-archive-ar_rev_id-unique.sql
new file mode 100644 (file)
index 0000000..0f07627
--- /dev/null
@@ -0,0 +1,4 @@
+-- T193180: ar_rev_id should be unique
+
+CREATE UNIQUE INDEX /*i*/ar_revid_uniq ON /*_*/archive (ar_rev_id);
+DROP INDEX /*i*/ar_revid ON /*_*/archive;
index 038b28c..24ca86d 100644 (file)
@@ -53,9 +53,14 @@ class CleanupSpam extends Maintenance {
                $wgUser->addGroup( 'bot' );
 
                $spec = $this->getArg();
-               $like = LinkFilter::makeLikeArray( $spec );
-               if ( !$like ) {
-                       $this->fatalError( "Not a valid hostname specification: $spec" );
+
+               $likes = [];
+               foreach ( [ 'http://', 'https://' ] as $prot ) {
+                       $like = LinkFilter::makeLikeArray( $spec, $prot );
+                       if ( !$like ) {
+                               $this->fatalError( "Not a valid hostname specification: $spec" );
+                       }
+                       $likes[$prot] = $like;
                }
 
                if ( $this->hasOption( 'all' ) ) {
@@ -63,15 +68,24 @@ class CleanupSpam extends Maintenance {
                        $this->output( "Finding spam on " . count( $wgLocalDatabases ) . " wikis\n" );
                        $found = false;
                        foreach ( $wgLocalDatabases as $wikiID ) {
+                               /** @var $dbr Database */
                                $dbr = $this->getDB( DB_REPLICA, [], $wikiID );
 
-                               $count = $dbr->selectField( 'externallinks', 'COUNT(*)',
-                                       [ 'el_index' . $dbr->buildLike( $like ) ], __METHOD__ );
-                               if ( $count ) {
-                                       $found = true;
-                                       $cmd = wfShellWikiCmd( "$IP/maintenance/cleanupSpam.php",
-                                               [ '--wiki', $wikiID, $spec ] );
-                                       passthru( "$cmd | sed 's/^/$wikiID:  /'" );
+                               foreach ( $likes as $like ) {
+                                       $count = $dbr->selectField(
+                                               'externallinks',
+                                               'COUNT(*)',
+                                               [ 'el_index' . $dbr->buildLike( $like ) ],
+                                               __METHOD__
+                                       );
+                                       if ( $count ) {
+                                               $found = true;
+                                               $cmd = wfShellWikiCmd(
+                                                       "$IP/maintenance/cleanupSpam.php",
+                                                       [ '--wiki', $wikiID, $spec ]
+                                               );
+                                               passthru( "$cmd | sed 's/^/$wikiID:  /'" );
+                                       }
                                }
                        }
                        if ( $found ) {
@@ -82,13 +96,21 @@ class CleanupSpam extends Maintenance {
                } else {
                        // Clean up spam on this wiki
 
+                       $count = 0;
+                       /** @var $dbr Database */
                        $dbr = $this->getDB( DB_REPLICA );
-                       $res = $dbr->select( 'externallinks', [ 'DISTINCT el_from' ],
-                               [ 'el_index' . $dbr->buildLike( $like ) ], __METHOD__ );
-                       $count = $dbr->numRows( $res );
-                       $this->output( "Found $count articles containing $spec\n" );
-                       foreach ( $res as $row ) {
-                               $this->cleanupArticle( $row->el_from, $spec );
+                       foreach ( $likes as $prot => $like ) {
+                               $res = $dbr->select(
+                                       'externallinks',
+                                       [ 'DISTINCT el_from' ],
+                                       [ 'el_index' . $dbr->buildLike( $like ) ],
+                                       __METHOD__
+                               );
+                               $count = $dbr->numRows( $res );
+                               $this->output( "Found $count articles containing $spec\n" );
+                               foreach ( $res as $row ) {
+                                       $this->cleanupArticle( $row->el_from, $spec, $prot );
+                               }
                        }
                        if ( $count ) {
                                $this->output( "Done\n" );
@@ -96,7 +118,13 @@ class CleanupSpam extends Maintenance {
                }
        }
 
-       private function cleanupArticle( $id, $domain ) {
+       /**
+        * @param int $id
+        * @param string $domain
+        * @param string $protocol
+        * @throws MWException
+        */
+       private function cleanupArticle( $id, $domain, $protocol ) {
                $title = Title::newFromID( $id );
                if ( !$title ) {
                        $this->error( "Internal error: no page for ID $id" );
@@ -109,7 +137,7 @@ class CleanupSpam extends Maintenance {
                $currentRevId = $rev->getId();
 
                while ( $rev && ( $rev->isDeleted( Revision::DELETED_TEXT )
-                       || LinkFilter::matchEntry( $rev->getContent( Revision::RAW ), $domain ) )
+                       || LinkFilter::matchEntry( $rev->getContent( Revision::RAW ), $domain, $protocol ) )
                ) {
                        $rev = $rev->getPrevious();
                }
index b3e7aec..ff3e2fc 100644 (file)
@@ -539,7 +539,7 @@ class GenerateSitemap extends Maintenance {
         */
        function generateLimit( $namespace ) {
                // T19961: make a title with the longest possible URL in this namespace
-               $title = Title::makeTitle( $namespace, str_repeat( "\xf0\xa8\xae\x81", 63 ) . "\xe5\x96\x83" );
+               $title = Title::makeTitle( $namespace, str_repeat( "\u{28B81}", 63 ) . "\u{5583}" );
 
                $this->limit = [
                        strlen( $this->openFile() ),
index c8fb629..c6a5c68 100644 (file)
@@ -508,18 +508,18 @@ class Languages {
                $this->loadGeneralMessages();
                $this->loadMessages( $code );
                $wrongChars = [
-                       '[LRM]' => "\xE2\x80\x8E",
-                       '[RLM]' => "\xE2\x80\x8F",
-                       '[LRE]' => "\xE2\x80\xAA",
-                       '[RLE]' => "\xE2\x80\xAB",
-                       '[POP]' => "\xE2\x80\xAC",
-                       '[LRO]' => "\xE2\x80\xAD",
-                       '[RLO]' => "\xE2\x80\xAB",
-                       '[ZWSP]' => "\xE2\x80\x8B",
-                       '[NBSP]' => "\xC2\xA0",
-                       '[WJ]' => "\xE2\x81\xA0",
-                       '[BOM]' => "\xEF\xBB\xBF",
-                       '[FFFD]' => "\xEF\xBF\xBD",
+                       '[LRM]' => "\u{200E}",
+                       '[RLM]' => "\u{200F}",
+                       '[LRE]' => "\u{202A}",
+                       '[RLE]' => "\u{202B}",
+                       '[POP]' => "\u{202C}",
+                       '[LRO]' => "\u{202D}",
+                       '[RLO]' => "\u{202B}",
+                       '[ZWSP]' => "\u{200B}",
+                       '[NBSP]' => "\u{00A0}",
+                       '[WJ]' => "\u{2060}",
+                       '[BOM]' => "\u{FEFF}",
+                       '[FFFD]' => "\u{FFFD}",
                ];
                $wrongRegExp = '/(' . implode( '|', array_values( $wrongChars ) ) . ')/sDu';
                $wrongCharsMessages = [];
index fbe207d..f7db574 100644 (file)
@@ -290,7 +290,7 @@ CREATE TABLE /*_*/archive (
 CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);
 CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);
 CREATE INDEX /*i*/ar_actor_timestamp ON /*_*/archive (ar_actor,ar_timestamp);
-CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
+CREATE UNIQUE INDEX /*i*/ar_revid_uniq ON /*_*/archive (ar_rev_id);
 
 
 --
diff --git a/maintenance/oracle/archives/patch-archive-ar_rev_id-unique.sql b/maintenance/oracle/archives/patch-archive-ar_rev_id-unique.sql
new file mode 100644 (file)
index 0000000..c1cccc2
--- /dev/null
@@ -0,0 +1,6 @@
+-- T193180: ar_rev_id should be unique
+
+define mw_prefix='{$wgDBprefix}';
+
+CREATE UNIQUE INDEX &mw_prefix.archive_i04 ON &mw_prefix.archive (ar_rev_id);
+DROP INDEX &mw_prefix.archive_i03;
index 6e36752..612f089 100644 (file)
@@ -271,7 +271,7 @@ ALTER TABLE &mw_prefix.archive ADD CONSTRAINT &mw_prefix.archive_fk2 FOREIGN KEY
 CREATE INDEX &mw_prefix.archive_i01 ON &mw_prefix.archive (ar_namespace,ar_title,ar_timestamp);
 CREATE INDEX &mw_prefix.archive_i02 ON &mw_prefix.archive (ar_user_text,ar_timestamp);
 CREATE INDEX &mw_prefix.ar_actor_timestamp ON &mw_prefix.archive (ar_actor,ar_timestamp);
-CREATE INDEX &mw_prefix.archive_i03 ON &mw_prefix.archive (ar_rev_id);
+CREATE UNIQUE INDEX &mw_prefix.archive_i04 ON &mw_prefix.archive (ar_rev_id);
 /*$mw$*/
 CREATE TRIGGER &mw_prefix.archive_seq_trg BEFORE INSERT ON &mw_prefix.archive
        FOR EACH ROW WHEN (new.ar_id IS NULL)
index cf0eb2f..2f56772 100644 (file)
@@ -263,6 +263,7 @@ ALTER SEQUENCE archive_ar_id_seq OWNED BY archive.ar_id;
 CREATE INDEX archive_name_title_timestamp ON archive (ar_namespace,ar_title,ar_timestamp);
 CREATE INDEX archive_user_text            ON archive (ar_user_text);
 CREATE INDEX archive_actor                ON archive (ar_actor);
+CREATE UNIQUE INDEX ar_revid_uniq ON archive (ar_rev_id);
 
 
 CREATE TABLE slots (
diff --git a/maintenance/sqlite/archives/patch-archive-ar_rev_id-unique.sql b/maintenance/sqlite/archives/patch-archive-ar_rev_id-unique.sql
new file mode 100644 (file)
index 0000000..9677dbb
--- /dev/null
@@ -0,0 +1,4 @@
+-- T193180: ar_rev_id should be unique
+
+CREATE UNIQUE INDEX /*i*/ar_revid_uniq ON /*_*/archive (ar_rev_id);
+DROP INDEX /*i*/ar_revid;
index 53c1529..d8a47cb 100644 (file)
@@ -667,7 +667,7 @@ CREATE INDEX /*i*/ar_actor_timestamp ON /*_*/archive (ar_actor,ar_timestamp);
 
 -- Index for linking archive rows with tables that normally link with revision
 -- rows, such as change_tag.
-CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
+CREATE UNIQUE INDEX /*i*/ar_revid_uniq ON /*_*/archive (ar_rev_id);
 
 --
 -- Slots represent an n:m relation between revisions and content objects.
index da5cfb1..b4707e6 100644 (file)
@@ -1543,7 +1543,7 @@ abstract class MediaWikiTestCase extends PHPUnit\Framework\TestCase {
                if ( $db ) {
                        $userTables = [ 'user', 'user_groups', 'user_properties', 'actor' ];
                        $pageTables = [ 'page', 'revision', 'ip_changes', 'revision_comment_temp',
-                               'revision_actor_temp', 'comment' ];
+                               'revision_actor_temp', 'comment', 'archive' ];
                        $coreDBDataTables = array_merge( $userTables, $pageTables );
 
                        // If any of the user or page tables were marked as used, we should clear all of them.
index f9e0bc9..417b468 100644 (file)
@@ -53,11 +53,11 @@ class CustomUppercaseCollationTest extends MediaWikiTestCase {
                        [ 'do', 'D' ],
                        [ 'Ao', 'A' ],
                        [ 'afdsa', 'A' ],
-                       [ "\xF3\xB3\x80\x80Foo", 'D' ],
-                       [ "\xF3\xB3\x80\x81Foo", 'C' ],
-                       [ "\xF3\xB3\x80\x82Foo", 'Cs' ],
-                       [ "\xF3\xB3\x80\x83Foo", 'B' ],
-                       [ "\xF3\xB3\x80\x84Foo", "\xF3\xB3\x80\x84" ],
+                       [ "\u{F3000}Foo", 'D' ],
+                       [ "\u{F3001}Foo", 'C' ],
+                       [ "\u{F3002}Foo", 'Cs' ],
+                       [ "\u{F3003}Foo", 'B' ],
+                       [ "\u{F3004}Foo", "\u{F3004}" ],
                        [ 'C', 'C' ],
                        [ 'Cz', 'C' ],
                        [ 'Cs', 'Cs' ],
index 354dae2..c711291 100644 (file)
@@ -35,7 +35,7 @@ class CSSMinTest extends MediaWikiTestCase {
        public static function provideSerializeStringValue() {
                return [
                        [ 'Hello World!', '"Hello World!"' ],
-                       [ "Null\0Null", "\"Null\xEF\xBF\xBDNull\"" ],
+                       [ "Null\0Null", "\"Null\u{FFFD}Null\"" ],
                        [ '"', '"\\""' ],
                        [ "'", '"\'"' ],
                        [ "\\", '"\\\\"' ],
@@ -43,9 +43,9 @@ class CSSMinTest extends MediaWikiTestCase {
                        [ "Space  tab \t space", '"Space  tab \\9  space"' ],
                        [ "Line\nfeed", '"Line\\a feed"' ],
                        [ "Return\rreturn", '"Return\\d return"' ],
-                       [ "Next\xc2\x85line", "\"Next\xc2\x85line\"" ],
+                       [ "Next\u{0085}line", "\"Next\u{0085}line\"" ],
                        [ "Del\x7fDel", '"Del\\7f Del"' ],
-                       [ "nb\xc2\xa0sp", "\"nb\xc2\xa0sp\"" ],
+                       [ "nb\u{00A0}sp", "\"nb\u{00A0}sp\"" ],
                        [ "AMP&amp;AMP", "\"AMP&amp;AMP\"" ],
                        [ '!"#$%&\'()*+,-./0123456789:;<=>?', '"!\\"#$%&\'()*+,-./0123456789:;<=>?"' ],
                        [ '@[\\]^_`{|}~', '"@[\\\\]^_`{|}~"' ],
index 93192d0..a86a1c9 100644 (file)
@@ -79,12 +79,12 @@ class DatabaseMysqlBaseTest extends PHPUnit\Framework\TestCase {
 
                        // unicode chars
                        [
-                               self::createUnicodeString( '`\u0001a\uFFFFb`' ),
-                               self::createUnicodeString( '\u0001a\uFFFFb' )
+                               "`\u{0001}a\u{FFFF}b`",
+                               "\u{0001}a\u{FFFF}b"
                        ],
                        [
-                               self::createUnicodeString( '`\u0001\uFFFF`' ),
-                               self::createUnicodeString( '\u0001\u0000\uFFFF\u0000' )
+                               "`\u{0001}\u{FFFF}`",
+                               "\u{0001}\u{0000}\u{FFFF}\u{0000}"
                        ],
                        [ '`☃`', '☃' ],
                        [ '`メインページ`', 'メインページ' ],
@@ -97,10 +97,6 @@ class DatabaseMysqlBaseTest extends PHPUnit\Framework\TestCase {
                ];
        }
 
-       private static function createUnicodeString( $str ) {
-               return json_decode( '"' . $str . '"' );
-       }
-
        private function getMockForViews() {
                $db = $this->getMockBuilder( DatabaseMysqli::class )
                        ->disableOriginalConstructor()
index 40c4e1e..68539b5 100644 (file)
@@ -96,6 +96,8 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase {
         * @covers WikiPage::doEditUpdates
         */
        public function testDoEditContent() {
+               $this->setMwGlobals( 'wgPageCreationLog', true );
+
                $page = $this->newPage( __METHOD__ );
                $title = $page->getTitle();
 
@@ -108,13 +110,21 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase {
 
                $page->doEditContent( $content, "[[testing]] 1" );
 
+               $id = $page->getId();
+
+               // Test page creation logging
+               $this->assertSelect(
+                       'logging',
+                       [ 'log_type', 'log_action' ],
+                       [ 'log_page' => $id ],
+                       [ [ 'create', 'create' ] ]
+               );
+
                $this->assertTrue( $title->getArticleID() > 0, "Title object should have new page id" );
-               $this->assertTrue( $page->getId() > 0, "WikiPage should have new page id" );
+               $this->assertTrue( $id > 0, "WikiPage should have new page id" );
                $this->assertTrue( $title->exists(), "Title object should indicate that the page now exists" );
                $this->assertTrue( $page->exists(), "WikiPage object should indicate that the page now exists" );
 
-               $id = $page->getId();
-
                # ------------------------
                $dbr = wfGetDB( DB_REPLICA );
                $res = $dbr->select( 'pagelinks', '*', [ 'pl_from' => $id ] );
index 8653bcd..7e29c92 100644 (file)
@@ -1593,9 +1593,9 @@ class LanguageTest extends LanguageClassesTestCase {
         * @covers Language::embedBidi()
         */
        public function testEmbedBidi() {
-               $lre = "\xE2\x80\xAA"; // U+202A LEFT-TO-RIGHT EMBEDDING
-               $rle = "\xE2\x80\xAB"; // U+202B RIGHT-TO-LEFT EMBEDDING
-               $pdf = "\xE2\x80\xAC"; // U+202C POP DIRECTIONAL FORMATTING
+               $lre = "\u{202A}"; // U+202A LEFT-TO-RIGHT EMBEDDING
+               $rle = "\u{202B}"; // U+202B RIGHT-TO-LEFT EMBEDDING
+               $pdf = "\u{202C}"; // U+202C POP DIRECTIONAL FORMATTING
                $lang = $this->getLang();
                $this->assertEquals(
                        '123',