Merge "(bug 35884) width:auto unneeded on header element"
authorBrion VIBBER <brion@wikimedia.org>
Sat, 21 Apr 2012 19:36:38 +0000 (19:36 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 21 Apr 2012 19:36:39 +0000 (19:36 +0000)
58 files changed:
RELEASE-NOTES-1.20
includes/Exception.php
includes/HTMLForm.php
includes/HttpFunctions.php
includes/Skin.php
includes/filerepo/file/LocalFile.php
includes/objectcache/BagOStuff.php
includes/objectcache/MemcachedPhpBagOStuff.php
languages/messages/MessagesAf.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesBa.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesDe.php
languages/messages/MessagesEs.php
languages/messages/MessagesFa.php
languages/messages/MessagesFr.php
languages/messages/MessagesHe.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIo.php
languages/messages/MessagesJa.php
languages/messages/MessagesKa.php
languages/messages/MessagesKo.php
languages/messages/MessagesKy.php
languages/messages/MessagesLb.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMs.php
languages/messages/MessagesNan.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesPl.php
languages/messages/MessagesPt.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRm.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesSl.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSv.php
languages/messages/MessagesTa.php
languages/messages/MessagesTk.php
languages/messages/MessagesTly.php
languages/messages/MessagesVo.php
languages/messages/MessagesYo.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/language/messageTypes.inc
resources/jquery.ui/themes/vector/jquery.ui.dialog.css
resources/mediawiki.special/mediawiki.special.upload.js
tests/jasmine/SpecRunner.html
tests/jasmine/spec/mediawiki.Uri.spec.js [deleted file]
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/languages/LanguageDocumentationTest.php [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js

index 9722f48..ebf30ca 100644 (file)
@@ -87,6 +87,7 @@ production.
 * (bug 18704) Add a unique CSS class or ID to the tagfilter table row at RecentChanges
 * (bug 33564) transwiki import sometimes result in invalid title.
 * (bug 35572) Blocks appear to succeed even if query fails due to wrong DB structure
+* (bug 31757) Add a word-separator between help-messages in HTMLForm
 
 === API changes in 1.20 ===
 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
index c75da5a..2d1772b 100644 (file)
@@ -461,7 +461,7 @@ class HttpError extends MWException {
                        $content = htmlspecialchars( $this->content );
                }
 
-               print "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n".
+               print "<!DOCTYPE html>\n".
                        "<html><head><title>$header</title></head>\n" .
                        "<body><h1>$header</h1><p>$content</p></body></html>\n";
        }
index ec1507c..029ed05 100644 (file)
@@ -1096,6 +1096,11 @@ abstract class HTMLFormField {
                                $msg = wfMessage( array_shift( $helpMessage ), $helpMessage );
 
                                if( $msg->exists() ) {
+                                       if( is_null( $helptext ) ) {
+                                               $helptext = '';
+                                       } else {
+                                               $helptext .= wfMessage( 'word-separator' )->escaped(); // some space
+                                       }
                                        $helptext .= $msg->parse(); // Append message
                                }
                        }
@@ -1306,7 +1311,7 @@ class HTMLTextAreaField extends HTMLFormField {
                        $attribs['readonly'] = 'readonly';
                }
 
-               if ( !empty( $this->mParams['placeholder'] ) ) {
+               if ( isset( $this->mParams['placeholder'] ) ) {
                        $attribs['placeholder'] = $this->mParams['placeholder'];
                }
 
index a1d2e59..6adef84 100644 (file)
@@ -216,6 +216,11 @@ class MWHttpRequest {
 
                foreach ( $members as $o ) {
                        if ( isset( $options[$o] ) ) {
+                               // ensure that MWHttpRequest::method is always
+                               // uppercased. Bug 36137
+                               if ( $o == 'method' ) {
+                                       $options[$o] = strtoupper( $options[$o] );
+                               }
                                $this->$o = $options[$o];
                        }
                }
index 8b10d7f..f40de4c 100644 (file)
@@ -688,6 +688,7 @@ abstract class Skin extends ContextSource {
         * @return string
         */
        function subPageSubtitle() {
+               global $wgLang;
                $out = $this->getOutput();
                $subpages = '';
 
@@ -718,7 +719,7 @@ abstract class Skin extends ContextSource {
                                                $c++;
 
                                                if ( $c > 1 ) {
-                                                       $subpages .= $this->msg( 'pipe-separator' )->escaped();
+                                                       $subpages .= $wgLang->getDirMarkEntity() . $this->msg( 'pipe-separator' )->escaped();
                                                } else  {
                                                        $subpages .= '&lt; ';
                                                }
index af1b7cd..ffadca9 100644 (file)
@@ -2319,7 +2319,8 @@ class LocalFileMoveBatch {
                        'oldimage',
                        array(
                                'oi_name' => $this->newName,
-                               'oi_archive_name = ' . $dbw->strreplace( 'oi_archive_name', $dbw->addQuotes( $this->oldName ), $dbw->addQuotes( $this->newName ) ),
+                               'oi_archive_name = ' . $dbw->strreplace( 'oi_archive_name',
+                                       $dbw->addQuotes( $this->oldName ), $dbw->addQuotes( $this->newName ) ),
                        ),
                        array( 'oi_name' => $this->oldName ),
                        __METHOD__
@@ -2328,7 +2329,10 @@ class LocalFileMoveBatch {
                $affected = $dbw->affectedRows();
                $total = $this->oldCount;
                $status->successCount += $affected;
-               $status->failCount += $total - $affected;
+               // Bug 34934: $total is based on files that actually exist.
+               // There may be more DB rows than such files, in which case $affected
+               // can be greater than $total. We use max() to avoid negatives here.
+               $status->failCount += max( 0, $total - $affected );
                if ( $status->failCount ) {
                        $status->error( 'imageinvalidfilename' );
                }
index a4545ef..71469ab 100644 (file)
@@ -61,6 +61,21 @@ abstract class BagOStuff {
         */
        abstract public function get( $key );
 
+       /**
+        * Get an associative array containing the item for each of the given keys.
+        * Each item will be false if it does not exist.
+        * @param $keys Array List of strings
+        *
+        * @return Array
+        */
+       public function getBatch( array $keys ) {
+               $res = array();
+               foreach ( $keys as $key ) {
+                       $res[$key] = $this->get( $key );
+               }
+               return $res;
+       }
+
        /**
         * Set an item.
         * @param $key string
index 021dfb7..d2c7a2d 100644 (file)
@@ -63,6 +63,15 @@ class MemcachedPhpBagOStuff extends BagOStuff {
                return $this->client->get( $this->encodeKey( $key ) );
        }
 
+       /**
+        * @param $keys Array
+        * @return Array
+        */
+       public function getBatch( array $keys ) {
+               $callback = array( $this, 'encodeKey' );
+               return $this->client->get_multi( array_map( $callback, $keys ) );
+       }
+
        /**
         * @param $key string
         * @param $value
@@ -137,7 +146,7 @@ class MemcachedPhpBagOStuff extends BagOStuff {
        }
 
        /**
-        * Get the underlying client object. This is provided for debugging 
+        * Get the underlying client object. This is provided for debugging
         * purposes.
         *
         * @return MemCachedClientforWiki
@@ -149,14 +158,14 @@ class MemcachedPhpBagOStuff extends BagOStuff {
        /**
         * Encode a key for use on the wire inside the memcached protocol.
         *
-        * We encode spaces and line breaks to avoid protocol errors. We encode 
-        * the other control characters for compatibility with libmemcached 
+        * We encode spaces and line breaks to avoid protocol errors. We encode
+        * the other control characters for compatibility with libmemcached
         * verify_key. We leave other punctuation alone, to maximise backwards
         * compatibility.
         * @return string
         */
        public function encodeKey( $key ) {
-               return preg_replace_callback( '/[\x00-\x20\x25\x7f]+/', 
+               return preg_replace_callback( '/[\x00-\x20\x25\x7f]+/',
                        array( $this, 'encodeKeyCallback' ), $key );
        }
 
@@ -165,7 +174,7 @@ class MemcachedPhpBagOStuff extends BagOStuff {
        }
 
        /**
-        * Decode a key encoded with encodeKey(). This is provided as a convenience 
+        * Decode a key encoded with encodeKey(). This is provided as a convenience
         * function for debugging.
         *
         * @param $key string
index a7fb244..3727e35 100644 (file)
@@ -876,7 +876,8 @@ Die laaste inskrywing in die blokkeerlogboek word hieronder vertoon:',
 Onthou dat u eie .css- en .js-bladsye met 'n kleinletter begin, byvoorbeeld {{ns:user}}:Naam/vector.css in plaas van {{ns:user}}:Naam/Vector.css.",
 'updated' => '(Gewysig)',
 'note' => "'''Nota:'''",
-'previewnote' => "'''Onthou dat hierdie slegs 'n voorskou is en nog nie gestoor is nie!'''",
+'previewnote' => "'''Onthou dat hierdie slegs 'n voorskou is.'''
+U teks is nog nie gestoor nie! [[#editform|→ Wysig verder]]",
 'previewconflict' => 'Hierdie voorskou vertoon die teks in die boonste teksarea soos dit sou lyk indien u die bladsy stoor.',
 'session_fail_preview' => "'''Jammer! Weens verlies aan sessie-inligting is die wysiging nie verwerk nie.
 Probeer asseblief weer. As dit steeds nie werk nie, probeer om [[Special:UserLogout|af te teken]] en dan weer aan te teken.'''",
@@ -890,6 +891,7 @@ Die bewerking is geweier om verminking van die bladsy se teks te voorkom.
 Dit gebeur soms as 'n webgebaseerde instaandiens (proxy) gebruik word wat foute bevat.",
 'edit_form_incomplete' => "'''Dele van die vorm het nie die bediener bereik nie. Kyk of alles reg lyk en probeer weer.'''",
 'editing' => 'Besig om $1 te wysig',
+'creating' => 'Besig om $1 te skep',
 'editingsection' => 'Besig om $1 (onderafdeling) te wysig',
 'editingcomment' => 'Besig om $1 te wysig (nuwe opskrif)',
 'editconflict' => 'Wysigingskonflik: $1',
@@ -953,6 +955,7 @@ Dit lyk of dit verwyder is.',
 'edit-no-change' => 'U wysiging was geignoreer omdat die teks nie verander is nie.',
 'edit-already-exists' => 'Die bladsy is nie geskep nie.
 Dit bestaan alreeds.',
+'defaultmessagetext' => 'Verstekteks',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Waarskuwing: Die bladsy gebruik te veel duur ontlederfunksies.
@@ -1537,6 +1540,7 @@ Die inligting is vir ander gebruikers sigbaar.',
 'newsectionsummary' => '/* $1 */ nuwe afdeling',
 'rc-enhanced-expand' => 'Wys details (benodig JavaScript)',
 'rc-enhanced-hide' => 'Steek details weg',
+'rc-old-title' => 'oorspronklik geskep as "$1"',
 
 # Recent changes linked
 'recentchangeslinked' => 'Verwante veranderings',
@@ -2033,6 +2037,12 @@ U kan die resultate vernou deur 'n boekstaaftipe, gebruikersnaam (kas-sensitief)
 'allpagesbadtitle' => "Die gespesifiseerde bladsynaam is ongeldig of het 'n intertaal- of interwiki-voorvoegsel.
 Dit is moontlik dat die naam karakters bevat wat nie in titels gebruik mag word nie.",
 'allpages-bad-ns' => '{{SITENAME}} het geen naamspasie "$1" nie.',
+'allpages-hide-redirects' => 'Versteek aansture',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => "U kyk na 'n gekasde weergawe ban die bladsy, wat tot $1 oud kan wees.",
+'cachedspecial-viewing-cached-ts' => "U kyk na 'n gekasde weergawe ban die bladsy, wat moontlik nie volledig bygewerk is nie.",
+'cachedspecial-refresh-now' => 'Wys nuutste.',
 
 # Special:Categories
 'categories' => 'Kategorieë',
@@ -3738,10 +3748,12 @@ Beelde word in hulle volle resolusie gewys. Ander lêertipes word direk met hull
 # API errors
 'api-error-badaccess-groups' => 'U word nie toegelaat om lêers te laai op hierdie wiki.',
 'api-error-badtoken' => 'Interne fout: slegte teken.',
+'api-error-copyuploaddisabled' => 'Oplaai via URL is gedeaktiveer op hierdie bediener.',
 'api-error-duplicate-archive-popup-title' => 'Duplikaat {{PLURAL:$1|lêer|lêers}} wat al verwyder is.',
 'api-error-duplicate-popup-title' => 'Duplikaat {{PLURAL:$1|lêer|lêers}}',
 'api-error-empty-file' => 'Die lêer wat u probeer oplaai is leeg.',
 'api-error-emptypage' => 'Die skep van leë nuwe bladsye word nie toegelaat nie.',
+'api-error-fetchfileerror' => 'Interne fout: Iets het verkeerd gegaan met die haal van die lêer.',
 'api-error-file-too-large' => 'Die lêer wat u probeer oplaai is te groot.',
 'api-error-filename-tooshort' => 'Die lêernaam is te kort.',
 'api-error-filetype-banned' => 'Hierdie tipe lêer is verban en word nie toegelaat nie.',
@@ -3750,10 +3762,13 @@ Beelde word in hulle volle resolusie gewys. Ander lêertipes word direk met hull
 'api-error-http' => "Interne fout: Kan nie 'n verbinding met die bediener maak nie.",
 'api-error-illegal-filename' => 'Die lêernaam word nie toegelaat nie.',
 'api-error-internal-error' => 'Interne fout: daar is iets verkeerd gegaan het met die verwerking van die oplaai van die lêer op die wiki.',
+'api-error-invalid-file-key' => 'Interne fout: die lêer is nie in tydelike berging gevind nie.',
 'api-error-missingparam' => 'Interne fout: ontbrekende parameters op aanvraag.',
 'api-error-missingresult' => 'Interne fout: Kon nie bepaal of die kopie daarin geslaag.',
 'api-error-mustbeloggedin' => 'U moet ingeteken wees om lêers te kan laai.',
+'api-error-mustbeposted' => "Interne fout: Die versoek vereis 'n HTTP POST-metode.",
 'api-error-noimageinfo' => 'Die oplaai daarin geslaag, maar die bediener het ons nie enige inligting oor die lêer.',
+'api-error-nomodule' => "Interne fout: daar is nie 'n uploadmodule ingestel nie.",
 'api-error-ok-but-empty' => 'Interne fout: geen reaksie van die bediener.',
 'api-error-overwrite' => "'N bestaande lêer vervang word nie toegelaat nie.",
 'api-error-stashfailed' => 'Interne fout: Server nie tydelike lêer te stoor.',
index 17efe96..af1a9e0 100644 (file)
@@ -1143,7 +1143,7 @@ $2
 'updated' => '(محدثة)',
 'note' => "'''ملاحظة:'''",
 'previewnote' => "'''تذكر أن هذه مجرد معاينة أولية.'''
-لم تحفظ تغييراتك إلى الآن!",
+لم تحفظ تغييراتك إلى الآن! [[#editform|→ Continue editing]]",
 'previewconflict' => 'هذا العرض يوضح النص الموجود في صندوق التحرير العلوي والذي سيظهر إذا اخترت الحفظ.',
 'session_fail_preview' => "'''عذرا! لم نتمكن من حفظ التعديلات التي قمت بها نتيجة لضياع بيانات هذه الجلسة.
 من فضلك حاول مرة أخرى.
@@ -1182,8 +1182,8 @@ $2
 إذا لم تكن ترغب أن تعدل مشاركاتك بهذا الشكل، لا تضعها هنا.<br />
 أنت تقر أيضا أنك كتبت هذا بنفسك، أو نسخته من مصدر يخضع للملكية العامة، أو مصدر حر آخر (انظر $1 للتفاصيل).
 '''لا تضف أي عمل ذي حقوق محفوظة بدون تصريح!'''",
-'longpageerror' => "'''خطأ: النص الذي أدخلته حجمه $1 كيلوبايت، وهذا أكبر من الحد الأقصى وهو $2 كيلوبايت.
\84ا Ù\8aÙ\85Ù\83Ù\86 Ø­Ù\81ظÙ\87.'''",
+'longpageerror' => "'''خطأ: النص الذي قمت بإدخاله {{PLURAL:$1|واحد كيلوبايت|$1 كيلوبيات}} أطول, وهو أطول من الحد الأقصى {{PLURAL:$2|واحد كيلوبايت|$2 كيلوبايت}}.'''
\88 Ù\8aتعذر Ø­Ù\81ظÙ\87.",
 'readonlywarning' => "'''تحذير: لقد أغلقت قاعدة البيانات للصيانة، لذلك لن تتمكن من حفظ التعديلات التي قمت بها حاليا.
 إذا رغبت بإمكانك أن تنسخ النص الذي تعمل عليه وتحفظه في ملف نصي إلى وقت لاحق.'''
 
index 4d9179f..68d80ff 100644 (file)
@@ -458,7 +458,8 @@ $1',
 'newarticle' => '(ܚܕܬܐ)',
 'updated' => '(ܐܬܚܕܬ)',
 'note' => "'''ܡܥܝܪܢܘܬܐ:'''",
-'previewnote' => "'''ܕܟܪ ܕܗܢܘ ܚܝܪܐ ܩܕܡܝܐ ܒܠܚܘܕ'''. ܫܘܚܠܦ̈ܐ ܕܝܠܟ ܠܐ ܐܬܠܒܟܘ ܥܕܡܐ ܠܗܫܐ!",
+'previewnote' => "'''ܕܟܪ ܕܗܢܘ ܚܝܪܐ ܩܕܡܝܐ ܒܠܚܘܕ'''.
+ܫܘܚܠܦ̈ܐ ܕܝܠܟ ܠܐ ܐܬܠܒܟܘ ܥܕܡܐ ܠܗܫܐ! [[#editform|→ ܐܫܠܡ ܠܫܚܠܦܬܟ]]",
 'editing' => 'ܫܚܠܦܬܐ ܕ $1',
 'editingsection' => 'ܫܚܠܦܬܐ ܕ $1 (ܡܢܬܐ)',
 'editingcomment' => 'ܫܚܠܦܬܐ ܕ $1 (ܡܢܬܐ ܚܕܬܐ)',
index b9b4311..5f81bd7 100644 (file)
@@ -947,7 +947,7 @@ $1",
 # Suppression log
 'suppressionlog' => 'Йәшереү яҙмалары',
 'suppressionlogtext' => 'Түбәндә, администраторҙарҙан йәшерелгән материалдар булған һуңғы юйыуҙыр һәм блоклауҙар исемлеге килтерелгән.
-Ағымдағы блоклауҙарҙы күрер өсөн [[Special:BlockList|IP-блоклауҙар исемлеген]] ҡарағыҙ.',
+Ағымдағы блоклауҙарҙы күрер өсөн [[Special:BlockList|блоклауҙар исемлеген]] ҡарағыҙ.',
 
 # History merging
 'mergehistory' => 'Үҙгәртеүҙәр тарихын берләштерергә',
@@ -1875,6 +1875,7 @@ $1',
 'allpagesbadtitle' => 'Күрһәтелгән бит исеме дөрөҫ түгел йәки телдәр араһы йәки интервики ҡушымтаһы менән башлана.
 Исемдә тыйылған символдар булыуы ла мөмкин.',
 'allpages-bad-ns' => '{{SITENAME}} проектында "$1" исемдәр арауығы юҡ.',
+'allpages-hide-redirects' => 'Йүнәлтеүҙәрҙе йәшерергә',
 
 # Special:Categories
 'categories' => 'Категориялар',
@@ -2632,7 +2633,7 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 # JavaScriptTest
 'javascripttest' => '
 JavaScript тикшереү',
-'javascripttest-disabled' => 'Был мөмкинлек һүндерелгән.',
+'javascripttest-disabled' => 'Был мөмкинлек был Википроектта ғәмәлгә индерелмәгән.',
 'javascripttest-title' => '$1 тикшеренеү үткәрелә',
 'javascripttest-pagetext-noframework' => 'Был бит JavaScript тикшеренеүҙәре үткәреү өсөн  резервланған.',
 'javascripttest-pagetext-unknownframework' => 'Билдәһеҙ тикшеренеүҙәр мөхитнамәһе "$1".',
index ff86968..265892b 100644 (file)
@@ -913,7 +913,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'prefs-rc' => 'Сонъки денъишмелер',
 'prefs-watchlist' => 'Козетюв джедвели',
 'prefs-watchlist-days' => 'Козетюв джедвелинде косьтериледжек кунь сайысы:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Энъ чокъ $1 {{PLURAL:$1|кунь|кунь}}',
 'prefs-watchlist-edits' => 'Кенишлетилген козетюв джедвелинде косьтериледжек денъишмелер сайысы:',
 'prefs-watchlist-edits-max' => '(энъ чокъ 1000)',
 'prefs-watchlist-token' => 'Козетюв джедвели ишарети:',
index 0837acc..1f8db74 100644 (file)
@@ -910,7 +910,7 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'prefs-rc' => 'Soñki deñişmeler',
 'prefs-watchlist' => 'Közetüv cedveli',
 'prefs-watchlist-days' => 'Közetüv cedvelinde kösterilecek kün sayısı:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Eñ çoq $1 {{PLURAL:$1|kün|kün}}',
 'prefs-watchlist-edits' => 'Kenişletilgen közetüv cedvelinde kösterilecek deñişmeler sayısı:',
 'prefs-watchlist-edits-max' => 'Eñ çoq 1000',
 'prefs-watchlist-token' => 'Közetüv cedveli işareti:',
index 3fbb3f5..d76d9f0 100644 (file)
@@ -950,16 +950,16 @@ Pokud ještě jednou kliknete na „{{int:savearticle}}“, bude vaše editace z
 'summary-preview' => 'Náhled shrnutí:',
 'subject-preview' => 'Náhled předmětu/nadpisu:',
 'blockedtitle' => 'Uživatel zablokován',
-'blockedtext' => "'''Vaší IP adrese či uživatelskému jménu byla zablokována možnost editace.'''
+'blockedtext' => "Vaší IP adrese či uživatelskému jménu byla zablokována možnost editace.'''
 
-Zablokování provedl{{gender:$4||a}} $1.
+Zablokování provedl{{gender:$1||a}} $1.
 Udaným důvodem bylo ''$2''.
 
 * Začátek blokování: $8
 * Zablokování vyprší: $6
 * Blokovaný uživatel: $7
 
-Pokud chcete zablokování prodiskutovat, můžete kontaktovat {{gender:$4|uživatele|uživatelku}} $1 či jiného [[{{MediaWiki:Grouppage-sysop}}|správce]].
+Pokud chcete zablokování prodiskutovat, můžete kontaktovat {{gender:$1|uživatele|uživatelku}} $1 či jiného [[{{MediaWiki:Grouppage-sysop}}|správce]].
 Uvědomte si, že nemůžete použít nabídku „Poslat e-mail“, jestliže nemáte ve svém [[Special:Preferences|nastavení]] uvedenu platnou e-mailovou adresu nebo pokud vám byla tato možnost zakázána.
 Vaše IP adresa je $3 a&nbsp;identifikační číslo bloku je #$5; tyto údaje uvádějte ve všech dotazech na správce.",
 'autoblockedtext' => "Vaše IP adresa byla automaticky zablokována, protože ji používal jiný uživatel, kterého zablokoval $1.
index ca3c6b8..0aa6583 100644 (file)
@@ -3824,6 +3824,11 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 'version-software' => 'Installierte Software',
 'version-software-product' => 'Software',
 'version-software-version' => 'Version',
+'version-entrypoints' => 'Eingangspunkt-URLs',
+'version-entrypoints-header-entrypoint' => 'Eingangspunkt',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Artikelpfad]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Skriptpfad]',
 
 # Special:FilePath
 'filepath' => 'Dateipfad',
index 78f084f..ded7742 100644 (file)
@@ -2680,9 +2680,9 @@ Véase la [[Special:BlockList|lista de bloqueos]] para revisarlo.',
 'blocklog-showsuppresslog' => 'Este usuario ha sido bloqueado y ocultado. Se provee el registro de supresiones para más detalle:',
 'blocklogentry' => 'bloqueó a [[$1]] $3 durante un plazo de $2',
 'reblock-logentry' => 'cambió el bloqueo para  [[$1]] con una caducidad de $2 $3',
-'blocklogtext' => 'Esto es un registro de bloqueos y desbloqueos de usuarios.
-Las direcciones bloqueadas automáticamente no aparecen aquí.
-Consulte la [[Special:BlockList|lista de direcciones IP bloqueadas]] para ver la lista de bloqueos vigente.',
+'blocklogtext' => 'Esto es un registro de acciones de bloqueo y desbloqueo de usuarios.
+Las direcciones IP bloqueadas automáticamente no aparecen aquí.
+Consulta la [[Special:BlockList|lista de bloqueos]] para ver la lista de bloqueos y prohibiciones de operar en vigor.',
 'unblocklogentry' => 'desbloqueó a $1',
 'block-log-flags-anononly' => 'sólo anónimos',
 'block-log-flags-nocreate' => 'desactivada la creación de cuentas',
@@ -3774,6 +3774,11 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 'version-software' => 'Software instalado',
 'version-software-product' => 'Producto',
 'version-software-version' => 'Versión',
+'version-entrypoints' => 'URL del punto de entrada',
+'version-entrypoints-header-entrypoint' => 'Punto de entrada',
+'version-entrypoints-header-url' => 'Dirección URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Ruta del artículo]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta de la secuencia de comandos (script)]',
 
 # Special:FilePath
 'filepath' => 'Ruta de archivo',
index 5ad940e..911d09c 100644 (file)
@@ -444,7 +444,7 @@ $messages = array(
 'tog-editsection' => 'ویرایش بخش‌ها از طریق پیوندهای [ویرایش] فعال باشد',
 'tog-editsectiononrightclick' => 'ویرایش بخش‌ها با کلیک راست روی عناوین قسمت‌ها فعال باشد (نیازمند جاوااسکریپت)',
 'tog-showtoc' => 'فهرست مندرجات نمایش یابد (برای صفحه‌های دارای بیش از ۳ عنوان)',
-'tog-rememberpassword' => 'گذرÙ\88اÚ\98Ù\87Ù\94 Ù\85Ù\86 (تا Ø­Ø¯Ø§Ú©Ø«Ø± $1 {{PLURAL:$1|رÙ\88ز|رÙ\88ز}}) در این مرورگر به خاطر سپرده شود',
+'tog-rememberpassword' => 'گذرÙ\88اÚ\98Ù\87Ù\94 Ù\85Ù\86 (حداکثر $1 Ø±Ù\88ز) در این مرورگر به خاطر سپرده شود',
 'tog-watchcreations' => 'صفحه‌هایی که می‌سازم به فهرست پی‌گیری‌هایم افزوده شود',
 'tog-watchdefault' => 'صفحه‌هایی که ویرایش می‌کنم به فهرست پی‌گیری‌هایم افزوده شود',
 'tog-watchmoves' => 'صفحه‌هایی که منتقل می‌کنم به فهرست پی‌گیری‌هایم افزوده شود',
@@ -3959,6 +3959,8 @@ $5
 'version-software' => 'نسخهٔ نصب‌شده',
 'version-software-product' => 'محصول',
 'version-software-version' => 'نسخه',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath مسیر مقاله]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath مسیر اسکریپت]',
 
 # Special:FilePath
 'filepath' => 'مسیر پرونده',
@@ -4154,6 +4156,6 @@ $5
 'duration-years' => '$1 سال',
 'duration-decades' => '$1 دهه',
 'duration-centuries' => '$1 قرن',
-'duration-millennia' => '{{PLURAL:$1| هزار سال |$1 هزار سال}}',
+'duration-millennia' => '{{PLURAL:$1|هزار سال |$1 هزار سال}}',
 
 );
index d6b1e2c..8a44365 100644 (file)
@@ -3832,6 +3832,11 @@ Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licen
 'version-software' => 'Logiciels installés',
 'version-software-product' => 'Produit',
 'version-software-version' => 'Version',
+'version-entrypoints' => "URLs de point d'entrée",
+'version-entrypoints-header-entrypoint' => "Point d'entrée",
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Chemin d\'article]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Chemin de script]',
 
 # Special:FilePath
 'filepath' => 'Chemin d’accès du fichier',
index e208a88..a1a1d46 100644 (file)
@@ -3891,6 +3891,9 @@ $5
 'version-software' => 'תוכנות מותקנות',
 'version-software-product' => 'תוכנה',
 'version-software-version' => 'גרסה',
+'version-entrypoints' => 'כתובות של נקודות כניסה',
+'version-entrypoints-header-entrypoint' => 'נקודת כניסה',
+'version-entrypoints-header-url' => 'כתובת',
 
 # Special:FilePath
 'filepath' => 'נתיב לקובץ',
index 4395926..6bbde85 100644 (file)
@@ -3666,6 +3666,11 @@ Vos deberea haber recipite [{{SERVER}}{{SCRIPTPATH}}/COPYING un exemplar del Lic
 'version-software' => 'Software installate',
 'version-software-product' => 'Producto',
 'version-software-version' => 'Version',
+'version-entrypoints' => 'URL del puncto de entrata',
+'version-entrypoints-header-entrypoint' => 'Puncto de entrata',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Cammino al articulo]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Cammino al script]',
 
 # Special:FilePath
 'filepath' => 'Cammino del file',
index 15f3e51..7ca994c 100644 (file)
@@ -801,6 +801,7 @@ Karenanya, pengunjung dengan alamat IP ini tidak dapat lagi membuat akun lain un
 'invalidemailaddress' => 'Alamat surel ini tidak dapat diterima karena formatnya tidak sesuai.
 Harap masukkan alamat surel dalam format yang benar atau kosongkan isian tersebut.',
 'cannotchangeemail' => 'Alamat surel akun tidak dapat diubah di wiki ini.',
+'emaildisabled' => 'Situs ini tidak dapat mengirim surel.',
 'accountcreated' => 'Akun dibuat',
 'accountcreatedtext' => 'Akun pengguna untuk $1 telah dibuat.',
 'createaccount-title' => 'Pembuatan akun untuk {{SITENAME}}',
@@ -1013,6 +1014,7 @@ Suntingan tersebut ditolak untuk mencegah kesalahan pada teks halaman.
 Hal ini kadang terjadi jika Anda menggunakan layanan proxy anonim berbasis web yang bermasalah.",
 'edit_form_incomplete' => "'''Beberapa bagian dari formulir suntingan tidak mencapai server; periksa ulang apakah suntingan Anda tetap utuh dan coba lagi.'''",
 'editing' => 'Menyunting $1',
+'creating' => 'Membuat $1',
 'editingsection' => 'Menyunting $1 (bagian)',
 'editingcomment' => 'Menyunting $1 (bagian baru)',
 'editconflict' => 'Konflik penyuntingan: $1',
index fbba123..d96a129 100644 (file)
@@ -550,6 +550,7 @@ Voluntez konfirmez se vu volas krear/redaktar ica pagino.',
 Voluntez probar itere.
 Se ol ankore nefuncionas, probez [[Special:UserLogout|ekirar]] e pose enirar.",
 'editing' => 'Vu redaktas $1',
+'creating' => 'Vu kreas $1',
 'editingsection' => 'Vu redaktas $1 (seciono)',
 'editingcomment' => 'Vu redaktas $1 (nova seciono)',
 'editconflict' => 'Redakto-konflikto: $1',
index 49712bd..bb33d45 100644 (file)
@@ -367,35 +367,35 @@ $messages = array(
 'tog-hideminor' => '最近の更新に細部の編集を表示しない',
 'tog-hidepatrolled' => '最近の更新に巡回済みの編集を表示しない',
 'tog-newpageshidepatrolled' => '新しいページの一覧に巡回済みのページを表示しない',
-'tog-extendwatchlist' => 'ウォッチリストを拡張し、最新のものだけではなくすべての変更を表示する',
-'tog-usenewrc' => '最近の更新ページを拡張する(JavaScriptが必要)',
+'tog-extendwatchlist' => 'ウォッチリストを拡張し、最新のものだけではなくすべての変更を表示',
+'tog-usenewrc' => '最近の更新ページを拡張(JavaScriptが必要)',
 'tog-numberheadings' => '自動的に見出しに番号を振る',
-'tog-showtoolbar' => '編集用のツールバーを表示する(JavaScriptが必要)',
-'tog-editondblclick' => 'ダブルクリックで編集する(JavaScriptが必要)',
+'tog-showtoolbar' => '編集用のツールバーを表示(JavaScriptが必要)',
+'tog-editondblclick' => 'ダブルクリックで編集(JavaScriptが必要)',
 'tog-editsection' => '[編集]リンクから節を編集できるようにする',
-'tog-editsectiononrightclick' => 'ç¯\80è¦\8bå\87ºã\81\97ã\81®å\8f³ã\82¯ã\83ªã\83\83ã\82¯ã\81§ç¯\80ç·¨é\9b\86ã\82\92è¡\8cã\81\88るようにする(JavaScriptが必要)',
-'tog-showtoc' => '目次を表示する(ページに見出しが4つ以上ある場合)',
+'tog-editsectiononrightclick' => 'ç¯\80è¦\8bå\87ºã\81\97ã\81®å\8f³ã\82¯ã\83ªã\83\83ã\82¯ã\81§ç¯\80ç·¨é\9b\86ã\81\8cã\81§ã\81\8dるようにする(JavaScriptが必要)',
+'tog-showtoc' => '目次を表示(ページに見出しが4つ以上ある場合)',
 'tog-rememberpassword' => 'このブラウザにログイン情報を記憶(最大 $1 {{PLURAL:$1|日間}})',
 'tog-watchcreations' => '自分が作成したページをウォッチリストに追加',
 'tog-watchdefault' => '自分が編集したページをウォッチリストに追加',
 'tog-watchmoves' => '自分が移動したページをウォッチリストに追加',
 'tog-watchdeletion' => '自分が削除したページをウォッチリストに追加',
-'tog-minordefault' => 'ç´°é\83¨ã\81®ç·¨é\9b\86ã\82\92æ\97¢å®\9aã\81§ã\83\81ã\82§ã\83\83ã\82¯ã\81\99る',
+'tog-minordefault' => 'ç´°é\83¨ã\81®ç·¨é\9b\86ã\81«æ\97¢å®\9aã\81§ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cる',
 'tog-previewontop' => 'プレビューを編集ボックスの前に配置',
-'tog-previewonfirst' => '編集開始時にもプレビューを表示する',
+'tog-previewonfirst' => '編集開始時にもプレビューを表示',
 'tog-nocache' => 'ブラウザによるページのキャッシュを無効にする',
-'tog-enotifwatchlistpages' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81\82ã\82\8bã\83\9aã\83¼ã\82¸ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81\9fã\81¨ã\81\8dã\81«メールを受け取る',
-'tog-enotifusertalkpages' => 'è\87ªå\88\86ã\81®ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81\9fã\81¨ã\81\8dã\81«メールを受け取る',
+'tog-enotifwatchlistpages' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81\82ã\82\8bã\83\9aã\83¼ã\82¸ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81\9fã\82\89メールを受け取る',
+'tog-enotifusertalkpages' => 'è\87ªå\88\86ã\81®ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81\9fã\82\89メールを受け取る',
 'tog-enotifminoredits' => '細部の編集でもメールを受け取る',
 'tog-enotifrevealaddr' => '通知メールで自分のメールアドレスを明示',
 'tog-shownumberswatching' => 'ページをウォッチしている利用者数を表示',
 'tog-oldsig' => '既存の署名:',
-'tog-fancysig' => 'ç½²å\90\8dã\82\92ã\82¦ã\82£ã\82­æ\96\87ã\81¨ã\81\97ã\81¦æ\89±ã\81\86ï¼\88è\87ªå\8b\95ã\81§ã\83ªã\83³ã\82¯ã\81\97ã\81ªã\81\84)',
-'tog-externaleditor' => '既定で編集に外部アプリケーションを使(上級者向け、コンピューターに特殊な設定が必要。[//www.mediawiki.org/wiki/Manual:External_editors 詳細])',
-'tog-externaldiff' => '差分表示に外部アプリケーションを使(上級者向け、コンピューターに特殊な設定が必要。[//www.mediawiki.org/wiki/Manual:External_editors 詳細])',
+'tog-fancysig' => 'ç½²å\90\8dã\82\92ã\82¦ã\82£ã\82­æ\96\87ã\81¨ã\81\97ã\81¦æ\89±ã\81\86ï¼\88è\87ªå\8b\95ã\83ªã\83³ã\82¯ã\81ªã\81\97)',
+'tog-externaleditor' => '既定で編集に外部アプリケーションを使(上級者向け、コンピューターに特殊な設定が必要。[//www.mediawiki.org/wiki/Manual:External_editors 詳細])',
+'tog-externaldiff' => '差分表示に外部アプリケーションを使(上級者向け、コンピューターに特殊な設定が必要。[//www.mediawiki.org/wiki/Manual:External_editors 詳細])',
 'tog-showjumplinks' => '利用しやすさ向上のための「{{int:jumpto}}」リンクを有効にする',
-'tog-uselivepreview' => 'ライブプレビューを使用する(JavaScriptが必要)(試験中の機能)',
-'tog-forceeditsummary' => '要約欄が空欄の場合に警告する',
+'tog-uselivepreview' => 'ライブプレビューを使用(JavaScriptが必要)(開発中)',
+'tog-forceeditsummary' => '要約欄が空欄の場合に確認を促す',
 'tog-watchlisthideown' => 'ウォッチリストに自分の編集を表示しない',
 'tog-watchlisthidebots' => 'ウォッチリストにボットによる編集を表示しない',
 'tog-watchlisthideminor' => 'ウォッチリストに細部の編集を表示しない',
@@ -403,8 +403,8 @@ $messages = array(
 'tog-watchlisthideanons' => 'ウォッチリストに匿名利用者の編集を表示しない',
 'tog-watchlisthidepatrolled' => 'ウォッチリストに巡回済みの編集を表示しない',
 'tog-nolangconversion' => '言語変種変換を無効にする',
-'tog-ccmeonemails' => '他の利用者に送信したメールの控えを自分にも送',
-'tog-diffonly' => '差分表示の下にページの内容を表示しない',
+'tog-ccmeonemails' => '他の利用者に送信したメールの控えを自分にも送',
+'tog-diffonly' => '差分の下にページ内容を表示しない',
 'tog-showhiddencats' => '隠しカテゴリを表示',
 'tog-noconvertlink' => 'リンクタイトル変換を無効にする',
 'tog-norollbackdiff' => '巻き戻し後の差分を表示しない',
@@ -500,7 +500,7 @@ $messages = array(
 'mytalk' => '自分のトーク',
 'anontalk' => 'このIPアドレスのトーク',
 'navigation' => '案内',
-'and' => '&#32;および',
+'and' => '&#32;および&#32;',
 
 # Cologne Blue skin
 'qbfind' => '検索',
@@ -525,7 +525,7 @@ $messages = array(
 'vector-view-edit' => '編集',
 'vector-view-history' => '履歴表示',
 'vector-view-view' => '閲覧',
-'vector-view-viewsource' => 'ソース表示',
+'vector-view-viewsource' => 'ソース表示',
 'actions' => '操作',
 'namespaces' => '名前空間',
 'variants' => '変種',
@@ -597,7 +597,7 @@ $1',
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => '{{SITENAME}}について',
 'aboutpage' => 'Project:{{SITENAME}}について',
-'copyright' => 'å\86\85容ã\81¯$1ã\81®ã\83©ã\82¤ã\82»ã\83³ã\82¹ã\81§å\88©ç\94¨ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82',
+'copyright' => '内容は$1のライセンスで利用できます。',
 'copyrightpage' => '{{ns:project}}:著作権',
 'currentevents' => '最近の出来事',
 'currentevents-url' => 'Project:最近の出来事',
@@ -609,24 +609,25 @@ $1',
 'mainpage' => 'メインページ',
 'mainpage-description' => 'メインページ',
 'policy-url' => 'Project:方針',
-'portal' => 'コミュニティポータル',
-'portal-url' => 'Project:コミュニティポータル',
-'privacy' => 'プライバシーポリシー',
-'privacypage' => 'Project:プライバシーポリシー',
+'portal' => 'コミュニティ ポータル',
+'portal-url' => 'Project:コミュニティ ポータル',
+'privacy' => 'プライバシー ポリシー',
+'privacypage' => 'Project:プライバシー ポリシー',
 
 'badaccess' => '権限がありません',
 'badaccess-group0' => '要求した操作を行うことは許可されていません。',
 'badaccess-groups' => 'この操作は、以下の{{PLURAL:$2|グループ|グループのいずれか}}に属する利用者のみが実行できます: $1。',
 
-'versionrequired' => 'MediaWikiのバージョン$1が必要',
-'versionrequiredtext' => 'このページの利用にはMediaWikiのバージョン$1が必要です。[[Special:Version|バージョン情報]]を確認してください。',
+'versionrequired' => 'MediaWiki のバージョン $1 が必要',
+'versionrequiredtext' => 'このページの使用にはMediaWiki バージョン $1 が必要です。
+[[Special:Version|バージョン情報]]をご覧ください。',
 
 'ok' => 'OK',
-'retrievedfrom' => 'ã\80\8c$1ã\80\8dã\82\88ã\82\8a取得',
-'youhavenewmessages' => '$1が届いています。($2)',
+'retrievedfrom' => 'ã\80\8c$1ã\80\8dã\81\8bã\82\89取得',
+'youhavenewmessages' => '$1が届いています($2)。',
 'newmessageslink' => '新しいメッセージ',
 'newmessagesdifflink' => '最終更新の差分',
-'youhavenewmessagesmulti' => '$1に新しい伝言が届いています',
+'youhavenewmessagesmulti' => '$1に新着メッセージがあります',
 'editsection' => '編集',
 'editold' => '編集',
 'viewsourceold' => 'ソースを表示',
@@ -683,18 +684,18 @@ URL を間違って入力したか、正しくないリンクをたどった可
 関数「<tt>$2</tt>」内
 <blockquote><tt>$1</tt></blockquote>。
 データベースの返したエラー「<tt>$3:$4</tt>」',
-'dberrortextcl' => 'データベースクエリの構文エラーが発生しました。
-最後に実行を試みたクエリは次の通りです:
-関数 "$2" 内
+'dberrortextcl' => 'データベース クエリの構文エラーが発生しました。
+最後に実行を試みたクエリは以下の通りです:
+関数「$2」内から
 "$1"
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81®è¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ "$3: $4"',
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8d',
 'laggedslavemode' => "'''警告:'''ページに最新の編集が反映されていない可能性があります。",
 'readonly' => 'データベースがロックされています',
 'enterlockreason' => 'ロックの理由とロック解除の予定を入力してください',
 'readonlytext' => 'データベースは現在、新しいページの追加や編集を受け付けない「ロック状態」になっています。これはおそらくデータベースの定期メンテナンスのためで、メンテナンス終了後は正常な状態に復帰します。
 
 データベースをロックした管理者による説明は以下の通りです:$1',
-'missing-article' => 'ã\80\8c$1ã\80\8d$2ã\81¨ã\81\84ã\81\86ã\83\9aã\83¼ã\82¸ã\81®æ\9c¬æ\96\87ã\82\92ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ä¸\8aã\81«è¦\8bã\81¤ã\81\91ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dませんでした。
+'missing-article' => 'ã\83\9aã\83¼ã\82¸ã\80\8c$1ã\80\8d$2ã\81®æ\9c¬æ\96\87ã\81\8cã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹å\86\85ã\81§è¦\8bã\81¤ã\81\8bã\82\8aませんでした。
 
 ページの削除された版への古い差分表示や固定リンクをたどった時にこのようなことになります。
 
@@ -720,13 +721,13 @@ URL を間違って入力したか、正しくないリンクをたどった可
 他の人が既に削除した可能性があります。',
 'cannotdelete-title' => '「$1」というページを削除できません',
 'badtitle' => '不正なページ名',
-'badtitletext' => '要求されたページ名は、無効、空、または正しくない言語間リンク・ウィキ間リンクのページ名です。
-ページ名に用できない文字が1つ以上含まれている可能性があります。',
-'perfcached' => '以ä¸\8bã\81®ã\83\87ã\83¼ã\82¿ã\81¯ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\81\95ã\82\8cã\81¦ã\81\8aã\82\8aã\80\81æ\9c\80æ\96°ã\81®ç\8a¶æ\85\8bã\81§ã\81ªã\81\84å\8f¯è\83½æ\80§ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82æ\9c\80大$1件ã\81¾ã\81§ã\81®çµ\90æ\9e\9cã\81\8cã\82­ã\83£ã\83\83ã\82·ã\83¥ã\81§å\88©ç\94¨å\8f¯è\83½ã\81«ã\81ªã\81£ã\81¦ã\81\84ます。',
-'perfcachedts' => '以下のデータはキャッシュされており、最後に更新された日時は$1です。最大$4件までの結果がキャッシュで利用可能になっています。',
+'badtitletext' => '要求されたページ名は、無効、空、正しくない言語間リンク/ウィキ間リンクのページ名、のいずれかです。
+ページ名に使用できない文字が1つ以上含まれている可能性があります。',
+'perfcached' => '以ä¸\8bã\81®ã\83\87ã\83¼ã\82¿ã\81¯ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\81\95ã\82\8cã\81¦ã\81\8aã\82\8aã\80\81æ\9c\80æ\96°ã\81§ã\81¯ã\81ªã\81\84å\8f¯è\83½æ\80§ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82æ\9c\80大 $1 {{PLURAL:$1|件ã\81®çµ\90æ\9e\9c}}ã\81\8cã\82­ã\83£ã\83\83ã\82·ã\83¥ã\81\95ã\82\8cます。',
+'perfcachedts' => '以下のデータはキャッシュされており、最終更新日時は $1 です。最大 $4 {{PLURAL:$4|件の結果}}がキャッシュされます。',
 'querypage-no-updates' => 'ページの更新は無効になっています。
 以下のデータの更新は現在行われていません。',
-'wrong_wfQuery_params' => 'wfQuery()ã\81¸èª¤ã\81£ã\81\9få¼\95æ\95°が渡されました。<br />
+'wrong_wfQuery_params' => 'wfQuery()ã\81«èª¤ã\81£ã\81\9fã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼が渡されました。<br />
 関数:$1<br />
 クエリ:$2',
 'viewsource' => 'ソースを表示',
@@ -735,24 +736,24 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'actionthrottledtext' => '短時間にこの操作を大量に行ったため、スパム対策として設定されている制限を超えました。
 少し時間をおいてからもう一度操作してください。',
 'protectedpagetext' => 'このページは編集できないように保護されています。',
-'viewsourcetext' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ã\82½ã\83¼ã\82¹ã\82\92é\96²è¦§ã\81\97ã\80\81ã\82³ã\83\94ã\83¼ã\81\99ã\82\8bã\81\93ã\81¨ができます:',
-'viewyourtext' => "ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«å¯¾ã\81\99ã\82\8b'''ã\81\82ã\81ªã\81\9fã\81®ç·¨é\9b\86'''ã\81®ã\82½ã\83¼ã\82¹ã\82\92é\96²è¦§ã\81\97ã\80\81ã\82³ã\83\94ã\83¼ã\81\99ã\82\8bã\81\93ã\81¨ができます:",
-'protectedinterface' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82½ã\83\95ã\83\88ã\82¦ã\82§ã\82¢ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼スに使用されるテキストが保存されており、いたずらなどの防止のために保護されています。',
-'editinginterface' => "'''è­¦å\91\8aï¼\9a'''ã\82½ã\83\95ã\83\88ã\82¦ã\82§ã\82¢ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81«ä½¿ç\94¨ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\86ã\82­ã\82¹ã\83\88を編集しています。
-このページの変更はすべての利用者のユーザーインタフェースに影響します。
-翻訳ã\82\92ã\81\99ã\82\8bå ´å\90\88ã\80\81MediaWikiã\81®å\9c°å\9f\9få\8c\96ã\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88[//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net]ã\81®å\88©用を検討してください。",
+'viewsourcetext' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ã\82½ã\83¼ã\82¹ã\81®é\96²è¦§ã\82\84ã\82³ã\83\94ã\83¼ができます:',
+'viewyourtext' => "ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¸ã\81®'''ã\81\82ã\81ªã\81\9fã\81®ç·¨é\9b\86'''ã\81®ã\82½ã\83¼ã\82¹ã\81®é\96²è¦§ã\82\84ã\82³ã\83\94ã\83¼ができます:",
+'protectedinterface' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82½ã\83\95ã\83\88ã\82¦ã\82§ã\82¢ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤スに使用されるテキストが保存されており、いたずらなどの防止のために保護されています。',
+'editinginterface' => "'''è­¦å\91\8aï¼\9a'''ã\82½ã\83\95ã\83\88ã\82¦ã\82§ã\82¢ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤ã\82¹ã\81®æ\96\87ç« ã\81¨ã\81\97ã\81¦ä½¿ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸を編集しています。
+このページの変更は他の利用者のユーザー インターフェイスの外観に影響します。
+翻訳ã\81\99ã\82\8bå ´å\90\88ã\80\81MediaWiki ã\81®ã\83­ã\83¼ã\82«ã\83©ã\82¤ã\82º ã\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88 [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] ã\81®ä½¿用を検討してください。",
 'sqlhidden' => '(SQLクエリ非表示)',
 'cascadeprotected' => 'このページは、「カスケード保護」が指定された状態で保護されている以下の{{PLURAL:$1|ページ|ページ群}}で読み込まれているため、編集できないように保護されています:
 $2',
 'namespaceprotected' => "'''$1'''名前空間にあるページを編集する権限がありません。",
-'customcssprotected' => 'このCSSページはほかのユーザーの個人設定が含まれているため、編集することができません。',
+'customcssprotected' => 'このCSSページは他の利用者の個人設定を含んでいるため、あなたには編集する権限がありません。',
 'customjsprotected' => '他の利用者の個人設定を含むため、このJavaScriptのページを編集する権限がありません。',
 'ns-specialprotected' => '特別ページは編集できません。',
 'titleprotected' => "[[User:$1|$1]]によりこのページ名を持つページの作成は保護されています。
 理由は「''$2''」です。",
-'filereadonlyerror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\83ªã\83\9dã\82¸ã\83\88ã\83ªã\80\8c$2ã\80\8dã\81\8c読ã\81¿å\8f\96ã\82\8aå°\82ç\94¨ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8bã\81\9fã\82\81ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\82\92å¤\89æ\9b´ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82
+'filereadonlyerror' => 'ファイルリポジトリ「$2」が読み取り専用の状態にあるため、ファイル「$1」を変更できません。
 
-読み取り専用に設定した管理者からの説明「$3」',
+読み取り専用に設定した管理者からの説明「$3」',
 
 # Virus scanner
 'virus-badscanner' => "環境設定が不適合です:不明なウイルス検知ソフトウェア:''$1''",
@@ -803,7 +804,7 @@ $2',
 クッキーが無効になっているようです。
 クッキーを有効にして、もう一度試してください。',
 'nocookiesfornew' => '発信元を確認できなかったため、アカウントは作成されませんでした。
\82¯ã\83\83ã\82­ã\83¼ã\81\8cæ\9c\89å\8a¹ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ã\82\92確èª\8dã\81®ä¸\8aã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ã\83ªã\83­ã\83¼ã\83\89ã\81\97ã\81¦ã\82\82ã\81\86ä¸\80度è¡\8cã\81£てください。',
\82¯ã\83\83ã\82­ã\83¼ã\81\8cæ\9c\89å\8a¹ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ã\82\92確èª\8dã\81\97ã\81¦ã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92å\86\8d読込ã\81\97ã\81¦ã\82\82ã\81\86ä¸\80度試ã\81\97てください。',
 'noname' => '利用者名を正しく指定していません。',
 'loginsuccesstitle' => 'ログイン成功',
 'loginsuccess' => "'''{{SITENAME}}に「$1」としてログインしました。'''",
@@ -816,11 +817,11 @@ $2',
 'login-userblocked' => 'この利用者はブロックされています。ログインは拒否されます。',
 'wrongpassword' => 'パスワードが間違っています。 
 もう一度やり直してください。',
-'wrongpasswordempty' => 'パスワードを空にすることはできません。
+'wrongpasswordempty' => 'パスワードを空欄にはできません。
 もう一度やり直してください。',
 'passwordtooshort' => 'パスワードは {{PLURAL:$1|$1 文字}}以上にしてください。',
 'password-name-match' => 'パスワードは利用者名と同じであってはいけません。',
-'password-login-forbidden' => 'このã\82\88ã\81\86ã\81ªå\88©ç\94¨è\80\85å\90\8dã\81¨ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92使ç\94¨ã\81\99ã\82\8bã\81\93ã\81¨ã\81¯ç¦\81æ­¢ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82',
+'password-login-forbidden' => 'このå\88©ç\94¨è\80\85å\90\8dã\81¨ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\81®ä½¿ç\94¨ã\81¯ç¦\81æ­¢ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82',
 'mailmypassword' => '新しいパスワードをメールで送信',
 'passwordremindertitle' => '{{SITENAME}}の仮パスワード通知',
 'passwordremindertext' => '誰かが(おそらくご自身が、IPアドレス$1から){{SITENAME}}($4)のログイン用パスワードの再発行を申請しました。
@@ -862,9 +863,9 @@ $2',
 'usernamehasherror' => '利用者名には番号記号を含むことができません',
 'login-throttled' => 'ログインの失敗が制限回数を超えました。
 しばらく時間をおいてから再度お試しください。',
-'login-abort-generic' => 'ログインに失敗しました。− 中止',
+'login-abort-generic' => 'ログインに失敗しました - 中止',
 'loginlanguagelabel' => '言語: $1',
-'suspicious-userlogout' => 'å£\8aã\82\8cã\81\9fã\83\96ã\83©ã\82¦ã\82¶ã\82\82ã\81\97ã\81\8fã\81¯ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\83»ã\83\97ã\83­ã\82­ã\82·ã\81«ã\82\88ã\81£ã\81¦é\80\81ä¿¡ã\81\95ã\82\8cã\81\9få\8f¯è\83½æ\80§ã\81\8cã\81\82ã\82\8bã\81\9fã\82\81ã\80\81ã\83­ã\82°ã\82¢ã\82¦ã\83\88è¦\81æ±\82ã\81¯æ\8b\92å\90¦ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9fã\80\82',
+'suspicious-userlogout' => '壊れたブラウザもしくはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
 
 # E-mail sending
 'php-mail-error-unknown' => 'PHPのmail()関数で不明なエラー',
@@ -898,9 +899,9 @@ $2',
 'passwordreset-pretext' => '{{PLURAL:$1||以下のデータのうちの 1 つを入力してください}}',
 'passwordreset-username' => '利用者名:',
 'passwordreset-domain' => 'ドメイン:',
-'passwordreset-capture' => '送られるメールの内容を見ますか?',
+'passwordreset-capture' => '送信されるメールの内容を表示しますか?',
 'passwordreset-capture-help' => 'このボックスをチェックすると、利用者に送られるメールの内容(一時的なパスワードを含む)をあなたも見ることができます。',
-'passwordreset-email' => 'メール アドレス:',
+'passwordreset-email' => 'メールアドレス:',
 'passwordreset-emailtitle' => '{{SITENAME}}上のアカウントの詳細',
 'passwordreset-emailtext-ip' => 'どなたか(おそらくあなた、IP アドレス $1)が {{SITENAME}} ($4) での
 あなたのアカウントの詳細情報を送信するよう申請しました。
@@ -933,7 +934,7 @@ $2
 # Special:ChangeEmail
 'changeemail' => 'メールアドレスの変更',
 'changeemail-header' => 'アカウントのメールアドレスを変更',
-'changeemail-text' => 'ã\81\93ã\81®ã\83\95ã\82©ã\83¼ã\83 ã\81¸å\85¥å\8a\9bã\81\99ã\82\8bã\81\93ã\81¨ã\81§ã\80\81ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92å¤\89æ\9b´ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81®å¤\89æ\9b´ã\82\92å®\8cäº\86ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\81¯ã\80\81パスワードを入力する必要があります。',
+'changeemail-text' => 'ã\81\93ã\81®ã\83\95ã\82©ã\83¼ã\83 ã\81§ã\81¯ã\83¡ã\83¼ã\83« ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92å¤\89æ\9b´ã\81§ã\81\8dã\81¾ã\81\99ã\80\82ã\81\93ã\81®å¤\89æ\9b´ã\82\92確èª\8dã\81\99ã\82\8bã\81\9fã\82\81ã\81«パスワードを入力する必要があります。',
 'changeemail-no-info' => 'このページに直接アクセスするためにはログインしている必要があります。',
 'changeemail-oldemail' => '現在のメールアドレス:',
 'changeemail-newemail' => '新しいメールアドレス:',
@@ -963,9 +964,9 @@ $2
 
 # Edit pages
 'summary' => '編集内容の要約:',
-'subject' => '題名見出し:',
+'subject' => '題名/見出し:',
 'minoredit' => 'これは細部の編集です',
-'watchthis' => 'このページをウォッチする',
+'watchthis' => 'このページをウォッチ',
 'savearticle' => 'ページを保存',
 'preview' => 'プレビュー',
 'showpreview' => 'プレビューを表示',
@@ -977,10 +978,10 @@ $2
 'missingsummary' => "'''注意:'''要約欄が空欄です。
 「{{int:savearticle}}」をもう一度クリックすると、編集は要約なしで保存されます。",
 'missingcommenttext' => '以下にコメントを入力してください。',
-'missingcommentheader' => "'''注意::'' このコメントに対する題名見出しが空欄です。
+'missingcommentheader' => "'''注意::'' このコメントに対する題名/見出しが空欄です。
 「{{int:savearticle}}」ボタンをもう一度押すと、空のまま編集が保存されます。",
 'summary-preview' => '要約のプレビュー:',
-'subject-preview' => '題名見出しのプレビュー:',
+'subject-preview' => '題名/見出しのプレビュー:',
 'blockedtitle' => '利用者はブロックされています',
 'blockedtext' => "'''この利用者名またはIPアドレスはブロックされています。'''
 
@@ -1027,18 +1028,18 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
 'newarticle' => '(新)',
 'newarticletext' => "まだ存在していないページへのリンクをたどりました。
 このページを新規に作成するには、下のボックスに内容を書き込んでください(詳しくは[[{{MediaWiki:Helppage}}|ヘルプページ]]を参照してください)。
-誤ã\81£ã\81¦ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81\9fã\81©ã\82\8aç\9d\80ã\81\84ã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81ã\83\96ã\83©ã\82¦ã\82¶ã\81®'''æ\88»ã\82\8b'''ã\83\9cã\82¿ã\83³ã\82\92使ã\81£ã\81¦前のページに戻ってください。",
+誤ã\81£ã\81¦ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81\9fã\81©ã\82\8aç\9d\80ã\81\84ã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81ã\83\96ã\83©ã\82¦ã\82¶ã\81®'''æ\88»ã\82\8b'''ã\83\9cã\82¿ã\83³ã\81§前のページに戻ってください。",
 'anontalkpagetext' => "----''このページはアカウントをまだ作成していないか使用していない匿名利用者のための議論ページです。
-匿名利用者を識別するために、利用者名のわりにIPアドレスが使用されています。
-IPアドレスは複数の利用者の間で共有されていることがあります。
+匿名利用者を識別するために、利用者名のわりにIPアドレスが使用されています。
+IP アドレスは複数の利用者で共有されている場合があります。
 もし、自身が匿名利用者であり、自分に関係のないコメントが寄せられている考えられる場合は、[[Special:UserLogin/signup|アカウントを作成する]]か[[Special:UserLogin|ログインして]]他の匿名利用者と間違えられないようにしてください。''",
 'noarticletext' => '現在このページには内容がありません。
-他のページに含まれる[[Special:Search/{{PAGENAME}}|このページ名を検索する]]か、
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索する]か、
\82\82ã\81\97ã\81\8fã\81¯ã\80\81[{{fullurl:{{FULLPAGENAME}}|action=edit}} ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86]</span>ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cできます。',
+他のページ内で[[Special:Search/{{PAGENAME}}|このページ名を検索する]]か、
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連する記録を検索]するか、
\81\82ã\82\8bã\81\84ã\81¯ã\80\81[{{fullurl:{{FULLPAGENAME}}|action=edit}} ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86]</span>できます。',
 'noarticletext-nopermission' => '現在このページには内容がありません。他のページに含まれる[[Special:Search/{{PAGENAME}}|このページ名を検索する]]か、もしくは<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索する]</span>ことができます。',
-'userpage-userdoesnotexist' => '「<nowiki>$1</nowiki>」という名前のアカウントは登録されていません。
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86ã\81\99ã\82\8bã\81\93ã\81¨が適切かどうか確認してください。',
+'userpage-userdoesnotexist' => '「$1」という利用者アカウントは登録されていません。
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ä½\9cæ\88\90/ç·¨é\9b\86が適切かどうか確認してください。',
 'userpage-userdoesnotexist-view' => '利用者アカウント「$1」は登録されていません。',
 'blocked-notice-logextract' => 'この利用者は現在ブロックされています。
 参考のために最新のブロック記録を以下に表示します。',
@@ -1059,7 +1060,7 @@ IPアドレスは複数の利用者の間で共有されていることがあり
 'sitejspreview' => "'''ここでは、JavaScriptをプレビューしているだけに過ぎません。'''
 '''まだ保存されていません!'''",
 'userinvalidcssjstitle' => "'''警告:'''「$1」という外装はありません。
-.cssと.jsページを編集する際には、ページ名を小文字にすることを忘れないでください(例えば、{{ns:user}}:Hoge/Vector.cssではなく{{ns:user}}:Hoge/vector.cssとなります)。",
+カスタム .css/.js ページではページ名を小文字にしてください。例:{{ns:user}}:Hoge/Vector.css ではなく {{ns:user}}:Hoge/vector.css",
 'updated' => '(更新)',
 'note' => "'''お知らせ:'''",
 'previewnote' => "'''これはプレビューです。'''
@@ -1068,15 +1069,15 @@ IPアドレスは複数の利用者の間で共有されていることがあり
 'session_fail_preview' => "'''申し訳ありません!セッションが切断されたため編集を処理できませんでした。'''
 もう一度やりなおしてください。
 それでも失敗する場合、[[Special:UserLogout|ログアウト]]してからログインし直してください。",
-'session_fail_preview_html' => "'''申し訳ありません!セッションが切断されたため編集を処理することができませんでした。'''
+'session_fail_preview_html' => "'''すみません!セッション データが消失したため編集を処理できませんでした。'''
 
 ''{{SITENAME}}では生のHTMLが有効であり、JavaScriptでの攻撃を予防するためにプレビューを表示していません。''
 
-'''この編集が問題ないものであるならば、もう一度保存してください。'''
-それでもうまくいかない際には一度[[Special:UserLogout|ログアウト]]して、ログインし直してみてください。",
+'''この編集が問題ない場合はもう一度保存してください。'''
+それでもうまくいかない場合は一度[[Special:UserLogout|ログアウト]]して、ログインし直してみてください。",
 'token_suffix_mismatch' => "'''使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。'''
 ページ本文の破損を防ぐため、編集は反映されません。
-これは、問題のある匿名プロキシサービスを利用していると、起こることがあります。",
+問題のある匿名プロキシ サービスを使用していると、これが発生する場合があります。",
 'edit_form_incomplete' => "'''一部の編集フォームの値がサーバーに届きませんでした。ご確認の上、そのまま再度投稿してください。'''",
 'editing' => '「$1」を編集中',
 'creating' => '「$1」を作成中',
@@ -1090,18 +1091,18 @@ IPアドレスは複数の利用者の間で共有されていることがあり
 上側のテキスト領域の内容'''だけ'''が、「{{int:savearticle}}」をクリックした時に実際に保存されます。",
 'yourtext' => '編集中の文章',
 'storedversion' => '保存された版',
-'nonunicodebrowser' => "'''警告:使用中のブラウザがUnicodeに対応していません。'''
-å®\89å\85¨ã\81«ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86ã\81\99ã\82\8bå\9b\9eé\81¿ç­\96ã\81\8c表示ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ï¼\9aç·¨é\9b\86ã\83\9cã\83\83ã\82¯ã\82¹ä¸­ã\81®é\9d\9eASCIIæ\96\87å­\97ã\81¯16é\80²æ\95°æ\96\87å­\97ã\82³ã\83¼ã\83\89ã\81«ã\82\88ã\81£ã\81¦è¡¨ç\8f¾ã\81\95ã\82\8cます。",
+'nonunicodebrowser' => "'''警告:あなたのブラウザーはUnicodeに未対応です。'''
+å®\89å\85¨ã\81«ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86ã\81\99ã\82\8bå\9b\9eé\81¿ç­\96ã\82\92表示ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ï¼\9aç·¨é\9b\86ã\83\9cã\83\83ã\82¯ã\82¹å\86\85ã\81®é\9d\9eASCIIæ\96\87å­\97ã\82\9216é\80²æ\95°ã\82³ã\83¼ã\83\89ã\81§è¡¨ç\8f¾ã\81\97ã\81¦ã\81\84ます。",
 'editingold' => "'''警告:このページの古い版を編集しています。'''
 保存すると、この版以降に追加されていた変更がすべて失われます。",
 'yourdiff' => '差分',
-'copyrightwarning' => "{{SITENAME}}ã\81¸ã\81®æ\8a\95稿ã\81¯ã\80\81ã\81\99ã\81¹ã\81¦$2ï¼\88詳細ã\81¯$1ã\82\92å\8f\82ç\85§ï¼\89ã\81®ã\82\82ã\81¨ã\81§å\85¬é\96\8bã\81\95ã\82\8cたと見なされることにご注意ください。
-投稿されたものが、他人によって遠慮なく編集され、自由に配布されることを望まない場合は、ここには投稿しないでください。<br />
\81¾ã\81\9fã\80\81æ\8a\95稿ã\81\95ã\82\8cã\82\8bã\82\82ã\81®ã\81¯ã\80\81è\87ªèº«ã\81«ã\82\88ã\81£ã\81¦æ\9b¸ã\81\8bã\82\8cã\81\9fã\82\82ã\81®ã\81§ã\81\82ã\82\8bã\81\8bã\80\81ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\83»ã\83\89ã\83¡ã\82¤ã\83³ã\80\81またはそれに類するフリーな資料からの複製であることを約束してください。
+'copyrightwarning' => "{{SITENAME}}ã\81¸ã\81®æ\8a\95稿ã\81¯ã\80\81ã\81\99ã\81¹ã\81¦$2ï¼\88詳細ã\81¯$1ã\82\92å\8f\82ç\85§ï¼\89ã\81®ã\82\82ã\81¨ã\81§å\85¬é\96\8bã\81\97たと見なされることにご注意ください。
+あなたが投稿したものを、他人がよって遠慮なく編集し、それを自由に配布するのを望まない場合は、ここには投稿しないでください。<br />
\81¾ã\81\9fã\80\81æ\8a\95稿ã\81\99ã\82\8bã\81®ã\81¯ã\80\81ã\81\94è\87ªèº«ã\81\8cæ\9b¸ã\81\84ã\81\9fã\82\82ã\81®ã\81\8bã\80\81ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ ã\83\89ã\83¡ã\82¤ã\83³またはそれに類するフリーな資料からの複製であることを約束してください。
 '''著作権保護されている作品を、許諾なしに投稿しないでください!'''",
-'copyrightwarning2' => "{{SITENAME}}への全ての投稿は、他の利用者によって編集、変更、除去される可能性があります。
-自信の投稿が他人によって遠慮なく編集されることを望まない場合は、ここには投稿しないでください。<br />
-また、投稿されるものは、自身によって書かれたものであるか、パブリック・ドメイン、またはそれに類するフリーな資料からの複製であることを約束してください(詳細は$1を参照)。
+'copyrightwarning2' => "{{SITENAME}}へのすべての投稿は、他の利用者が編集、変更、除去する可能性があります。
+あなたの投稿を、他人が遠慮なく編集するのを望まない場合は、ここには投稿しないでください。<br />
+また、あなたが投稿するのは、ご自身が書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は$1を参照)。
 '''著作権保護されている作品を、許諾なしに投稿してはいけません!'''",
 'longpageerror' => "'''エラー:投稿された文章は {{PLURAL:$1|$1 KB}} の長さがあります。これは投稿できる最大の長さ {{PLURAL:$2|$2 KB}} を超えています。'''
 この編集は保存できません。",
@@ -1132,10 +1133,10 @@ IPアドレスは複数の利用者の間で共有されていることがあり
 'permissionserrors' => '認証エラー',
 'permissionserrorstext' => 'あなたにはこの操作を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです:',
 'permissionserrorstext-withaction' => 'あなたには$2を行う権限がありません。{{PLURAL:$1|理由}}は以下の通りです:',
-'recreate-moveddeleted-warn' => "'''警告:以前削除されたページを再作成しようとしています。'''
+'recreate-moveddeleted-warn' => "'''警告:以前削除されたページを再作成しようとしています。'''
 
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86ã\81\97ç¶\9aã\81\91ã\82\8bã\81\93ã\81¨ã\81\8cé\81©å\88\87ã\81§ã\81\82ã\82\8bかどうか確認してください。
\8f\82è\80\83ã\81¨ã\81\97ã\81¦以下にこのページの削除と移動の記録を表示します:",
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ç·¨é\9b\86ã\82\92ç¶\9aè¡\8cã\81\99ã\82\8bã\81®ã\81\8cé\81©å\88\87かどうか確認してください。
\8f\82è\80\83ã\81®ã\81\9fã\82\81以下にこのページの削除と移動の記録を表示します:",
 'moveddeleted-notice' => 'このページは削除されています。
 参考のため、このページの削除と移動の記録を以下に表示します。',
 'log-fulllog' => '完全な記録を見る',
@@ -1254,12 +1255,12 @@ $3が示した理由は ''$2'' です。",
 'revdelete-selected' => "'''[[:$1]] の{{PLURAL:$2|選択された版}}:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|選択された記録の項目}}:'''",
 'revdelete-text' => "'''削除された版や記録はページの履歴や記録に表示され続けますが、一般の利用者はその内容にアクセスできなくなります。'''
-追å\8a ã\81®å\88¶é\99\90ã\81\8cã\81\8bã\81\91ã\82\89ã\82\8cã\81ªã\81\84é\99\90ã\82\8aã\80\81{{SITENAME}}ã\81®ä»\96ã\81®ç®¡ç\90\86è\80\85ã\82\82ã\81\93ã\82\8cã\81¨å\90\8cã\81\98ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\82\92使ã\81£て隠された内容にアクセスしたり、復元したりできます。",
+追å\8a ã\81®å\88¶é\99\90ã\81\8cã\81\8bã\81\91ã\82\89ã\82\8cã\81ªã\81\84é\99\90ã\82\8aã\80\81{{SITENAME}}ã\81®ä»\96ã\81®ç®¡ç\90\86è\80\85ã\82\82ã\81\93ã\82\8cã\81¨å\90\8cã\81\98ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤ã\82¹ã\82\92使ç\94¨ã\81\97て隠された内容にアクセスしたり、復元したりできます。",
 'revdelete-confirm' => 'この操作を意図して行っていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に沿って行っていることを確認してください。',
 'revdelete-suppress-text' => "秘匿は、'''以下の場合に限って'''使用すべきです:
 * 名誉毀損の恐れのある記述
 * 非公開個人情報
-*: ''è\87ªå®\85ã\81®ä½\8fæ\89\80ã\82\84電話番号、社会保障番号など''",
+*: ''è\87ªå®\85ã\81®ä½\8fæ\89\80ã\80\81電話番号、社会保障番号など''",
 'revdelete-legend' => '閲覧レベル制限を設定',
 'revdelete-hide-text' => '版の本文を隠す',
 'revdelete-hide-image' => 'ファイル内容を隠す',
@@ -1282,7 +1283,7 @@ $1",
 $1",
 'revdel-restore' => '閲覧レベルを変更',
 'revdel-restore-deleted' => '削除された版',
-'revdel-restore-visible' => '閲覧可能な版',
+'revdel-restore-visible' => '閲覧できる版',
 'pagehist' => 'ページの履歴',
 'deletedhist' => '削除された履歴',
 'revdelete-hide-current' => '$1$2の項目の非表示に失敗しました:これは最新版であるため。
@@ -1293,8 +1294,7 @@ $1",
 アクセス権限がありません。',
 'revdelete-modify-missing' => 'ID$1の項目の変更に失敗しました:データベースに見当たりません!',
 'revdelete-no-change' => "'''警告:''' $1$2の項目には要求された閲覧レベルが既に設定されています。",
-'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:変更を加えている間に、他の利用者によって設定が変更されたようです。
-記録を確認してください。',
+'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の利用者が変更したようです。',
 'revdelete-only-restricted' => '$1$2の項目の版指定削除に失敗しました:他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿することはできません。',
 'revdelete-reason-dropdown' => '*よくある削除理由
 ** 著作権侵害
@@ -1320,14 +1320,14 @@ $1",
 'mergehistory-list' => '統合できる編集履歴',
 'mergehistory-merge' => '以下の [[:$1]] の履歴を [[:$2]] に統合できます。
 特定の時間以前に作成された版のみを統合するには、ラジオボタンで版を選択してください。
-案内リンクを使と、選択が初期化されるので注意してください。',
-'mergehistory-go' => '統合可能な版の表示',
-'mergehistory-submit' => '版を統合する',
+案内リンクを使用すると、選択が初期化されるので注意してください。',
+'mergehistory-go' => '統合できる版を表示',
+'mergehistory-submit' => '版を統合',
 'mergehistory-empty' => '統合できる版がありません。',
 'mergehistory-success' => '[[:$1]]の $3 {{PLURAL:$3|版}}を[[:$2]]に統合しました。',
 'mergehistory-fail' => '履歴の統合を実行できません。ページと時刻の引数を再確認してください。',
 'mergehistory-no-source' => '統合元ページ「$1」が存在しません。',
-'mergehistory-no-destination' => 'çµ±å\90\88å\85\88ã\81®ã\83\9aã\83¼ã\82¸$1が存在しません。',
+'mergehistory-no-destination' => 'çµ±å\90\88å\85\88ã\83\9aã\83¼ã\82¸ã\80\8c$1ã\80\8dが存在しません。',
 'mergehistory-invalid-source' => '統合元のページは有効な名前でなければなりません。',
 'mergehistory-invalid-destination' => '統合先のページは有効な名前でなければなりません。',
 'mergehistory-autocomment' => '[[:$1]]を[[:$2]]に統合',
@@ -1400,11 +1400,11 @@ $1",
 'searcheverything-enable' => '全名前空間を検索する',
 'searchrelated' => '関連',
 'searchall' => 'すべて',
-'showingresults' => "'''$2'''件目からの'''$1'''件を表示しています。",
-'showingresultsnum' => "'''$2'''件目からの'''$3'''件を表示しています。",
+'showingresults' => "'''$2'''件目からの{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
+'showingresultsnum' => "'''$2'''件目からの{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
 'showingresultsheader' => "「'''$4'''」に対する{{PLURAL:$5|'''$3'''件中の'''$1'''件の結果|'''$3'''件中の'''$1'''件目から'''$2'''件目の結果}}",
 'nonefound' => "'''注意''':既定では一部の名前空間しか検索されません。
-''all:''を前につけると、全て(トークページやテンプレートなどを含む)を対象にできます。検索したい名前空間を前につけることもできます。",
+''all:''を前に付けると、すべて(トークページやテンプレートなどを含む)を対象にできます。検索する名前空間を前に付けることもできます。",
 'search-nonefound' => '問い合わせに合致する結果はありませんでした。',
 'powersearch' => '高度な検索',
 'powersearch-legend' => '高度な検索',
@@ -1474,12 +1474,12 @@ $1",
 この欄に入力されている鍵を知っている人は誰でもこのウォッチリストを閲覧できるようになるため、他人に分からない値を選んでください。
 乱数によって生成された次の値を使うこともできます:$1',
 'savedprefs' => '個人設定を保存しました。',
-'timezonelegend' => '時間帯:',
-'localtime' => '現地時間:',
+'timezonelegend' => 'タイムゾーン:',
+'localtime' => 'ローカルの時刻:',
 'timezoneuseserverdefault' => '既定を使用 ($1)',
 'timezoneuseoffset' => 'その他(時差を指定)',
 'timezoneoffset' => '時差¹:',
-'servertime' => 'サーバーの時:',
+'servertime' => 'サーバーの時:',
 'guesstimezone' => 'ブラウザの設定から入力',
 'timezoneregion-africa' => 'アフリカ',
 'timezoneregion-america' => 'アメリカ',
@@ -1491,20 +1491,20 @@ $1",
 'timezoneregion-europe' => 'ヨーロッパ',
 'timezoneregion-indian' => 'インド洋',
 'timezoneregion-pacific' => '太平洋',
-'allowemail' => '他の利用者からのメールを受',
+'allowemail' => '他の利用者からのメールを受け取る',
 'prefs-searchoptions' => '検索設定',
 'prefs-namespaces' => '名前空間',
-'defaultns' => 'ã\81\9dã\81®ä»\96ã\81®å ´å\90\88ã\80\81次ã\81®å\90\8då\89\8d空é\96\93ã\81§ã\81®ã\81¿æ¤\9cç´¢ã\81\99ã\82\8b:',
+'defaultns' => 'ã\81¾ã\81\9fã\81¯æ¬¡ã\81®å\90\8då\89\8d空é\96\93ã\81®ã\81¿ã\82\92æ¤\9cç´¢:',
 'default' => '既定',
 'prefs-files' => 'ファイル',
 'prefs-custom-css' => 'カスタムCSS',
 'prefs-custom-js' => 'カスタムJS',
 'prefs-common-css-js' => 'すべての外装に共通のCSSとJavaScript:',
-'prefs-reset-intro' => 'このページを使うと、自身の個人設定をこのサイトの既定のものに再設定することができます。
\81\93ã\81®æ\93\8dä½\9cã\81¯å\8f\96ã\82\8aæ¶\88ã\81\97ã\81\8cã\81§ã\81\8dません。',
+'prefs-reset-intro' => 'このページを使用すると、自分の個人設定をこのサイトの初期設定に戻せます。
\81\93ã\81®æ\93\8dä½\9cã\81¯å\8f\96ã\82\8aæ¶\88ã\81\9bません。',
 'prefs-emailconfirm-label' => 'メール確認:',
 'prefs-textboxsize' => '編集画面の大きさ',
-'youremail' => '電子メール:',
+'youremail' => 'メールアドレス:',
 'username' => '利用者名:',
 'uid' => '利用者ID:',
 'prefs-memberingroups' => '所属する{{PLURAL:$1|グループ}}:',
@@ -1522,13 +1522,13 @@ HTMLタグを見直してください。',
 'gender-unknown' => '未指定',
 'gender-male' => '男',
 'gender-female' => '女',
-'prefs-help-gender' => '省略可:ソフトウェアによる文法的性の解決に使用されます。
+'prefs-help-gender' => '省略可:ソフトウェアによる文法的性の解決に使用されます。
 この情報は公開されます。',
 'email' => 'メール',
-'prefs-help-realname' => '本名登録は省略可能です。
-登録した場合、著作物の帰属表示に本名が用いられます。',
+'prefs-help-realname' => '本名は省略できます。
+入力すると、あなたの著作物の帰属表記に本名を使用します。',
 'prefs-help-email' => 'メールアドレスは省略できますが、パスワードを忘れた際にパスワードをリセットするのに必要です。',
-'prefs-help-email-others' => 'あなたの身元を明らかにすることなく、他の利用者に利用者ページやトークページを使て連絡をしてもらうようにすることもできます。',
+'prefs-help-email-others' => 'あなたの身元を明らかにすることなく、他の利用者に利用者ページやトークページを使用して連絡をしてもらうようにすることもできます。',
 'prefs-help-email-required' => 'メールアドレスが必要です。',
 'prefs-info' => '基本情報',
 'prefs-i18n' => '国際化',
@@ -1547,10 +1547,10 @@ HTMLタグを見直してください。',
 
 # User preference: e-mail validation using jQuery
 'email-address-validity-valid' => 'メール アドレスは有効のようです',
-'email-address-validity-invalid' => '有効なメール アドレスを入力',
+'email-address-validity-invalid' => '有効なメールアドレスを入力',
 
 # User rights
-'userrights' => 'å\88©ç\94¨è\80\85権é\99\90ã\81®管理',
+'userrights' => 'å\88©ç\94¨è\80\85権é\99\90ã\82\92管理',
 'userrights-lookup-user' => '利用者グループを管理',
 'userrights-user-editname' => '利用者名を入力:',
 'editusergroup' => '利用者グループを編集',
@@ -1562,13 +1562,13 @@ HTMLタグを見直してください。',
 'userrights-groups-help' => 'この利用者が属するグループを変更することができます。
 * チェックが入っているボックスは、この利用者がそのグループに属していることを意味します。
 * チェックが入っていないボックスは、この利用者がそのグループに属していないことを意味します。
-* *は一旦グループへ追加した場合に除去あるいはその逆が不可能であることを示しています。',
+* 「*」はグループに一旦追加した場合に除去(あるいはその逆)ができないことを示しています。',
 'userrights-reason' => '理由:',
 'userrights-no-interwiki' => '他ウィキ上における利用者権限の編集権限はありません。',
 'userrights-nodatabase' => 'データベース$1は存在しないか、ローカル上にありません。',
 'userrights-nologin' => '利用者権限を付与するには、管理者アカウントで[[Special:UserLogin|ログイン]]する必要があります。',
 'userrights-notallowed' => 'あなたのアカウントには利用者権限を追加または除去する権限がありません。',
-'userrights-changeable-col' => '変更可能なグループ',
+'userrights-changeable-col' => '変更できるグループ',
 'userrights-unchangeable-col' => '変更できないグループ',
 
 # Groups
@@ -1596,24 +1596,24 @@ HTMLタグを見直してください。',
 'grouppage-suppress' => '{{ns:project}}:秘匿者',
 
 # Rights
-'right-read' => 'ã\83\9aã\83¼ã\82¸ã\81®閲覧',
-'right-edit' => 'ã\83\9aã\83¼ã\82¸ã\81®編集',
-'right-createpage' => 'ï¼\88è­°è«\96ã\83\9aã\83¼ã\82¸ã\81§ã\81ªã\81\84ï¼\89ã\83\9aã\83¼ã\82¸ã\81®作成',
-'right-createtalk' => 'è­°è«\96ã\83\9aã\83¼ã\82¸ã\81®作成',
-'right-createaccount' => 'æ\96°ã\81\97ã\81\84å\88©ç\94¨è\80\85ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81®作成',
-'right-minoredit' => 'ç´°é\83¨ã\81®ç·¨é\9b\86ã\81®å\8d°ã\81¥ã\81\91',
+'right-read' => 'ã\83\9aã\83¼ã\82¸ã\82\92閲覧',
+'right-edit' => 'ã\83\9aã\83¼ã\82¸ã\82\92編集',
+'right-createpage' => 'ï¼\88è­°è«\96ã\83\9aã\83¼ã\82¸ã\81§ã\81¯ã\81ªã\81\84ï¼\89ã\83\9aã\83¼ã\82¸ã\82\92作成',
+'right-createtalk' => 'è­°è«\96ã\83\9aã\83¼ã\82¸ã\82\92作成',
+'right-createaccount' => 'æ\96°ã\81\97ã\81\84å\88©ç\94¨è\80\85ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92作成',
+'right-minoredit' => 'ç´°é\83¨ã\81®ç·¨é\9b\86ã\81®å\8d°ã\82\92ä»\98ã\81\91ã\82\8b',
 'right-move' => 'ページの移動',
-'right-move-subpages' => 'ä¸\8bä½\8dã\83\9aã\83¼ã\82¸ã\82\92å\90«ã\82\81ã\81\9fã\83\9aã\83¼ã\82¸ã\81®移動',
+'right-move-subpages' => 'ä¸\8bä½\8dã\83\9aã\83¼ã\82¸ã\82\92å\90«ã\82\81ã\81¦ã\83\9aã\83¼ã\82¸ã\82\92移動',
 'right-move-rootuserpages' => '利用者ページ本体の移動',
 'right-movefile' => 'ファイルの移動',
-'right-suppressredirect' => 'ページの移動の際にもとのページ名からのリダイレクトを作成しない',
+'right-suppressredirect' => 'ページの移動の際にのページ名からのリダイレクトを作成しない',
 'right-upload' => 'ファイルのアップロード',
 'right-reupload' => '存在するファイルの上書き',
 'right-reupload-own' => '自らがアップロードした存在するファイルの上書き',
 'right-reupload-shared' => '共有メディアリポジトリ上のファイルのローカルでの上書き',
 'right-upload_by_url' => 'URLからのファイルのアップロード',
 'right-purge' => '確認を省略してサイトのキャッシュを破棄',
-'right-autoconfirmed' => 'å\8d\8aä¿\9dè­·ã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\81®編集',
+'right-autoconfirmed' => 'å\8d\8aä¿\9dè­·ã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\82\92編集',
 'right-bot' => '自動処理として認識',
 'right-nominornewtalk' => '議論ページへ細部の編集をしたときに、新しいメッセージのお知らせを表示しない',
 'right-apihighlimits' => 'API要求でより高い制限値の使用',
@@ -1633,12 +1633,12 @@ HTMLタグを見直してください。',
 'right-ipblock-exempt' => 'IPブロック、自動ブロック、広域ブロックを回避',
 'right-proxyunbannable' => 'プロキシの自動ブロックを回避',
 'right-unblockself' => '自分自身に対するブロックを解除',
-'right-protect' => 'ä¿\9dè­·ã\83¬ã\83\99ã\83«ã\81®å¤\89æ\9b´ã\81¨ä¿\9dè­·ã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\81®編集',
-'right-editprotected' => '保護ページの編集(カスケード保護を除く)',
-'right-editinterface' => 'ユーザーインターフェースの編集',
-'right-editusercssjs' => '他利用者のCSSとJavaScriptファイルの編集',
-'right-editusercss' => '他利用者のCSSファイルの編集',
-'right-edituserjs' => '他利用者のJavaScriptファイルの編集',
+'right-protect' => 'ä¿\9dè­·ã\83¬ã\83\99ã\83«ã\82\92å¤\89æ\9b´ã\81\97ã\80\81ä¿\9dè­·ã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\82\92編集',
+'right-editprotected' => '保護ページ(カスケード保護を除く)を編集',
+'right-editinterface' => 'ユーザー インターフェイスを編集',
+'right-editusercssjs' => '他の利用者のCSSとJavaScriptファイルを編集',
+'right-editusercss' => '他の利用者のCSSファイルを編集',
+'right-edituserjs' => '他の利用者のJavaScriptファイルを編集',
 'right-rollback' => '特定ページを最後に編集した利用者の編集の即時巻き戻し',
 'right-markbotedits' => '巻き戻しをボットの編集として扱う',
 'right-noratelimit' => '速度制限を受けない',
@@ -1649,8 +1649,8 @@ HTMLタグを見直してください。',
 'right-patrolmarks' => '最近の更新で巡回済み印を閲覧',
 'right-unwatchedpages' => 'ウォッチされていないページ一覧の閲覧',
 'right-mergehistory' => 'ページ履歴の統合',
-'right-userrights' => 'å\85¨å\88©ç\94¨è\80\85権é\99\90ã\81®編集',
-'right-userrights-interwiki' => 'ä»\96ã\81®ã\82¦ã\82£ã\82­ã\81®å\88©ç\94¨è\80\85ã\81®å\88©ç\94¨è\80\85権é\99\90ã\81®編集',
+'right-userrights' => 'å\85¨å\88©ç\94¨è\80\85権é\99\90ã\82\92編集',
+'right-userrights-interwiki' => 'ä»\96ã\81®ã\82¦ã\82£ã\82­ã\81®å\88©ç\94¨è\80\85ã\81®å\88©ç\94¨è\80\85権é\99\90ã\82\92編集',
 'right-siteadmin' => 'データベースのロックおよびロック解除',
 'right-override-export-depth' => 'リンク先ページを5階層まで含めて書き出す',
 'right-sendemail' => '他の利用者にメールを送信',
@@ -1669,7 +1669,7 @@ HTMLタグを見直してください。',
 'action-createpage' => 'ページを作成',
 'action-createtalk' => 'トークページを作成',
 'action-createaccount' => 'この利用者アカウントを作成',
-'action-minoredit' => 'ç´°é\83¨ã\81®ç·¨é\9b\86ã\81¨ã\81\97ã\81¦印を付ける',
+'action-minoredit' => 'ç´°é\83¨ã\81®ç·¨é\9b\86ã\81®印を付ける',
 'action-move' => 'このページの移動',
 'action-move-subpages' => 'このページと下位ページの移動',
 'action-move-rootuserpages' => '利用者ページ本体の移動',
@@ -1743,7 +1743,7 @@ HTMLタグを見直してください。',
 'recentchangeslinked-toolbox' => '関連ページの更新状況',
 'recentchangeslinked-title' => '「$1」と関連する変更',
 'recentchangeslinked-noresult' => '指定期間中に指定ページのリンク先に変更はありませんでした。',
-'recentchangeslinked-summary' => "ã\81\93ã\82\8cã\81¯ã\80\81æ\8c\87å®\9aã\81\97ã\81\9fã\83\9aã\83¼ã\82¸ã\81\8bã\82\89ã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bï¼\88ã\82\82ã\81\97ã\81\8fã\81¯ã\80\81æ\8c\87å®\9aã\81\97ã\81\9fã\82«ã\83\86ã\82´ã\83ªã\81«å\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bï¼\89ã\83\9aã\83¼ã\82¸ã\81«æ\9c\80è¿\91å\8a ã\81\88ã\82\89ã\82\8cã\81\9f変更の一覧です。
+'recentchangeslinked-summary' => "ã\81\93ã\82\8cã\81¯ã\80\81æ\8c\87å®\9aã\81\97ã\81\9fã\83\9aã\83¼ã\82¸ã\81\8bã\82\89ã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bï¼\88ã\81¾ã\81\9fã\81¯æ\8c\87å®\9aã\81\97ã\81\9fã\82«ã\83\86ã\82´ã\83ªã\81«å\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bï¼\89ã\83\9aã\83¼ã\82¸ã\81¸ã\81®æ\9c\80è¿\91ã\81®変更の一覧です。
 [[Special:Watchlist|自分のウォッチリスト]]にあるページは'''太字'''で表示されています。",
 'recentchangeslinked-page' => 'ページ名:',
 'recentchangeslinked-to' => '代わりに、指定したページへのリンク元での変更を表示',
@@ -1804,7 +1804,7 @@ HTMLタグを見直してください。',
 'verification-error' => 'このファイルは、ファイルの検証システムに合格しませんでした。',
 'hookaborted' => '拡張機能のフックによって、修正が中断されました。',
 'illegal-filename' => 'そのファイル名は許可されていません。',
-'overwrite' => '既存のファイルへ上書きすることは許可されていません。',
+'overwrite' => '既存のファイルへの上書きは許可されていません。',
 'unknown-error' => '不明なエラーが発生しました。',
 'tmp-create-error' => '一時ファイルを作成できませんでした。',
 'tmp-write-error' => '一時ファイルへの書き込みエラー',
@@ -1814,7 +1814,7 @@ HTMLタグを見直してください。',
 'emptyfile' => 'アップロードしたファイルは内容が空のようです。
 ファイル名の指定が間違っている可能性があります。
 本当にこのファイルをアップロードしたいのか、確認してください。',
-'windows-nonascii-filename' => 'ã\81\93ã\81®wikiã\81§ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\81«ç\89¹æ®\8aæ\96\87å­\97ã\82\92使ã\81\86ã\81\93ã\81¨ã\81\8cできません。',
+'windows-nonascii-filename' => 'ã\81\93ã\81®wikiã\81§ã\81¯ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\81«ç\89¹æ®\8aæ\96\87å­\97ã\82\92使ç\94¨できません。',
 'fileexists' => "この名前のファイルは既に存在しています。置き換えるべきかどうか確信がもてない場合は、'''<tt>[[:$1]]</tt>'''を確認してください。
 [[$1|thumb]]",
 'filepageexists' => "このファイルのための説明ページは既に'''<tt>[[:$1]]</tt>'''に作成されていますが、現在、ファイルが存在していません。
@@ -1884,7 +1884,7 @@ MGP # ペンタックス
 PICT # その他
  #</pre> <!-- この行はそのままにしておいてください -->',
 'upload-success-subj' => 'アップロード成功',
-'upload-success-msg' => '[$2]からのアップロードに成功しました。[[:{{ns:file}}:$1]]から利用可能です。',
+'upload-success-msg' => '[$2] からのアップロードに成功しました。こちらで利用できます:[[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'アップロードで発生した問題',
 'upload-failure-msg' => '[$2]からのアップロード中に問題が発生しました:
 
@@ -1898,8 +1898,8 @@ $1',
 'upload-file-error-text' => '内部エラーのため、サーバー上の一時ファイル作成に失敗しました。
 [[Special:ListUsers/sysop|管理者]]に連絡してください。',
 'upload-misc-error' => '不明なアップロードのエラー',
-'upload-misc-error-text' => 'アップロードに不明なエラーが発生しました。
-指定したURLがアクセス可能で有効なものであるかを再度確認してください。
+'upload-misc-error-text' => 'アップロードに不明なエラーが発生しました。
+指定した URL が正しいこととアクセスできることを確認して、もう一度試してください。
 それでもこのエラーが発生する場合は、[[Special:ListUsers/sysop|管理者]]に連絡してください。',
 'upload-too-many-redirects' => 'そのURLに含まれるリダイレクトが多すぎます',
 'upload-unknown-size' => 'サイズ不明',
@@ -1985,7 +1985,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization を参照してくだ
 
 # HTTP errors
 'http-invalid-url' => '無効なURL:$1',
-'http-invalid-scheme' => '"$1"のスキームを含むURLはサポートされていません',
+'http-invalid-scheme' => 'スキーム「$1」の URL には未対応です。',
 'http-request-error' => '不明なエラーによりHTTPリクエストに失敗しました。',
 'http-read-error' => 'HTTP読み込みエラー。',
 'http-timed-out' => 'HTTP要求がタイムアウトしました。',
@@ -2194,8 +2194,8 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'wantedpages' => 'ページが存在しないリンク',
 'wantedpages-badtitle' => '結果に不正なページ名が含まれています:$1',
 'wantedfiles' => 'ファイル情報ページが存在しないファイル',
-'wantedfiletext-cat' => 'ä¸\8bè¨\98ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\81\8cã\80\81使ã\82\8fã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82å¤\96é\83¨ã\83ªã\83\9dã\82¸ã\83\88ã\83ªç\94±æ\9d¥ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\82\8bã\81«ã\82\82ã\81\8bã\81\8bã\82\8fã\82\89ã\81\9aã\81\93ã\81\93ã\81«å\88\97æ\8c\99ã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82ã\81\9dã\81®ã\82\88ã\81\86ã\81ªå\81½é\99½æ\80§ã\81¯<del>å\8f\96ã\82\8aæ¶\88ã\81\95ã\82\8c</del>ã\81¾ã\81\99ã\80\82å\8a ã\81\88ã\81¦ã\80\81å­\98å\9c¨ã\81\97ã\81¦ã\81\84ないファイルを埋め込んでいるページは[[:$1]]に列挙されます。',
-'wantedfiletext-nocat' => 'ä¸\8bè¨\98ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\81\8cã\80\81使ã\82\8fã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82å¤\96é\83¨ã\83ªã\83\9dã\82¸ã\83\88ã\83ªç\94±æ\9d¥ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\82\8bã\81«ã\82\82ã\81\8bã\81\8bã\82\8fã\82\89ã\81\9aã\81\93ã\81\93ã\81«å\88\97æ\8c\99ã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82ã\81\9dã\81®ã\82\88ã\81\86ã\81ªå\81½é\99½æ\80§ã\81¯<del>å\8f\96ã\82\8aæ¶\88ã\81\95ã\82\8c</del>ます。',
+'wantedfiletext-cat' => '以ä¸\8bã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ä½¿ç\94¨ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\81\8cå­\98å\9c¨ã\81\97ã\81¾ã\81\9bã\82\93ã\80\82å¤\96é\83¨ã\83ªã\83\9dã\82¸ã\83\88ã\83ªç\94±æ\9d¥ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ã\80\81å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\81¦ã\82\82ã\81\93ã\81\93ã\81«å\88\97æ\8c\99ã\81\95ã\82\8cã\82\8bå ´å\90\88ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82ã\81\9dã\81®å ´å\90\88ã\81¯<del>å\8f\96ã\82\8aæ¶\88ã\81\97ç·\9a</del>ã\81\8cä»\98ã\81\8dã\81¾ã\81\99ã\80\82ã\81\95ã\82\89ã\81«ã\80\81å­\98å\9c¨ã\81\97ないファイルを埋め込んでいるページは[[:$1]]に列挙されます。',
+'wantedfiletext-nocat' => '以ä¸\8bã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ä½¿ç\94¨ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\81\8cå­\98å\9c¨ã\81\97ã\81¾ã\81\9bã\82\93ã\80\82å¤\96é\83¨ã\83ªã\83\9dã\82¸ã\83\88ã\83ªç\94±æ\9d¥ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ã\80\81å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\81¦ã\82\82ã\81\93ã\81\93ã\81«å\88\97æ\8c\99ã\81\95ã\82\8cã\82\8bå ´å\90\88ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82ã\81\9dã\81®å ´å\90\88ã\81¯<del>å\8f\96ã\82\8aæ¶\88ã\81\97ç·\9a</del>ã\81\8cä»\98ã\81\8dます。',
 'wantedtemplates' => '呼び出し先が存在しないテンプレート呼び出し',
 'mostlinked' => '被リンク数の多いページ',
 'mostlinkedcategories' => '被リンク数の多いカテゴリ',
@@ -2220,7 +2220,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'listusers' => '利用者の一覧',
 'listusers-editsonly' => '投稿記録のある利用者のみを表示',
 'listusers-creationsort' => '作成日順に整列',
-'usereditcount' => '$1回の編集',
+'usereditcount' => '$1{{PLURAL:$1|回の編集}}',
 'usercreated' => '$1 $2 に{{GENDER:$3|作成}}',
 'newpages' => '新しいページ',
 'newpages-username' => '利用者名:',
@@ -2229,7 +2229,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'movethispage' => 'このページを移動',
 'unusedimagestext' => '以下のファイルは存在していますが、どのページにも埋め込まれていません。
 ただし、他のウェブサイトが直接URLでファイルにリンクすることがあることに注意してください。以下のファイル一覧には、そのような形で利用中のファイルが含まれていることがあります。',
-'unusedcategoriestext' => '以下のカテゴリはページが存在しますが、他のどのページおよびカテゴリでも使れていません。',
+'unusedcategoriestext' => '以下のカテゴリはページが存在しますが、他のどのページおよびカテゴリでも使用されていません。',
 'notargettitle' => '対象が存在しません',
 'notargettext' => 'この機能の実行対象となるページまたは利用者が指定されていません。',
 'nopagetitle' => 'そのようなページはありません',
@@ -2251,10 +2251,10 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'speciallogtitlelabel' => '対象(ページまたは利用者):',
 'log' => '記録',
 'all-logs-page' => 'すべての公開記録',
-'alllogstext' => '{{SITENAME}}の取得可能な記録がまとめて表示されています。
+'alllogstext' => '{{SITENAME}}の取得できる記録をまとめて表示しています。
 記録の種類、実行した利用者(大文字小文字は区別)、影響を受けたページ(大文字小文字は区別)による絞り込みができます。',
-'logempty' => '該å½\93ã\81\99ã\82\8bè¨\98é\8c²ã\81\8cã\81¿ã\81¤ã\81\8bã\82\8aã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9f。',
-'log-title-wildcard' => 'この文字列で始まるページ名を検索する',
+'logempty' => '該å½\93ã\81\99ã\82\8bè¨\98é\8c²ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93。',
+'log-title-wildcard' => 'この文字列で始まるページ名を検索',
 
 # Special:AllPages
 'allpages' => '全ページ',
@@ -2275,6 +2275,11 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'allpages-bad-ns' => '{{SITENAME}}に「$1」という名前空間はありません。',
 'allpages-hide-redirects' => 'リダイレクトを隠す',
 
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'このページのキャッシュされた版を表示しています。最大 $1経過しています。',
+'cachedspecial-viewing-cached-ts' => 'このページのキャッシュされた版を表示しています。現在の実際の版と異なる場合があります。',
+'cachedspecial-refresh-now' => '最新版を表示します。',
+
 # Special:Categories
 'categories' => 'カテゴリ',
 'categoriespagetext' => '以下の{{PLURAL:$1|カテゴリ}}にはページまたはメディアがあります。
@@ -2416,12 +2421,12 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'changed' => '変更',
 'created' => '作成',
 'enotif_subject' => '{{SITENAME}}のページ「$PAGETITLE」が$PAGEEDITORによって$CHANGEDORCREATEDされました',
-'enotif_lastvisited' => 'æ\9c\80å¾\8cã\81«é\96²è¦§ã\81\97ã\81\9få¾\8cã\81«è¡\8cã\81ªã\82\8fã\82\8cã\81\9få\85¨ã\81¦ã\81®å¤\89æ\9b´ã\81¯ã\80\81 $1 ã\81§è¦\8bã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99。',
+'enotif_lastvisited' => 'æ\9c\80å¾\8cã\81«é\96²è¦§ã\81\97ã\81¦ä»¥é\99\8dã\81®ã\81\99ã\81¹ã\81¦ã\81®å¤\89æ\9b´ã\81¯ $1 ã\82\92ã\81\94覧ã\81\8fã\81 ã\81\95ã\81\84。',
 'enotif_lastdiff' => 'この変更内容を表示するには $1 をご覧ください。',
 'enotif_anon_editor' => '匿名利用者「$1」',
 'enotif_body' => '$WATCHINGUSERNAMEさん
 
-{{SITENAME}}のページ$PAGETITLEが$PAGEEDITDATEに、$PAGEEDITORによって$CHANGEDORCREATEDされました。現在の版を見るには $PAGETITLE_URL をご覧ください。
+{{SITENAME}}のページ「$PAGETITLE」が$PAGEEDITDATEに、$PAGEEDITORによって$CHANGEDORCREATEDされました。現在の版を見るには $PAGETITLE_URL をご覧ください。
 
 $NEWPAGE
 
@@ -2591,9 +2596,9 @@ $2による最後の版へ変更されました。',
 'undeletehistorynoadmin' => 'このページは削除されています。
 削除の理由は、削除前にこのページを編集していた利用者の詳細情報と共に、以下に表示されています。
 管理者以外の利用者には、削除された各版の本文への制限がかけられています。',
-'undelete-revision' => '$3によるページ$1の$4$5の削除版:',
-'undeleterevision-missing' => '不正な、あるいは存在しない版です。
-間違ったリンクを辿ったか、この版は既に復帰されたか、もしくは保存版から除去された可能性があります。',
+'undelete-revision' => 'ページ「$1」の、$3 が $4 $5 に削除した版:',
+'undeleterevision-missing' => '正しくないまたは存在しない版です。
+間違ったリンクをたどったか、この版は既に復帰されたか、もしくは保存版から除去された可能性があります。',
 'undelete-nodiff' => 'これより前の版はありません。',
 'undeletebtn' => '復元',
 'undeletelink' => '閲覧/復元',
@@ -2832,8 +2837,8 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'lockdbsuccesstext' => 'データベースはロックされました。<br />
 メンテナンスが完了したら、忘れずに[[Special:UnlockDB|ロックを除去]]してください。',
 'unlockdbsuccesstext' => 'データベースのロックは解除されました。',
-'lockfilenotwritable' => 'データベースのロックファイルは書き込み不可です。
-データベースをロックまたは解除するには、ウェブサーバーにより書き込み可能である必要があります。',
+'lockfilenotwritable' => 'データベースのロック ファイルが書き込み禁止です。
+データベースをロックまたはロック解除するには、ウェブ サーバーがこれに書き込める必要があります。',
 'databasenotlocked' => 'データベースはロックされていません。',
 'lockedbyandtime' => '($1 が $2 $3 から)',
 
@@ -2889,12 +2894,12 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'movetalk' => '付随するトークページも移動',
 'move-subpages' => '下位ページも移動($1ページまで)',
 'move-talk-subpages' => 'トークページの下位ページも移動($1個まで)',
-'movepage-page-exists' => 'ページ$1は既に存在するため、自動的に上書きされませんでした。',
-'movepage-page-moved' => 'ページ$1は$2に移動しました。',
-'movepage-page-unmoved' => 'ページ$1は$2に移動できませんでした。',
+'movepage-page-exists' => 'ページ「$1」は既に存在するため、自動的な上書きはできませんでした。',
+'movepage-page-moved' => 'ページ「$1」は「$2」に移動しました。',
+'movepage-page-unmoved' => 'ページ「$1」は「$2」に移動できませんでした。',
 'movepage-max-pages' => '自動的に移動できるのは $1 {{PLURAL:$1|ページ}}までで、それ以上は移動されません。',
 'movelogpage' => '移動記録',
-'movelogpagetext' => '以下はてのページ移動の一覧です。',
+'movelogpagetext' => '以下はすべてのページ移動の一覧です。',
 'movesubpage' => '{{PLURAL:$1|下位ページ}}',
 'movesubpagetext' => 'このページには{{PLURAL:$1|下位ページ}}が以下の $1 件あります。',
 'movenosubpage' => 'このページに下位ページはありません。',
@@ -2924,14 +2929,14 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'semiprotectedpagemovewarning' => "'''注意:'''このページは保護されているため、登録利用者しか移動できません。
 参考として以下に一番最後の記録を表示します:",
 'move-over-sharedrepo' => '== ファイルが存在します ==
-[[:$1]]は共有リポジトリ上に存在します。ファイルをこの名前に移動すると共有ファイルを上書きします。',
-'file-exists-sharedrepo' => '選ばれたファイル名は既に共有リポジトリー上で使われています。
+[[:$1]]は共有リポジトリ上に存在します。ファイルをこの名前に移動すると共有ファイルを上書きします。',
+'file-exists-sharedrepo' => '選ばれたファイル名は既に共有リポジトリ上で使用されています。
 別の名前を選んでください。',
 
 # Export
 'export' => 'ページの書き出し',
 'exporttext' => 'ここでは単独あるいは複数のページの本文と編集履歴を、XMLの形で書き出すことができます。
-このXMLは、他のMediaWikiを使用しているウィキで[[Special:Import|取り込みページ]]を使て取り込むことができます。
+このXMLは、他のMediaWikiを使用しているウィキで[[Special:Import|取り込みページ]]を使用して取り込むことができます。
 
 ページを書き出すには、下の入力ボックスに一行に一つずつ書き出したいページの名前を記入してください。また、編集履歴とともにすべての過去版を含めて書き出すのか、最新版のみを書き出すのか選択してください。
 
@@ -2985,8 +2990,8 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'import' => 'ページデータの取り込み',
 'importinterwiki' => 'ウィキ間移動の取り込み',
 'import-interwiki-text' => '取り込むウィキとページ名を選択してください。
-版の日付と編集者ã\81®å\90\8då\89\8dã\81¯ä¿\9dæ\8c\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82
-全てのウィキ間移動取り込みの操作は[[Special:Log/import|取り込み記録]]に記録されます。',
+版の日付と編集者å\90\8dã\81¯ä¿\9dæ\8c\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82
+ウィキ間移動のすべての取り込み操作は[[Special:Log/import|取り込み記録]]に記録されます。',
 'import-interwiki-source' => '取り込み元のウィキ/ページ:',
 'import-interwiki-history' => 'このページのすべての版を複製する',
 'import-interwiki-templates' => 'すべてのテンプレートを含める',
@@ -2994,7 +2999,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'import-interwiki-namespace' => '目的の名前空間:',
 'import-upload-filename' => 'ファイルの名前:',
 'import-comment' => 'コメント:',
-'importtext' => '元のウィキで[[Special:Export|書き出し機能]]を使てファイルに書き出してください。
+'importtext' => '元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。
 それをコンピューターに保存した後、こちらへアップロードしてください。',
 'importstart' => 'ページを取り込み中...',
 'import-revision-count' => '$1版',
@@ -3025,9 +3030,9 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'import-invalid-interwiki' => '指定されたウィキから取り込めませんでした。',
 'import-error-edit' => 'あなたにそのページを編集する許可がないため、ページ「$1」は取り込まれませんでした。',
 'import-error-create' => 'あなたにそのページを作成する許可がないため、ページ「$1」は取り込まれませんでした。',
-'import-error-interwiki' => '名前が外部リンク (interwiki) に予約されているためページ "$1" をインポートしませんでした。',
+'import-error-interwiki' => '名前が外部リンク (interwiki) に予約されているためページ「$1」をインポートしませんでした。',
 'import-error-special' => 'ページ「$1」は、ページが許可されない特別名前空間に属しているためインポートしません。',
-'import-error-invalid' => 'å\90\8då\89\8dã\81\8cæ­£ã\81\97ã\81\8fã\81ªã\81\84ã\81\9fã\82\81ã\83\9aã\83¼ã\82¸ "$1" をインポートしませんでした。',
+'import-error-invalid' => 'å\90\8då\89\8dã\81\8cæ­£ã\81\97ã\81\8fã\81ªã\81\84ã\81\9fã\82\81ã\80\81ã\83\9aã\83¼ã\82¸ã\80\8c$1ã\80\8dをインポートしませんでした。',
 
 # Import log
 'importlogpage' => '取り込み記録',
@@ -3060,7 +3065,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-pt-anonlogin' => 'ログインすることが推奨されます。ただし、必須ではありません。',
 'tooltip-pt-logout' => 'ログアウト',
 'tooltip-ca-talk' => '記事についての議論',
-'tooltip-ca-edit' => 'このページを編集できます。保存する前にプレビューボタンを使てください。',
+'tooltip-ca-edit' => 'このページを編集できます。保存する前にプレビューボタンを使用してください。',
 'tooltip-ca-addsection' => '新しい節を開始する',
 'tooltip-ca-viewsource' => 'このページは保護されています。
 ページのソースを閲覧できます。',
@@ -3106,7 +3111,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-minoredit' => 'この編集を細部の変更とマーク',
 'tooltip-save' => '変更を保存',
 'tooltip-preview' => '変更をプレビューで確認できます。保存前に使用してください!',
-'tooltip-diff' => 'æ\96\87ç« ã\81«å\8a ã\81\88ã\81\9få¤\89æ\9b´ã\82\92表示ã\81\97ã\81¾ã\81\99',
+'tooltip-diff' => 'æ\96\87ç« ã\81¸ã\81®å¤\89æ\9b´ã\82\92表示',
 'tooltip-compareselectedversions' => '選択された二つの版の差分を表示します。',
 'tooltip-watch' => 'このページをウォッチリストへ追加します',
 'tooltip-watchlistedit-normal-submit' => 'タイトルを削除',
@@ -3333,11 +3338,11 @@ Variants for Chinese language
 
 # Metadata
 'metadata' => 'メタデータ',
-'metadata-help' => 'このファイルには、追加情報があります(おそらく、作成やデジタル化する際に使われたデジタルカメラやスキャナーによって追加されたものです)。
+'metadata-help' => 'このファイルには、追加情報があります(おそらく、作成やデジタル化する際に使用したデジタルカメラやスキャナーが追加したものです)。
 このファイルが元の状態から変更されている場合、いくつかの項目は、修正されたファイルを完全に反映していないかもしれません。',
 'metadata-expand' => '拡張項目を表示',
 'metadata-collapse' => '拡張項目を非表示',
-'metadata-fields' => 'ã\81\93ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\81\82ã\82\8bEXIFã\83¡ã\82¿ã\83\87ã\83¼ã\82¿ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81¯ã\80\81ã\83¡ã\82¿ã\83\87ã\83¼ã\82¿è¡¨ã\81\8cæ\8a\98ã\82\8aã\81\9fã\81\9fã\81¾ã\82\8cã\81¦ã\81\84ã\82\8b状態のときに画像ページに読み込まれます。
+'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\81\82ã\82\8bEXIFã\83¡ã\82¿ã\83\87ã\83¼ã\82¿ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81¯ã\80\81ã\83¡ã\82¿ã\83\87ã\83¼ã\82¿è¡¨ã\82\92æ\8a\98ã\82\8aç\95³ã\82\93ã\81 状態のときに画像ページに読み込まれます。
 他のものは既定では非表示です。
 * make
 * model
@@ -3514,17 +3519,17 @@ Variants for Chinese language
 'exif-usageterms' => '使用条件',
 'exif-webstatement' => 'オンライン上の著作権文',
 'exif-originaldocumentid' => '元文書の一意な識別子',
-'exif-licenseurl' => '著作権ライセンスの URL',
+'exif-licenseurl' => '著作権ライセンスのURL',
 'exif-morepermissionsurl' => '代替ライセンス情報',
 'exif-attributionurl' => 'この作品を再利用する際に、次のURLにリンクしてください',
-'exif-preferredattributionname' => 'この作品を再利用する際に、次の帰属表示を使てください',
+'exif-preferredattributionname' => 'この作品を再利用する際に、次の帰属表示を使用してください',
 'exif-pngfilecomment' => 'PNGファイルのコメント',
 'exif-disclaimer' => '免責事項',
 'exif-contentwarning' => 'コンテンツに関する警告',
 'exif-giffilecomment' => 'GIFファイルのコメント',
 'exif-intellectualgenre' => '項目の種類',
 'exif-subjectnewscode' => '主題コード',
-'exif-scenecode' => 'IPTC シーンコード',
+'exif-scenecode' => 'IPTCシーンコード',
 'exif-event' => '映っている事象',
 'exif-organisationinimage' => '映っている組織',
 'exif-personinimage' => '映っている人物',
@@ -3639,7 +3644,7 @@ Variants for Chinese language
 'exif-scenecapturetype-2' => '人物',
 'exif-scenecapturetype-3' => '夜景',
 
-'exif-gaincontrol-0' => 'し',
+'exif-gaincontrol-0' => 'し',
 'exif-gaincontrol-1' => '弱い増感',
 'exif-gaincontrol-2' => '強い増感',
 'exif-gaincontrol-3' => '弱い減感',
@@ -3718,11 +3723,11 @@ Variants for Chinese language
 
 'exif-rating-rejected' => '却下',
 
-'exif-isospeedratings-overflow' => '65535 より大きい',
+'exif-isospeedratings-overflow' => '65535より大きい',
 
 'exif-iimcategory-ace' => '芸術、文化、娯楽',
 'exif-iimcategory-clj' => '犯罪と法律',
-'exif-iimcategory-dis' => 'ç\81½å®³ã\83»事故',
+'exif-iimcategory-dis' => 'ç\81½å®³ã\80\81事故',
 'exif-iimcategory-fin' => '経済とビジネス',
 'exif-iimcategory-edu' => '教育',
 'exif-iimcategory-evn' => '環境',
@@ -3744,7 +3749,7 @@ Variants for Chinese language
 'exif-urgency-other' => '利用者定義の優先度 ($1)',
 
 # External editor support
-'edit-externally' => '外部アプリケーションを使ってこのファイルを編集する',
+'edit-externally' => '外部アプリケーションを使用してこのファイルを編集',
 'edit-externally-help' => '(詳しい情報は[//www.mediawiki.org/wiki/Manual:External_editors 設定手順]をご覧ください)',
 
 # 'all' in various places, this might be different for inflected languages
@@ -3762,7 +3767,7 @@ Variants for Chinese language
 そのリンクをブラウザーで読み込んで、メールアドレスの正当性を確認してください。',
 'confirmemail_pending' => '確認メールは既に送信されています。
 このアカウントを作成したばかりであれば、メールが届くまで数分ほど待たなければならないかもしれません。',
-'confirmemail_send' => '確認用コードを送信する',
+'confirmemail_send' => '確認用コードを送信',
 'confirmemail_sent' => '確認メールを送信しました。',
 'confirmemail_oncreate' => 'メールアドレスの正当性を確認するためのコードを含んだメールを送信しました。
 この確認を行わなくてもログインはできますが、確認するまでメール通知の機能は無効化されます。',
@@ -3996,7 +4001,7 @@ $5
 'version-parserhooks' => '構文解析フック',
 'version-variables' => '変数',
 'version-antispam' => 'スパム対策',
-'version-skins' => 'スキン',
+'version-skins' => '外装',
 'version-other' => 'その他',
 'version-mediahandlers' => 'メディアハンドラー',
 'version-hooks' => 'フック',
@@ -4017,6 +4022,11 @@ MediaWikiは、有用であることを期待して配布されていますが
 'version-software' => 'インストール済みソフトウェア',
 'version-software-product' => '製品',
 'version-software-version' => 'バージョン',
+'version-entrypoints' => 'エントリー ポイントの URL',
+'version-entrypoints-header-entrypoint' => 'エントリー ポイント',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 記事のパス]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath スクリプト パス]',
 
 # Special:FilePath
 'filepath' => 'ファイルパス',
@@ -4200,9 +4210,20 @@ MediaWikiは、有用であることを期待して配布されていますが
 'api-error-unclassified' => '不明なエラーが発生しました。',
 'api-error-unknown-code' => '不明なエラー:「$1」',
 'api-error-unknown-error' => '内部エラー:ファイルのアップロードの途中で問題が発生しました。',
-'api-error-unknown-warning' => '原因不明の警告:$1',
-'api-error-unknownerror' => '原因不明のエラー: 「$1」',
+'api-error-unknown-warning' => '不明な警告:「$1」',
+'api-error-unknownerror' => '不明なエラー:「$1」',
 'api-error-uploaddisabled' => 'このウィキではアップロードは無効になっています。',
 'api-error-verification-error' => 'このファイルは壊れているか、間違った拡張子になっています。',
 
+# Durations
+'duration-seconds' => '$1 {{PLURAL:$1|秒}}',
+'duration-minutes' => '$1 {{PLURAL:$1|分}}',
+'duration-hours' => '$1 {{PLURAL:$1|時間}}',
+'duration-days' => '$1 {{PLURAL:$1|日}}',
+'duration-weeks' => '$1 {{PLURAL:$1|週間}}',
+'duration-years' => '$1 {{PLURAL:$1|年}}',
+'duration-decades' => '$1{{PLURAL:$1|0 年}}',
+'duration-centuries' => '$1 {{PLURAL:$1|世紀}}',
+'duration-millennia' => '$1{{PLURAL:$1|,000 年}}',
+
 );
index 5db36fb..ff710e5 100644 (file)
@@ -3661,6 +3661,11 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'version-software' => 'დაინსტალირებული პროგრამული უზრუნველყოფა',
 'version-software-product' => 'პროდუქტი',
 'version-software-version' => 'ვერსია',
+'version-entrypoints' => 'შესვლის წერტილის URL-ები',
+'version-entrypoints-header-entrypoint' => 'შესვლის წერტილი',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath გზა სტატიისაკენ]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath გზა სკრიპტისაკენ]',
 
 # Special:FilePath
 'filepath' => 'გზა ფაილისდამი',
index bec964d..ba03365 100644 (file)
@@ -3694,6 +3694,7 @@ $5
 'version-software' => '설치된 프로그램',
 'version-software-product' => '제품',
 'version-software-version' => '버전',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => '파일 경로',
@@ -3799,7 +3800,7 @@ $5
 'logentry-delete-delete' => '$1 사용자가 $3 문서를 삭제하였습니다.',
 'logentry-delete-restore' => '$1 사용자가 $3 문서를 복구하였습니다.',
 'logentry-delete-event' => '$1 사용자가 $3의 $5개의 기록에 대해 표시 설정을 바꾸었습니다: $4',
-'logentry-delete-revision' => '$1 사용자가 $3 문서의 {{PLURAL:$5}}개 편집의 설정을 변경하였습니다: $4',
+'logentry-delete-revision' => '$1 사용자가 $3 문서의 {{PLURAL:$5|$5}}개 편집의 설정을 변경하였습니다: $4',
 'logentry-delete-event-legacy' => '$1 사용자가 $3 문서 기록의 표시 설정을 변경하였습니다.',
 'logentry-delete-revision-legacy' => '$1 사용자가 $3 문서 편집의 표시 설정을 변경하였습니다.',
 'logentry-suppress-delete' => '$1 사용자가 $3 문서를 숨겼습니다.',
@@ -3881,4 +3882,15 @@ $5
 'api-error-uploaddisabled' => '이 위키에서 파일 올리기가 비활성화되어 있습니다.',
 'api-error-verification-error' => '파일이 손상되었거나 잘못된 확장자를 사용하고 있습니다.',
 
+# Durations
+'duration-seconds' => '$1{{PLURAL:$1|초}}',
+'duration-minutes' => '$1{{PLURAL:$1|분}}',
+'duration-hours' => '$1{{PLURAL:$1|시간}}',
+'duration-days' => '$1{{PLURAL:$1|일}}',
+'duration-weeks' => '$1{{PLURAL:$1|주}}',
+'duration-years' => '$1{{PLURAL:$1|년}}',
+'duration-decades' => '$1{{PLURAL:$1|0년}}',
+'duration-centuries' => '$1{{PLURAL:$1|세기}}',
+'duration-millennia' => '$1{{PLURAL:$1|천년}}',
+
 );
index f920971..bdf5b63 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author AidaBishkek
  * @author Aidabishkek
+ * @author Muratjumashev
  * @author Ztimur
  */
 
@@ -341,7 +342,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 Сиз башка барактардан [[Special:Search/{{PAGENAME}}|ушул аталыш менен баракты издөө]] салып,
 же <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тийиштүү жазууларды таба аласыз]</span>.',
 'previewnote' => "'''Бул алдын ала көрүнүшү гана болгонун эсиңизге алыңыз.'''
-Өзгөртүүлөрүңүз сактала элек!",
+Өзгөртүүлөрүңүз сактала элек! [[#editform|→ Оңдоону улант]]",
 'editing' => 'Оңдоо $1',
 'editingsection' => '$1 (бөлүмү) оңдолууда',
 'yourtext' => 'Текстиңиз',
index 5746697..19742ba 100644 (file)
@@ -1977,6 +1977,9 @@ Dir kënnt d'Siche limitéieren wann Dir e Log-Typ, e Benotzernumm (case-senisit
 'allpages-bad-ns' => 'Den Nummraum „$1“ gëtt et net op {{SITENAME}}.',
 'allpages-hide-redirects' => 'Viruleedunge verstoppen',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Déi rezentst weisen.',
+
 # Special:Categories
 'categories' => 'Kategorien',
 'categoriespagetext' => 'Dës {{PLURAL:$1|Kategorie huet|Kategorien hu}} Säiten oder Medien.
@@ -3523,6 +3526,7 @@ Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public
 'version-software' => 'Installéiert Software',
 'version-software-product' => 'Produkt',
 'version-software-version' => 'Versioun',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Pad bei de Fichier',
index b6663ee..4bb61d7 100644 (file)
@@ -3999,6 +3999,11 @@ $5
 'version-software' => 'Инсталирана програмска опрема',
 'version-software-product' => 'Производ',
 'version-software-version' => 'Верзија',
+'version-entrypoints' => 'URL-а на влезните точки',
+'version-entrypoints-header-entrypoint' => 'Влезна точка',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath?uselang=mk Патека на статијата]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Патека на скриптата]',
 
 # Special:FilePath
 'filepath' => 'Патека до податотека',
index a2d79c8..7ca9a16 100644 (file)
@@ -1215,7 +1215,7 @@ $1",
 # Suppression log
 'suppressionlog' => 'ഒതുക്കൽ രേഖ',
 'suppressionlogtext' => 'കാര്യനിർവാഹകരിൽ നിന്നും മറയ്ക്കപ്പെട്ടിട്ടുള്ള മായ്ക്കുകയും തടയുകയും ചെയ്തതുമായ ഉള്ളടക്കങ്ങളുടെ പട്ടിക നൽകിയിരിക്കുന്നു.
-à´\87à´ªàµ\8dà´ªàµ\8bൾ à´\95àµ\88à´\95ാരàµ\8dà´¯à´\82 à´\9aàµ\86à´¯àµ\8dയാൻ à´ªà´±àµ\8dà´±àµ\81à´¨àµ\8dà´¨ à´¨à´¿à´°àµ\8bധനà´\99àµ\8dà´\99à´³àµ\81à´\82 à´¤à´\9fയലàµ\81à´\95à´³àµ\81à´\82 à´\95ാണാൻ [[Special:BlockList|à´¤à´\9fയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9f à´\90.പി. à´µà´¿à´²à´¾à´¸à´\99àµ\8dà´\99ൾ]] കാണുക.',
+à´\87à´ªàµ\8dà´ªàµ\8bൾ à´¨à´¿à´²à´µà´¿à´²àµ\81à´³àµ\8dà´³ à´¨à´¿à´°àµ\8bധനà´\99àµ\8dà´\99à´³àµ\81à´\82 à´¤à´\9fയലàµ\81à´\95à´³àµ\81à´\82 à´\95ാണാൻ [[Special:BlockList|à´¤à´\9fയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´µ] കാണുക.',
 
 # History merging
 'mergehistory' => 'താളുകളുടെ നാൾവഴികൾ സം‌യോജിപ്പിക്കുക',
index 385353d..3e9b099 100644 (file)
@@ -3623,6 +3623,11 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
 'version-software' => 'Perisian yang dipasang',
 'version-software-product' => 'Produk',
 'version-software-version' => 'Versi',
+'version-entrypoints' => 'URL titik permulaan',
+'version-entrypoints-header-entrypoint' => 'Titik permulaan',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Laluan rencana]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Laluan skrip]',
 
 # Special:FilePath
 'filepath' => 'Laluan fail',
index 3afc020..416376b 100644 (file)
@@ -3415,6 +3415,9 @@ MediaWiki是為著使用的目的才發佈,毋過無負任何擔保責任;
 'version-software' => '已經安裝的軟體',
 'version-software-product' => '產品',
 'version-software-version' => '版本',
+'version-entrypoints' => '進入點網址',
+'version-entrypoints-header-entrypoint' => '進入點',
+'version-entrypoints-header-url' => '網址',
 
 # Special:FilePath
 'filepath' => 'Tóng-àn ê soàⁿ-lō·',
index 5174082..94a3f6d 100644 (file)
@@ -3902,6 +3902,11 @@ Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van
 'version-software' => 'Geïnstalleerde software',
 'version-software-product' => 'Product',
 'version-software-version' => 'Versie',
+'version-entrypoints' => "URL's voor ingangen",
+'version-entrypoints-header-entrypoint' => 'Ingang',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Article path]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
 
 # Special:FilePath
 'filepath' => 'Bestandslocatie',
index ce2304b..9e027f6 100644 (file)
@@ -928,6 +928,7 @@ Endringane dine er ikkje lagra enno! [[#editform|→ Haldt fram med å endra]]",
 'token_suffix_mismatch' => "'''Endringa di vart avvist fordi klienten/nettlesaren din lagar teiknfeil i teksten. Dette vart gjort for å hindre øydelegging av teksten på sida. Slikt kan av og til hende når ein brukar feilprogrammerte og vevbaserte anonyme proxytenester.'''",
 'edit_form_incomplete' => 'Delar av redigeringsskjemaet nådde ikkje fram til tenaren; dobbelsjekk at redigeringa er korrekt, og prøv om att.',
 'editing' => 'Endrar $1',
+'creating' => 'Opprettar $1',
 'editingsection' => 'Endrar $1 (bolk)',
 'editingcomment' => 'Endrar $1 (ny bolk)',
 'editconflict' => 'Endringskonflikt: $1',
index ef7a990..096ab26 100644 (file)
@@ -773,7 +773,7 @@ Poniższe funkcje poczty nie działają.",
 'invalidemailaddress' => 'Adres e‐mail jest niepoprawny i nie może być zaakceptowany.
 Wpisz poprawny adres e‐mail lub wyczyść pole.',
 'cannotchangeemail' => 'Na tej wiki nie ma możliwości zmiany adresu e‐mail przypisanego do konta.',
-'emaildisabled' => 'Ta witryna nie można wysłać wiadomości e-mail.',
+'emaildisabled' => 'Ta witryna nie może wysłać wiadomości e-mail.',
 'accountcreated' => 'Konto zostało utworzone',
 'accountcreatedtext' => 'Konto dla $1 zostało utworzone.',
 'createaccount-title' => 'Utworzenie konta w {{GRAMMAR:MS.lp|{{SITENAME}}}}',
index bbae8d3..dbc2050 100644 (file)
@@ -788,6 +788,7 @@ Não serão enviados correios de nenhuma das seguintes funcionalidades.',
 'invalidemailaddress' => 'O endereço de correio electrónico não pode ser aceite porque parece ter um formato inválido.
 Introduza um endereço formatado correctamente ou deixe o campo vazio.',
 'cannotchangeemail' => 'A conta de e-mail não pode ser alterado nesta wiki.',
+'emaildisabled' => 'Este site não consegue enviar e-mails.',
 'accountcreated' => 'Conta criada',
 'accountcreatedtext' => 'A conta de utilizador para $1 foi criada.',
 'createaccount-title' => 'Criação de conta na {{SITENAME}}',
@@ -1848,7 +1849,9 @@ Caso o problema persista, contacte um [[Special:ListUsers/sysop|administrador]].
 'backend-fail-closetemp' => 'Não foi possível fechar o arquivo temporário.',
 'backend-fail-read' => 'Não foi possível ler o arquivo $1.',
 'backend-fail-create' => 'Não foi possível criar o arquivo $1.',
+'backend-fail-maxsize' => 'Não foi possível criar o ficheiro  $1  porque ele é maior do que  {{PLURAL:$2| um byte| $2  bytes}}.',
 'backend-fail-readonly' => 'O servidor de armazenamento "$1" está actualmente no modo "somente leitura". A razão dada foi: "$2"',
+'backend-fail-synced' => 'O ficheiro" $1 " está em um estado inconsistente dentro da base de dados',
 'backend-fail-connect' => 'Não foi possível estabelecer ligação com o servidor de armazenamento "$1".',
 'backend-fail-internal' => 'Ocorreu um erro desconhecido no servidor de armazenamento "$1".',
 'backend-fail-contenttype' => 'Não foi possível determinar o tipo de conteúdo do ficheiro para armazenar em " $1 ".',
index b85117f..536e054 100644 (file)
@@ -4418,9 +4418,6 @@ This is being used in [[Special:Version]], preceeding the subversion revision nu
 'version-entrypoints-header-url' => 'Header for the second column in the entry points table on [[Special:Version]].',
 'version-entrypoints-articlepath' => 'A short description of the article path entry point. Links to the mediawiki.org documentation page for $wgArticlePath.',
 'version-entrypoints-scriptpath' => 'A short description of the script path entry point. Links to the mediawiki.org documentation page for $wgScriptPath.',
-'version-entrypoints-index-php' => 'A short description of the index.php entry point. Links to the mediawiki.org documentation page for index.php.',
-'version-entrypoints-api-php' => 'A short description of the api.php entry point. Links to the mediawiki.org documentation page for api.php.',
-'version-entrypoints-load-php' => 'A short description of the load.php entry point. Links to the mediawiki.org documentation page for load.php.',
 
 # Special:FilePath
 'filepath' => 'Legend of fieldset around input box in [[Special:FilePath]].',
index 67dc61f..aeac76c 100644 (file)
@@ -579,6 +579,9 @@ Ti duessas t'annunziar e tscherner ussa in nov pled-clav. Sche ti na levas betg
 Pled-clav temporar: $2",
 'passwordreset-emailsent' => 'In e-mail cun in nov pled-clav è vegnì tramess.',
 
+# Special:ChangeEmail
+'changeemail' => "Midar l'adressa dad e-mail",
+
 # Edit page toolbar
 'bold_sample' => 'Text grass',
 'bold_tip' => 'Text grass',
index 42fcc18..98d238f 100644 (file)
@@ -970,7 +970,7 @@ Pe piacere condrolle l'archivije.",
 # Suppression log
 'suppressionlog' => 'Archivie de le soppressiune',
 'suppressionlogtext' => "Sotte stè 'n'elenghe de scangellaminde e blocche sus a le condenute scunnute da l'amministrature.
-Vide l'[[Special:BlockList|elenghe de le IP bloccate]] pa liste de le operazziune corrende de espulsione e blocche.",
+Vide l'[[Special:BlockList|elenghe de le IP bloccate]] pe l'elenghe de le operazziune corrende de espulsione e blocche.",
 
 # History merging
 'mergehistory' => "Scuagghie 'a storie de le pàggene",
@@ -1922,6 +1922,9 @@ Pò condenè une  cchiù carattere ca non ge ponne essere ausate jndr'à le tite
 'allpages-bad-ns' => '{{SITENAME}} non ge tène \'u namaspace "$1".',
 'allpages-hide-redirects' => 'Scunne le redirezionaminde',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => "Vide l'urteme.",
+
 # Special:Categories
 'categories' => 'Le Categorije',
 'categoriespagetext' => "{{PLURAL:$1|'A seguende categorije tène|Le seguende categorije tènene}} pàggene o media.
@@ -2427,7 +2430,7 @@ L'archivije de le soppressiune 'u puè acchià aqquà sotte pe riferimende:",
 'blocklogentry' => "blocchete [[$1]] pe 'nu timbe de $2 $3",
 'reblock-logentry' => "cangiate l'imbostazione de le blocche pe [[$1]] cu 'na data de scadenze de $2 $3",
 'blocklogtext' => "Quiste è l'archivije de l'aziune de blocche e sblocche pe l'utinde.
-L'indirizze IP automaticamende bloccate non ge stonne jndr'à liste.
+L'indirizze IP automaticamende bloccate non ge stonne jndr'à l'elenghe.
 Vide 'a [[Special:BlockList|liste de le IP bloccate]] pa liste de le operaziune de ban e blocche ca stonne attive mò.",
 'unblocklogentry' => 'sblocchete $1',
 'block-log-flags-anononly' => "sulamende l'utinde anonime",
@@ -3718,6 +3721,9 @@ Avisse avè ricevute [{{SERVER}}{{SCRIPTPATH}}/COPYING 'na copie d'a GNU (Licenz
 'version-software' => 'Softuer installete',
 'version-software-product' => 'Prodotte',
 'version-software-version' => 'Versione',
+'version-entrypoints' => 'Punde de ingresse de le URL',
+'version-entrypoints-header-entrypoint' => "Punde d'ingresse",
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => "Percorse d'u fail",
@@ -3899,4 +3905,14 @@ Ce nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène agg
 'api-error-uploaddisabled' => 'Le carecaminde sonde disabbilitate sus a sta Uicchi.',
 'api-error-verification-error' => "Stu file pò essere scuasciate, o ave 'n'estenzione sbagliate.",
 
+# Durations
+'duration-seconds' => '{{PLURAL:$1|seconde|seconde}}',
+'duration-minutes' => '{{PLURAL:$1|minute|minute}}',
+'duration-hours' => '{{PLURAL: $1|ore|ore}}',
+'duration-weeks' => '{{PLURAL: $1|sumàne|sumàne}}',
+'duration-years' => '{{PLURAL: $1|anne|anne}}',
+'duration-decades' => '$1 {{PLURAL:$1|decade|decade}}',
+'duration-centuries' => '$1 {{PLURAL:$1|sechele|sechele}}',
+'duration-millennia' => '$1 {{PLURAL:$1|millennie|millennie}}',
+
 );
index 680b07e..1e51a4c 100644 (file)
@@ -39,6 +39,7 @@
  * @author Illusion
  * @author Iniquity
  * @author Innv
+ * @author Jackie
  * @author JenVan
  * @author Jl
  * @author KPu3uC B Poccuu
@@ -433,7 +434,7 @@ $messages = array(
 'cancel' => 'Отменить',
 'moredotdotdot' => 'Далее…',
 'mypage' => 'Личная страница',
-'mytalk' => 'Ð\9cоя страница обсуждения',
+'mytalk' => 'моя страница обсуждения',
 'anontalk' => 'Обсуждение для этого IP-адреса',
 'navigation' => 'Навигация',
 'and' => '&#32;и',
@@ -713,7 +714,7 @@ $2',
 'loginprompt' => 'Вы должны разрешить «cookies», чтобы представиться системе.',
 'userlogin' => 'Представиться или зарегистрироваться',
 'userloginnocreate' => 'Представиться',
-'logout' => 'Ð\97авершение сеанса',
+'logout' => 'завершение сеанса',
 'userlogout' => 'Завершение сеанса',
 'notloggedin' => 'Вы не представились системе',
 'nologin' => "Нет учётной записи? '''$1'''.",
@@ -1342,7 +1343,7 @@ $1",
 'qbsettings-directionality' => 'Закреплённая, в зависимости от направления письменности вашего языка',
 
 # Preferences page
-'preferences' => 'Ð\9dастройки',
+'preferences' => 'настройки',
 'mypreferences' => 'Настройки',
 'prefs-edits' => 'Количество правок:',
 'prefsnologin' => 'Вы не представились системе',
@@ -2275,7 +2276,7 @@ $1',
 'usermessage-editor' => 'Системная доставка',
 
 # Watchlist
-'watchlist' => 'Список наблюдения',
+'watchlist' => 'список наблюдения',
 'mywatchlist' => 'Список наблюдения',
 'watchlistfor2' => 'Для $1 $2',
 'nowatchlist' => 'Ваш список наблюдения пуст.',
@@ -2530,7 +2531,7 @@ $1',
 # Contributions
 'contributions' => 'Вклад участника',
 'contributions-title' => 'Вклад {{GENDER:$1|участника|участницы}} $1',
-'mycontris' => 'Ð\9cой вклад',
+'mycontris' => 'мой вклад',
 'contribsub2' => 'Вклад $1 ($2)',
 'nocontribs' => 'Изменений, соответствующих заданным условиям, найдено не было.',
 'uctop' => ' (последняя)',
@@ -3832,6 +3833,11 @@ MediaWiki распространяется в надежде, что она бу
 'version-software' => 'Установленное программное обеспечение',
 'version-software-product' => 'Продукт',
 'version-software-version' => 'Версия',
+'version-entrypoints' => 'Адреса точек входа',
+'version-entrypoints-header-entrypoint' => 'Точка входа',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Путь к статье]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Путь к скрипту]',
 
 # Special:FilePath
 'filepath' => 'Путь к файлу',
index b4e0121..dc0651b 100644 (file)
@@ -3652,6 +3652,11 @@ Skupaj s programom bi morali bi prejeti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopijo
 'version-software' => 'Nameščena programska oprema',
 'version-software-product' => 'Izdelek',
 'version-software-version' => 'Različica',
+'version-entrypoints' => 'URL-ji vstopnih točk',
+'version-entrypoints-header-entrypoint' => 'Vstopna točka',
+'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Pot članka]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Pot skripta]',
 
 # Special:FilePath
 'filepath' => 'Pot do datoteke',
index 4306ab7..dd501db 100644 (file)
@@ -1339,7 +1339,7 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'Историја сакривања',
-'suppressionlogtext' => 'Ð\98Ñ\81под Ñ\81е Ð½Ð°Ð»Ð°Ð·Ð¸ Ñ\81пиÑ\81ак Ð±Ñ\80иÑ\81аÑ\9aа Ð¸ Ð±Ð»Ð¾ÐºÐ¸Ñ\80аÑ\9aа ÐºÐ¾Ñ\98и Ñ\83кÑ\99Ñ\83Ñ\87Ñ\83Ñ\98е Ñ\81адÑ\80жаÑ\98 Ñ\81акÑ\80ивен Ð¾Ð´ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80а. Ð\9fогледаÑ\98Ñ\82е [[Special:BlockList|Ñ\81пиÑ\81ак Ð±Ð»Ð¾ÐºÐ¸Ñ\80аниÑ\85 IP Ð°Ð´Ñ\80еÑ\81а]] Ð·Ð° Ð¿Ñ\80еглед Ð²Ð°Ð¶ÐµÑ\9bиÑ\85 Ð·Ð°Ð±Ñ\80ана Ð¸ Ð±Ð»Ð¾ÐºÐ¸Ñ\80аÑ\9aа.',
+'suppressionlogtext' => 'Ð\98Ñ\81под Ñ\81е Ð½Ð°Ð»Ð°Ð·Ð¸ Ñ\81пиÑ\81ак Ð±Ñ\80иÑ\81аÑ\9aа Ð¸ Ð±Ð»Ð¾ÐºÐ¸Ñ\80аÑ\9aа ÐºÐ¾Ñ\98и Ñ\83кÑ\99Ñ\83Ñ\87Ñ\83Ñ\98е Ñ\81адÑ\80жаÑ\98 Ñ\81акÑ\80ивен Ð¾Ð´ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80а. Ð¢ÐµÐºÑ\83Ñ\9bе Ð·Ð°Ð±Ñ\80ане Ð¸ Ð±Ð»Ð¾ÐºÐ¸Ñ\80аÑ\9aа Ð¼Ð¾Ð¶ÐµÑ\82е Ð½Ð°Ñ\9bи [[Special:BlockList|овде]].',
 
 # History merging
 'mergehistory' => 'Споји историје страница',
@@ -2311,6 +2311,11 @@ $1',
 'allpages-bad-ns' => '{{SITENAME}} нема именски простор „$1“.',
 'allpages-hide-redirects' => 'Сакриј преусмерења',
 
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Гледате кеширану верзију ове странице, која може бити стара и до $1.',
+'cachedspecial-viewing-cached-ts' => 'Гледате кеширану верзију ове странице, која може да се разликује од тренутне.',
+'cachedspecial-refresh-now' => 'Погледај најновију.',
+
 # Special:Categories
 'categories' => 'Категоријe',
 'categoriespagetext' => '{{PLURAL:$1|Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.
@@ -2760,7 +2765,7 @@ $1',
 'badipaddress' => 'Неисправна IP адреса',
 'blockipsuccesssub' => 'Блокирање је успело',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] је {{GENDER:$1|блокиран|блокирана|блокиран}}.<br />
\9fогледаÑ\98Ñ\82е [[Special:BlockList|Ñ\81пиÑ\81ак Ð±Ð»Ð¾ÐºÐ¸Ñ\80аниÑ\85 Ð\98Ð\9f Ð°Ð´Ñ\80еÑ\81а]] Ð·Ð° Ð¿Ñ\80еглед Ð±Ð»Ð¾ÐºÐ¸Ñ\80аÑ\9aа.',
\91локиÑ\80аÑ\9aа Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\82е [[Special:BlockList|овде]].',
 'ipb-blockingself' => 'Овом радњом ћете блокирати себе! Јесте ли сигурни да то желите?',
 'ipb-confirmhideuser' => 'Управо ћете блокирати корисника с укљученом могућношћу „сакриј корисника“. Овим ће корисничко име бити сакривено у свим списковима и извештајима. Желите ли то да урадите?',
 'ipb-edit-dropdown' => 'Уреди разлоге блокирања',
@@ -2815,7 +2820,7 @@ $1',
 'reblock-logentry' => '{{GENDER:|је променио|је променила|је променио}} подешавања за блокирање {{GENDER:$1|корисника|кориснице|корисника}} [[$1]] с роком истека од $2 ($3)',
 'blocklogtext' => 'Ово је дневник блокирања и деблокирања корисника.
 Аутоматски блокиране ИП адресе нису наведене.
\9fогледаÑ\98Ñ\82е [[Special:BlockList|Ñ\81пиÑ\81ак Ð±Ð»Ð¾ÐºÐ¸Ñ\80аниÑ\85 Ð\98Ð\9f Ð°Ð´Ñ\80еÑ\81а]].',
¢ÐµÐºÑ\83Ñ\9bе Ð·Ð°Ð±Ñ\80ане Ð¸ Ð±Ð»Ð¾ÐºÐ¸Ñ\80аÑ\9aа Ð¼Ð¾Ð¶ÐµÑ\82е Ð½Ð°Ñ\9bи [[Special:BlockList|овде]].',
 'unblocklogentry' => '{{GENDER:|је деблокирао|је деблокирала|је деблокирао}} „$1“',
 'block-log-flags-anononly' => 'само анонимни корисници',
 'block-log-flags-nocreate' => 'онемогућено отварање налога',
@@ -4107,6 +4112,9 @@ $5
 'version-software' => 'Инсталирани софтвер',
 'version-software-product' => 'Производ',
 'version-software-version' => 'Верзија',
+'version-entrypoints' => 'Адресе улазне тачке',
+'version-entrypoints-header-entrypoint' => 'Улазна тачка',
+'version-entrypoints-header-url' => 'Адреса',
 
 # Special:FilePath
 'filepath' => 'Путања датотеке',
@@ -4295,4 +4303,15 @@ $5
 'api-error-uploaddisabled' => 'Отпремање је онемогућено на овом викију.',
 'api-error-verification-error' => 'Датотека је оштећена или има неисправан наставак.',
 
+# Durations
+'duration-seconds' => '$1 {{PLURAL:$1|секунд|секунде|секунди}}',
+'duration-minutes' => '$1 {{PLURAL:$1|минут|минута|минута}}',
+'duration-hours' => '$1 {{PLURAL:$1|сат|сата|сати}}',
+'duration-days' => '$1 {{PLURAL:$1|дан|дана|дана}}',
+'duration-weeks' => '$1 {{PLURAL:$1|недеља|недеље|недеља}}',
+'duration-years' => '$1 {{PLURAL:$1|година|године|година}}',
+'duration-decades' => '$1 {{PLURAL:$1|деценија|деценије|деценија}}',
+'duration-centuries' => '$1 {{PLURAL:$1|век|века|векова}}',
+'duration-millennia' => '$1 {{PLURAL:$1|миленијум|миленијума|миленијума}}',
+
 );
index 40a9500..8248b95 100644 (file)
@@ -44,6 +44,7 @@
  * @author StefanB
  * @author Steinninn
  * @author Str4nd
+ * @author Thurs
  * @author Tobulos1
  * @author VickyC
  * @author Where next Columbus
@@ -676,8 +677,8 @@ Den kanske redan har raderats av någon annan.',
 'badtitle' => 'Felaktig titel',
 'badtitletext' => 'Den begärda sidtiteln är antingen ogiltig eller tom, eller så är titeln felaktigt länkad från en annan wiki.
 Den kan innehålla ett eller flera tecken som inte får användas i sidtitlar.',
-'perfcached' => 'Följande data är cachad och är möjligtvis inte helt uppdaterad. Maximalt {{PLURAL:$1|ett|$1}} restultat finns {{PLURAL:$1|tillgängligt|tillgängliga}} i cachen.',
-'perfcachedts' => 'Sidan är hämtad ur ett cacheminne och uppdaterades senast $1. Maximalt {{PLURAL:$4|ett|$4}} restultat finns {{PLURAL:$4|tillgängligt|tillgängliga}} i cachen.',
+'perfcached' => 'Följande data är cachad och är möjligtvis inte helt uppdaterad. Maximalt {{PLURAL:$1|ett|$1}} resultat finns {{PLURAL:$1|tillgängligt|tillgängliga}} i cachen.',
+'perfcachedts' => 'Sidan är hämtad ur ett cacheminne och uppdaterades senast $1. Maximalt {{PLURAL:$4|ett|$4}} resultat finns {{PLURAL:$4|tillgängligt|tillgängliga}} i cachen.',
 'querypage-no-updates' => 'Uppdatering av den här sidan är inte aktiverad. Datan kommer i nuläget inte att uppdateras.',
 'wrong_wfQuery_params' => 'Felaktiga parametrar för wfQuery()<br /> Funktion: $1<br /> Förfrågan: $2',
 'viewsource' => 'Visa wikitext',
index 4bc74d5..c3d6ce1 100644 (file)
@@ -736,6 +736,7 @@ or <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}
 'token_suffix_mismatch' => "'''உங்கள் தொகுப்பினுள் சேவையாளர் நிறுத்தக்குறியீடுகளை செறுகியுள்ளனதன் காரணமாக உங்களது தொகுப்பு நிராகரிக்கப்பட்டுள்ளது. இது வலைத்தளத்தை மையமாகக் கொண்ட அடையாளம் காட்டாத புரொக்சி சேவைகளிலிருந்து தொகுக்கும் போது ஏற்படலாம்.'''",
 'edit_form_incomplete' => 'இந்த திருத்து படிவத்தின் சில பகுதிகள் SERVER ஐ சென்றடையவில்லை;ஒருமுறைக்கு இருமுறை  உங்கள் திருத்தங்களை சரிபார்த்து  மீண்டும் முயற்சிக்கவும்.',
 'editing' => '$1 தொகுக்கப்படுகிறது',
+'creating' => '$1 உருவாக்கம்',
 'editingsection' => 'தொகுப்பு $1 (பிரிவு)',
 'editingcomment' => '$1 தொகுக்கப்படுகிறது (புதிய பிரிவு)',
 'editconflict' => 'முரண்பாடுகளைத் தொகுக்கவும்: $1',
index c3f42db..d2ad8b6 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Amire80
  * @author Cekli829
  * @author Flrn
  * @author Hanberke
index 3d5997b..de44ac1 100644 (file)
@@ -7,12 +7,19 @@
  * @ingroup Language
  * @file
  *
+ * @author Ganbarzada
  * @author Гусейн
  */
 
 $messages = array(
 # User preference toggles
+'tog-underline' => 'Линки жинтоно ријә быкәш:',
+'tog-justify' => 'Мәтни бә сәһифә кәно бәрабәр быкә.',
+'tog-hideminor' => 'Охоминә дәгишонәдә гәдә дәгишон нишо мәдә.',
+'tog-hidepatrolled' => 'Јохләмиш быә дәјишиклијон нышу мәдә.',
 'tog-newpageshidepatrolled' => 'Нијони огәтеј ноғо доә быә сәһифон бә тожә сәһифон сијоһиәдә',
+'tog-usenewrc' => 'Охнәминчи дәйишиклийон тәкмил версијә',
+'tog-showtoc' => 'Мындәриҹоти сијоһи нишо быдә (3 сәрловһәсә веј быә сәһифон)',
 'tog-watchcreations' => 'Зијод кардеј чымы офәјә быә сәһифон бә ноғо доә сијоһи',
 'tog-enotifwatchlistpages' => 'Ноғо доә сијоһиәдә сәһифон кејнә дәгиш бәбен бәмы е-номә бывығанд',
 'tog-watchlisthideown' => 'Чымы дәгишон ноғо доә сијһиәдә нијо кардеј',
@@ -78,16 +85,20 @@ $messages = array(
 'category-empty' => "''Ын категоријә бы дәғиғәдә тәјлије.''",
 'hidden-categories' => '{{PLURAL:$1|Нијони категоријә|Нијони категоријон}}',
 'hidden-category-category' => 'Нијони категоријон',
+'category-subcat-count' => '{{PLURAL:$2|Ым катеријә әнчәх жинтонә жинә категоријонку ибарәте.|Ҹәми $2 категоријонку {{PLURAL:$1|жинә категоријә|$1 жинә категоријә}} нишо доә быә.}}',
 'category-article-count' => '{{PLURAL:$2|Бы категоријәдә әнҹәх иглә сәһифәје.|Ҹәми $2 сәһифонку нишо доә быә {{PLURAL:$1|сәһифә|$1 сәһифә}} бы категоријәдә.}}',
 'category-article-count-limited' => 'Ын категоријәдә {{PLURAL:$1|$1 сәһифә|}} һесте.',
 'category-file-count' => '{{PLURAL:$2|Бы категоријәдә әнҹәх иглә фајле.|Ҹәми $2 фајлонку нишо доә быә {{PLURAL:$1|фајл|$1 фајл}} бы категоријәдә.}}',
 'category-file-count-limited' => 'Ын категоријәдә  {{PLURAL:$1|$1 фајл}} һесте.',
 'listingcontinuesabbrev' => '(дәвом карде)',
+'index-category' => 'Индекс быә сәһифон.',
+'noindex-category' => 'Индекс нибыә саһифон',
 
 'about' => 'Тәсвир',
 'article' => 'Мәғолә',
 'newwindow' => '(нујә пенҹәдә окардеј)',
 'cancel' => 'Ләғв кардеј',
+'moredotdotdot' => 'Веј...',
 'mypage' => 'Чымы сәһифә',
 'mytalk' => 'Чымы мызокирә сәһифә',
 'anontalk' => 'Бо ын IP-унвони мызокирә',
@@ -99,6 +110,7 @@ $messages = array(
 'qbbrowse' => 'Дијә кардеј',
 'qbedit' => 'Сәрост кардеј',
 'qbpageoptions' => 'Ым сәһифә',
+'qbpageinfo' => 'Мәзмун.',
 'qbmyoptions' => 'Чымы сәһифон',
 'qbspecialpages' => 'Хысусиә сәһифон',
 'faq' => 'РАП',
@@ -160,6 +172,8 @@ $messages = array(
 'userpage' => 'Иштирокәкә сәһифә дијә кардеј',
 'projectpage' => 'Нәхши сәһифә дијә кардеј',
 'imagepage' => 'Фајли сәһифә дијә кардеј',
+'mediawikipage' => 'Мәктуби сәһифә нишо быдә.',
+'templatepage' => 'Ғәлиби сәһифә нишо быдә.',
 'viewhelppage' => 'Араијш сәј',
 'categorypage' => 'Категоријон сәһифә дијә кардеј',
 'viewtalkpage' => 'Мызокирә дијә кардеј',
@@ -170,6 +184,7 @@ $messages = array(
 'jumpto' => 'Дәвардеј бә:',
 'jumptonavigation' => 'навигасијә',
 'jumptosearch' => 'нәве',
+'pool-timeout' => 'Че блоки чәш кардә вахт сәбе.',
 'pool-errorunknown' => 'Номәлумә сәһв',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
@@ -178,18 +193,22 @@ $messages = array(
 'copyrightpage' => '{{ns:project}}:Мыәллифә һуғуғ',
 'currentevents' => 'Есәтнә һодисон',
 'currentevents-url' => 'Project: Есәтнә һодисон',
-'disclaimers' => 'Ð\94еÑ\98ни Ð±Ó\99 Ð³Ð¸Ñ\98 Ð½Ñ\8bгÓ\99Ñ\82еÑ\98',
+'disclaimers' => 'ЧÑ\8b Ð¼Ó\99Ñ\81Ñ\83лиÑ\98Ñ\98Ó\99Ñ\82икÑ\83 Ð¸Ð¼Ñ\82ина.',
 'disclaimerpage' => 'Project:Дејни бә гиј ныгәтеј',
 'edithelp' => 'Арајиш бо редактә кардеј',
 'edithelppage' => 'Help:Арајиш бо сәрост кардеј',
 'helppage' => 'Help:Мындәриҹот',
 'mainpage' => 'Јолә сәһифә',
 'mainpage-description' => 'Јолә сәһифә',
+'policy-url' => 'Project:Ғајдон',
 'portal' => 'Ҹәмјәт',
 'portal-url' => 'Project:Ҹәмјәти портал',
 'privacy' => 'Мәхфијәти сијосәт',
 'privacypage' => 'Project:Мәхфијәти сијосәт',
 
+'badaccess' => 'Иҹазә хәта.',
+'badaccess-group0' => 'Ын фәалијјәти ичра карде әзынишон.',
+
 'ok' => 'OK',
 'retrievedfrom' => 'Сәвон "$1"',
 'youhavenewmessages' => 'Шымә сәјоне $1 ($2).',
@@ -223,14 +242,27 @@ $messages = array(
 
 # General errors
 'error' => 'Сәһв',
+'readonly' => 'Бә база нывыште блок быә.',
+'missing-article' => 'База мәлумотон дыләдә бә ахтар кардә быә саһифон «$1» $2 барәдә мәлумот пәјдо карде ныбе.
+Жыго вәзијјәт бе бәзне бә вахтики, ым сәһифә че рәдд кардә быә сәһифә канә рәвојәте.
+Гирәм ым жыго ни, жәгәдә шымә програм тәминатијәдә сәһв пәјдо кардәјоне.
+Хаһиш кардәмон че сәһифә URL-и бә [[Special:ListUsers/sysop|администратори]] бывғандәнән.',
 'missingarticle-rev' => '(рәвојәт#: $1)',
+'missingarticle-diff' => '(Фәрг: $1, $2)',
+'internalerror' => 'Дахили хәта',
+'internalerror_info' => 'Дахили хәта: $1',
+'fileappenderrorread' => 'Әлавон гејд карде быәдә"$1" һанде ныбе.',
+'formerror' => 'Хәта: Че формә мәлумотон әкс карде ғерри мумкуне.',
 'badtitle' => 'Роныдоә ном',
+'badtitletext' => 'Ахтар кардә быә сәһифә ном сәһве, тәјлије, јаанки сәрост доә быәнин мијонзывонон ја мијонвики номон.
+Бе бәзне ки кали рәмзон сәрловһәдә око дој әбыни.',
 'viewsource' => 'Дијә кардеј',
 
 # Login and logout pages
 'yourname' => 'Иштирокәкә ном:',
 'yourpassword' => 'Парол:',
 'yourpasswordagain' => 'Пароли сәнибәтон гырдә карде:',
+'remembermypassword' => 'Мыни ым компутерәдә јодәдә огәт (максимум $1 {{PLURAL:$1|руж|руж}})',
 'login' => 'Ыштәни едаштеј',
 'nav-login-createaccount' => 'Ыштәни едаштеј / ыштәни ғејд кардовнијеј',
 'loginprompt' => '{{SITENAME}}-әдә ыштәни едәште горнә, шымә бәбе бә «cookies» иҹозә быдән.',
@@ -315,8 +347,13 @@ $messages = array(
 'yourtext' => 'Шымә мәтн',
 'templatesused' => '{{PLURAL:$1|Ғәлиб:|Ғәлибон}} есәтнә сәһифә истифодә кардејдә:',
 'template-protected' => '(Мыдофиә кардә быә)',
+'template-semiprotected' => 'тики муһафизә быә',
 'hiddencategories' => 'Ын сәһифә аидијотыш һесте бә {{PLURAL:$1|1 нијони категоријә|$1 нијони категоријон}}:',
 'permissionserrorstext-withaction' => "Шымәку ни иҹозә ба ым һәрәкәти «'''$2'''», бә жыго {{PLURAL:$1|сәбәби|сәбәбон}} горнә:",
+'recreate-moveddeleted-warn' => "''Дыггәт! Шымә нафко позулмуш быә сәһифон бәрпа кардеон пидә.'''
+
+Ым сәһифә чоәдәнә дуз карде зәруријјәти јохләмишкәнән.
+Жинтоно нышу доә быә бычи ым сәһифә позулмуш быә.",
 'moveddeleted-notice' => 'Ым сәһифә молә быә.
 Арајиши горнә жинтоно нишо доә быән чы сәһифә молә ијән ном дәгиш кардә нывыштәјон.',
 
@@ -324,6 +361,9 @@ $messages = array(
 'post-expand-template-inclusion-warning' => "'''Дығғәт:''' Дахыл кардә быә ғәлибон сәкыштә памјә ве јоле.
 Хәјли ғәлибон дахыл ныбабен.",
 'post-expand-template-inclusion-category' => 'Бо сәһифон дахыл кардә быә ғәлибон рәво зынә быә улгу бә кәно бешә',
+'post-expand-template-argument-warning' => "'''Дығғәт:''' Ым сәһифәдә ән ками иглә аргумент һесте, ә аргумент ки һәддиндән зијодә пәмјә һестыше бо окарде.
+Жыго аргументон вадоә быән.",
+'post-expand-template-argument-category' => 'Вадо быә ғәлибон аргументон огәтә сәһифон',
 
 # History pages
 'viewpagelogs' => 'Бо ым сәһифә журналон нишо дој',
@@ -338,8 +378,12 @@ $messages = array(
 'last' => 'навы.',
 'page_first' => 'иминә',
 'page_last' => 'охонә',
+'histlegend' => "Рәвојәтон выжнијеј: кон сәһифә рәвојәтон фәрғи виндеј пидәјоне нышон быжәнән ијән егәтән \"Enter\".<br />
+Изоһ: '''(исә)''' = де исәтнә рәвојәти фәрғ, '''(охо)''' = де навконә рәвојәти фәрғ, '''(г)''' = гәдә дәгиш.",
 'history-fieldset-title' => 'Тарыхи дијә кардеј',
 'history-show-deleted' => 'Әнҹәх рәдд кардә быән',
+'histfirst' => 'Ән канә',
+'histlast' => 'Охонәни',
 'historyempty' => '(тәјли)',
 
 # Revision feed
@@ -367,6 +411,7 @@ $messages = array(
 'lineno' => 'Сәтыр $1:',
 'compareselectedversions' => 'Сәчын кардә быә рәвојәтон мығојисә кардеј.',
 'editundo' => 'ләғв кардеј',
+'diff-multi' => '({{PLURAL:$2|Иглә истифадәчи|$2 истифадәчи}} тәрәфәдә кардә быә {{PLURAL:$1|иглә арә редактә|$1 арә редактә}} нушо додәни)',
 
 # Search results
 'searchresults' => 'Нәве нәтиҹон',
@@ -390,6 +435,7 @@ $messages = array(
 'searchprofile-everything-tooltip' => 'Һәммәј сәһифонәдә нәве (мызокирә сәһифонәдән)',
 'searchprofile-advanced-tooltip' => 'Бә асбардә быә номон мәкононәдә нәве',
 'search-result-size' => '$1 ({{PLURAL:$2|1 сыхан|$2 сыханон}})',
+'search-result-category-size' => '{{PLURAL:$1|$1 елемент|$1 елементон}} ({{PLURAL:$2|$2 жинә категоријә$2 жинә категоријон }}, {{PLURAL:$3|$3 фајл|$3 фајлон}})',
 'search-redirect' => '(Унвони дәгиш кардеј  $1)',
 'search-section' => '(семонә $1)',
 'search-suggest' => 'Еһтимол шымә нәзәрәдә ым гәтејдәбијон: $1',
@@ -423,6 +469,7 @@ $messages = array(
 'yourlanguage' => 'Зывон:',
 'email' => 'E-номә',
 'prefs-help-email' => 'Е-номә унвони нывыштеј һукман ни, интаси ав бә шымә гәрәк бәбе гирам шымә пароли виро бебәкардејон.',
+'prefs-help-email-others' => 'Комәг бәка бә ҹо иштироәкон шымә е-номә унвони оныкарде, че шымә шәхси сәһифәдә быә линки де шымә әлогә огәтеј.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'Ым сәһифә сәрост кардеј',
@@ -431,9 +478,12 @@ $messages = array(
 'nchanges' => '$1 {{PLURAL:$1|дәгиши|дәгишон}}',
 'recentchanges' => 'Ән нујә дәгишон',
 'recentchanges-legend' => 'Ән нујә дәгишон печыније',
+'recentchangestext' => 'Тәмшо быкән бы сәһифәдә че вики охоминә дәгишон нишо доә быән.',
+'recentchanges-feed-description' => 'Ым каналәдә быә охонә дәгишон дығғәтәдә огәт.',
 'recentchanges-label-newpage' => 'Де ым дәгиши тожә сәһифә сохтә бе',
 'recentchanges-label-minor' => 'Ым гадә дәгишије',
 'recentchanges-label-bot' => 'Ым дәгиши бот кардәше',
+'recentchanges-label-unpatrolled' => 'Ым редактә һәлә нәзәрәдә давардәни',
 'rcnote' => "Бә жиј нишо доә быә {{PLURAL:$1|'''1''' дәгиши|'''$1''' дәгиши}}, бә охонә {{PLURAL:$2|ружәдә|'''$2''' ружәдә}}, саат $5, $4.",
 'rcnotefrom' => "Бә жиј доә быән дәгишон че вахтику '''$2''' (тосә '''$1''').",
 'rclistfrom' => '$1 вахтику дәгишон нишо быдә',
@@ -477,6 +527,7 @@ $messages = array(
 'file-anchor-link' => 'Фајл',
 'filehist' => 'Фајли тарых',
 'filehist-help' => 'Фајли сыфтә рәвојәти виндеј горә бә тарых/вахт егәтән.',
+'filehist-revert' => 'Огард',
 'filehist-current' => 'есәтнә',
 'filehist-datetime' => 'Тарых/Вахт',
 'filehist-thumb' => 'Гәдә шикил',
@@ -493,13 +544,20 @@ $messages = array(
 # Random page
 'randompage' => 'Рајрастә мәғолә',
 
+# Statistics
+'statistics' => 'Статистика',
+
+'disambiguationspage' => 'Template:дәгиг кардеј',
+
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|бајт|бајтон}}',
 'nmembers' => '$1 {{PLURAL:$1|узв|узвон}}',
+'prefixindex' => 'Һәммәј сәһифон де префикси',
 'usercreated' => '{{GENDER:$3|Офәјеј быә}} $1 $2',
 'newpages' => 'Тожә сәһифон',
 'move' => 'Ном дәгиш кардеј',
-'pager-newer-n' => '{{PLURAL:$1|ән нујә 1|ән нујә $1}}',
+'pager-newer-n' => '{{PLURAL:$1|ән нујә1|ән нујә $1}}',
+'pager-older-n' => '{{PLURAL:$1|1 тикиән канә|$1 ән канә}}',
 
 # Book sources
 'booksources' => 'Китобон сәвонон',
@@ -558,6 +616,7 @@ $messages = array(
 
 # Namespace form on various pages
 'namespace' => 'Номон мәкон:',
+'invert' => 'Выжнијә быәгылон дәгишкә',
 'blanknamespace' => '(Әсос)',
 
 # Contributions
@@ -603,7 +662,8 @@ $messages = array(
 'blocklink' => 'Бә гырд гәтеј',
 'unblocklink' => 'Ошко кардеј',
 'change-blocklink' => 'Блок быә ҹо дәгиш кардеј',
-'contribslink' => 'Гәнҹ',
+'contribslink' => 'Комәкон',
+'blocklogpage' => 'Блок быәјон',
 'blocklogentry' => 'бастәше [[$1]] бә ын мыддәт $2 $3',
 'block-log-flags-nocreate' => 'нујә иштирокәкон ғејд карде ғәдәғәне',
 
@@ -620,6 +680,7 @@ $messages = array(
 
 # Thumbnails
 'thumbnail-more' => 'Һејве кардеј',
+'thumbnail_error' => 'Гәдә шикили туму кардәдә сәһф: $1',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Шымә иштирокәкә сәһифә',
@@ -684,6 +745,7 @@ $messages = array(
 'file-info-size' => '$1 × $2 пиксел, фајли памјә: $3, MIME тип: $4',
 'file-nohires' => 'Ән барзә рәвојәт ни.',
 'svg-long-desc' => 'SVG фајл, номинәләдә $1 × $2 пиксел, фајли памјә: $3',
+'show-big-image' => 'Тикиән јолә кејфијјәтинә шикил',
 
 # Bad image list
 'bad_image_list' => 'Формат бәпе быбу жыго:
@@ -694,6 +756,7 @@ $messages = array(
 
 # Metadata
 'metadata' => 'Метамәлумотон',
+'metadata-help' => 'Ым фајләдә фотоапарати јаанки сканери әловә кардә быә мәлумотон һестин. Гирәм фајл сохте бә пешто сәрост кардә быә, бе бәзнеки кали мәлумотон ијо нишо дојәдә фәрғ бәдон.',
 'metadata-fields' => 'Кејнә шикили сәһифәдә метадата ҹәдвәл гырдә карда быә бәвәдә бы сијоһиәдә гылә-гылә ашмардә быә метадата шикили мәрон виндеј бәбе. 
 Әмандәј мәрон нијони бәманден.
 * make
@@ -724,9 +787,22 @@ $messages = array(
 'watchlisttools-edit' => 'Дијә кардеј/сәрост кардеј сијоһи',
 'watchlisttools-raw' => 'Сәрост кардеј бәнә мәтни',
 
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Дыггәт:\'\'\' Еһтимал кардә быә "$2" классификасијә ачари нафконә "$1" классификасијә ачари етиборсоз кардә',
+
 # Special:SpecialPages
 'specialpages' => 'Хысусиә сәһифон',
 
+# External image whitelist
+'external_image_whitelist' => ' #Ым сәтри огәтәнән чокнәј әв һесте<pre>
+#Рә рә истифадә быә фрагментон ијо быдәнән (ә һиссә, че // мијонәдә бедә )
+#Әвон ды харичи шикили URL и дуз бәбен.
+#Дуз омә гылә бәнә шикили нишо бәбе, амандәни бәнә шикили линк нишо бәбе.
+#Сәтрон де # комментариј һисоб бедән.
+#Сәтрон бә регистри һәссос нин.
+
+#Рә рә око доә быә фрагментон че сәтри пентоно ијо быдәнән. Ым сәтри огәтәнән чокнәј һесте.</pre>',
+
 # Special:Tags
 'tag-filter' => '[[Special:Tags|нышонон]] филтр:',
 
index dce62a5..db79ffc 100644 (file)
@@ -685,6 +685,7 @@ Memolös, das pads: .css e .js mutons labön tiädi minudik: {{ns:user}}:Foo/vec
 Redakam perefudon ad vitön dädükami padavödema.
 Atos jenon ömna ven geboy düni pladulöma nennemik bevüresodik säkädik.'''",
 'editing' => 'Redakam pada: $1',
+'creating' => 'Jafäd pada: $1',
 'editingsection' => 'Redakam pada: $1 (diläd)',
 'editingcomment' => 'Redakam pada: $1 (diläd nulik)',
 'editconflict' => 'Redakamakonflit: $1',
index 5caf171..e6e2380 100644 (file)
@@ -736,7 +736,7 @@ Tó bá jẹ́ pé oníṣe aláìlórúkọ ni yín, tí ẹ sì ri pé wọ́n
 'updated' => '(Sísọdọ̀tun)',
 'note' => "'''Àkíyèsí:'''",
 'previewnote' => "'''Ẹ rántí pé àyẹ̀wò lásán nì yí.'''
-Àwọn àtúnṣe yín kò tíì jẹ́ kìkópamọ́!",
+Àwọn àtúnṣe yín kò tíì jẹ́ kìkópamọ́! [[#editform|→ Ẹ tẹ̀síwájú ìṣàtúnṣe]]",
 'previewconflict' => 'Àkọ́wò yìí jẹ́ bí ìkọ̀rọ̀ inú àlà ìtúnṣe ìkọ̀rọ̀ òkè yíò ṣe hàn tí ẹ bá yàn láti ṣàmúpamọ́.',
 'session_fail_preview' => "'''Àforíjìn! A kò le gbésẹ̀ àtúnṣe yín nítorí ìpòfo data ìsinsìyí.
 Ẹ jọ̀wọ́ ẹ gbìyànjú lẹ́ẹ̀kan si.
@@ -975,7 +975,7 @@ Kò ṣe é bòmọ́lẹ̀.',
 # Suppression log
 'suppressionlog' => 'Àkọọ́lẹ̀ ìfisílẹ̀',
 'suppressionlogtext' => 'Nísàlẹ̀ ni àtòjọ àwọn ìparẹ́ àti ìdínà tó ní àwọn àkóónú àbòmọ́lẹ̀ sí àwọn olùmójútó.
-Ẹ wo [[Special:BlockList|àtòjọ ìdínà IP]] fún àtòjọ àwọn ìdénà àti ìdínà ìgbàyí.',
+Ẹ wo [[Special:BlockList|àtòjọ ìdínà]] fún àtòjọ àwọn ìdénà àti ìdínà ìgbàyí.',
 
 # History merging
 'mergehistory' => 'Ìdàpọ̀ àwọn ìtàn ojúewé',
@@ -1390,9 +1390,11 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|Oníṣe $1|Àwọn oníṣe $1}} ún ṣe ìmójútó]',
 'rc_categories' => 'Òpin sí àwọn ẹ̀ka (pínsọ́tọ̀ pẹ̀lú "|")',
 'rc_categories_any' => 'Èyíkéyìí',
+'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} lẹ́yìn àtúnṣe',
 'newsectionsummary' => '/* $1 */ abala tuntun',
 'rc-enhanced-expand' => 'Ìfihàn ẹ̀kúnrẹ́rẹ́ (JavaScript pọndandan)',
 'rc-enhanced-hide' => 'Ìfipamọ́ ẹ̀kúnrẹ́rẹ́',
+'rc-old-title' => 'dídá tẹ́lẹ̀tẹ́lẹ̀ bíi "$1"',
 
 # Recent changes linked
 'recentchangeslinked' => 'Àtúnṣe tó báramu',
@@ -1456,7 +1458,7 @@ Láti fí fáìlì pọ̀mọ́ sínú ojúewé kan, ẹ lo àjápọ̀ bíi ìk
 'filetype-missing' => 'Fáìlì yìí kò ní ìfàgùn (fún àpẹrẹ ".jpg").',
 'empty-file' => 'Fáílì tí ẹ fúnsílẹ̀ jẹ́ òfo nínú.',
 'file-too-large' => 'Fáílì tí ẹ fúnsílẹ̀ jẹ́ títóbijù',
-'filename-tooshort' => 'Orúkọ fáílì jẹ́ kíkéréjú.',
+'filename-tooshort' => 'Orúkọ fáílì kéréjú bó ṣe yẹ lọ.',
 'filetype-banned' => 'Irú fáílì yìí ti jẹ́ dídí lọ́nà.',
 'verification-error' => 'Fáìlì yìí kò kọjá ìfidájú fáìlì.',
 'illegal-filename' => 'Orúkọ fáílì yìí kò jẹ́ gbígbàláàyè.',
@@ -2299,7 +2301,7 @@ $1',
 'badipaddress' => 'Àdírẹ́ẹ̀sì IP tíkòtọ́',
 'blockipsuccesssub' => 'Ìdínà yọrí sí rere',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ti jẹ́ dídílọ́nà.<br />
-Ẹ wo [[Special:BlockList|IP àkójọ ìdínà]] láti ṣàtúnyẹ̀wò àwọn ìdínà.',
+Ẹ wo [[Special:BlockList|àtòjọ ìdínà]] láti ṣàtúnyẹ̀wò àwọn ìdínà.',
 'ipb-blockingself' => 'Ẹ ti fẹ́ dínà ara yín! Ṣé èyí dáa yín lójú?',
 'ipb-edit-dropdown' => 'Àtúnṣe àwọn ìdí ìdínà',
 'ipb-unblock-addr' => 'Ìmúkúrò ìdínà $1',
@@ -2756,10 +2758,22 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 
 'exif-subjectdistancerange-0' => 'Aláìmọ̀',
 
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meters}} ló fiwà lókè omi-òkun',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meters}} ló fiwà lábẹ́ omi-òkun',
+
 'exif-gpsmeasuremode-2' => 'Ìwọ̀n ẹlẹ́gbẹ̀ẹ́ 2',
 'exif-gpsmeasuremode-3' => 'Ìwọ̀n ẹlẹ́gbẹ̀ẹ́ 3',
 
+# Pseudotags used for GPSSpeedRef
+'exif-gpsspeed-k' => 'Kilometers láàrin wákàtí kan',
+
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometers',
+
 'exif-dc-date' => 'Ọjọ́ọdún',
+'exif-dc-publisher' => 'Olùtẹ̀jáde',
+'exif-dc-type' => 'Irú amóhùnmáwòrán',
 
 'exif-iimcategory-ace' => 'Ìṣẹ́ọnà, àṣà àti fàájì',
 'exif-iimcategory-edu' => 'Ẹ̀kọ́',
@@ -2768,6 +2782,8 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'exif-iimcategory-lab' => 'Ìsẹ́',
 'exif-iimcategory-pol' => 'Ìṣèlú',
 'exif-iimcategory-rel' => 'Ẹ̀sìn àti ìgbàgbọ́',
+'exif-iimcategory-sci' => 'Sáyẹ̀nsì àti ọ̀rọ̀iṣẹ́ọnà',
+'exif-iimcategory-spo' => 'Àwọn eréìdárayá',
 'exif-iimcategory-wea' => 'Ojúọjọ́',
 
 'exif-urgency-low' => 'Kúkúrú ($1)',
@@ -2959,4 +2975,9 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'feedback-error3' => 'Àsìṣe: Kò sí ìdáhùn látọ̀dọ̀ API',
 'feedback-close' => 'Ṣetán',
 
+# API errors
+'api-error-filename-tooshort' => 'Orúkọ fáílì kéréjú bó ṣe yẹ lọ.',
+'api-error-unknown-code' => 'Àsìṣe aláìlójúùtú: "$1".',
+'api-error-unknownerror' => 'Àsìṣe aláìlójúùtú: "$1".',
+
 );
index 9cb8cec..ee0b649 100644 (file)
@@ -1960,7 +1960,7 @@ $1',
 'listusers-creationsort' => '按建立日期排序',
 'usereditcount' => '$1次编辑',
 'usercreated' => '$1 $2{{GENDER:$3|创建}}',
-'newpages' => '新页面',
+'newpages' => 'æ\9c\80æ\96°é¡µé\9d¢',
 'newpages-username' => '用户名:',
 'ancientpages' => '最早页面',
 'move' => '移动',
index 5c80296..72eb1ba 100644 (file)
@@ -21,6 +21,7 @@
  * @author Hzy980512
  * @author Jidanni
  * @author Jimmy xu wrk
+ * @author Justincheng12345
  * @author Kaganer
  * @author KaiesTse
  * @author Kuailong
@@ -863,7 +864,8 @@ $2
 'userinvalidcssjstitle' => "'''警告:''' 不存在面板\"\$1\"。注意自訂的 .css 和 .js 頁要使用小寫標題,例如,{{ns:user}}:Foo/vector.css 不同於 {{ns:user}}:Foo/Vector.css。",
 'updated' => '(已更新)',
 'note' => "'''注意:'''",
-'previewnote' => "'''請記住這只是預覽,內容尚未儲存!'''",
+'previewnote' => "'''請記住這只是預覽,內容尚未儲存!'''
+[[#editform|→ 繼續修改]]",
 'previewconflict' => '這個預覽顯示了上面文字編輯區中的內容。它將在{{GENDER:|你|妳|你}}選擇保存後出現。',
 'session_fail_preview' => "'''很抱歉!由於部份資料遺失,我們無法處理您的編輯。'''
 請再試一次。
@@ -877,6 +879,7 @@ $2
 這種情況通常出現於使用含有很多臭蟲、以網絡為主的匿名代理服務的時候。",
 'edit_form_incomplete' => '編輯表單的某些部分沒有到達伺服器 ;請檢查您的編輯內容是否完整並再試一次。',
 'editing' => '編輯“$1”',
+'creating' => '創建$1',
 'editingsection' => '編輯“$1”(段落)',
 'editingcomment' => '編輯“$1”(新段落)',
 'editconflict' => '編輯衝突:$1',
@@ -942,6 +945,7 @@ $2
 'edit-no-change' => '您的編輯已經略過,因為文字無任何改動。',
 'edit-already-exists' => '不可以建立一個新頁面。
 它已經存在。',
+'defaultmessagetext' => '預設訊息文字',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => '警告: 這個頁面有太多耗費的語法功能呼叫。
@@ -1083,7 +1087,7 @@ $1",
 
 # Suppression log
 'suppressionlog' => '監督日誌',
-'suppressionlogtext' => '該列表列出對管理員隱藏的刪除與封禁。另參見[[Special:BlockList|IP封鎖名單]]以查詢當前的封禁列表。',
+'suppressionlogtext' => '該列表列出對管理員隱藏的刪除與封禁。另參見[[Special:BlockList|封鎖名單]]以查詢當前的封禁列表。',
 
 # History merging
 'mergehistory' => '合併頁面歷史',
@@ -1502,6 +1506,7 @@ $1",
 'newsectionsummary' => '/* $1 */ 新段落',
 'rc-enhanced-expand' => '顯示細節 (需要 JavaScript)',
 'rc-enhanced-hide' => '隱藏細節',
+'rc-old-title' => '最初創建為"$1"',
 
 # Recent changes linked
 'recentchangeslinked' => '相關更改',
@@ -2739,7 +2744,7 @@ $1被封禁的理由是“$2”',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript測試',
-'javascripttest-disabled' => 'æ­¤å\8a\9fè\83½å·²ç¦\81用。',
+'javascripttest-disabled' => 'æ­¤å\8a\9fè\83½å\9c¨æ­¤Wikiä¸\8aæ\9cªè¢«ä½¿用。',
 'javascripttest-title' => '運行$1測試。',
 'javascripttest-pagetext-noframework' => '這個頁面預留了作JavaScript測試。',
 'javascripttest-pagetext-unknownframework' => '未知框架"$1"',
@@ -3587,6 +3592,7 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'version-software' => '已經安裝的軟件',
 'version-software-product' => '產品',
 'version-software-version' => '版本',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => '檔案路徑',
@@ -3774,4 +3780,15 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'api-error-uploaddisabled' => '本wiki的上傳檔案功能已停用。',
 'api-error-verification-error' => '本檔案可能已損壞,或副檔名錯誤。',
 
+# Durations
+'duration-seconds' => '$1秒',
+'duration-minutes' => '$1分',
+'duration-hours' => '$1小時',
+'duration-days' => '$1天',
+'duration-weeks' => '$1週',
+'duration-years' => '$1年',
+'duration-decades' => '$1十年',
+'duration-centuries' => '$1世紀',
+'duration-millennia' => '$1千年',
+
 );
index 1fa467b..6a99554 100644 (file)
@@ -467,6 +467,8 @@ $wgOptionalMessages = array(
        'metadata-langitem',
        'metadata-langitem-default',
        'nocookiesforlogin',
+       'version-entrypoints-articlepath',
+       'version-entrypoints-scriptpath',
 );
 
 /** EXIF messages, which may be set as optional in several checks, but are generally mandatory */
index 2b19fcd..cd85f14 100644 (file)
@@ -8,7 +8,7 @@
 .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
 .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
 .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane button { float: right; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
 .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
 .ui-draggable .ui-dialog-titlebar { cursor: move; }
 /* Customizations */
index 85b3f3f..f7a4b1f 100644 (file)
@@ -156,17 +156,33 @@ jQuery( function( $ ) {
         */
        function fetchPreview( file, callback, callbackBinary ) {
                var reader = new FileReader();
-               if ( callbackBinary ) {
+               if ( callbackBinary && 'readAsBinaryString' in reader ) {
                        // To fetch JPEG metadata we need a binary string; start there.
                        // todo: 
                        reader.onload = function() {
                                callbackBinary( reader.result );
 
                                // Now run back through the regular code path.
-                               fetchPreview(file, callback );
+                               fetchPreview( file, callback );
                        };
                        reader.readAsBinaryString( file );
-               } else if ('URL' in window && 'createObjectURL' in window.URL) {
+               } else if ( callbackBinary && 'readAsArrayBuffer' in reader ) {
+                       // readAsArrayBuffer replaces readAsBinaryString
+                       // However, our JPEG metadata library wants a string.
+                       // So, this is going to be an ugly conversion.
+                       reader.onload = function() {
+                               var buffer = new Uint8Array( reader.result ),
+                                       string = '';
+                               for ( var i = 0; i < buffer.byteLength; i++ ) {
+                                       string += String.fromCharCode( buffer[i] );
+                               }
+                               callbackBinary( string );
+
+                               // Now run back through the regular code path.
+                               fetchPreview( file, callback );
+                       };
+                       reader.readAsArrayBuffer( file );
+               } else if ( 'URL' in window && 'createObjectURL' in window.URL ) {
                        // Supported in Firefox 4.0 and above <https://developer.mozilla.org/en/DOM/window.URL.createObjectURL>
                        // WebKit has it in a namespace for now but that's ok. ;)
                        //
@@ -176,7 +192,7 @@ jQuery( function( $ ) {
                        //
                        // Prefer this over readAsDataURL for Firefox 7 due to bug reading
                        // some SVG files from data URIs <https://bugzilla.mozilla.org/show_bug.cgi?id=694165>
-                       callback(window.URL.createObjectURL(file));
+                       callback( window.URL.createObjectURL( file ) );
                } else {
                        // This ends up decoding the file to base-64 and back again, which
                        // feels horribly inefficient.
index 6af9b0c..63d0fdf 100644 (file)
@@ -1,42 +1,28 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-  "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-  <title>Jasmine Test Runner</title>
-  <link rel="stylesheet" type="text/css" href="lib/jasmine-1.0.1/jasmine.css">
-  <script type="text/javascript" src="lib/jasmine-1.0.1/jasmine.js"></script>
-  <script type="text/javascript" src="lib/jasmine-1.0.1/jasmine-html.js"></script>
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+       <head>
+               <title>Jasmine Test Runner</title>
+               <meta charset="UTF-8" />
+               <link rel="stylesheet" type="text/css" href="lib/jasmine-1.0.1/jasmine.css">
+               <script src="lib/jasmine-1.0.1/jasmine.js"></script>
+               <script src="lib/jasmine-1.0.1/jasmine-html.js"></script>
 
-  <!-- include source files here... -->
-  <script type="text/javascript" src="../../load.php?debug=true&lang=en&modules=jquery%7Cmediawiki&only=scripts&skin=vector"></script>
-  
-  <script type="text/javascript" src="../../resources/mediawiki/mediawiki.js"></script>
+               <!-- include source files here... -->
+               <script src="../../load.php?debug=true&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=vector&amp;*"></script>
+               <script>
+               mw.loader.load( ['mediawiki.jqueryMsg'] );
+               </script>
 
-  <script type="text/javascript" src="../../resources/mediawiki.language/mediawiki.language.js"></script>
-  <script type="text/javascript" src="../../resources/mediawiki/mediawiki.jqueryMsg.js"></script>
-  <script type="text/javascript" src="../../resources/mediawiki/mediawiki.Uri.js"></script>
-<!--
-  <script type="text/javascript" src="../../resources/mediawiki/mediawiki.api.js"></script>
-  <script type="text/javascript" src="../../resources/mediawiki/mediawiki.api.edit.js"></script>
--->
+               <!-- insert test data files here -->
+               <script src="spec/mediawiki.jqueryMsg.spec.data.js"></script>
 
-  <!-- insert test data files here -->
-  <script type="text/javascript" src="spec/mediawiki.jqueryMsg.spec.data.js"></script>
-
-  <!-- include spec files here... -->
-  <script type="text/javascript" src="spec/mediawiki.Uri.spec.js"></script>
-  <!-- 
-       <script type="text/javascript" src="spec/mw.Api.spec.js"></script>
-    <script type="text/javascript" src="spec/mw.Api.edit.spec.js"></script>
-  -->
-  <script type="text/javascript" src="spec/mediawiki.jqueryMsg.spec.js"></script>
-</head>
+               <!-- include spec files here... -->
+               <script src="spec/mediawiki.jqueryMsg.spec.js"></script>
+       </head>
 <body>
-<script type="text/javascript">
-  jasmine.getEnv().addReporter( new jasmine.TrivialReporter() );
-  jasmine.getEnv().execute();
-</script>
-
+       <script>
+               jasmine.getEnv().addReporter( new jasmine.TrivialReporter() );
+               jasmine.getEnv().execute();
+       </script>
 </body>
 </html>
diff --git a/tests/jasmine/spec/mediawiki.Uri.spec.js b/tests/jasmine/spec/mediawiki.Uri.spec.js
deleted file mode 100644 (file)
index e396ab3..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-( function() {
-
-       // ensure we have a generic URI parser if not running in a browser
-       if ( !mw.Uri ) {
-               mw.Uri = mw.UriRelative( 'http://example.com/' );
-       }
-
-       describe( "mw.Uri", function() {
-
-               describe( "should work well in loose and strict mode", function() {
-
-                       function basicTests( strict ) {
-                       
-                               describe( "should parse a simple HTTP URI correctly", function() { 
-
-                                       var uriString = 'http://www.ietf.org/rfc/rfc2396.txt';
-                                       var uri;
-                                       if ( strict ) {
-                                               uri = new mw.Uri( uriString, strict );
-                                       } else {
-                                               uri = new mw.Uri( uriString );
-                                       }
-
-                                       it( "should have basic object properties", function() {
-                                               expect( uri.protocol ).toEqual( 'http' );
-                                               expect( uri.host ).toEqual( 'www.ietf.org' );
-                                               expect( uri.port ).not.toBeDefined();
-                                               expect( uri.path ).toEqual( '/rfc/rfc2396.txt' );
-                                               expect( uri.query ).toEqual( {} );
-                                               expect( uri.fragment ).not.toBeDefined();
-                                       } );
-
-                                       describe( "should construct composite components of URI on request", function() { 
-                                               it( "should have empty userinfo", function() { 
-                                                       expect( uri.getUserInfo() ).toEqual( '' );
-                                               } );
-
-                                               it( "should have authority equal to host", function() { 
-                                                       expect( uri.getAuthority() ).toEqual( 'www.ietf.org' );
-                                               } );
-
-                                               it( "should have hostport equal to host", function() { 
-                                                       expect( uri.getHostPort() ).toEqual( 'www.ietf.org' );
-                                               } );
-
-                                               it( "should have empty string as query string", function() { 
-                                                       expect( uri.getQueryString() ).toEqual( '' );
-                                               } );
-
-                                               it( "should have path as relative path", function() { 
-                                                       expect( uri.getRelativePath() ).toEqual( '/rfc/rfc2396.txt' );
-                                               } );
-
-                                               it( "should return a uri string equivalent to original", function() { 
-                                                       expect( uri.toString() ).toEqual( uriString );
-                                               } );
-                                       } );
-                               } );
-                       }
-
-                       describe( "should work in loose mode", function() { 
-                               basicTests( false );
-                       } );
-
-                       describe( "should work in strict mode", function() {
-                               basicTests( true );
-                       } );
-
-               } );
-
-               it( "should parse a simple ftp URI correctly with user and password", function() {
-                       var uri = new mw.Uri( 'ftp://usr:pwd@192.0.2.16/' );
-                       expect( uri.protocol ).toEqual( 'ftp' );
-                       expect( uri.user ).toEqual( 'usr' );
-                       expect( uri.password ).toEqual( 'pwd' );
-                       expect( uri.host ).toEqual( '192.0.2.16' );
-                       expect( uri.port ).not.toBeDefined();
-                       expect( uri.path ).toEqual( '/' );
-                       expect( uri.query ).toEqual( {} );
-                       expect( uri.fragment ).not.toBeDefined();
-               } );
-
-               it( "should parse a simple querystring", function() {
-                       var uri = new mw.Uri( 'http://www.google.com/?q=uri' );
-                       expect( uri.protocol ).toEqual( 'http' );
-                       expect( uri.host ).toEqual( 'www.google.com' );
-                       expect( uri.port ).not.toBeDefined();
-                       expect( uri.path ).toEqual( '/' );
-                       expect( uri.query ).toBeDefined();
-                       expect( uri.query ).toEqual( { q: 'uri' } );
-                       expect( uri.fragment ).not.toBeDefined();
-                       expect( uri.getQueryString() ).toEqual( 'q=uri' );
-               } );
-
-               describe( "should handle multiple value query args (overrideKeys on)", function() {
-                       var uri = new mw.Uri( 'http://www.example.com/dir/?m=foo&m=bar&n=1', { overrideKeys: true } );
-                       it ( "should parse with multiple values", function() {
-                               expect( uri.query.m ).toEqual( 'bar' );
-                               expect( uri.query.n ).toEqual( '1' );
-                       } );
-                       it ( "should accept multiple values", function() {
-                               uri.query.n = [ "x", "y", "z" ];
-                               expect( uri.toString() ).toContain( 'm=bar' );
-                               expect( uri.toString() ).toContain( 'n=x&n=y&n=z' );
-                               expect( uri.toString().length ).toEqual( 'http://www.example.com/dir/?m=bar&n=x&n=y&n=z'.length );
-                       } );
-               } );
-
-               describe( "should handle multiple value query args (overrideKeys off)", function() {
-                       var uri = new mw.Uri( 'http://www.example.com/dir/?m=foo&m=bar&n=1', { overrideKeys: false } );
-                       it ( "should parse with multiple values", function() {
-                               expect( uri.query.m.length ).toEqual( 2 );
-                               expect( uri.query.m[0] ).toEqual( 'foo' );
-                               expect( uri.query.m[1] ).toEqual( 'bar' );
-                               expect( uri.query.n ).toEqual( '1' );
-                       } );
-                       it ( "should accept multiple values", function() {
-                               uri.query.n = [ "x", "y", "z" ];
-                               expect( uri.toString() ).toContain( 'm=foo&m=bar' );
-                               expect( uri.toString() ).toContain( 'n=x&n=y&n=z' );
-                               expect( uri.toString().length ).toEqual( 'http://www.example.com/dir/?m=foo&m=bar&n=x&n=y&n=z'.length );
-                       } );
-                       it ( "should be okay with removing values", function() {
-                               uri.query.m.splice( 0, 1 );
-                               delete uri.query.n;
-                               expect( uri.toString() ).toEqual( 'http://www.example.com/dir/?m=bar' );
-                               uri.query.m.splice( 0, 1 );
-                               expect( uri.toString() ).toEqual( 'http://www.example.com/dir/' );
-                       } );
-               } );
-
-               describe( "should deal with an all-dressed URI with everything", function() {
-                       var uri = new mw.Uri( 'http://auth@www.example.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=value+%28escaped%29#top' );
-
-                       it( "should have basic object properties", function() {
-                               expect( uri.protocol ).toEqual( 'http' );
-                               expect( uri.user ).toEqual( 'auth' );
-                               expect( uri.password ).not.toBeDefined();
-                               expect( uri.host ).toEqual( 'www.example.com' );
-                               expect( uri.port ).toEqual( '81' );
-                               expect( uri.path ).toEqual( '/dir/dir.2/index.htm' );
-                               expect( uri.query ).toEqual( { q1: '0', test1: null, test2: 'value (escaped)' } );
-                               expect( uri.fragment ).toEqual( 'top' );
-                       } );
-
-                       describe( "should construct composite components of URI on request", function() { 
-                               it( "should have userinfo", function() { 
-                                       expect( uri.getUserInfo() ).toEqual( 'auth' );
-                               } );
-
-                               it( "should have authority equal to auth@hostport", function() { 
-                                       expect( uri.getAuthority() ).toEqual( 'auth@www.example.com:81' );
-                               } );
-
-                               it( "should have hostport equal to host:port", function() { 
-                                       expect( uri.getHostPort() ).toEqual( 'www.example.com:81' );
-                               } );
-
-                               it( "should have query string which contains all components", function() { 
-                                       var queryString = uri.getQueryString();
-                                       expect( queryString ).toContain( 'q1=0' );
-                                       expect( queryString ).toContain( 'test1' );
-                                       expect( queryString ).not.toContain( 'test1=' );
-                                       expect( queryString ).toContain( 'test2=value+%28escaped%29' );
-                               } );
-
-                               it( "should have path as relative path", function() { 
-                                       expect( uri.getRelativePath() ).toContain( uri.path );
-                                       expect( uri.getRelativePath() ).toContain( uri.getQueryString() );
-                                       expect( uri.getRelativePath() ).toContain( uri.fragment );
-                               } );
-
-                       } );
-               } );
-
-               describe( "should be able to clone itself", function() {
-                       var original = new mw.Uri( 'http://en.wiki.local/w/api.php?action=query&foo=bar' );                     
-                       var clone = original.clone();
-
-                       it( "should make clones equivalent", function() { 
-                               expect( original ).toEqual( clone );
-                               expect( original.toString() ).toEqual( clone.toString() );
-                       } );
-
-                       it( "should be able to manipulate clones independently", function() { 
-                               // but they are still different objects
-                               expect( original ).not.toBe( clone );
-                               // and can diverge
-                               clone.host = 'fr.wiki.local';
-                               expect( original.host ).not.toEqual( clone.host );
-                               expect( original.toString() ).not.toEqual( clone.toString() );
-                       } );
-               } );
-
-               describe( "should be able to construct URL from object", function() {
-                       it ( "should construct given basic arguments", function() {  
-                               var uri = new mw.Uri( { protocol: 'http', host: 'www.foo.local',  path: '/this' } );
-                               expect( uri.toString() ).toEqual( 'http://www.foo.local/this' );
-                       } );
-               
-                       it ( "should construct given more complex arguments", function() {  
-                               var uri = new mw.Uri( { 
-                                       protocol: 'http', 
-                                       host: 'www.foo.local',  
-                                       path: '/this', 
-                                       query: { hi: 'there' },
-                                       fragment: 'blah'  
-                               } );
-                               expect( uri.toString() ).toEqual( 'http://www.foo.local/this?hi=there#blah' );
-                       } );    
-
-                       it ( "should fail to construct without required properties", function() {  
-                               expect( function() { 
-                                       var uri = new mw.Uri( { protocol: 'http', host: 'www.foo.local' } );
-                               } ).toThrow( "Bad constructor arguments" );
-                       } );
-               } );
-
-               describe( "should be able to manipulate properties", function() { 
-                       var uri;
-
-                       beforeEach( function() { 
-                               uri = new mw.Uri( 'http://en.wiki.local/w/api.php' );                   
-                       } );
-
-                       it( "can add a fragment", function() {
-                               uri.fragment = 'frag';
-                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/w/api.php#frag' );
-                       } );
-
-                       it( "can change host and port", function() {
-                               uri.host = 'fr.wiki.local';
-                               uri.port = '8080';
-                               expect( uri.toString() ).toEqual( 'http://fr.wiki.local:8080/w/api.php' );
-                       } );
-
-                       it ( "can add query arguments", function() {
-                               uri.query.foo = 'bar';
-                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/w/api.php?foo=bar' );
-                       } );
-
-                       it ( "can extend query arguments", function() {
-                               uri.query.foo = 'bar';
-                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/w/api.php?foo=bar' );
-                               uri.extend( { foo: 'quux', pif: 'paf' } );
-                               expect( uri.toString() ).toContain( 'foo=quux' );
-                               expect( uri.toString() ).not.toContain( 'foo=bar' );
-                               expect( uri.toString() ).toContain( 'pif=paf' );
-                       } );
-
-                       it ( "can remove query arguments", function() {
-                               uri.query.foo = 'bar';
-                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/w/api.php?foo=bar' );   
-                               delete( uri.query.foo );
-                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/w/api.php' );   
-                       } );
-
-               } );
-
-               describe( "should handle protocol-relative URLs", function() { 
-                       var uriRel = mw.UriRelative( 'glork://en.wiki.local/foo.php' );
-
-                       it ( "should create protocol-relative URLs with same protocol as document", function() {
-                               var uri = new uriRel( '//en.wiki.local/w/api.php' );
-                               expect( uri.protocol ).toEqual( 'glork' );
-                       } );
-
-                       it( "should handle absolute paths by supplying protocol and host from document in loose mode", function() {
-                               var uri = new uriRel( '/foo.com' );
-                               expect( uri.toString() ).toEqual( 'glork://en.wiki.local/foo.com' );
-                       } );
-
-                       it( "should handle absolute paths by supplying host from document in loose mode", function() {
-                               var uri = new uriRel( 'http:/foo.com' );
-                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/foo.com' );
-                       } );
-
-                       it( "should handle absolute paths by supplying protocol and host from document in strict mode", function() {
-                               var uri = new uriRel( '/foo.com', true );
-                               expect( uri.toString() ).toEqual( 'glork://en.wiki.local/foo.com' );
-                       } );
-
-                       it( "should handle absolute paths by supplying host from document in strict mode", function() {
-                               var uri = new uriRel( 'http:/foo.com', true );
-                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/foo.com' );
-                       } );
-               } );
-
-               it( "should throw error on no arguments to constructor", function() {
-                       expect( function() { 
-                               var uri = new mw.Uri();
-                       } ).toThrow( "Bad constructor arguments" );
-               } );
-
-               it( "should throw error on empty string as argument to constructor", function() {
-                       expect( function() { 
-                               var uri = new mw.Uri( '' );
-                       } ).toThrow( "Bad constructor arguments" );
-               } );
-
-               it( "should throw error on non-URI as argument to constructor", function() {
-                       expect( function() { 
-                               var uri = new mw.Uri( 'glaswegian penguins' );
-                       } ).toThrow( "Bad constructor arguments" );
-               } );
-
-               it( "should throw error on URI without protocol or // or leading / in strict mode", function() {
-                       expect( function() { 
-                               var uri = new mw.Uri( 'foo.com/bar/baz', true );
-                       } ).toThrow( "Bad constructor arguments" );
-               } );
-
-               it( "should normalize URI without protocol or // in loose mode", function() {
-                       var uri = new mw.Uri( 'foo.com/bar/baz', false );
-                       expect( uri.toString() ).toEqual( 'http://foo.com/bar/baz' );
-               } );
-
-       } );
-
-} )();
index d1221ca..d9b1671 100644 (file)
@@ -510,7 +510,10 @@ class NewParserTest extends MediaWikiTestCase {
                $this->file = $filename;
        }
 
-       /** @dataProvider parserTestProvider */
+       /**
+        * @group medium
+        * @dataProvider parserTestProvider
+        */
        public function testParserTest( $desc, $input, $result, $opts, $config ) {
                if ( $this->regex != '' && !preg_match( '/' . $this->regex . '/', $desc ) ) {
                        $this->assertTrue( true ); // XXX: don't flood output with "test made no assertions"
diff --git a/tests/phpunit/languages/LanguageDocumentationTest.php b/tests/phpunit/languages/LanguageDocumentationTest.php
new file mode 100644 (file)
index 0000000..78f2b4e
--- /dev/null
@@ -0,0 +1,96 @@
+<?php
+/**
+ * @medium
+ */
+class LanguageDocumentationTest extends MediaWikiTestCase {
+
+       protected static $keys;
+
+       static function setUpBeforeClass() {
+               self::$keys = array(
+                       'qqq' => Language::getMessageKeysFor( 'qqq' ),
+                       'en'  => Language::getMessageKeysFor( 'en' ),
+               );
+
+               global $IP, $wgMessageStructure;
+               if( !isset( $wgMessageStructure ) ) {
+                       require_once( $IP . '/maintenance/language/messages.inc' );
+               }
+
+               foreach( $wgMessageStructure as $block ) {
+                       foreach( $block as $key ) {
+                               self::$keys['messages.inc'][] = $key;
+                       }
+               }
+       }
+
+       /**
+        * Compares en against qqq, make sure all messages are documented
+        */
+       function testAllEnglishMessagesAreDocumentedInQqq() {
+               $delta = array_diff( self::$keys['en'], self::$keys['qqq'] );
+               $this->assertEmpty( $delta,
+                       'All English messages should be documented in qqq'
+               );
+       }
+       /**
+        * Compares qqq against en, make sure qqq does not document removed messages
+        */
+       function testQqqDocumentsExistingMessages() {
+               $delta = array_diff( self::$keys['qqq'], self::$keys['en'] );
+               $this->assertEmpty( $delta,
+                       'Qqq should only documents existing English messages.'
+               );
+       }
+
+       /**
+        * Compares en against messages.inc
+        */
+       function testMessageInMessagesincFile() {
+               $this->assertEquals(
+                       array()
+                       , array_diff( self::$keys['en'], self::$keys['messages.inc'] )
+                       , 'All messages should be described in messages.inc!'
+               );
+       }
+
+       /**
+        * Tests that languages have all the keys defined using En as reference
+        *
+        * This test will emit lot of failure until nice translators
+        * from translatewiki.net finish up the translations. So this test
+        * should probably only be ran before a new MediaWiki release.
+        *
+        * @depends testAllEnglishMessagesAreDocumentedInQqq
+        * @depends testQqqDocumentsExistingMessages
+        *
+        * @group Utility
+        *
+        * @dataProvider provideLanguageKeys
+        */
+       function testLanguagesAreCompletelyTranslated( $lang ) {
+               $langKeys = Language::getMessageKeysFor( $lang );
+
+               $this->assertEquals(
+                       array()
+                       , array_diff( $langKeys, self::$keys['en'] )
+                       , "{$lang} should have all the English message keys"
+               );
+       }
+
+
+       /**
+        * Provide all languages BUT english (en)
+        */
+       function provideLanguageKeys() {
+               $cases = array();
+
+               $langs = Language::getLanguageNames();
+               unset( $langs['en'] );
+
+               foreach( $langs as $code => $name ) {
+                       $cases[] = array( $code );
+               }
+               return $cases;
+       }
+}
index fcdcd21..552e69e 100644 (file)
 module( 'mediawiki.Uri', QUnit.newMwEnvironment() );
 
-test( '-- Initial check', function() {
+test( '-- Initial check', function () {
+       expect( 2 );
+
+       // Ensure we have a generic URI parser if not running in a browser
+       if ( !mw.Uri ) {
+               mw.Uri = mw.UriRelative( 'http://example.com/' );
+       }
+
+       ok( mw.UriRelative, 'mw.UriRelative defined' );
+       ok( mw.Uri, 'mw.Uri defined' );
+} );
+
+$.each( [true, false], function ( i, strictMode ) {
+       test( 'Basic mw.Uri object test in ' + ( strictMode ? '' : 'non-' ) + 'strict mode for a simple HTTP URI', function () {
+               var uriString, uri;
+               expect( 2 );
+
+               uriString = 'http://www.ietf.org/rfc/rfc2396.txt';
+               uri = new mw.Uri( uriString, {
+                       strictMode: strictMode
+               });
+
+               deepEqual(
+                       {
+                               protocol: uri.protocol,
+                               host: uri.host,
+                               port: uri.port,
+                               path: uri.path,
+                               query: uri.query,
+                               fragment: uri.fragment
+                       }, {
+                               protocol: 'http',
+                               host: 'www.ietf.org',
+                               port: undefined,
+                               path: '/rfc/rfc2396.txt',
+                               query: {},
+                               fragment: undefined
+                       },
+                       'basic object properties'
+               );
+
+               deepEqual(
+                       {
+                               userInfo: uri.getUserInfo(),
+                               authority: uri.getAuthority(),
+                               hostPort: uri.getHostPort(),
+                               queryString: uri.getQueryString(),
+                               relativePath: uri.getRelativePath(),
+                               toString: uri.toString()
+                       },
+                       {
+                               userInfo: '',
+                               authority: 'www.ietf.org',
+                               hostPort: 'www.ietf.org',
+                               queryString: '',
+                               relativePath: '/rfc/rfc2396.txt',
+                               toString: uriString
+                       },
+                       'construct composite components of URI on request'
+               );
+
+       });
+});
+
+test( 'Parse an ftp URI correctly with user and password', function () {
+       var uri;
        expect( 1 );
 
-       ok( mw.UriRelative, 'mw.Uri defined' );
+       uri = new mw.Uri( 'ftp://usr:pwd@192.0.2.16/' );
+
+       deepEqual(
+               {
+                       protocol: uri.protocol,
+                       user: uri.user,
+                       password: uri.password,
+                       host: uri.host,
+                       port: uri.port,
+                       path: uri.path,
+                       query: uri.query,
+                       fragment: uri.fragment
+               },
+               {
+                       protocol: 'ftp',
+                       user: 'usr',
+                       password: 'pwd',
+                       host: '192.0.2.16',
+                       port: undefined,
+                       path: '/',
+                       query: {},
+                       fragment: undefined
+               },
+               'basic object properties'
+       );
+} );
+
+test( 'Parse a uri with simple querystring', function () {
+       var uri;
+       expect( 1 );
+
+       uri = new mw.Uri( 'http://www.google.com/?q=uri' );
+
+       deepEqual(
+               {
+                       protocol: uri.protocol,
+                       host: uri.host,
+                       port: uri.port,
+                       path: uri.path,
+                       query: uri.query,
+                       fragment: uri.fragment,
+                       queryString: uri.getQueryString()
+               },
+               {
+                       protocol: 'http',
+                       host: 'www.google.com',
+                       port: undefined,
+                       path: '/',
+                       query: { q: 'uri' },
+                       fragment: undefined,
+                       queryString: 'q=uri'
+               },
+               'basic object properties'
+       );
+} );
+
+test( 'Handle multiple query parameter (overrideKeys on)', function () {
+       var uri;
+       expect( 5 );
+
+       uri = new mw.Uri( 'http://www.example.com/dir/?m=foo&m=bar&n=1', {
+               overrideKeys: true
+       });
+
+       equal( uri.query.n, '1', 'multiple parameters are parsed' );
+       equal( uri.query.m, 'bar', 'last key overrides earlier keys' );
+
+       uri.query.n = [ 'x', 'y', 'z' ];
+
+       // Verify parts and total length instead of entire string because order
+       // of iteration can vary.
+       ok( uri.toString().indexOf( 'm=bar' ), 'toString preserves other values' );
+       ok( uri.toString().indexOf( 'n=x&n=y&n=z' ), 'toString parameter includes all values of an array query parameter' );
+       equal( uri.toString().length, 'http://www.example.com/dir/?m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' );
 } );
 
-test( 'mw.Uri bug 35658', function() {
+test( 'Handle multiple query parameter (overrideKeys off)', function () {
+       var uri;
+       expect( 9 );
+
+       uri = new mw.Uri( 'http://www.example.com/dir/?m=foo&m=bar&n=1', {
+               overrideKeys: false
+       });
+
+       // Strict comparison so that types are also verified (n should be string '1')
+       strictEqual( uri.query.m.length, 2, 'multi-value query should be an array with 2 items' );
+       strictEqual( uri.query.m[0], 'foo', 'order and value is correct' );
+       strictEqual( uri.query.m[1], 'bar', 'order and value is correct' );
+       strictEqual( uri.query.n, '1', 'n=1 is parsed with the correct value of the expected type' );
+
+       // Change query values
+       uri.query.n = [ 'x', 'y', 'z' ];
+
+       // Verify parts and total length instead of entire string because order
+       // of iteration can vary.
+       ok( uri.toString().indexOf( 'm=foo&m=bar' ) >= 0, 'toString preserves other values' );
+       ok( uri.toString().indexOf( 'n=x&n=y&n=z' ) >= 0, 'toString parameter includes all values of an array query parameter' );
+       equal( uri.toString().length, 'http://www.example.com/dir/?m=foo&m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' );
+
+       // Remove query values
+       uri.query.m.splice( 0, 1 );
+       delete uri.query.n;
+
+       equal( uri.toString(), 'http://www.example.com/dir/?m=bar', 'deletion properties' );
+
+       // Remove more query values, leaving an empty array
+       uri.query.m.splice( 0, 1 );
+       equal( uri.toString(), 'http://www.example.com/dir/', 'empty array value is ommitted' );
+} );
+
+test( 'All-dressed URI with everything', function () {
+       var uri, queryString, relativePath;
+       expect( 11 );
+
+       uri = new mw.Uri( 'http://auth@www.example.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=value+%28escaped%29#top' );
+
+       deepEqual(
+               {
+                       protocol: uri.protocol,
+                       user: uri.user,
+                       password: uri.password,
+                       host: uri.host,
+                       port: uri.port,
+                       path: uri.path,
+                       query: uri.query,
+                       fragment: uri.fragment
+               },
+               {
+                       protocol: 'http',
+                       user: 'auth',
+                       password: undefined,
+                       host: 'www.example.com',
+                       port: '81',
+                       path: '/dir/dir.2/index.htm',
+                       query: { q1: '0', test1: null, test2: 'value (escaped)' },
+                       fragment: 'top'
+               },
+               'basic object properties'
+       );
+
+       equal( uri.getUserInfo(), 'auth', 'user info' );
+
+       equal( uri.getAuthority(), 'auth@www.example.com:81', 'authority equal to auth@hostport' );
+
+       equal( uri.getHostPort(), 'www.example.com:81', 'hostport equal to host:port' );
+
+       queryString = uri.getQueryString();
+       ok( queryString.indexOf( 'q1=0' ) >= 0, 'query param with numbers' );
+       ok( queryString.indexOf( 'test1' ) >= 0, 'query param with null value is included' );
+       ok( queryString.indexOf( 'test1=' ) === -1, 'query param with null value does not generate equals sign' );
+       ok( queryString.indexOf( 'test2=value+%28escaped%29' ) >= 0, 'query param is url escaped' );
+
+       relativePath = uri.getRelativePath();
+       ok( relativePath.indexOf( uri.path ) >= 0, 'path in relative path' );
+       ok( relativePath.indexOf( uri.getQueryString() ) >= 0, 'query string in relative path' );
+       ok( relativePath.indexOf( uri.fragment ) >= 0, 'fragement in relative path' );
+} );
+
+test( 'Cloning', function () {
+       var original, clone;
+       expect( 5 );
+
+       original = new mw.Uri( 'http://en.wiki.local/w/api.php?action=query&foo=bar' );
+       clone = original.clone();
+
+       deepEqual( clone, original, 'clone has equivalent properties' );
+       equal( original.toString(), clone.toString(), 'toString matches original' );
+
+       notStrictEqual( clone, original, 'clone is not the same when compared by reference' );
+
+       clone.host = 'fr.wiki.local';
+       notEqual( original.host, clone.host, 'manipulating clone did not effect original' );
+       notEqual( original.toString(), clone.toString(), 'toString no longer matches original' );
+} );
+
+test( 'Constructing mw.Uri from plain object', function () {
+       var uri;
+       expect( 3 );
+
+       uri = new mw.Uri({
+               protocol: 'http',
+               host: 'www.foo.local',
+               path: '/this'
+       });
+       equal( uri.toString(), 'http://www.foo.local/this', 'Basic properties' );
+
+       uri = new mw.Uri({
+               protocol: 'http',
+               host: 'www.foo.local',
+               path: '/this',
+               query: { hi: 'there' },
+               fragment: 'blah'
+       });
+       equal( uri.toString(), 'http://www.foo.local/this?hi=there#blah', 'More complex properties' );
+
+       raises(
+               function () {
+                       var uri = new mw.Uri({
+                               protocol: 'http',
+                               host: 'www.foo.local'
+                       });
+               },
+               function ( e ) {
+                       return e.message === 'Bad constructor arguments';
+               },
+               'Construction failed when missing required properties'
+       );
+} );
+
+test( 'Manipulate properties', function () {
+       var uriBase, uri;
+       expect( 8 );
+
+       uriBase = new mw.Uri( 'http://en.wiki.local/w/api.php' );
+
+       uri = uriBase.clone();
+       uri.fragment = 'frag';
+       equal( uri.toString(), 'http://en.wiki.local/w/api.php#frag', 'add a fragment' );
+
+       uri = uriBase.clone();
+       uri.host = 'fr.wiki.local';
+       uri.port = '8080';
+       equal( uri.toString(), 'http://fr.wiki.local:8080/w/api.php', 'change host and port' );
+
+       uri = uriBase.clone();
+       uri.query.foo = 'bar';
+       equal( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'add query arguments' );
+
+       delete uri.query.foo;
+       equal( uri.toString(), 'http://en.wiki.local/w/api.php', 'delete query arguments' );
+
+       uri = uriBase.clone();
+       uri.query.foo = 'bar';
+       equal( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'extend query arguments' );
+       uri.extend({
+               foo: 'quux',
+               pif: 'paf'
+       });
+       ok( uri.toString().indexOf( 'foo=quux' ) >= 0, 'extend query arguments' );
+       ok( uri.toString().indexOf( 'foo=bar' ) === -1, 'extend query arguments' );
+       ok( uri.toString().indexOf( 'pif=paf' ) >= 0 , 'extend query arguments' );
+} );
+
+test( 'Handle protocol-relative URLs', function () {
+       var UriRel, uri;
+       expect( 5 );
+
+       UriRel = mw.UriRelative( 'glork://en.wiki.local/foo.php' );
+
+       uri = new UriRel( '//en.wiki.local/w/api.php' );
+       equal( uri.protocol, 'glork', 'create protocol-relative URLs with same protocol as document' );
+
+       uri = new UriRel( '/foo.com' );
+       equal( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in loose mode' );
+
+       uri = new UriRel( 'http:/foo.com' );
+       equal( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in loose mode' );
+
+       uri = new UriRel( '/foo.com', true );
+       equal( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in strict mode' );
+
+       uri = new UriRel( 'http:/foo.com', true );
+       equal( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in strict mode' );
+} );
+
+test( 'Bad calls', function () {
+       var uri;
+       expect( 5 );
+
+       raises(
+               function () {
+                       new mw.Uri();
+               },
+               function ( e ) {
+                       return e.message === 'Bad constructor arguments';
+               },
+               'throw error on no arguments to constructor'
+       );
+
+       raises(
+               function () {
+                       new mw.Uri( '' );
+               },
+               function ( e ) {
+                       return e.message === 'Bad constructor arguments';
+               },
+               'throw error on empty string as argument to constructor'
+       );
+
+       raises(
+               function () {
+                       new mw.Uri( 'glaswegian penguins' );
+               },
+               function ( e ) {
+                       return e.message === 'Bad constructor arguments';
+               },
+               'throw error on non-URI as argument to constructor'
+       );
+
+       raises(
+               function () {
+                       new mw.Uri( 'foo.com/bar/baz', {
+                               strictMode: true
+                       });
+               },
+               function ( e ) {
+                       return e.message === 'Bad constructor arguments';
+               },
+               'throw error on URI without protocol or // or leading / in strict mode'
+       );
+
+       uri = new mw.Uri( 'foo.com/bar/baz', {
+               strictMode: false
+       });
+       equal( uri.toString(), 'http://foo.com/bar/baz', 'normalize URI without protocol or // in loose mode' );
+});
+
+test( 'bug 35658', function () {
        expect( 2 );
 
-       var testProtocol = 'https://';
-       var testServer = 'foo.example.org';
-       var testPort = '3004';
-       var testPath = '/!1qy';
+       var testProtocol, testServer, testPort, testPath, UriClass, uri, href;
 
-       var uriClass = mw.UriRelative( testProtocol + testServer + '/some/path/index.html' );
-       var uri = new uriClass( testPath );
-       var href = uri.toString();
+       testProtocol = 'https://';
+       testServer = 'foo.example.org';
+       testPort = '3004';
+       testPath = '/!1qy';
+
+       UriClass = mw.UriRelative( testProtocol + testServer + '/some/path/index.html' );
+       uri = new UriClass( testPath );
+       href = uri.toString();
        equal( href, testProtocol + testServer + testPath, 'Root-relative URL gets host & protocol supplied' );
 
-       uriClass = mw.UriRelative( testProtocol + testServer + ':' + testPort + '/some/path.php' );
-       uri = new uriClass( testPath );
+       UriClass = mw.UriRelative( testProtocol + testServer + ':' + testPort + '/some/path.php' );
+       uri = new UriClass( testPath );
        href = uri.toString();
        equal( href, testProtocol + testServer + ':' + testPort + testPath, 'Root-relative URL gets host, protocol, and port supplied' );