Merge "objectcache: various cleanups to WANObjectCache"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 4 Dec 2017 18:38:09 +0000 (18:38 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 4 Dec 2017 18:38:09 +0000 (18:38 +0000)
82 files changed:
.gitignore
includes/Preferences.php
includes/actions/HistoryAction.php
includes/api/i18n/pt.json
includes/context/RequestContext.php
includes/installer/i18n/ko.json
includes/installer/i18n/nb.json
includes/installer/i18n/ru.json
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/xmp/XMP.php
includes/media/SVG.php
includes/objectcache/ObjectCache.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/resourceloader/ResourceLoaderContext.php
includes/specialpage/LoginSignupSpecialPage.php
includes/specials/SpecialPasswordReset.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialResetTokens.php
includes/specials/SpecialUndelete.php
includes/specials/forms/PreferencesForm.php
languages/i18n/ais.json
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/cs.json
languages/i18n/de-formal.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/hif-latn.json
languages/i18n/hr.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lv.json
languages/i18n/mk.json
languages/i18n/mr.json
languages/i18n/ms.json
languages/i18n/mwl.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/nl.json
languages/i18n/pl.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/se.json
languages/i18n/sl.json
languages/i18n/sv.json
languages/i18n/ur.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
resources/Resources.php
resources/src/mediawiki.legacy/oldshared.css
resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js
resources/src/mediawiki.special/mediawiki.special.preferences.editfont.js [deleted file]
resources/src/mediawiki.special/mediawiki.special.preferences.styles.css
resources/src/mediawiki.special/mediawiki.special.preferences.tabs.js
resources/src/mediawiki.special/mediawiki.special.preferences.timezone.js
tests/phpunit/includes/jobqueue/JobTest.php
tests/selenium/pageobjects/preferences.page.js

index b991e11..bb3a946 100644 (file)
@@ -33,6 +33,8 @@ sftp-config.json
 /images/thumb
 ## Extension:EasyTimeline
 /images/timeline
+## Extension:Score
+/images/lilypond
 /images/tmp
 /maintenance/.mweval_history
 /maintenance/.mwsql_history
index 924e3ad..2dd3e2d 100644 (file)
@@ -75,11 +75,6 @@ class Preferences {
         * @return array|null
         */
        static function getPreferences( $user, IContextSource $context ) {
-               OutputPage::setupOOUI(
-                       strtolower( $context->getSkin()->getSkinName() ),
-                       $context->getLanguage()->getDir()
-               );
-
                $defaultPreferences = [];
 
                self::profilePreferences( $user, $context, $defaultPreferences );
@@ -317,17 +312,14 @@ class Preferences {
                if ( $canEditPrivateInfo && $authManager->allowsAuthenticationDataChange(
                        new PasswordAuthenticationRequest(), false )->isGood()
                ) {
-                       $link = new OOUI\ButtonWidget( [
-                               'href' => SpecialPage::getTitleFor( 'ChangePassword' )->getLinkURL( [
-                                       'returnto' => SpecialPage::getTitleFor( 'Preferences' )->getPrefixedText()
-                               ] ),
-                               'label' => $context->msg( 'prefs-resetpass' )->text(),
-                       ] );
+                       $link = $linkRenderer->makeLink( SpecialPage::getTitleFor( 'ChangePassword' ),
+                               $context->msg( 'prefs-resetpass' )->text(), [],
+                               [ 'returnto' => SpecialPage::getTitleFor( 'Preferences' )->getPrefixedText() ] );
 
                        $defaultPreferences['password'] = [
                                'type' => 'info',
                                'raw' => true,
-                               'default' => (string)$link,
+                               'default' => $link,
                                'label-message' => 'yourpassword',
                                'section' => 'personal/info',
                        ];
@@ -471,15 +463,16 @@ class Preferences {
 
                                $emailAddress = $user->getEmail() ? htmlspecialchars( $user->getEmail() ) : '';
                                if ( $canEditPrivateInfo && $authManager->allowsPropertyChange( 'emailaddress' ) ) {
-                                       $link = new OOUI\ButtonWidget( [
-                                               'href' => SpecialPage::getTitleFor( 'ChangeEmail' )->getLinkURL( [
-                                                       'returnto' => SpecialPage::getTitleFor( 'Preferences' )->getPrefixedText()
-                                               ] ),
-                                               'label' =>
-                                                       $context->msg( $user->getEmail() ? 'prefs-changeemail' : 'prefs-setemail' )->text(),
-                                       ] );
-
-                                       $emailAddress .= $emailAddress == '' ? $link : ( '<br />' . $link );
+                                       $link = $linkRenderer->makeLink(
+                                               SpecialPage::getTitleFor( 'ChangeEmail' ),
+                                               $context->msg( $user->getEmail() ? 'prefs-changeemail' : 'prefs-setemail' )->text(),
+                                               [],
+                                               [ 'returnto' => SpecialPage::getTitleFor( 'Preferences' )->getPrefixedText() ] );
+
+                                       $emailAddress .= $emailAddress == '' ? $link : (
+                                               $context->msg( 'word-separator' )->escaped()
+                                               . $context->msg( 'parentheses' )->rawParams( $link )->escaped()
+                                       );
                                }
 
                                $defaultPreferences['emailaddress'] = [
@@ -514,10 +507,10 @@ class Preferences {
                                        } else {
                                                $disableEmailPrefs = true;
                                                $emailauthenticated = $context->msg( 'emailnotauthenticated' )->parse() . '<br />' .
-                                                       new OOUI\ButtonWidget( [
-                                                               'href' => SpecialPage::getTitleFor( 'Confirmemail' )->getLinkURL(),
-                                                               'label' => $context->msg( 'emailconfirmlink' )->text(),
-                                                       ] );
+                                                       $linkRenderer->makeKnownLink(
+                                                               SpecialPage::getTitleFor( 'Confirmemail' ),
+                                                               $context->msg( 'emailconfirmlink' )->text()
+                                                       ) . '<br />';
                                                $emailauthenticationclass = "mw-email-not-authenticated";
                                        }
                                } else {
@@ -754,7 +747,6 @@ class Preferences {
                        'default' => $tzSetting,
                        'size' => 20,
                        'section' => 'rendering/timeoffset',
-                       'id' => 'wpTimeCorrection',
                ];
        }
 
@@ -997,7 +989,7 @@ class Preferences {
 
                # # Watchlist #####################################
                if ( $user->isAllowed( 'editmywatchlist' ) ) {
-                       $editWatchlistLinks = '';
+                       $editWatchlistLinks = [];
                        $editWatchlistModes = [
                                'edit' => [ 'EditWatchlist', false ],
                                'raw' => [ 'EditWatchlist', 'raw' ],
@@ -1006,19 +998,16 @@ class Preferences {
                        $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
                        foreach ( $editWatchlistModes as $editWatchlistMode => $mode ) {
                                // Messages: prefs-editwatchlist-edit, prefs-editwatchlist-raw, prefs-editwatchlist-clear
-                               $editWatchlistLinks .=
-                                       new OOUI\ButtonWidget( [
-                                               'href' => SpecialPage::getTitleFor( $mode[0], $mode[1] )->getLinkURL(),
-                                               'label' => new OOUI\HtmlSnippet(
-                                                       $context->msg( "prefs-editwatchlist-{$editWatchlistMode}" )->parse()
-                                               ),
-                                       ] );
+                               $editWatchlistLinks[] = $linkRenderer->makeKnownLink(
+                                       SpecialPage::getTitleFor( $mode[0], $mode[1] ),
+                                       new HtmlArmor( $context->msg( "prefs-editwatchlist-{$editWatchlistMode}" )->parse() )
+                               );
                        }
 
                        $defaultPreferences['editwatchlist'] = [
                                'type' => 'info',
                                'raw' => true,
-                               'default' => $editWatchlistLinks,
+                               'default' => $context->getLanguage()->pipeList( $editWatchlistLinks ),
                                'label-message' => 'prefs-editwatchlist-label',
                                'section' => 'watchlist/editwatchlist',
                        ];
@@ -1134,20 +1123,12 @@ class Preferences {
                        $defaultPreferences['watchlisttoken'] = [
                                'type' => 'api',
                        ];
-
-                       $tokenButton = new OOUI\ButtonWidget( [
-                               'href' => SpecialPage::getTitleFor( 'ResetTokens' )->getLinkURL( [
-                                       'returnto' => SpecialPage::getTitleFor( 'Preferences' )->getPrefixedText()
-                               ] ),
-                               'label' => $context->msg( 'prefs-watchlist-managetokens' )->text(),
-                       ] );
                        $defaultPreferences['watchlisttoken-info'] = [
                                'type' => 'info',
                                'section' => 'watchlist/tokenwatchlist',
                                'label-message' => 'prefs-watchlist-token',
-                               'help-message' => 'prefs-help-tokenmanagement',
-                               'raw' => true,
-                               'default' => (string)$tokenButton,
+                               'default' => $user->getTokenFromOption( 'watchlisttoken' ),
+                               'help-message' => 'prefs-help-watchlist-token2',
                        ];
                }
        }
@@ -1369,9 +1350,6 @@ class Preferences {
                $formClass = 'PreferencesForm',
                array $remove = []
        ) {
-               // We use ButtonWidgets in some of the getPreferences() functions
-               $context->getOutput()->enableOOUI();
-
                $formDescriptor = self::getPreferences( $user, $context );
                if ( count( $remove ) ) {
                        $removeKeys = array_flip( $remove );
index a9e3d6a..0e964bf 100644 (file)
@@ -154,7 +154,7 @@ class HistoryAction extends FormlessAction {
                        # show deletion/move log if there is an entry
                        LogEventsList::showLogExtract(
                                $out,
-                               [ 'delete', 'move' ],
+                               [ 'delete', 'move', 'protect' ],
                                $this->getTitle(),
                                '',
                                [ 'lim' => 10,
index a4ee954..b85ddc9 100644 (file)
        "apihelp-import-extended-description": "Note que o pedido POST de HTTP tem de ser feito como um carregamento de ficheiro (isto é, usando \"multipart/form-data\") ao enviar um ficheiro para o parâmetro <var>xml</var>.",
        "apihelp-import-param-summary": "Resumo da importação para a entrada do registo.",
        "apihelp-import-param-xml": "Ficheiro XML carregado.",
+       "apihelp-import-param-interwikiprefix": "Para importações carregadas: o prefixo interwikis a ser aplicado aos nomes de utilizador desconhecidos (e aos conhecidos se <var>$1assignknownusers</var> estiver definido).",
+       "apihelp-import-param-assignknownusers": "Atribuir as edições aos utilizadores locais se o utilizador nomeado existir localmente.",
        "apihelp-import-param-interwikisource": "Para importações interwikis: a wiki de onde importar.",
        "apihelp-import-param-interwikipage": "Para importações interwikis: a página a importar.",
        "apihelp-import-param-fullhistory": "Para importações interwikis: importar o historial completo, não apenas a versão atual.",
index 7cabd40..c2d0de1 100644 (file)
@@ -308,7 +308,6 @@ class RequestContext implements IContextSource, MutableContext {
 
                # Validate $code
                if ( !$code || !Language::isValidCode( $code ) || $code === 'qqq' ) {
-                       wfDebug( "Invalid user language code\n" );
                        $code = $wgLanguageCode;
                }
 
index f268215..fcc5468 100644 (file)
        "config-install-mainpage-failed": "대문을 삽입할 수 없습니다: $1",
        "config-install-done": "<strong>축하합니다!</strong>\n미디어위키를 설치했습니다.\n\n설치 관리자가 <code>LocalSettings.php</code> 파일을 만들었습니다.\n여기에 모든 설정이 포함되어 있습니다.\n\n파일을 다운로드하여 위키 설치의 거점에 넣어야 합니다. (index.php와 같은 디렉터리) 다운로드가 자동으로 시작됩니다.\n\n다운로드가 제공되지 않을 경우나 그것을 취소한 경우에는 아래의 링크를 클릭하여 다운로드를 다시 시작할 수 있습니다:\n\n$3\n\n<strong>참고:</strong> 이 생성한 설정 파일을 다운로드하지 않고 설치를 끝내면 이 파일은 나중에 사용할 수 없습니다.\n\n완료되었으면 <strong>[$2 위키에 들어갈 수 있습니다]</strong>.",
        "config-install-done-path": "<strong>축하합니다!</strong>\n미디어위키가 설치되었습니다.\n\n설치 관리자가 <code>LocalSettings.php</code> 파일을 생성했습니다.\n이 파일에 모든 설정이 포함되어 있습니다.\n\n이 파일을 다운로드하여 <code>$4</code> 위치에 넣으세요. 다운로드가 자동으로 시작되었을 것입니다.\n\n다운로드가 시작되지 않았거나 취소했다면, 아래 링크를 클릭하여 다운로드를 재시작할 수 있습니다.\n\n$3\n\n<strong>알림:</strong> 지금 다운로드하지 않는다면, 이후에는 이 설정 파일을 다운로드할 수 없습니다.\n\n모든 작업이 완료되었다면, <strong>[$2 위키에 들어갈 수 있습니다]</strong>.",
+       "config-install-success": "미디어위키가 성공적으로 설치되었습니다. 이제\n<$1$2>에 방문하여 위키를 볼 수 있습니다.\n질문이 있으시다면 자주 묻는 질문 목록을 살펴보십시오:\n<https://www.mediawiki.org/wiki/Manual:FAQ> 아니면\n해당 문서에 연결된 지원 포럼 중 한곳을 이용하십시오.",
        "config-download-localsettings": "<code>LocalSettings.php</code> 다운로드",
        "config-help": "도움말",
        "config-help-tooltip": "확장하려면 클릭",
index 1eb418e..1325d9d 100644 (file)
        "config-install-mainpage-failed": "Kunne ikke sette inn hovedside: $1",
        "config-install-done": "<strong>Gratulrerer!</strong>\nDu har lykkes i å installere MediaWiki.\n\nInstallasjonsprogrammet har generert en <code>LocalSettings.php</code>-fil.\nDen inneholder alle dine konfigureringer.\n\nDu må laste den ned og legge den på hovedfolderen for din wiki-installasjon (der index.php ligger). Nedlastingen skulle ha startet automatisk.\n\nHvis ingen nedlasting ble tilbudt, eller du avbrøt den, kan du få den i gang ved å klikke på lenken under:\n\n$3\n\n<strong>OBS:</strong> Hvis du ikke gjør dette nå, vil den genererte konfigurasjonsfilen ikke være tilgjengelig for deg senere.\n\nNår dette er gjort, kan du <strong>[$2 gå inn i wikien]</strong>.",
        "config-install-done-path": "<strong>Gratulerer!</strong>\nDu har installert MediaWiki.\n\nInstallereren har generert en <code>LocalSettings.php</code>-fil.\nDen inneholder all konfigurasjonen for wikien.\n\nDu må laste den ned og legge den i <code>$4</code>. Nedlastingen skal ha startet automatisk.\n\nOm nedlastingen ikke ble startet, eller om du avbrøt den, kan du starte på nytt ved å klikke lenken nedenfor:\n\n$3\n\n<strong>Merk:</strong> Om du ikke gjør dette nå vil den genererte konfigurasjonen ikke være tilgjengelig senere.\n\nNår dette er gjort kan du <strong>[$2 gå til wikien din]</strong>.",
+       "config-install-success": "MediaWiki har blitt installert. Du kan nå\nbesøke <$1$2> for å se wikien din.\nOm du har spørsmål, sjekk de ofte stilte spørsmålene:\n<https://www.mediawiki.org/wiki/Manual:FAQ> eller bruk et av\nsupportforumene som lenkes til fra den siden.",
        "config-download-localsettings": "Last ned <code>LocalSettings.php</code>",
        "config-help": "hjelp",
        "config-help-tooltip": "klikk for å utvide",
index 9045605..3142e71 100644 (file)
        "config-install-mainpage-failed": "Не удаётся вставить главную страницу: $1",
        "config-install-done": "<strong>Поздравляем!</strong>\nВы установили MediaWiki.\n\nВо время установки был создан файл <code>LocalSettings.php</code>.\nОн содержит все ваши настройки.\n\nВам необходимо скачать его и положить в корневую директорию вашей вики (ту же директорию, где находится файл index.php). Его загрузка должна начаться автоматически.\n\nЕсли автоматическая загрузка не началась или вы её отменили, вы можете скачать по ссылке ниже:\n\n$3\n\n<strong>Примечание</strong>: Если вы не сделаете этого сейчас, то сгенерированный файл конфигурации не будет доступен вам в дальнейшем, если вы выйдете из установки, не скачивая его.\n\nПо окончании действий, описанных выше, вы сможете <strong>[$2 войти в вашу вики]</strong>.",
        "config-install-done-path": "<strong>Поздравляем!</strong>\nВы установили MediaWiki.\n\nВо время установки был создан файл <code>LocalSettings.php</code>.\nОн содержит все ваши настройки.\n\nВам необходимо скачать его и положить в <code>$4</code>. Его загрузка должна начаться автоматически.\n\nЕсли автоматическая загрузка не началась или вы её отменили, вы можете скачать по ссылке ниже:\n\n$3\n\n<strong>Примечание</strong>: Если вы не сделаете этого сейчас, то сгенерированный файл конфигурации не будет доступен вам в дальнейшем, если вы выйдете из установки, не скачивая его.\n\nПо окончании действий, описанных выше, вы сможете <strong>[$2 войти в вашу вики]</strong>.",
+       "config-install-success": "MediaWiki успешно установлена. Сейчас вы можете перейти на <$1 $2>, чтобы просмотреть свою вики\nЕсли у вас есть вопросы, ознакомьтесь с нашим часто задаваемыми вопросами:\n<https://www.mediawiki.org/wiki/Manual:FAQ> или используйте один из форумов поддержки, указанный на этой странице.",
        "config-download-localsettings": "Загрузить <code>LocalSettings.php</code>",
        "config-help": "справка",
        "config-help-tooltip": "нажмите, чтобы развернуть",
index e0ff475..305a056 100644 (file)
@@ -1044,7 +1044,7 @@ abstract class DatabaseMysqlBase extends Database {
                        return true;
                }
 
-               $this->queryLogger->warning( __METHOD__ . " failed to acquire lock '{lockname}'",
+               $this->queryLogger->info( __METHOD__ . " failed to acquire lock '{lockname}'",
                        [ 'lockname' => $lockName ] );
 
                return false;
index 0cc1466..be823a8 100644 (file)
@@ -370,7 +370,7 @@ class XMPReader implements LoggerAwareInterface {
                                $col = xml_get_current_column_number( $this->xmlParser );
                                $offset = xml_get_current_byte_index( $this->xmlParser );
 
-                               $this->logger->warning(
+                               $this->logger->info(
                                        '{method} : Error reading XMP content: {error} ' .
                                        '(line: {line} column: {column} byte offset: {offset})',
                                        [
index 2b13893..10be97a 100644 (file)
@@ -511,8 +511,6 @@ class SvgHandler extends ImageHandler {
                } elseif ( $name == 'lang' ) {
                        // Validate $code
                        if ( $value === '' || !Language::isValidCode( $value ) ) {
-                               wfDebug( "Invalid user language code\n" );
-
                                return false;
                        }
 
index 07432c0..67d2346 100644 (file)
@@ -342,14 +342,15 @@ class ObjectCache {
                        $params['channels'][$action] = $channel;
                }
                $params['cache'] = self::newFromParams( $params['store'] );
-               $params['stats'] = $services->getStatsdDataFactory();
                if ( isset( $params['loggroup'] ) ) {
                        $params['logger'] = LoggerFactory::getInstance( $params['loggroup'] );
                } else {
                        $params['logger'] = LoggerFactory::getInstance( 'objectcache' );
                }
-               // Let pre-emptive refreshes happen post-send on HTTP requests
                if ( !$wgCommandLineMode ) {
+                       // Send the statsd data post-send on HTTP requests; avoid in CLI mode (T181385)
+                       $params['stats'] = $services->getStatsdDataFactory();
+                       // Let pre-emptive refreshes happen post-send on HTTP requests
                        $params['asyncHandler'] = [ DeferredUpdates::class, 'addCallableUpdate' ];
                }
                $class = $params['class'];
index 76ff41b..67f9e09 100644 (file)
@@ -589,7 +589,7 @@ EOT
                                # Show deletion log to be consistent with normal articles
                                LogEventsList::showLogExtract(
                                        $out,
-                                       [ 'delete', 'move' ],
+                                       [ 'delete', 'move', 'protect' ],
                                        $this->getTitle()->getPrefixedText(),
                                        '',
                                        [ 'lim' => 10,
index 9df3d8c..ff997ab 100644 (file)
@@ -1305,7 +1305,7 @@ class WikiPage implements Page, IDBAccessObject {
         * Add row to the redirect table if this is a redirect, remove otherwise.
         *
         * @param IDatabase $dbw
-        * @param Title $redirectTitle Title object pointing to the redirect target,
+        * @param Title|null $redirectTitle Title object pointing to the redirect target,
         *   or NULL if this is not a redirect
         * @param null|bool $lastRevIsRedirect If given, will optimize adding and
         *   removing rows in redirect table.
index cbb0bec..7478266 100644 (file)
@@ -182,7 +182,6 @@ class ResourceLoaderContext implements MessageLocalizer {
                        $lang = $this->getRequest()->getRawVal( 'lang', '' );
                        // Stricter version of RequestContext::sanitizeLangCode()
                        if ( !Language::isValidBuiltInCode( $lang ) ) {
-                               wfDebug( "Invalid user language code\n" );
                                $lang = $this->getResourceLoader()->getConfig()->get( 'LanguageCode' );
                        }
                        $this->language = $lang;
index 04d391b..963840b 100644 (file)
@@ -1182,7 +1182,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                                                                ],
                                                                $this->msg(
                                                                        $loggedIn ? 'userlogin-createanother' : 'userlogin-joinproject'
-                                                               )->escaped()
+                                                               )->text()
                                                        )
                                                );
                                        },
index bf8dea6..a4f16bd 100644 (file)
@@ -110,8 +110,6 @@ class SpecialPasswordReset extends FormSpecialPage {
        public function alterForm( HTMLForm $form ) {
                $resetRoutes = $this->getConfig()->get( 'PasswordResetRoutes' );
 
-               $form->setSubmitDestructive();
-
                $form->addHiddenFields( $this->getRequest()->getValues( 'returnto', 'returntoquery' ) );
 
                $i = 0;
index 7fa74af..8ad1630 100644 (file)
@@ -50,8 +50,8 @@ class SpecialPreferences extends SpecialPage {
                        return;
                }
 
-               $out->addModules( 'mediawiki.special.preferences.ooui' );
-               $out->addModuleStyles( 'mediawiki.special.preferences.styles.ooui' );
+               $out->addModules( 'mediawiki.special.preferences' );
+               $out->addModuleStyles( 'mediawiki.special.preferences.styles' );
 
                $session = $this->getRequest()->getSession();
                if ( $session->get( 'specialPreferencesSaveSuccess' ) ) {
@@ -83,19 +83,37 @@ class SpecialPreferences extends SpecialPage {
 
                $htmlForm = $this->getFormObject( $user, $this->getContext() );
                $htmlForm->setSubmitCallback( [ 'Preferences', 'tryUISubmit' ] );
-
-               $prefTabs = [];
-               foreach ( $htmlForm->getPreferenceSections() as $key ) {
-                       $prefTabs[] = [
-                               'name' => $key,
-                               'label' => $htmlForm->getLegend( $key ),
-                       ];
+               $sectionTitles = $htmlForm->getPreferenceSections();
+
+               $prefTabs = '';
+               foreach ( $sectionTitles as $key ) {
+                       $prefTabs .= Html::rawElement( 'li',
+                               [
+                                       'role' => 'presentation',
+                                       'class' => ( $key === 'personal' ) ? 'selected' : null
+                               ],
+                               Html::rawElement( 'a',
+                                       [
+                                               'id' => 'preftab-' . $key,
+                                               'role' => 'tab',
+                                               'href' => '#mw-prefsection-' . $key,
+                                               'aria-controls' => 'mw-prefsection-' . $key,
+                                               'aria-selected' => ( $key === 'personal' ) ? 'true' : 'false',
+                                               'tabIndex' => ( $key === 'personal' ) ? 0 : -1,
+                                       ],
+                                       $htmlForm->getLegend( $key )
+                               )
+                       );
                }
-               $out->addJsConfigVars( 'wgPreferencesTabs', $prefTabs );
-
-               // TODO: Render fake tabs here to avoid FOUC.
-               // $out->addHTML( $fakeTabs );
 
+               $out->addHTML(
+                       Html::rawElement( 'ul',
+                               [
+                                       'id' => 'preftoc',
+                                       'role' => 'tablist'
+                               ],
+                               $prefTabs )
+               );
                $htmlForm->show();
        }
 
@@ -118,7 +136,7 @@ class SpecialPreferences extends SpecialPage {
 
                $context = new DerivativeContext( $this->getContext() );
                $context->setTitle( $this->getPageTitle( 'reset' ) ); // Reset subpage
-               $htmlForm = HTMLForm::factory( 'ooui', [], $context, 'prefs-restore' );
+               $htmlForm = new HTMLForm( [], $context, 'prefs-restore' );
 
                $htmlForm->setSubmitTextMsg( 'restoreprefs' );
                $htmlForm->setSubmitDestructive();
index d5b0903..964a261 100644 (file)
@@ -121,7 +121,6 @@ class SpecialResetTokens extends FormSpecialPage {
         * @param HTMLForm $form
         */
        protected function alterForm( HTMLForm $form ) {
-               $form->setSubmitDestructive();
                if ( $this->getTokensList() ) {
                        $form->setSubmitTextMsg( 'resettokens-resetbutton' );
                } else {
index 0c038c1..0b0bbc0 100644 (file)
@@ -460,32 +460,32 @@ class SpecialUndelete extends SpecialPage {
                        ] );
                }
 
+               $out->enableOOUI();
+               $buttonFields = [];
+
                if ( $isText ) {
                        // source view for textual content
-                       $sourceView = Xml::element(
-                               'textarea',
-                               [
-                                       'readonly' => 'readonly',
-                                       'cols' => 80,
-                                       'rows' => 25
-                               ],
-                               $content->getNativeData() . "\n"
-                       );
+                       $sourceView = new OOUI\MultilineTextInputWidget( [
+                               'readOnly' => true,
+                               'rows' => 25,
+                               'value' => $content->getNativeData() . "\n"
+                       ] );
 
-                       $previewButton = Xml::element( 'input', [
+                       $buttonFields[] = new OOUI\ButtonInputWidget( [
                                'type' => 'submit',
                                'name' => 'preview',
-                               'value' => $this->msg( 'showpreview' )->text()
+                               'label' => $this->msg( 'showpreview' )->text()
                        ] );
                } else {
                        $sourceView = '';
                        $previewButton = '';
                }
 
-               $diffButton = Xml::element( 'input', [
+               $buttonFields[] = new OOUI\ButtonInputWidget( [
                        'name' => 'diff',
                        'type' => 'submit',
-                       'value' => $this->msg( 'showdiff' )->text() ] );
+                       'label' => $this->msg( 'showdiff' )->text()
+               ] );
 
                $out->addHTML(
                        $sourceView .
@@ -506,8 +506,13 @@ class SpecialUndelete extends SpecialPage {
                                        'type' => 'hidden',
                                        'name' => 'wpEditToken',
                                        'value' => $user->getEditToken() ] ) .
-                               $previewButton .
-                               $diffButton .
+                               new OOUI\FieldLayout(
+                                       new OOUI\Widget( [
+                                               'content' => new OOUI\HorizontalLayout( [
+                                                       'items' => $buttonFields
+                                               ] )
+                                       ] )
+                               ) .
                                Xml::closeElement( 'form' ) .
                                Xml::closeElement( 'div' )
                );
index 28cfb8b..d4e5ef4 100644 (file)
  * @file
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * Form to edit user preferences.
  */
-class PreferencesForm extends OOUIHTMLForm {
+class PreferencesForm extends HTMLForm {
        // Override default value from HTMLForm
        protected $mSubSectionBeforeFields = false;
 
@@ -69,6 +71,8 @@ class PreferencesForm extends OOUIHTMLForm {
         * @return string
         */
        function getButtons() {
+               $attrs = [ 'id' => 'mw-prefs-restoreprefs' ];
+
                if ( !$this->getModifiedUser()->isAllowedAny( 'editmyprivateinfo', 'editmyoptions' ) ) {
                        return '';
                }
@@ -78,14 +82,9 @@ class PreferencesForm extends OOUIHTMLForm {
                if ( $this->getModifiedUser()->isAllowed( 'editmyoptions' ) ) {
                        $t = $this->getTitle()->getSubpage( 'reset' );
 
-                       $html .= new OOUI\ButtonWidget( [
-                               'infusable' => true,
-                               'id' => 'mw-prefs-restoreprefs',
-                               'label' => $this->msg( 'restoreprefs' )->text(),
-                               'href' => $t->getLinkURL(),
-                               'flags' => [ 'destructive' ],
-                               'framed' => false,
-                       ] );
+                       $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
+                       $html .= "\n" . $linkRenderer->makeLink( $t, $this->msg( 'restoreprefs' )->text(),
+                               Html::buttonAttributes( $attrs, [ 'mw-ui-quiet' ] ) );
 
                        $html = Xml::tags( 'div', [ 'class' => 'mw-prefs-buttons' ], $html );
                }
index 1fe8203..92a8306 100644 (file)
        "recentchangesdays-max": "sayadahay $1 {{PLURAL:$1|a demiad}}",
        "recentchangescount": "pataayaw tu kawaw paazihay nu mikawaway-kalumyiti nikayadah:",
        "prefs-help-recentchangescount": "uyni yamalyilu capi demiad a sumad, kasabelih nasulitan-nazipa’an atu nazipa’an",
+       "prefs-help-watchlist-token2": "miaca aazihan numisuay a miazihay a piazihan-tu-sulit maydihay a mima-sabuhat.\namahicahica tademaw matineng ku mama-sabuhat dada’ taneng maasip numisuay a miazihay a piazihan-tu-sulit,sisa amana kilul tu nizateng kasasimel tu zuma a tadeamw.\namahica izaw ku maydih [[Special:ResetTokens|kapah kisu miliyaw patizeng mima-sabuhat]].",
        "savedprefs": "masuped setin tu kanamuhan nu misu.",
        "savedrights": "masuped tu {{GENDER:$1|$1}} misaungayay a tungus.",
        "timezonelegend": "tatukian a kakitizaan:",
index 3c32327..8ef2840 100644 (file)
        "prefs-watchlist-edits": "عدد التعديلات التي تعرض في قائمة المراقبة:",
        "prefs-watchlist-edits-max": "العدد الأقصى: 1000",
        "prefs-watchlist-token": "مفتاح قائمة المراقبة:",
-       "prefs-watchlist-managetokens": "التحكم بالتوكنات",
        "prefs-misc": "متفرقات",
        "prefs-resetpass": "غير كلمة السر",
        "prefs-changeemail": "تغيير أو إزالة عنوان البريد الإلكتروني",
        "recentchangesdays-max": "الحد الأقصى {{PLURAL:$1|أقل من يوم|يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}}",
        "recentchangescount": "عدد التعديلات الظاهرة مبدئيا:",
        "prefs-help-recentchangescount": "بما في ذلك أحدث التغييرات وتاريخ الصفحات والسجلات.",
-       "prefs-help-tokenmanagement": "أنت يمكنك رؤية وإعادة ضبط المفتاح السري لحسابك الذي يمكنه الوصول لتلقيم الويب لقائمة مراقبتك. أي شخص يعرف المفتاح سيمكنه قراءة قائمة مراقبتك، لذا فلا تشاركه.",
+       "prefs-help-watchlist-token2": "هذا هو المفتاح السري لتغذية الويب لقائمة مراقبتك.\nيمكن لأي شخص يعرفه أن يقرأ قائمة مراقبتك، ولذا لا تتشاركه مع أحد. [[Special:ResetTokens|انقر هنا إذا أردت إعادة ضبطه]].",
        "savedprefs": "تم حفظ تفضيلاتك.",
        "savedrights": "حُفظت المجموعات الجديدة {{GENDER:$1|للمستخدم|للمستخدمة}} $1.",
        "timezonelegend": "المنطقة الزمنية:",
index 2f9a5c8..64af5da 100644 (file)
        "prefs-watchlist-edits": "Númberu máximu de cambios qu'amosar na llista de siguimientu:",
        "prefs-watchlist-edits-max": "Númberu máximu: 1000",
        "prefs-watchlist-token": "Pase de la llista de siguimientu:",
-       "prefs-watchlist-managetokens": "Alministrar pases",
        "prefs-misc": "Varios",
        "prefs-resetpass": "Camudar la contraseña",
        "prefs-changeemail": "Camudar o desaniciar la dirección de corréu electrónicu",
        "recentchangesdays-max": "Máximo $1 {{PLURAL:$1|día|díes}}",
        "recentchangescount": "Númberu d'ediciones p'amosar de mou predetermináu:",
        "prefs-help-recentchangescount": "Incluye los cambios recientes, los historiales de páxines y los rexistros.",
-       "prefs-help-tokenmanagement": "Puedes ver y restaurar la clave secreta pa la to cuenta que puede entrar na canal web de la llista de siguimientu. Cualquiera que sepa la clave podrá lleer la to llista de siguimientu, nun la compartas.",
+       "prefs-help-watchlist-token2": "Esta ye la clave secreta pa la canal de noticies web de la so llista de vixilancia.\nCualquiera que la sepa podrá lleer la so llista de vixilancia; nun la comparta.\n[[Special:ResetTokens|Calque equí si necesita reaniciala]].",
        "savedprefs": "Guardáronse les preferencies.",
        "savedrights": "Guardáronse los grupos {{GENDER:$1|del usuariu|de la usuaria}} $1.",
        "timezonelegend": "Estaya horaria:",
index c3f95b1..e7168cf 100644 (file)
        "botpasswords-insert-failed": "Не атрымалася дадаць робата зь імем «$1». Магчыма, ён ужо быў дададзены?",
        "botpasswords-update-failed": "Не атрымалася абнавіць робата зь імем «$1». Магчыма, ён быў выдалены?",
        "botpasswords-created-title": "Пароль робата створаны",
-       "botpasswords-created-body": "Пароль робата для робата з назвай «$1» удзельніка «$2» быў створаны.",
+       "botpasswords-created-body": "Пароль робата для робата з назвай «$1» {{GENDER:$2|удзельніка|удзельніцы}} «$2» быў створаны.",
        "botpasswords-updated-title": "Пароль робата абноўлены",
-       "botpasswords-updated-body": "Пароль робата для робата «$1» удзельніка «$2» быў абноўлены.",
+       "botpasswords-updated-body": "Пароль робата для робата «$1» {{GENDER:$2|удзельніка|удзельніцы}} «$2» быў абноўлены.",
        "botpasswords-deleted-title": "Пароль робата выдалены",
        "botpasswords-deleted-body": "Пароль робата для робата «$1» удзельніка «$2» быў выдалены.",
        "botpasswords-newpassword": "Новы пароль для ўваходу пад <strong>$1</strong> — <strong>$2</strong>. <em>Калі ласка, запішыце яго для далейшага выкарыстаньня.</em><br>(Для старых робатаў, якія патрабуюць, каб імя для ўваходу было аднолькавым з патэнцыйным імем удзельніка, вы можаце таксама карыстацца <strong>$3</strong> у якасьці імя і <strong>$4</strong> у якасьці паролю.)",
        "prefs-watchlist-edits": "Максымальная колькасьць зьменаў для паказу ў сьпісе назіраньня:",
        "prefs-watchlist-edits-max": "Максымальная колькасьць: 1000",
        "prefs-watchlist-token": "Ключ сьпісу назіраньня:",
-       "prefs-watchlist-managetokens": "Кіраваньне токенамі",
        "prefs-misc": "Рознае",
        "prefs-resetpass": "Зьмяніць пароль",
        "prefs-changeemail": "Зьмяніць ці выдаліць адрас электроннай пошты",
        "recentchangesdays-max": "Максымальна $1 {{PLURAL:$1|дзень|дні|дзён}}",
        "recentchangescount": "Колькасьць рэдагаваньняў для паказу па змоўчаньні:",
        "prefs-help-recentchangescount": "Гэта ўключае апошнія зьмены, гісторыі старонак і журналы падзеяў.",
-       "prefs-help-tokenmanagement": "Вы можаце праглядзець і скінуць сакрэтны ключ да вашага рахунку, з дапамогай якога вы можаце мець доступ да вэб-стужкі вашага сьпісу назіраньня. Кожны, хто ведае ключ, можа чытаць ваш сьпіс назіраньня, таму не дзяліцеся ім.",
+       "prefs-help-watchlist-token2": "Гэта сакрэтны ключ да стужкі вашага сьпісу назіраньня.\nКожны, хто ведае яго, можа атрымаць доступ да вашага сьпісу назіраньня, таму не дзяліцеся ім.\nКалі вам трэба, [[Special:ResetTokens|вы можаце скінуць яго]].",
        "savedprefs": "Вашыя налады былі захаваныя.",
        "savedrights": "Групы {{GENDER:$1|ўдзельніка|ўдзельніцы}} $1 былі захаваныя.",
        "timezonelegend": "Часавы пояс:",
        "yourlanguage": "Мова інтэрфэйсу:",
        "yourvariant": "Варыянт мовы зьместу:",
        "prefs-help-variant": "Выбраны Вамі альфабэт ці артаграфія для паказу старонак зьместу {{GRAMMAR:родны|{{SITENAME}}}}.",
-       "yournick": "Ð\9fодпіс:",
+       "yournick": "Ð\9dовÑ\8b Ð¿одпіс:",
        "prefs-help-signature": "Камэнтары на старонцы абмеркаваньня павінны быць падпісаны праз даданьне сымбаляў «<nowiki>~~~~</nowiki>», якія будуць пераўтвораны ў Ваш подпіс і цяперашні час.",
        "badsig": "Няслушны неапрацаваны подпіс; праверце HTML-тэгі.",
        "badsiglength": "Ваш подпіс занадта доўгі.\nПодпіс мусіць быць не даўжэй за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}}.",
        "rcfilters-activefilters": "Актыўныя фільтры",
        "rcfilters-advancedfilters": "Пашыраныя фільтры",
        "rcfilters-limit-title": "Паказаць вынікаў",
+       "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|зьмены|зьмены|зьменаў}}, $2",
        "rcfilters-days-title": "Апошнія дні",
        "rcfilters-hours-title": "Апошнія гадзіны",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|дзень|дні|дзён}}",
index d4db050..fad0987 100644 (file)
        "recentchangesdays-max": "(най-много $1 {{PLURAL:$1|ден|дни}})",
        "recentchangescount": "Брой показвани редакции по подразбиране:",
        "prefs-help-recentchangescount": "Това включва последните промени, историите на страниците и дневниците.",
+       "prefs-help-watchlist-token2": "Това е секретният ключ към уеб хранилката на вашия списък за наблюдение. Всеки, който го знае, би могъл да прегледа списъка ви за наблюдение, така че не го споделяйте. При нужда можете да го [[Специални:ResetTokens|изчистите]].",
        "savedprefs": "Настройките ви бяха съхранени.",
        "savedrights": "Потребителските групи на {{GENDER:$1|$1}} са запазени.",
        "timezonelegend": "Часова зона:",
index f97f104..e6fa48b 100644 (file)
        "botpasswords-insert-failed": "\"$1\" নামের বট যুক্ত করা যায়নি। এটি কি আগে থেকেই বটের তালিকায় রয়েছে?",
        "botpasswords-update-failed": "\"$1\" নামের বট যুক্ত করা যায়নি। এটি কি আগে অপসারণ করা হয়েছিল?",
        "botpasswords-created-title": "বট পাসওয়ার্ড তৈরী করা হয়েছে",
-       "botpasswords-created-body": "ব্যবহারকারী \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড তৈরী করা হয়েছে।",
+       "botpasswords-created-body": "{{GENDER:$2|ব্যবহারকারী}} \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড তৈরী করা হয়েছে।",
        "botpasswords-updated-title": "বট পাসওয়ার্ড হালনাগাদ করা হয়েছে",
-       "botpasswords-updated-body": "ব্যবহারকারী \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড হালনাগাদ করা হয়েছে।",
+       "botpasswords-updated-body": "{{GENDER:$2|ব্যবহারকারী}} \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড হালনাগাদ করা হয়েছে।",
        "botpasswords-deleted-title": "বট পাসওয়ার্ড মুছে ফেলা হয়েছে",
-       "botpasswords-deleted-body": "ব্যবহারকারী \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড মুছে ফেলা হয়েছিল।",
+       "botpasswords-deleted-body": "{{GENDER:$2|ব্যবহারকারী}} \"$2\"-এর \"$1\" নামের বটের জন্য বট পাসওয়ার্ড মুছে ফেলা হয়েছে।",
        "botpasswords-newpassword": "<strong>$1</strong> ব্যবহারকারী নাম দিয়ে প্রবেশ করার সময় যে নতুন পাসওয়ার্ডটি ব্যবহার করতে হবে, তা হল <strong>$2</strong>। <em>অনুগ্রহ করে ভবিষ্যৎ নির্দেশনার জন্য এটিকে সংরক্ষণ করুন।</em> <br> (যেসব পুরাতন বটের জন্য প্রবেশকরণ নাম এবং ব্যবহারকারী নাম শেষ পর্যন্ত একই হওয়া আবশ্যক, সেগুলির জন্য আপনি ব্যবহারকারী নাম হিসেবে <strong>$3</strong> এবং পাসওয়ার্ড হিসেবে  <strong>$4</strong> -ও ব্যবহার করতে পারেন।)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider লভ্য নয়।",
        "botpasswords-restriction-failed": "বট পাসওয়ার্ডের সীমাবদ্ধতার কারণে অ্যাকাউন্টে প্রবেশের এই প্রচেষ্টাটিকে প্রতিরোধ করা হয়েছে।",
        "prefs-watchlist-edits": "নজরতালিকাতে দেখানোর জন্য সর্বাধিক পরিবর্তনের সংখ্যা:",
        "prefs-watchlist-edits-max": "সর্বোচ্চ সংখ্যা: ১০০০",
        "prefs-watchlist-token": "নজরতালিকা টোকেন:",
-       "prefs-watchlist-managetokens": "টোকেন পরিচালনা করুন",
        "prefs-misc": "বিবিধ",
        "prefs-resetpass": "পাসওয়ার্ড পরিবর্তন",
        "prefs-changeemail": "ইমেইল ঠিকানা পরিবর্তন বা বাতিল করুন",
        "recentchangesdays-max": "সর্বোচ্চ $1 {{PLURAL:$1|দিনের}}",
        "recentchangescount": "সাম্প্রতিক পরিবর্তনে প্রদর্শিত সম্পাদনার পূর্বনির্ধারিত সংখ্যা:",
        "prefs-help-recentchangescount": "এতে সাম্প্রতিক পরিবর্তনগুলি, পাতার ইতিহাসগুলি এবং লগগুলি অন্তর্ভুক্ত।",
-       "prefs-help-tokenmanagement": "আপনি আপনার অ্যাকাউন্টের জন্য গোপন চাবি দেখতে এবং পুনরায় নির্ধারন করতে পারবেন যা দিয়ে আপনার নজরতালিকার ওয়েব ফিডে প্রবেশাধিকার পাওয়া যাবে। যে কেউ যিনি এই চাবিটি জানেন তিনি আপনার নজর তালিকাটি পড়তে সক্ষম হবেন, তাই এটি অন্যদের সাথে ভাগ করবেন না।",
+       "prefs-help-watchlist-token2": "এটি আপনার নজরতালিকার ওয়েব ফিডের গোপন চাবি। কেউ যদি এটি জানতে পারেন, তাহলে তিনি আপনার নজরতালিকা পড়তে সক্ষম হবেন, তাই এটি প্রকাশ করবেন না। [[Special:ResetTokens|আপনার এটি পুনঃনির্ধারণ করার প্রয়োজন হলে এখানে ক্লিক করুন]]।",
        "savedprefs": "আপনার পছন্দগুলি সংরক্ষণ করা হয়েছে।",
        "savedrights": "{{GENDER:$1|$1}}-এর ব্যবহারকারী দল সংরক্ষিত হয়েছে।",
        "timezonelegend": "সময় অঞ্চল:",
        "rcfilters-activefilters": "সক্রিয় ছাঁকনিসমূহ",
        "rcfilters-advancedfilters": "উন্নত ছাঁকনি",
        "rcfilters-limit-title": "যেসব ফলাফল দেখাবে",
+       "rcfilters-limit-and-date-label": "{{PLURAL:$1|পরিবর্তন|$1টি পরিবর্তন}}, $2",
+       "rcfilters-date-popup-title": "অনুসন্ধানের সময়কাল",
        "rcfilters-days-title": "সাম্প্রতিক দিন",
        "rcfilters-hours-title": "সাম্প্রতিক ঘণ্টা",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|দিন}}",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ট্যাগ}}]]: $2)",
        "tag-mw-contentmodelchange": "বিষয়বস্তুর রূপ পরিবর্তন",
        "tag-mw-contentmodelchange-description": "সম্পাদনা যা একটি পাতার [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel বিষয়বস্তুর রূপ পরিবর্তন] করে",
+       "tag-mw-new-redirect": "নতুন পুনর্নির্দেশনা",
+       "tag-mw-blank": "খালি করা",
+       "tag-mw-blank-description": "সেই সম্পাদনাগুলি যা একটি পাতাকে খালি করেছে",
+       "tag-mw-replace": "প্রতিস্থাপিত",
+       "tag-mw-rollback": "পুনর্বহাল",
        "tags-title": "ট্যাগসমূহ",
        "tags-intro": "এই পাতায় সফটওয়্যারটি একটি সম্পাদনা চিহ্নিত করার জন্য যে সকল ট্যাগ ব্যবহার করে তার তালিকা ও বর্ণনা রয়েছে।",
        "tags-tag": "ট্যাগ নাম",
index 3505ecc..dd07784 100644 (file)
@@ -57,7 +57,7 @@
        "tog-oldsig": "Vaš postojeći potpis:",
        "tog-fancysig": "Smatraj potpis kao wikitekst (bez automatskog linka)",
        "tog-uselivepreview": "Prikaži izgled bez ponovnog učitavanja stranice",
-       "tog-forceeditsummary": "Opomeni me pri unosu praznog sažetka",
+       "tog-forceeditsummary": "Upozori me ako ne unesem sažetak",
        "tog-watchlisthideown": "Sakrij moje izmjene sa spiska praćenih članaka",
        "tog-watchlisthidebots": "Sakrij izmjene botova sa spiska praćenih članaka",
        "tog-watchlisthideminor": "Sakrij manje izmjene sa spiska praćenih članaka",
        "revdelete-unsuppress": "Ukloni ograničenja na vraćenim revizijama",
        "revdelete-log": "Razlog:",
        "revdelete-submit": "Primijeni na {{PLURAL:$1|izabranu izmjenu|izabrane izmjene}}",
-       "revdelete-success": "'''Vidljivost izmjene je ažurirana.'''",
+       "revdelete-success": "Vidljivost izmjene je ažurirana.",
        "revdelete-failure": "Ne mogu ažurirati vidljivost izmjene:\n$1",
        "logdelete-success": "Postavljena je vidljivost unosa u zapisniku.",
        "logdelete-failure": "'''Zapisnik vidljivosti nije mogao biti postavljen:'''\n$1",
        "rcfilters-legend-heading": "<strong>Spisak skraćenica:</strong>",
        "rcfilters-other-review-tools": "Drugi alati za pregled",
        "rcfilters-group-results-by-page": "Grupiraj rezultate po stranicama",
-       "rcfilters-grouping-title": "Grupiranje",
        "rcfilters-activefilters": "Aktivni filteri",
        "rcfilters-advancedfilters": "Napredni filteri",
-       "rcfilters-limit-title": "Izmjena za prikaz",
-       "rcfilters-limit-shownum": "Prikaži {{PLURAL:$1|posljednju izmjenu|posljednje $1 izmjene|posljednjih $1 izmjena}}",
+       "rcfilters-limit-title": "Stavki za prikaz",
+       "rcfilters-limit-and-date-label": "{{PLURAL:$1|$1 izmjena|$1 izmjene|$1 izmjena}}, $2",
+       "rcfilters-date-popup-title": "Vremenski period za pretragu",
        "rcfilters-days-title": "Nedavni dani",
        "rcfilters-hours-title": "Nedavni sati",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|dan|dana}}",
        "rcfilters-savedqueries-add-new-title": "Sačuvaj trenutne postavke filtera",
        "rcfilters-restore-default-filters": "Vrati predodređene filtere",
        "rcfilters-clear-all-filters": "Ukloni sve filtere",
-       "rcfilters-show-new-changes": "Pogl. najnovije izmjene",
+       "rcfilters-show-new-changes": "Prikaži najnovije izmjene",
        "rcfilters-search-placeholder": "Filtriraj nedavne izmjene (prelistajte ili počnite kucati)",
        "rcfilters-invalid-filter": "Neispravan filter",
        "rcfilters-empty-filter": "Nema aktivnih filtera. Prikazani su svi doprinosi.",
        "rcfilters-view-tags-tooltip": "Filtriraj rezultate po oznakama",
        "rcfilters-view-return-to-default-tooltip": "Nazad na glavni meni filtera",
        "rcfilters-liveupdates-button": "Ažuriraj uživo",
+       "rcfilters-liveupdates-button-title-on": "Isključi ažuriranja uživo",
+       "rcfilters-liveupdates-button-title-off": "Prikaži nove izmjene uživo",
        "rcfilters-watchlist-markseen-button": "Označi sve izmjene viđenim",
+       "rcfilters-watchlist-edit-watchlist-button": "Izmijeni spisak praćenih stranica",
+       "rcfilters-watchlist-showupdated": "Izmjene na stranicama koje niste posjetili otkako su izvršene prikazane su <strong>podebljano</strong>, s ispunjenim kružićima.",
        "rcfilters-preference-label": "Sakrij poboljšanu verziju nedavnih izmjena",
        "rcfilters-preference-help": "Poništava novi izgled interfejsa iz 2017. i sve alate dodane od tada.",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
index 1d8453a..ef5eabd 100644 (file)
        "recentchangesdays-max": "(màxim $1 {{PLURAL:$1|dia|dies}})",
        "recentchangescount": "Nombre d'edicions a mostrar per defecte:",
        "prefs-help-recentchangescount": "Inclou els canvis recents, els historials de pàgines i els registres.",
+       "prefs-help-watchlist-token2": "Aquesta és la clau secreta pel canal de continguts de la vostra llista de seguiment.\nQualsevol que la conegui podria llegir la vostra llista de seguiment, així que no la compartiu.\n[[Special:ResetTokens|Cliqueu aquí si voleu restaurar-la]].",
        "savedprefs": "S’han desat les vostres preferències.",
        "savedrights": "S'han desat els grups d'usuari de {{GENDER:$1|$1}}.",
        "timezonelegend": "Fus horari:",
index fe91a12..22b466f 100644 (file)
@@ -34,7 +34,7 @@
        "tog-minordefault": "Къастам бе нисйиначарн хlумцадеш кегийра долушсанна",
        "tog-previewontop": "Чуяккха хьалххьажар тадаран кора хьалха",
        "tog-previewonfirst": "Гайта хьалххьажар тадарш да долийча",
-       "tog-enotifwatchlistpages": "Хаам Ð±Ð¾ Ñ\8dлекÑ\82Ñ\80онан Ð¿Ð¾Ñ\87техула, тергаме могӀаман хийцамах лаьцна",
+       "tog-enotifwatchlistpages": "Хаам Ð±Ð¾ Ñ\8dлекÑ\82Ñ\80онан Ð¿Ð¾Ñ\88техула, тергаме могӀаман хийцамах лаьцна",
        "tog-enotifusertalkpages": "Хаам бо зlе чухул, долахь йолу дийцаре агlон хийцамах лаьцна",
        "tog-enotifminoredits": "Хаам бо зӀе чухул, цхьа жимма а хийцамаш биняхь",
        "tog-enotifrevealaddr": "Гайта сан зlе оцу хаамаш барехь",
        "recentchangesdays-max": "Къезиг $1 {{PLURAL:$1|дена}}",
        "recentchangescount": "Ӏадйитаран кепаца гойтуш долу нисдарийн дукхалла",
        "prefs-help-recentchangescount": "Гойту керла нисдарш, агӀонийн истори, тептарш.",
+       "prefs-help-watchlist-token2": "Иза хьан тергаме могӀан къайла догӀа ду.\nМуьлха и хуучунна йиш ю хьан тергаме могӀам беша, цундела ма хаийта иза кхечаьрга. [[Special:ResetTokens|ТӀетаӀа йе кхуза и хьайга кхосса лууш делахь]].",
        "savedprefs": "Хьан гӀирс Ӏалашбина.",
        "savedrights": "{{GENDER:$1|$1}} декъашхочун бакъонаш Ӏалашйина.",
        "timezonelegend": "Сахьтан аса:",
        "timezoneregion-indian": "Индин океан",
        "timezoneregion-pacific": "Тийна океан",
        "allowemail": "Магийта декъашхошна хьайга электронан поштехула кехат кхехьийта",
+       "email-blacklist-label": "ХӀокху декъашхошна электронан пошт соьга яийта бехкам-бе:",
        "prefs-searchoptions": "Лахар",
        "prefs-namespaces": "ЦӀерийн меттигаш",
        "default": "Ӏадйитаран кеп",
        "prefs-editor": "Тадар",
        "prefs-preview": "Хьалххе хьажар",
        "prefs-advancedrc": "Кхин гӀирс нисбар",
+       "prefs-opt-out": "Дика кечъяр цаэшар",
        "prefs-advancedrendering": "Кхин гӀирс нисбар",
        "prefs-advancedsearchoptions": "Кхин гӀирс нисбар",
        "prefs-advancedwatchlist": "Кхин гӀирс нисбар",
index c223bde..374b90b 100644 (file)
        "prefs-watchlist-edits": "Maximální počet editací zobrazených ve sledovaných stránkách:",
        "prefs-watchlist-edits-max": "Maximum: 1000",
        "prefs-watchlist-token": "Klíč k seznamu sledovaných stránek:",
-       "prefs-watchlist-managetokens": "Správa klíčů",
        "prefs-misc": "Různé",
        "prefs-resetpass": "Změnit heslo",
        "prefs-changeemail": "Změnit nebo odstranit e-mailovou adresu",
        "recentchangesdays-max": "Maximálně $1 {{PLURAL:$1|den|dny|dní}}",
        "recentchangescount": "Počet implicitně zobrazovaných záznamů:",
        "prefs-help-recentchangescount": "Týká se posledních změn, historie stránek a protokolovacích záznamů.",
-       "prefs-help-tokenmanagement": "Můžete si prohlédnout nebo reinicializovat tajný klíč k vašemu účtu, který poskytuje přístup k webovému kanálu vašeho seznamu sledovaných stránek. Kdokoli, kdo tento klíč zná, může číst váš seznam sledovaných stránek, takže ho nesdílejte.",
+       "prefs-help-watchlist-token2": "Toto je tajný klíč k webovému kanálu vašich sledovaných stránek. Kdokoli, kdo bude tento klíč znát, bude moci váš seznam sledovaných stránek číst, takže ho nešiřte.\n[[Special:ResetTokens|Kliknutím sem ho můžete reinicializovat.]]",
        "savedprefs": "Nastavení byla uložena.",
        "savedrights": "Skupiny {{GENDER:$1|uživatele|uživatelky}} $1 byly uloženy.",
        "timezonelegend": "Časové pásmo:",
index 90a21d1..b004cbf 100644 (file)
        "search-nonefound": "Für Ihre Suchanfrage wurden keine Ergebnisse gefunden.",
        "searchdisabled": "Die {{SITENAME}} Suche wurde deaktiviert. Sie können unterdessen mit Google suchen. Bitte bedenken Sie, dass der Suchindex von {{SITENAME}} veraltet sein kann.",
        "prefsnologintext2": "Sie müssen sich einloggen, um Ihre Benutzereinstellungen zu ändern.",
+       "prefs-help-watchlist-token2": "Dies ist der geheime Schlüssel zum Webfeed Ihrer Beobachtungsliste.\nJeder, der ihn kennt, kann Ihre Beobachtungsliste lesen. Teilen Sie ihn deshalb nicht Anderen mit.\nSofern notwendig, [[Special:ResetTokens|können Sie ihn zurücksetzen]].",
        "savedprefs": "Ihre Einstellungen wurden gespeichert.",
        "prefs-reset-intro": "Sie können diese Seite verwenden, um die Einstellungen auf die Standards zurückzusetzen.\nDies kann nicht mehr rückgängig gemacht werden.",
        "prefs-help-gender": "Dies ist eine freiwillige Angabe.\nDie Software nutzt sie, um Sie anzureden sowie als Hinweis für andere durch Verwendung des zutreffenden grammatikalischen Geschlechts.\nDiese Information ist öffentlich.",
index 5e7047a..4c9d157 100644 (file)
        "botpasswords-insert-failed": "Der Botname „$1“ konnte nicht hinzugefügt werden. Wurde er bereits hinzugefügt?",
        "botpasswords-update-failed": "Der Botname „$1“ konnte nicht aktualisiert werden. Wurde er gelöscht?",
        "botpasswords-created-title": "Botpasswort erstellt",
-       "botpasswords-created-body": "Das Botpasswort für den Botnamen „$1“ des Benutzers „$2“ wurde erstellt.",
+       "botpasswords-created-body": "Das Botpasswort für den Botnamen „$1“ {{GENDER:$2|des Benutzers|der Benutzerin}} „$2“ wurde erstellt.",
        "botpasswords-updated-title": "Botpasswort aktualisiert",
-       "botpasswords-updated-body": "Das Botpasswort für den Botnamen „$1“ des Benutzers „$2“ wurde aktualisiert.",
+       "botpasswords-updated-body": "Das Botpasswort für den Botnamen „$1“ {{GENDER:$2|des Benutzers|der Benutzerin}} „$2“ wurde aktualisiert.",
        "botpasswords-deleted-title": "Botpasswort gelöscht",
-       "botpasswords-deleted-body": "Das Botpasswort für den Botnamen „$1“ des Benutzers „$2“ wurde gelöscht.",
+       "botpasswords-deleted-body": "Das Botpasswort für den Botnamen „$1“ {{GENDER:$2|des Benutzers|der Benutzerin}} „$2“ wurde gelöscht.",
        "botpasswords-newpassword": "Das neue Passwort zur Anmeldung mit <strong>$1</strong> ist <strong>$2</strong>. <em>Bitte halte dies für die Zukunft fest.</em><br>Für alte Bots, die erfordern, dass der Anmeldename mit dem späteren Benutzernamen identisch ist, kannst du auch <strong>$3</strong> als Benutzernamen und <strong>$4</strong> als Passwort verwenden.",
        "botpasswords-no-provider": "BotPasswordsSessionProvider ist nicht verfügbar.",
        "botpasswords-restriction-failed": "Beschränkungen des Botpassworts verhindern diese Anmeldung.",
        "prefs-watchlist-edits": "Maximale Anzahl der angezeigten Einträge:",
        "prefs-watchlist-edits-max": "Maximal 1.000 Einträge",
        "prefs-watchlist-token": "Token der Beobachtungsliste:",
-       "prefs-watchlist-managetokens": "Token verwalten",
        "prefs-misc": "Verschiedenes",
        "prefs-resetpass": "Passwort ändern",
        "prefs-changeemail": "E-Mail-Adresse ändern oder entfernen",
        "recentchangesdays-max": "Maximal $1 {{PLURAL:$1|Tag|Tage}}",
        "recentchangescount": "Anzahl der standardmäßig angezeigten Bearbeitungen:",
        "prefs-help-recentchangescount": "Dies umfasst die Liste der letzten Änderungen, die Versionsgeschichte und die Logbücher.",
-       "prefs-help-tokenmanagement": "Du kannst den geheimen Schlüssel für dein Benutzerkonto ansehen und zurücksetzen, der auf den Webfeed deiner Beobachtungsliste zugreifen kann. Jeder, der den Schlüssel kennt, kann deine Beobachtungsliste lesen. Deshalb teile ihn nicht anderen mit.",
+       "prefs-help-watchlist-token2": "Dies ist der geheime Schlüssel zum Webfeed deiner Beobachtungsliste.\nJeder, der ihn kennt, kann deine Beobachtungsliste lesen. Teile ihn deshalb nicht Anderen mit.\nSofern notwendig, [[Special:ResetTokens|kannst du ihn zurücksetzen]].",
        "savedprefs": "Deine Einstellungen wurden gespeichert.",
        "savedrights": "Die Benutzergruppen von {{GENDER:$1|$1}} wurden gespeichert.",
        "timezonelegend": "Zeitzone:",
index 1a296bf..74bf787 100644 (file)
        "prefs-watchlist-edits": "Μέγιστος αριθμός επεξεργασιών προς εμφάνιση στην λίστα παρακολούθησης:",
        "prefs-watchlist-edits-max": "Μέγιστος αριθμός: 1000",
        "prefs-watchlist-token": "Σημείο λίστας παρακολούθησης:",
-       "prefs-watchlist-managetokens": "Διαχείριση tokens",
        "prefs-misc": "Διάφορες ρυθμίσεις",
        "prefs-resetpass": "Αλλαγή κωδικού",
        "prefs-changeemail": "Αλλαγή ή αφαίρεση της διεύθυνσης ηλεκτρονικού ταχυδρομείου",
        "recentchangesdays-max": "($1 {{PLURAL:$1|ημέρα|ημέρες}} το μέγιστο)",
        "recentchangescount": "Αριθμός επεξεργασιών που να εμφανίζονται για προεπιλογή.",
        "prefs-help-recentchangescount": "Αυτό περιλαμβάνει τις πρόσφατες αλλαγές, τα ιστορικά των σελίδων, και τα αρχεία διαγραφών.",
-       "prefs-help-tokenmanagement": "Μπορείτε να δείτε και να επαναφέρετε το μυστικό κλειδί του λογαριασμού σας που μπορεί να έχει πρόσβαση στη διαδικτυακή ροή της λίστας παρακολούθησής σας. Οποιοσδήποτε γνωρίζει το κλειδί μπορεί να διαβάσει τη λίστα παρακολούθησής σας, μην το μοιράζεστε.",
+       "prefs-help-watchlist-token2": "Αυτό είναι το μυστικό κλειδί για την web τροφοδοσία  της λίστας παρακολούθησής σας.\nΌποιος το γνωρίζει θα είναι σε θέση να διαβάσει την λίστα παρακολούθησης σας, οπότε μην τον μοιράζεστε.\n[[Special:ResetTokens|Κάνε κλικ εδώ εάν θέλετε να τον επαναφέρετε]].",
        "savedprefs": "Οι προτιμήσεις σας έχουν αποθηκευτεί.",
        "savedrights": "Οι ομάδες χρηστών {{GENDER:$1|του $1|της $1}} έχουν αποθηκευτεί.",
        "timezonelegend": "Ζώνη ώρας:",
index 9b1e04a..87bd13e 100644 (file)
        "botpasswords-insert-failed": "Failed to add bot name \"$1\". Was it already added?",
        "botpasswords-update-failed": "Failed to update bot name \"$1\". Was it deleted?",
        "botpasswords-created-title": "Bot password created",
-       "botpasswords-created-body": "The bot password for bot name \"$1\" of user \"$2\" was created.",
+       "botpasswords-created-body": "The bot password for bot name \"$1\" of {{GENDER:$2|user}} \"$2\" was created.",
        "botpasswords-updated-title": "Bot password updated",
-       "botpasswords-updated-body": "The bot password for bot name \"$1\" of user \"$2\" was updated.",
+       "botpasswords-updated-body": "The bot password for bot name \"$1\" of {{GENDER:$2|user}} \"$2\" was updated.",
        "botpasswords-deleted-title": "Bot password deleted",
-       "botpasswords-deleted-body": "The bot password for bot name \"$1\" of user \"$2\" was deleted.",
+       "botpasswords-deleted-body": "The bot password for bot name \"$1\" of {{GENDER:$2|user}} \"$2\" was deleted.",
        "botpasswords-newpassword": "The new password to log in with <strong>$1</strong> is <strong>$2</strong>. <em>Please record this for future reference.</em> <br> (For old bots which require the login name to be the same as the eventual username, you can also use <strong>$3</strong> as username and <strong>$4</strong> as password.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider is not available.",
        "botpasswords-restriction-failed": "Bot password restrictions prevent this login.",
        "prefs-watchlist-edits": "Maximum number of changes to show in watchlist:",
        "prefs-watchlist-edits-max": "Maximum number: 1000",
        "prefs-watchlist-token": "Watchlist token:",
-       "prefs-watchlist-managetokens": "Manage tokens",
        "prefs-misc": "Misc",
        "prefs-resetpass": "Change password",
        "prefs-changeemail": "Change or remove email address",
        "recentchangesdays-max": "Maximum $1 {{PLURAL:$1|day|days}}",
        "recentchangescount": "Number of edits to show by default:",
        "prefs-help-recentchangescount": "This includes recent changes, page histories, and logs.",
-       "prefs-help-tokenmanagement": "You can see and reset the secret key for your account that can access the Web feed of your watchlist. Anyone who knows the key will be able to read your watchlist, so do not share it.",
+       "prefs-help-watchlist-token2": "This is the secret key to the web feed of your watchlist.\nAnyone who knows it will be able to read your watchlist, so do not share it.\nIf you need to, [[Special:ResetTokens|you can reset it]].",
        "savedprefs": "Your preferences have been saved.",
        "savedrights": "The user groups of {{GENDER:$1|$1}} have been saved.",
        "timezonelegend": "Time zone:",
index b5f1034..54a9c3a 100644 (file)
        "recentchangesdays-max": "Máximo {{PLURAL:$1|un día|$1 días}}",
        "recentchangescount": "N.º de ediciones que mostrar de manera predeterminada:",
        "prefs-help-recentchangescount": "Esto incluye cambios recientes, historiales de páginas y registros.",
+       "prefs-help-watchlist-token2": "Esta es la clave secreta del canal de suscripción de tu lista de seguimiento.\nCualquier persona que la conozca podría leer tu lista, así que no la compartas.\n[[Special:ResetTokens|Pulsa aquí si necesitas restablecerla]].",
        "savedprefs": "Se han guardado tus preferencias.",
        "savedrights": "Se han guardado los grupos de {{GENDER:$1|usuario|usuaria}} de $1.",
        "timezonelegend": "Huso horario:",
index 536c663..8136065 100644 (file)
        "prefs-watchlist-edits": "Mitut muudatust jälgimisloendis enim näidata:",
        "prefs-watchlist-edits-max": "Ülemmäär: 1000",
        "prefs-watchlist-token": "Jälgimisloendi luba:",
-       "prefs-watchlist-managetokens": "Halda lube",
        "prefs-misc": "Muu",
        "prefs-resetpass": "Muuda parool",
        "prefs-changeemail": "muuda e-posti aadressi või eemalda see",
        "recentchangesdays-max": "Ülemmäär $1 {{PLURAL:$1|päev|päeva}}",
        "recentchangescount": "Mitut redaktsiooni vaikimisi näidata:",
        "prefs-help-recentchangescount": "See käib viimaste muudatuste, lehekülgede ajalugude ja logide kohta.",
-       "prefs-help-tokenmanagement": "Saad vaadata ja lähtestada salavõtit, mis võimaldab juurdepääsu konto jälgimisloendi veebivoole. Igaüks, kes võtit teab, saab lugeda sinu jälgimisloendit. Seega ära jaga seda.",
+       "prefs-help-watchlist-token2": "#REDIRECT [[MediaWiki:Prefs-help-tokenmanagement/et]]",
        "savedprefs": "Sinu eelistused on salvestatud.",
        "savedrights": "Kasutaja $1 rühmad on salvestatud.",
        "timezonelegend": "Ajavöönd:",
index 7ba8258..9ea4e26 100644 (file)
        "prefs-watchlist-edits": "Ikuspen zerrendan erakutsi beharreko aldaketa gehienezko kopurua:",
        "prefs-watchlist-edits-max": "Gehenezko zenbakia: 1000",
        "prefs-watchlist-token": "Jarraipen zerrendaren tokena:",
-       "prefs-watchlist-managetokens": "Kudeatu token-ak",
        "prefs-misc": "Denetarik",
        "prefs-resetpass": "Pasahitza aldatu",
        "prefs-changeemail": "Aldatu edo kendu e-mail helbidea",
        "recentchangesdays-max": "(gehienez {{PLURAL:$1|egun bat|$1 egun}})",
        "recentchangescount": "Erakusteko aldaketa kopurua, lehenetsita:",
        "prefs-help-recentchangescount": "Honek azken aldaketak, orrialdeen historiak eta logak barne-biltzen ditu.",
+       "prefs-help-watchlist-token2": "Hau da zure jarraipen zerrendako web jarioaren giltza sekretua.\nEzagutzen duen orok zure jarraipen zerrenda irakurtzeko aukera izango du, ez partekatu.\n[[Special:ResetTokens|Klik egin hemen berrezarri behar baduzu]]",
        "savedprefs": "Zure hobespenak gorde egin dira.",
        "savedrights": "{{GENDER:$1|$1}} erabiltzailearen taldeak gorde dira.",
        "timezonelegend": "Ordu-eremua:",
index 0babb62..72084d2 100644 (file)
        "recentchangesdays-max": "Enintään $1 {{PLURAL:$1|päivä|päivää}}",
        "recentchangescount": "Näytettävien muutoksien määrä oletuksena",
        "prefs-help-recentchangescount": "Tämä sisältää tuoreet muutokset, muutoshistoriat ja lokit.",
+       "prefs-help-watchlist-token2": "Tämä on salainen avain tarkkailulistasi verkkosyötteeseen.\nKuka tahansa, joka tietää sen voi lukea tarkkailulistaasi, joten älä paljasta sitä.\n[[Special:ResetTokens|Napsauta tästä, jos sinun pitää uudistaa se]].",
        "savedprefs": "Asetuksesi on tallennettu.",
        "savedrights": "Käyttäjän {{GENDER:$1|$1}} käyttäjäryhmät on tallennettu.",
        "timezonelegend": "Aikavyöhyke",
index 5946d8a..96fd1f9 100644 (file)
        "botpasswords-insert-failed": "Échec de l’ajout du nom de robot « $1 ». A-t-il déjà été ajouté ?",
        "botpasswords-update-failed": "Échec à la mise à jour du nom de robot « $1 ». A-t-il déjà été supprimé ?",
        "botpasswords-created-title": "Mot de passe de robots créé",
-       "botpasswords-created-body": "Le mot de passe pour le robot « $1 » de l'utilisateur « $2 » a été créé.",
+       "botpasswords-created-body": "Le mot de passe pour le robot « $1 » de l’{{GENDER:$2|utilisateur|utilisatrice}} « $2 » a été créé.",
        "botpasswords-updated-title": "Mot de passe de robots mis à jour",
-       "botpasswords-updated-body": "Le mot de passe pour le robot « $1 » de l'utilisateur « $2 » a été mis à jour.",
+       "botpasswords-updated-body": "Le mot de passe pour le robot « $1 » de l’{{GENDER:$2|utilisateur|utilisatrice}} « $2 » a été mis à jour.",
        "botpasswords-deleted-title": "Mot de passe de robots supprimé",
-       "botpasswords-deleted-body": "Le mot de passe pour le robot « $1 » de l'{{GENDER:$2|utilisateur|utilisatrice}} « $2 » a été supprimé.",
+       "botpasswords-deleted-body": "Le mot de passe pour le robot « $1 » de l’{{GENDER:$2|utilisateur|utilisatrice}} « $2 » a été supprimé.",
        "botpasswords-newpassword": "Le nouveau mot de passe pour se connecter à <strong>$1</strong> est <strong>$2</strong>. <em>Veuillez l’enregistrer pour y faire référence ultérieurement.</em><br> (Pour les anciens robots qui nécessitent que le nom fourni à la connexion soit le même que le nom d'utilisateur éventuel, vous pouvez aussi utiliser  <strong>$3</strong> comme nom d'utilisateur et <strong>$4</strong> comme mot de passe).",
        "botpasswords-no-provider": "BotPasswordsSessionProvider n’est pas disponible.",
        "botpasswords-restriction-failed": "Les restrictions de mot de passe de robots empêchent cette connexion.",
        "prefs-watchlist-edits": "Nombre maximum de modifications à afficher dans la liste de suivi :",
        "prefs-watchlist-edits-max": "Nombre maximum : 1000",
        "prefs-watchlist-token": "Jeton pour la liste de suivi :",
-       "prefs-watchlist-managetokens": "Gérer les jetons",
        "prefs-misc": "Préférences diverses",
        "prefs-resetpass": "Changer de mot de passe",
        "prefs-changeemail": "Changer ou supprimer l'adresse de courriel",
        "recentchangesdays-max": "(maximum $1 jour{{PLURAL:$1||s}})",
        "recentchangescount": "Nombre de modifications à afficher par défaut :",
        "prefs-help-recentchangescount": "Ceci inclut les modifications récentes, les pages d'historiques et les journaux.",
-       "prefs-help-tokenmanagement": "Vous pouvez voir et réinitialiser la clé secrète de votre compte qui peut accéder au flux Web de votre liste de suivi. Toute personne connaissant la clé pourra lire votre liste de suivi, alors ne la partagez pas.",
+       "prefs-help-watchlist-token2": "Voici la clé secrète du flux Web de votre liste de suivi.\nToute personne la connaissant pourra lire votre liste de suivi, ne la communiquez donc pas.\n[[Special:ResetTokens|Cliquez ici si vous devez la réinitialiser]].",
        "savedprefs": "Les préférences ont été sauvegardées.",
        "savedrights": "Les droits utilisateur de {{GENDER:$1|$1}} ont été enregistrés.",
        "timezonelegend": "Fuseau horaire :",
index 7a5eb2a..8191d86 100644 (file)
        "prefs-watchlist-edits": "Número máximo de edicións que mostrar na lista de vixilancia:",
        "prefs-watchlist-edits-max": "Número máximo: 1000",
        "prefs-watchlist-token": "Pase para a lista de vixilancia:",
-       "prefs-watchlist-managetokens": "Xestionar identificadores",
        "prefs-misc": "Preferencias varias",
        "prefs-resetpass": "Cambiar o contrasinal",
        "prefs-changeemail": "Cambiar ou eliminar o enderezo de correo electrónico",
        "recentchangesdays-max": "Máximo: $1 {{PLURAL:$1|día|días}}",
        "recentchangescount": "Número de edicións a mostrar por defecto:",
        "prefs-help-recentchangescount": "Isto inclúe os cambios recentes, os historiais e mais os rexistros.",
-       "prefs-help-tokenmanagement": "Podes ver e restaurar a chave secreta para a túa conta que pode acceder á fonte web da túa lista de vixiancia. Calquera que coñeza a chave poderá leer a túa lista de vixiancia.",
+       "prefs-help-watchlist-token2": "Esta é a clave secreta da fonte de novas web para a súa lista de vixilancia.\nCalquera persoa que a saiba poderá ler a súa lista de vixilancia; non comparta esta clave.\n[[Special:ResetTokens|Prema aquí se necesita restablecela]].",
        "savedprefs": "Gardáronse as súas preferencias.",
        "savedrights": "Gardáronse os grupos de {{GENDER:$1|usuario|usuaria}} de $1.",
        "timezonelegend": "Fuso horario:",
index 5946e5e..218a990 100644 (file)
        "prefs-watchlist-edits": "המספר המרבי של העריכות שמוצגות ברשימת המעקב:",
        "prefs-watchlist-edits-max": "לכל היותר: 1,000",
        "prefs-watchlist-token": "אסימון לרשימת המעקב:",
-       "prefs-watchlist-managetokens": "ניהול אסימונים",
        "prefs-misc": "שונות",
        "prefs-resetpass": "שינוי סיסמה",
        "prefs-changeemail": "שינוי או הסרת כתובת דוא\"ל",
        "recentchangesdays-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}",
        "recentchangescount": "מספר העריכות שמוצגות כברירת מחדל:",
        "prefs-help-recentchangescount": "ההעדפה הזאת כוללת את דף השינויים האחרונים, דפי היסטוריית גרסאות ויומנים.",
-       "prefs-help-tokenmanagement": "באפשרותך לצפות במפתח הסודי לחשבונך, שמאפשר גישה ל־Feed האינטרנטי של רשימת המעקב שלך, ולאפס אותו. כל מי שיודע את המפתח יכול לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.",
+       "prefs-help-watchlist-token2": "זהו המפתח הסודי להזנה של רשימת המעקב שלך.\nכל מי שיודע אותו יכול לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.\nבמקרה הצורך, אפשר [[Special:ResetTokens|לאפס את האסימון]].",
        "savedprefs": "ההעדפות שלך נשמרו.",
        "savedrights": "קבוצות {{GENDER:$1|המשתמש|המשתמשת}} של \"$1\" נשמרו.",
        "timezonelegend": "אזור זמן:",
index 63bccdd..0c8b570 100644 (file)
        "recentchangesdays-max": "(sab se jaada $1 {{PLURAL:$1|din|din}})",
        "recentchangescount": "Default se ketnaa badlao ke dekhae ke chaahi:",
        "prefs-help-recentchangescount": "Isme hai haali ke badlao, panna ke itihaas aur loga.",
+       "prefs-help-watchlist-token2": "Aap ke dhyan suchi ke web feed ke ii secret key hae.\nAur koi agar iske bare me jaane hae aap ke dhyan suchi ke parrhae sake hae, tab iske aur ki ke nai dena.\n[[Special:ResetTokens|Agar aap iske reset kare mangtaa hae tab hian pe click karo]].",
        "savedprefs": "Aap ke pasand ke save kar lewa gais hai.",
        "savedrights": "{{GENDER:$1|$1}} ke user group ke bachae lewa gais hai.",
        "timezonelegend": "Time ke zone:",
index d5430bb..f2bf779 100644 (file)
        "searchall": "sve",
        "showingresults": "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, počevši od '''$2'''.",
        "showingresultsinrange": "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, u rasponu od '''$2''' do '''$3'''.",
-       "search-showingresults": "{{PLURAL:$4|Rezultat <strong>$1</strong> od <strong>$3</strong>|Rezultati <strong>$1 - $2</strong> od <strong>$3</strong>}}",
+       "search-showingresults": "{{PLURAL:$4|Rezultat <strong>$1</strong> od <strong>$3</strong>|Rezultati <strong>$1  $2</strong> od <strong>$3</strong>}}",
        "search-nonefound": "Ne postoje rezultati koji se podudaraju s upitom.",
        "search-nonefound-thiswiki": "Nema rezultata na ovim stranicama koji se podudaraju s upitom.",
        "powersearch-legend": "Napredno pretraživanje",
        "prefs-watchlist-edits": "Broj uređivanja koji će se prikazati na proširenom popisu praćenja:",
        "prefs-watchlist-edits-max": "Maksimalni broj: 1000",
        "prefs-watchlist-token": "Tajni ključ popisa praćenja:",
-       "prefs-watchlist-managetokens": "Upravljaj tajnim ključevima",
        "prefs-misc": "Razno",
        "prefs-resetpass": "promijeni zaporku",
        "prefs-changeemail": "promijeni ili ukloni adresu e-pošte",
        "recentchangesdays-max": "(maksimalno $1 {{PLURAL:$1|dan|dana}})",
        "recentchangescount": "Zadani broj izmjena koje se prikazuju:",
        "prefs-help-recentchangescount": "Ovo uključuje nedavne promjene, stare izmjene, i evidencije.",
+       "prefs-help-watchlist-token2": "Ovo je tajni ključ prema sažetku Vašeg popisa praćenja. Svaki suradnik kojem je poznat, moći će čitati Vaš popis praćenih stranica. Ne dijelite ga ni s kim. [[Special:ResetTokens|Kliknite ovdje ako ga želite ponovo postaviti]].",
        "savedprefs": "Vaše postavke su sačuvane.",
        "savedrights": "Suradnička su prava {{GENDER:$1|suradnika $1|suradnice $1}} spremljena.",
        "timezonelegend": "Vremenska zona:",
index adbc2fd..5d1ad94 100644 (file)
        "recentchangesdays-max": "($1 {{PLURAL:$1|օրից|օրից}} ոչ ավել)",
        "recentchangescount": "Խմբագրումների թիվը ըստ լռության.",
        "prefs-help-recentchangescount": "Ներառում է վերջին փոփոխությունները, էջերի պատմությունը և տեղեկամատյանները։",
+       "prefs-help-watchlist-token2": "Սա գաղտնի բանալի է հսկականկի օգնույամբ նորություն ստանալու համար:\nՈվ որ գիտի այն կարող է կարդալ ձեր հսկացանկը, ուստի մի տարածեք այն:\nԵթե ձեզ պետք է զրոյացնել հսկացանկի կտրոնը, [[Special:ResetTokens| սեղմեք այստեղ]]:",
        "savedprefs": "Ձեր նախընտրությունները հիշված են։",
        "timezonelegend": "Ժամային գոտի.",
        "localtime": "Տեղական ժամանակ.",
index 8d3b0c8..3258ccc 100644 (file)
        "prefs-watchlist-edits": "Numero maxime de modificationes a monstrar in le observatorio:",
        "prefs-watchlist-edits-max": "Numero maxime: 1000",
        "prefs-watchlist-token": "Indicio pro le observatorio:",
-       "prefs-watchlist-managetokens": "Gerer indicios",
        "prefs-misc": "Misc",
        "prefs-resetpass": "Cambiar contrasigno",
        "prefs-changeemail": "Cambiar o remover adresse de e-mail",
        "recentchangesdays-max": "(non plus de $1 {{PLURAL:$1|die|dies}})",
        "recentchangescount": "Numero de modificationes a monstrar per predefinition:",
        "prefs-help-recentchangescount": "Isto include modificationes recente, historias de paginas, e registros.",
-       "prefs-help-tokenmanagement": "Tu pote vider e reinitialisar le clave secrete pro tu conto que pote acceder al aggregator Web de tu observatorio. Tote persona que cognosce le clave potera leger tu observatorio, dunque non divulga lo.",
+       "prefs-help-watchlist-token2": "Isto es le clave secrete pro le syndication web de tu observatorio.\nOmne persona qui lo cognosce pote leger tu observatorio, dunque, non divide lo.\n[[Special:ResetTokens|Clicca hic pro reinitialisar lo]].",
        "savedprefs": "Tu preferentias ha essite confirmate.",
        "savedrights": "Le gruppos de usator de {{GENDER:$1|$1}} ha essite salveguardate.",
        "timezonelegend": "Fuso horari:",
index 56ec36e..cb5cee0 100644 (file)
        "prefs-watchlist-edits": "Jumlah maksimum perubahan yang ditampilkan dalam daftar pantauan:",
        "prefs-watchlist-edits-max": "Nilai maksimum: 1000",
        "prefs-watchlist-token": "Token daftar pantauan:",
-       "prefs-watchlist-managetokens": "Kelola token",
        "prefs-misc": "Lain-lain",
        "prefs-resetpass": "Ganti kata sandi",
        "prefs-changeemail": "Ubah atau hapus alamat surel",
        "recentchangesdays-max": "(maksimum $1 {{PLURAL:$1|hari|hari}})",
        "recentchangescount": "Standar jumlah suntingan yang ditampilkan:",
        "prefs-help-recentchangescount": "Opsi ini berlaku untuk perubahan terbaru, versi terdahulu halaman, dan log.",
+       "prefs-help-watchlist-token2": "Ini adalah kunci rahasia (token) ke umpan web dari daftar pantauan Anda.\nSiapa saja yang tahu akan dapat melihat daftar pantauan Anda, jadi jangan dibagikan. Jika diperlukan\n[[Special:ResetTokens|Anda dapat mengatur ulang kunci tersebut]].",
        "savedprefs": "Preferensi Anda telah disimpan",
        "savedrights": "Kelompok hak pengguna {{GENDER:$1|$1}} telah disimpan.",
        "timezonelegend": "Zona waktu:",
index 11f70e6..b34511c 100644 (file)
        "delete-toobig": "Þessi síða hefur stóra breytingaskrá, yfir $1 {{PLURAL:$1|breyting|breytingar}}.\nÓheimilt er að eyða slíkum síðum til að valda ekki óæskilegum truflunum á {{SITENAME}}.",
        "delete-warning-toobig": "Þessi síða hefur stóra breytingaskrá, yfir $1 {{PLURAL:$1|breyting|breytingar}}.\nEyðing síðunnar gæti truflað vinnslu gangnasafns {{SITENAME}}; haltu áfram með varúð.",
        "deleteprotected": "Þú getur ekki eytt þessari síðu því hún hefur verið vernduð.",
+       "deleting-backlinks-warning": "<strong>Viðvörun:</strong> [[Kerfissíða:Síður sem tengjast hingað/{{FULLPAGENAME}}|Aðrar síður]] tengjast eða inniheldur efni af síðunni sem þú ætlar að eyða.",
        "rollback": "Taka aftur breytingar",
        "rollbacklink": "taka aftur",
        "rollbacklinkcount": "taka aftur $1 {{PLURAL:$1|breytingu|breytingar}}",
index 116c0a7..fa56bad 100644 (file)
        "prefs-watchlist-edits": "Numero massimo di modifiche da mostrare negli osservati speciali:",
        "prefs-watchlist-edits-max": "Numero massimo: 1000",
        "prefs-watchlist-token": "Token osservati speciali:",
-       "prefs-watchlist-managetokens": "Gestisci token",
        "prefs-misc": "Varie",
        "prefs-resetpass": "Cambia password",
        "prefs-changeemail": "Modifica o rimuovi indirizzo di posta elettronica",
        "recentchangesdays-max": "(massimo $1 {{PLURAL:$1|giorno|giorni}})",
        "recentchangescount": "Numero di modifiche da mostrare per default:",
        "prefs-help-recentchangescount": "Comprende ultime modifiche, cronologie e registri.",
-       "prefs-help-tokenmanagement": "Puoi visualizzare e reimpostare la chiave segreta per la tua utenza con cui puoi accedere al feed web dei tuoi osservati speciali. Chiunque conosce la chiave sarà in grado di leggere i tuoi osservati speciali, quindi non condividerla.",
+       "prefs-help-watchlist-token2": "Questa è la chiave segreta per il feed web dei tuoi osservati speciali.\nChiunque la conosce sarà in grado di leggere i tuoi osservati speciali, per cui non condividerla. [[Special:ResetTokens|Clicca qui se hai bisogno di reimpostarla]].",
        "savedprefs": "Le preferenze sono state salvate.",
        "savedrights": "I gruppi utente di {{GENDER:$1|$1}} sono stati salvati.",
        "timezonelegend": "Fuso orario:",
index 1b4c879..e8aa974 100644 (file)
        "parser-template-loop-warning": "テンプレートのループを検出しました: [[$1]]",
        "template-loop-category": "テンプレートがループしているページ",
        "template-loop-category-desc": "テンプレート自身が再帰的自己参照を行うなど、ループするテンプレートが含まれているページ。",
+       "template-loop-warning": "<strong>警告:</strong>このページで呼び出される [[:$1]] はテンプレートのループ(無限の再帰呼び出し)を引き起こします。",
        "parser-template-recursion-depth-warning": "テンプレートの再帰の深さ ($1) が上限を超えました",
        "language-converter-depth-warning": "言語変換機能の深さ ($1) が制限を超えました",
        "node-count-exceeded-category": "ノード数が制限を超えたページ",
        "prefs-watchlist-edits": "ウォッチリストの最大表示件数:",
        "prefs-watchlist-edits-max": "最大数: 1000",
        "prefs-watchlist-token": "ウォッチリストのトークン:",
-       "prefs-watchlist-managetokens": "トークンを管理",
        "prefs-misc": "その他",
        "prefs-resetpass": "パスワードを変更",
        "prefs-changeemail": "メールアドレスを変更または除去",
        "recentchangesdays-max": "(最大 $1 {{PLURAL:$1|日|日間}})",
        "recentchangescount": "既定で表示する件数:",
        "prefs-help-recentchangescount": "この設定は最近の更新、ページの履歴、および記録に適用されます。",
-       "prefs-help-tokenmanagement": "あなたのアカウントでウォッチリスト フィードの秘密のコードを参照したりリセットできます。このトークンを知っている人は誰でもあなたのウォッチリストを読めてしまうため、他の人に教えないでください。",
+       "prefs-help-watchlist-token2": "これはあなたのウォッチリスト フィードの秘密のコードです。\nこのトークンを知っている人は誰でもあなたのウォッチリストを読めてしまうため、他の人に教えないでください。\n[[Special:ResetTokens|トークンを再設定する必要がある場合はここをクリックしてください]]。",
        "savedprefs": "個人設定を保存しました。",
        "savedrights": "{{GENDER:$1|$1}}の利用者グループが保存されました。",
        "timezonelegend": "タイムゾーン:",
        "uploadstash-refresh": "ファイルの一覧を更新",
        "uploadstash-thumbnail": "サムネイルを表示",
        "uploadstash-exception": "スタッシュにアップロードできませんでした ($1): \"$2\"",
+       "uploadstash-zero-length": "ファイルのサイズがゼロです。",
        "invalid-chunk-offset": "無効なチャンクオフセット",
        "img-auth-accessdenied": "アクセスが拒否されました",
        "img-auth-nopathinfo": "PATH_INFO が見つかりません。\nサーバーが、この情報を渡すように構成されていません。\nCGI ベースであるため、img_auth に対応できない可能性もあります。\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization をご覧ください。",
index 1e1ce9b..7478269 100644 (file)
        "botpasswords-insert-failed": "\"$1\" 봇 이름을 추가하는데 실패했습니다. 이미 등록되지 않았는지 확인하기 바랍니다.",
        "botpasswords-update-failed": "\"$1\" 봇 이름을 갱신하는데 실패했습니다. 이미 삭제되지 않았는지 확인하기 바랍니다.",
        "botpasswords-created-title": "봇 비밀번호 생성",
-       "botpasswords-created-body": "사용자 \"$2\"의 \"$1\"라는 이름의 봇 비밀번호가 만들어졌습니다.",
+       "botpasswords-created-body": "{{GENDER:$2|사용자}} \"$2\"의 봇 이름 \"$1\"의 봇 비밀번호가 만들어졌습니다.",
        "botpasswords-updated-title": "봇 비밀번호 갱신",
-       "botpasswords-updated-body": "사용자 \"$2\"의 \"$1\"라는 이름의 봇 비밀번호가 업데이트되었습니다.",
+       "botpasswords-updated-body": "{{GENDER:$2|사용자}} \"$2\"의 봇 이름 \"$1\"의 봇 비밀번호가 업데이트되었습니다.",
        "botpasswords-deleted-title": "봇 비밀번호 제거",
-       "botpasswords-deleted-body": "사용자 \"$2\"의 \"$1\"라는 이름의 봇 비밀번호가 삭제되었습니다.",
+       "botpasswords-deleted-body": "{{GENDER:$2|사용자}} \"$2\"의 봇 이름 \"$1\"의 봇 비밀번호가 삭제되었습니다.",
        "botpasswords-newpassword": "<strong>$1</strong>님으로 로그인하기 위한 새 비밀번호는 <strong>$2</strong>입니다. <em>추후 참조를 위해 이것을 기록해두시기 바랍니다.</em> <br> (로그인 이름이 최종 사용자 이름과 동일해야 하는 오래된 봇의 경우, 사용자 이름으로 <strong>$3</strong>을(를), 비밀번호로 <strong>$4</strong>을(를) 사용할 수도 있습니다)",
        "botpasswords-no-provider": "'BotPasswordsSessionProvider'는 이용할 수 없습니다.",
        "botpasswords-restriction-failed": "봇 비밀번호 제한으로 인해 로그인할 수 없습니다.",
        "prefs-watchlist-edits": "주시문서 목록에서 볼 최대 변경사항의 수:",
        "prefs-watchlist-edits-max": "최대 개수: 1000",
        "prefs-watchlist-token": "주시문서 목록 토큰:",
-       "prefs-watchlist-managetokens": "토큰 관리",
        "prefs-misc": "기타",
        "prefs-resetpass": "비밀번호 바꾸기",
        "prefs-changeemail": "이메일 주소를 바꾸거나 제거하기",
        "recentchangesdays-max": "최대 $1{{PLURAL:$1|일}}",
        "recentchangescount": "기본으로 보여줄 편집 수:",
        "prefs-help-recentchangescount": "이 설정은 최근 바뀜, 문서 역사와 기록에 적용됩니다.",
-       "prefs-help-tokenmanagement": "주시문서 목록의 웹 피드에 접근할 수 있는 계정의 비밀 키를 확인하고 재설정할 수 있습니다. 이 키를 알고 있는 누구든지 주시문서 목록을 읽을 수 있으므로 공유하지 마십시오.",
+       "prefs-help-watchlist-token2": "내 주시문서 목록의 웹 피드의 비밀 키입니다.\n이 키를 알고 있는 사람은 내 주시문서 목록을 읽을 수 있으니 이 키를 공유하지 마세요.\n필요하다면 [[Special:ResetTokens|이 키를 재설정할 수 있습니다]].",
        "savedprefs": "설정을 저장했습니다.",
        "savedrights": "{{GENDER:$1|$1}}의 사용자 그룹이 저장되었습니다.",
        "timezonelegend": "시간대:",
        "rcfilters-group-results-by-page": "문서별로 묶음",
        "rcfilters-activefilters": "사용 중인 필터",
        "rcfilters-advancedfilters": "고급 필터",
-       "rcfilters-limit-title": "표시할 변경사항 수",
+       "rcfilters-limit-title": "표시할 결과 수",
+       "rcfilters-limit-and-date-label": "{{PLURAL:$1|변경사항|변경사항 $1개}}, $2",
+       "rcfilters-date-popup-title": "검색 시한",
        "rcfilters-days-title": "최근 날",
        "rcfilters-hours-title": "최근 시간",
        "rcfilters-days-show-days": "$1{{PLURAL:$1|일}}",
        "uploadstash-bad-path-bad-format": "\"$1\" 키는 적절한 포맷이 아닙니다.",
        "uploadstash-file-not-found-no-thumb": "섬네일을 가져오지 못했습니다.",
        "uploadstash-file-not-found-no-object": "섬네일을 위한 로컬 파일 객체를 만들 수 없습니다.",
-       "uploadstash-file-not-found-no-remote-thumb": "섬네일 가져오기를 실패했습니다: $1\nurl = $2",
+       "uploadstash-file-not-found-no-remote-thumb": "섬네일 가져오기를 실패했습니다: $1\nURL = $2",
        "uploadstash-file-not-found-missing-content-type": "content-type 헤더가 없습니다.",
        "uploadstash-file-not-found-not-exists": "경로를 찾을 수 없거나 단순 파일이 아닙니다.",
        "uploadstash-file-too-large": "$1 바이트를 초과하는 파일을 처리할 수 없습니다.",
        "changecontentmodel-emptymodels-title": "이용 가능한 콘텐츠 모델이 없음",
        "changecontentmodel-emptymodels-text": "[[:$1]]의 콘텐츠가 임의의 종류로 전환될 수 없습니다.",
        "log-name-contentmodel": "콘텐츠 모델 변경 기록",
-       "log-description-contentmodel": "이 페이지는 페이지의 콘텐츠 모델의 변경사항 및 기본값이 외의 콘텐츠 모델로 작성된 페이지들을 나열합니다.",
+       "log-description-contentmodel": "이 페이지는 페이지의 콘텐츠 모델의 변경사항 및 기본값 이외의 콘텐츠 모델로 작성된 페이지들을 나열합니다.",
        "logentry-contentmodel-new": "$1님이 비 기본값 \"$5\" 콘텐츠 모델을 사용해  $3 문서를 {{GENDER:$2|만들었습니다}}",
        "logentry-contentmodel-change": "$1님이 $3 문서의 콘텐츠 모델을 \"$4\"에서 \"$5\"(으)로 {{GENDER:$2|바꾸었습니다}}",
        "logentry-contentmodel-change-revertlink": "되돌리기",
        "import-mapping-namespace": "이름공간으로 들여오기:",
        "import-mapping-subpage": "이 문서의 하위문서로 들여오기:",
        "import-upload-filename": "파일 이름:",
+       "import-upload-username-prefix": "인터위키 접두어:",
        "import-comment": "요약:",
        "importtext": "원본 위키에서 [[Special:Export|내보내기]] 기능을 사용해 파일을 내려받으세요.\n그리고 당신의 컴퓨터에 저장해 둔 후 여기에 올려주세요.",
        "importstart": "문서를 가져오는 중...",
        "imported-log-entries": "{{PLURAL:$1|기록 항목}} $1개를 가져왔습니다.",
        "importfailed": "가져오기 실패: <nowiki>$1</nowiki>",
        "importunknownsource": "알 수 없는 가져오기 원본 유형",
+       "importnoprefix": "인터위키 접두어가 지정되지 않았습니다",
        "importcantopen": "파일을 열 수 없습니다.",
        "importbadinterwiki": "인터위키 링크가 잘못되었습니다",
        "importsuccess": "가져오기 완료!",
        "autosumm-blank": "문서를 비움",
        "autosumm-replace": "내용을 \"$1\"(으)로 바꿈",
        "autoredircomment": "[[$1]] 문서로 넘겨주기",
+       "autosumm-removed-redirect": "[[$1]]에 대한 넘겨주기를 제거함",
+       "autosumm-changed-redirect-target": "넘겨주기 대상을 [[$1]]에서 [[$2]](으)로 변경했습니다",
        "autosumm-new": "새 문서: $1",
        "autosumm-newblank": "빈 문서를 만듦",
        "size-bytes": "$1 {{PLURAL:$1|바이트}}",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|태그}}]]: $2)",
        "tag-mw-contentmodelchange": "콘텐츠 모델 변경",
        "tag-mw-contentmodelchange-description": "페이지의 [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel 콘텐츠 모델을 변경하는] 편집",
+       "tag-mw-new-redirect": "새 넘겨주기",
+       "tag-mw-new-redirect-description": "새로운 넘겨주기를 만들거나 문서를 넘겨주기로 변경하는 편집",
+       "tag-mw-removed-redirect": "넘겨주기를 제거함",
+       "tag-mw-removed-redirect-description": "기존의 넘겨주기를 넘겨주기가 아닌 문서로 변경하는 편집",
+       "tag-mw-changed-redirect-target": "넘겨주기 대상을 변경함",
+       "tag-mw-changed-redirect-target-description": "넘겨주기 대상을 변경하는 편집",
+       "tag-mw-blank": "비우기",
+       "tag-mw-blank-description": "문서를 비우는 편집",
+       "tag-mw-replace": "대체됨",
+       "tag-mw-replace-description": "문서 내용 중 90% 보다 많은 내용을 제거한 편집",
+       "tag-mw-rollback": "되돌리기",
+       "tag-mw-rollback-description": "되돌리기 링크를 사용하여 이전 편집을 되돌리는 편집",
        "tags-title": "태그",
        "tags-intro": "이 문서는 소프트웨어에서 편집에 대해 표시하는 태그와 그 의미를 설명하는 목록입니다.",
        "tags-tag": "태그 이름",
index a2d861a..adb240b 100644 (file)
        "recentchangesdays-max": "(Maximal $1 {{PLURAL:$1|Dag|Deeg}})",
        "recentchangescount": "Zuel vun den Ännerungen déi als Standard gewise ginn:",
        "prefs-help-recentchangescount": "Inklusiv Rezent Ännerungen, Versiounshistoriquen a Logbicher.",
+       "prefs-help-watchlist-token2": "Dëst ass de geheime Schlëssel fir de Webfeed vun Ärer Iwwerwaachungslëscht. Jiddwereen deen e kennt kann Är Iwwerwaachungslëscht liesen, dofir sollt Dir en net weider ginn. [[Special:ResetTokens|Klickt hei wann Dir en zrécksetze musst]].",
        "savedprefs": "Är Astellunge goufe gespäichert.",
        "savedrights": "D'Benotzergruppe vum {{GENDER:$1|$1}} goufe gespäichert.",
        "timezonelegend": "Zäitzon:",
index 64fa507..dcecadc 100644 (file)
        "recentchangesdays-max": "Ne vairāk kā $1 {{PLURAL:$1|dienas|diena|dienas}}",
        "recentchangescount": "Izmaiņu skaits, kuru rāda pēc noklusējuma:",
        "prefs-help-recentchangescount": "Šis parametrs attiecas uz pēdējo izmaiņu un hronoloģijas lapām, kā arī uz sistēmas žurnāliem",
+       "prefs-help-watchlist-token2": "Šī ir slepena atslēga tavam uzraugāmo lapu sarakstam.\nIkvienam, kas to zinās, būs iespēja apskatīt tavu uzraugāmo lapu sarakstu, tāpēc nedalies ar to.\n[[Special:ResetTokens|Spied šeit, lai to atjaunotu]].",
        "savedprefs": "Jūsu izvēles ir saglabātas.",
        "timezonelegend": "Laika josla:",
        "localtime": "Vietējais laiks:",
index 00d77fc..b111922 100644 (file)
        "botpasswords-insert-failed": "Не успеав да го додадам името на ботот „$1“. Да не е веќе додадено?",
        "botpasswords-update-failed": "Не успеав да го подновам името на ботот „$1“. Да не е избришано?",
        "botpasswords-created-title": "Лозинка на ботот е создадена",
-       "botpasswords-created-body": "Лозинката на ботот со име „$1“ на корисникот „$2“ е создадена.",
+       "botpasswords-created-body": "Лозинката на ботот со име „$1“ на {{GENDER:$2|корисникот}} „$2“ е создадена.",
        "botpasswords-updated-title": "Лозинката на ботот е изменета",
-       "botpasswords-updated-body": "Лозинката на ботот со име „$1“ на корисникот „$2“ е изменета.",
+       "botpasswords-updated-body": "Лозинката на ботот со име „$1“ на {{GENDER:$2|корисникот}} „$2“ е изменета.",
        "botpasswords-deleted-title": "Лозинка на ботот е избришана",
-       "botpasswords-deleted-body": "Лозинката на ботот со име „$1“ на корисникот „$2“ е избришана.",
+       "botpasswords-deleted-body": "Лозинката на ботот со име „$1“ на {{GENDER:$2|корисникот}} „$2“ е избришана.",
        "botpasswords-newpassword": "Новата лозинка за најава <strong>$1</strong> е <strong>$2</strong>. <em>Запишете си ја за во иднина.</em> <br> (За стари ботови што бараат најавното име да биде исто како подоцнежното корисничко име, можете да ги употребите и <strong>$3</strong> како корисничко име и <strong>$4</strong> како лозинка.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider  е недостапен.",
        "botpasswords-restriction-failed": "Не можете да се најавите поради ограничувањата за лозинки на ботови.",
        "prefs-watchlist-edits": "Највеќе прикажани промени во набљудувањата:",
        "prefs-watchlist-edits-max": "Највеќе: 1000",
        "prefs-watchlist-token": "Шифра на набљудувањата:",
-       "prefs-watchlist-managetokens": "Управување со шифри",
        "prefs-misc": "Други нагодувања",
        "prefs-resetpass": "Смени лозинка",
        "prefs-changeemail": "Смени или отстрани е-пошта",
        "recentchangesdays-max": "(највеќе {{PLURAL:$1|еден ден|$1 дена}})",
        "recentchangescount": "Број на уредувања кои ќе се прикажуваат по основно:",
        "prefs-help-recentchangescount": "Подразбира скорешни промени, истории на страници и дневници.",
-       "prefs-help-tokenmanagement": "Можете да го погледате и одново зададете тајниот клуч з авашата сметка со кој се пристапува до семрежниот тековник на вашите набљудувани. Секој еден што го знае клучот може да ви ги ги чита набљудуваните — затоа не го кажувајте никому.",
+       "prefs-help-watchlist-token2": "Ова е тајна шифра за тековникот на вашите набљудувања.\nСекој што ја знае ќе може да ја чита, па затоа ви препорачуваме да не ја кажувате никому.\nАко е потребно, [[Special:ResetTokens|можете да ставите нова]].",
        "savedprefs": "Вашите нагодувања се зачувани.",
        "savedrights": "Корисничките групи на {{GENDER:$1|$1}} се зачувани.",
        "timezonelegend": "Часовен појас:",
index 2a97585..1a28f2f 100644 (file)
        "recentchangesdays-max": "जास्तीतजास्त $1 {{PLURAL:$1|दिवस}}",
        "recentchangescount": "अविचलरित्या दाखवावयाच्या संपादनांची संख्या:",
        "prefs-help-recentchangescount": "यात नुकतेच झालेले बदल, पानांचे इतिहास व नोंदी या गोष्टी असतात.",
+       "prefs-help-watchlist-token2": "ही आपल्या निरिक्षणसूचीच्या 'वेब फिड'ची गुप्त चाबी आहे.ज्या कोणास त्याची माहिती होईल तो आपली निरिक्षणसूची बघू शकेल,म्हणुन कोणास यात सहभागी करून घेउ नका.[[Special:ResetTokens|पुनर्स्थापनाची आपणास गरज असल्यास येथे टिचकी द्या]].",
        "savedprefs": "तुमच्या पसंती जतन केल्या आहेत.",
        "savedrights": "{{GENDER:$1|$1}}चे सदस्याधिकार जतन केले आहेत.",
        "timezonelegend": "वेळक्षेत्र",
index 52639ec..44ae5b9 100644 (file)
        "recentchangesdays-max": "(had $1 hari)",
        "recentchangescount": "Bilangan suntingan yang dipaparkan mengikut tetapan asali:",
        "prefs-help-recentchangescount": "Ini termasuklah perubahan terkini, sejarah laman dan log.",
+       "prefs-help-watchlist-token2": "Inilah kunci rahsia kepada suapan web senarai pantau anda.\nSesiapa yang mengetahuinya akan boleh membaca senarai pantau anda, jadi jangan kongsinya.\n[[Special:ResetTokens|Klik di sini jika anda perlu mengesetnya semula]].",
        "savedprefs": "Keutamaan anda disimpan.",
        "savedrights": "Hak pengguna {{GENDER:$1|$1}} telah disimpan.",
        "timezonelegend": "Zon waktu:",
index 6a250df..da11043 100644 (file)
        "recentchangesdays-max": "Mássimo: $1 {{PLURAL:$1|die|dies}}",
        "recentchangescount": "Númaro d'eidiçones a apersentar por omisson:",
        "prefs-help-recentchangescount": "Anclui mudanças recentes, stórico de páiginas i registros.",
+       "prefs-help-watchlist-token2": "Esta ye la chabe secreta pa l ''feed'' RSS de la sue lhista de páiginas begiadas.\nQualquiera pessona que coinça la chabe será capaç de lher la sue lhista de páiginas begiadas, por esso nun la dibulgue.\n[[Special:ResetTokens|Clique eiqui pa redefenir eilha]].",
        "timezonelegend": "Fuso hourário:",
        "localtime": "Hora lhocal:",
        "timezoneuseoffset": "Outro (specificar defréncia)",
index bf3f233..ecd9770 100644 (file)
        "prefs-watchlist-edits": "Maksimalt antall redigeringer som skal vises i overvåkningslisten:",
        "prefs-watchlist-edits-max": "Maksimalt antall: 1000",
        "prefs-watchlist-token": "Nøkkel for overvåkningsliste",
-       "prefs-watchlist-managetokens": "Behandle nøkler",
        "prefs-misc": "Diverse",
        "prefs-resetpass": "Endre passord",
        "prefs-changeemail": "Endre eller fjerne e-postadresse",
        "recentchangesdays-max": "Maks $1 {{PLURAL:$1|dag|dager}}",
        "recentchangescount": "Antall redigeringer som skal vises som standard:",
        "prefs-help-recentchangescount": "Dette inkluderer nylige endringer, sidehistorikk og logger.",
-       "prefs-help-tokenmanagement": "Du kan se og resette den hemmelige nøkkelen for kontoen din som kan få tilgang til matingen med overvåkningslisten din. Alle som har nøkkelen vil kunne lese overvåkningslisten din, så ikke del den.",
+       "prefs-help-watchlist-token2": "Dette er den hemmelige nøkkelen til webmatingen for din overvåkningsliste.\nEnhver som kjenner nøkkelen vil kunne lese din overvåkningsliste, så ikke vis den til andre.\n[[Special:ResetTokens|Klikk her om du trenger å nullstille nøkkelen]].",
        "savedprefs": "Innstillingene ble lagret.",
        "savedrights": "Brukergruppene til {{GENDER:$1|$1}} har blitt lagret.",
        "timezonelegend": "Tidssone:",
        "rcfilters-group-results-by-page": "Grupper resultater etter side",
        "rcfilters-activefilters": "Aktive filtre",
        "rcfilters-advancedfilters": "Avanserte filtre",
-       "rcfilters-limit-title": "Endringer som skal vises",
+       "rcfilters-limit-title": "Antall resultater som skal vises",
+       "rcfilters-limit-and-date-label": "{{PLURAL:$1|endring|$1 endringer}}, $2",
+       "rcfilters-date-popup-title": "Tidsperiode å søke i",
        "rcfilters-days-title": "De siste dagene",
        "rcfilters-hours-title": "De siste timene",
        "rcfilters-days-show-days": "{{PLURAL:$1|Én dag|$1 dager}}",
        "import-mapping-namespace": "Importer til navnerom:",
        "import-mapping-subpage": "Importer som underside til den følgende siden:",
        "import-upload-filename": "Filnavn:",
+       "import-upload-username-prefix": "Interwikiprefiks:",
+       "import-assign-known-users": "Tildel redigeringer til lokale brukere når brukernavnet eksisterer lokalt",
        "import-comment": "Kommentar:",
        "importtext": "Importer filen fra kildewikien med [[Special:Export|eksporteringsverktøyet]].\nLagre den på din egen datamaskin og last den opp her.",
        "importstart": "Importerer sider&nbsp;…",
        "imported-log-entries": "Importerte $1 {{PLURAL:$1|loggoppføring|loggoppføringer}}.",
        "importfailed": "Import mislyktes: $1",
        "importunknownsource": "Ukjent importkildetype",
+       "importnoprefix": "Intet interwikiprefiks oppgitt",
        "importcantopen": "Kunne ikke åpne importfil",
        "importbadinterwiki": "Ugyldig interwikilenke",
        "importsuccess": "Import ferdig!",
        "autosumm-blank": "Tømmer siden",
        "autosumm-replace": "Erstatter siden med «$1»",
        "autoredircomment": "Omdirigerer til [[$1]]",
+       "autosumm-removed-redirect": "Fjernet omdirigering til [[$1]]",
+       "autosumm-changed-redirect-target": "Endret omdirigeringsmål fra [[$1]] til [[$2]]",
        "autosumm-new": "Ny side: $1",
        "autosumm-newblank": "Opprettet tom side",
        "size-bytes": "$1 {{PLURAL:$1|byte}}",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tagg|Tagger}}]]: $2)",
        "tag-mw-contentmodelchange": "innholdsmodellendring",
        "tag-mw-contentmodelchange-description": "Redigeringer som [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel endrer innholdsmodellen] til en side",
+       "tag-mw-new-redirect": "Ny omdirigering",
+       "tag-mw-new-redirect-description": "Redigeringer som oppretter nye omdirigeringer eller gjør om sider til omdirigeringssider",
+       "tag-mw-removed-redirect": "Fjernet omdirigering",
+       "tag-mw-removed-redirect-description": "Redigeringer som endrer en eksisterende omdirigering til en ikke-omdirigering",
+       "tag-mw-changed-redirect-target": "Omdirigeringsmål endret",
+       "tag-mw-changed-redirect-target-description": "Redigeringer som endrer målet til en omdirigering",
+       "tag-mw-blank": "Tømming",
+       "tag-mw-blank-description": "Redigeringer som tømmer en side",
+       "tag-mw-replace": "Erstattet",
+       "tag-mw-replace-description": "Redigeringer som fjerner mer enn 90 % av innholdet på en side",
+       "tag-mw-rollback": "Tilbakestilling",
+       "tag-mw-rollback-description": "Redigeringer som tilbakestiller redigeringer med tilbakestillingsknappen",
        "tags-title": "Tagger",
        "tags-intro": "Denne siden lister opp taggene programvaren kan merke en endring med, og hva de betyr.",
        "tags-tag": "Taggnavn",
index af8796e..ea26186 100644 (file)
@@ -63,7 +63,6 @@
        "underline-never": "Nooit",
        "underline-default": "Standard in joew vormgeving of webkieker",
        "editfont-style": "Lettertype veur de tekste t bewarkingsveld:",
-       "editfont-default": "Standardwebkieker",
        "editfont-monospace": "Lettertype waorvan t tekenbreedte vaste steet",
        "editfont-sansserif": "Sans-seriflettertype",
        "editfont-serif": "Seriflettertype",
        "explainconflict": "'''NB:''' n aander hef disse zied ewiezigd naoda'j an disse bewarking begunnen bin.\nt Bovenste bewarkingsveld löt de zied zien zo as t noen is.\nDaoronder (bie \"Wiezigingen\") staon de verschillen tussen joew versie en de op-esleugen zied.\nHelemaole onderan (bie \"Joew tekste\") steet nog n bewarkingsveld mit joew versie.\nJe zullen je eigen wiezigingen in de nieje tekste in mutten passen.\n'''Allinnig''' de tekste in t bovenste veld wörden beweerd a'j noen kiezen veur \"$1\".",
        "yourtext": "Joew tekste",
        "storedversion": "Op-esleugen versie",
-       "nonunicodebrowser": "'''Waorschuwing: joew webkieker kan niet goed mit unikode uut de voten, schakel over op n aandere webkieker um de wiezigingen an te brengen!'''",
        "editingold": "'''Waorschuwing: je bewarken noen n ouwe versie van disse zied. A'j de wiezigingen opslaon, bi'j alle niejere versies kwiet.'''",
        "yourdiff": "Wiezigingen",
        "copyrightwarning": "Waort je dat alle biedragen an {{SITENAME}} vrie-egeven mutten wörden onder de $2 (zie $1 veur meer informasie).\nA'j niet willen dat joew tekste deur aander volk bewarkt en verspreid kan wörden, slao de tekste dan niet op.<br />\nDeur op \"Zied opslaon\" te klikken beleuf je ons da'j disse tekste zelf eschreven hebben, of over-eneumen hebben uut n vrieje, openbaore bron.<br />\n'''Gebruuk gien spul mit auteursrechten, a'j daor gien toestemming veur hebben!'''",
        "permissionserrorstext": "Je maggen of kunnen dit niet doon. De {{PLURAL:$1|reden|redens}} daorveur {{PLURAL:$1|is|bin}}:",
        "permissionserrorstext-withaction": "Je hebben gien recht um $2, mit de volgende {{PLURAL:$1|reden|redens}}:",
        "recreate-moveddeleted-warn": "'''Waorschuwing: je maken n zied an die eerder al vortedaon is.'''\n\nBedenk eerst of t neudig is um disse zied veerder te bewarken.\nVeur de dudelikheid steet hieronder  t vortdologboek en t herneumlogboek veur disse zied:",
-       "moveddeleted-notice": "Disse zied is vortedaon.\nHieronder steet de informasie uut t vortdologboek en t herneumlogboek.",
+       "moveddeleted-notice": "Disse zied is vortedaon.\nHieronder steet de informasie uut t vortdologboek, t beveiligingslogboek, en t herneumlogboek.",
        "log-fulllog": "t Hele logboek bekieken",
        "edit-hook-aborted": "De bewarking is aofebreuken deur n hook.\nDer is gien reden op-egeven.",
        "edit-gone-missing": "De zied kon niet bie-ewörken wörden.\nt Lik derop as of t vortedaon is.",
        "searchprofile-advanced-tooltip": "Zeuken in de an-egeven naamruumtes",
        "search-result-size": "$1 ({{PLURAL:$2|1 woord|$2 woorden}})",
        "search-result-category-size": "{{PLURAL:$1|1 kategorielid|$1 kategorielejen}} ({{PLURAL:$2|1 onderkategorie|$2 onderkategorieën}}, {{PLURAL:$3|1 bestaand|$3 bestaanden}})",
-       "search-redirect": "(deurverwiezing $1)",
+       "search-redirect": "(deurverwiezing vanaof $1)",
        "search-section": "(onderwarp $1)",
        "search-suggest": "Bedoelden je: $1",
        "search-interwiki-caption": "Zusterprojekten",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zie oek de [[Special:NewPages|lieste mit nieje ziejen]])",
        "recentchanges-submit": "Bekiek",
+       "rcfilters-legend-heading": "<strong>Lieste mit aofkortingen:</strong>",
+       "rcfilters-group-results-by-page": "Resultaoten per zied groeperen",
        "rcfilters-activefilters": "Aktieve filters",
+       "rcfilters-days-title": "De leste dagen",
+       "rcfilters-hours-title": "De leste uren",
        "rcfilters-quickfilters": "Op-esleugen filterinstellingen",
        "rcfilters-quickfilters-placeholder-title": "Nog gien verwiezingen op-esleugen",
        "rcfilters-quickfilters-placeholder-description": "Um joew filterinstellingen op te slaon en t laoter te gebruken, klik op t bladwiezerikoon onderan bie \"Aktieve filter\".",
        "rcfilters-filtergroup-lastRevision": "Leste versie",
        "rcfilters-filter-lastrevision-label": "Leste versie",
        "rcfilters-filter-previousrevision-label": "Eerdere versies",
+       "rcfilters-liveupdates-button": "Rechtstreekse aktualisering",
+       "rcfilters-liveupdates-button-title-off": "Nieje wiezigingen voortdalik laoten zien",
        "rcnotefrom": "Dit bin de wiezigingen sinds <strong>$2</strong> (maximum van <strong>$1</strong> wiezigingen).",
        "rclistfrom": "Bekiek wiezigingen vanaof $3 $2",
        "rcshowhideminor": "$1 kleine wiezigingen",
        "wlheader-enotif": "Je kriegen bericht per netpost",
        "wlheader-showupdated": "Ziejen die sinds joew leste bezeuk bie-ewörken bin staon '''vet'''.",
        "wlnote": "Hieronder {{PLURAL:$1|steet de leste wieziging|staon de leste $1 wiezigingen}} in {{PLURAL:$2|t aofgeleupen ure|de leste $2 uren}} vanaof $3 um $4.",
-       "wlshowlast": "Laot de veurbieje $1 uur $2 dagen  zien",
+       "wlshowlast": "Laot de veurbieje $1 uur $2 dagen zien",
        "watchlist-submit": "Bekiek",
        "wlshowhideminor": "kleine bewarkingen",
        "watchlist-options": "Opsies veur de volglieste",
        "block": "Gebruker blokkeren",
        "unblock": "Gebruker deblokkeren",
        "blockip": "Gebruker blokkeren",
-       "blockip-legend": "n Gebruker of IP-adres blokkeren",
        "blockiptext": "Gebruuk dit formulier um n IP-adres of gebrukersnaam te blokkeren. \nt Is bedoeld um vandalisme te veurkoemen en mut akkederen mit t [[{{MediaWiki:Policy-url}}|beleid]]. \nGeef hieronder n reden op (bieveurbeeld op welke ziejen de vandalisme epleegd is).",
        "ipaddressorusername": "IP-adres of gebrukersnaam",
        "ipbexpiry": "Verlöp nao",
        "fileduplicatesearch-noresults": "Der is gien bestaand mit de naam \"$1\" evunnen.",
        "specialpages": "Spesiale ziejen",
        "specialpages-note-top": "Legenda",
-       "specialpages-note": "* Normale spesiale ziejen.\n* <span class=\"mw-specialpagerestricted\">Beparkt toegankelike spesiale ziejen.</span>",
        "specialpages-group-maintenance": "Onderhoudsliesten",
        "specialpages-group-other": "Aandere spesiale ziejen",
        "specialpages-group-login": "Anmelden / inschrieven",
        "compare-invalid-title": "De titel die'j op-egeven hebben, is ongeldig.",
        "compare-title-not-exists": "De titel die'j op-egeven hebben, besteet niet.",
        "compare-revision-not-exists": "De versie die'j op-egeven hebben, besteet niet.",
+       "diff-form": "een '''formelier'''",
        "dberr-problems": "t Spiet ons, mer disse webstee hef op t moment wat techniese problemen.",
        "dberr-again": "Wach n paor minuten en probeer t daornao opniej.",
        "dberr-info": "(Kan gien verbiending maken mit de databankeserver: $1)",
        "feedback-subject": "Onderwarp:",
        "feedback-submit": "Opslaon",
        "feedback-thanks": "Bedankt! Joew kommentaar is op de zied \"[$2 $1]\" ezet.",
-       "searchsuggest-search": "Zeuken / zuken / zuiken",
+       "searchsuggest-search": "{{SITENAME}} deurzeuken",
        "searchsuggest-containing": "bevat...",
        "api-error-badtoken": "Interne fout: t token klopt niet.",
        "api-error-emptypage": "Je maggen gien lege nieje ziejen anmaken.",
index dd96221..68cfcae 100644 (file)
        "botpasswords-insert-failed": "Toevoegen van botnaam \"$1\" mislukt. Is deze misschien al toegevoegd?",
        "botpasswords-update-failed": "Bijwerken van botnaam \"$1\" mislukt. Is deze misschien verwijderd?",
        "botpasswords-created-title": "Botwachtwoord aangemaakt",
-       "botpasswords-created-body": "Het botwachtwoord voor botnaam \"$1\" van gebruiker \"$2\" is gemaakt.",
+       "botpasswords-created-body": "Het botwachtwoord voor de botnaam \"$1\" van {{GENDER:$2|gebruiker}} \"$2\" is aangemaakt.",
        "botpasswords-updated-title": "Botwachtwoord bijgewerkt",
-       "botpasswords-updated-body": "Het botwachtwoord voor de bot \"$1\" van gebruiker \"$2\" is succesvol bijgewerkt.",
+       "botpasswords-updated-body": "Het botwachtwoord voor de botnaam \"$1\" van {{GENDER:$2|gebruiker}} \"$2\" is bijgewerkt.",
        "botpasswords-deleted-title": "Botwachtwoord verwijderd",
-       "botpasswords-deleted-body": "Het botwachtwoord voor de bot \"$1\" van gebruiker \"$2\" is verwijderd.",
+       "botpasswords-deleted-body": "Het botwachtwoord voor de botnaam \"$1\" van {{GENDER:$2|gebruiker}} \"$2\" is verwijderd.",
        "botpasswords-newpassword": "Het nieuwe wachtwoord om aan te melden met <strong>$1</strong> is <strong>$2</strong>. <em>Bewaar dit goed voor toekomstig gebruik.</em> <br> (Voor oude robots die vereisen dat de loginnaam hetzelfde is als de eventuele gebruikersnaam, kan ook <strong>$3</strong> als gebruikersnaam en <strong>$4</strong> als wachtwoord worden gebruikt.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider is niet beschikbaar.",
        "botpasswords-restriction-failed": "Botwachtwoordbeperkingen maken het aanmelden onmogelijk.",
        "prefs-watchlist-edits": "Maximaal aantal bewerkingen in de volglijst:",
        "prefs-watchlist-edits-max": "Maximale aantal: 1000",
        "prefs-watchlist-token": "Volglijstsleutel:",
-       "prefs-watchlist-managetokens": "Token beheren",
        "prefs-misc": "Diversen",
        "prefs-resetpass": "Wachtwoord wijzigen",
        "prefs-changeemail": "E-mailadres wijzigen of verwijderen",
        "recentchangesdays-max": "(maximaal $1 {{PLURAL:$1|dag|dagen}})",
        "recentchangescount": "Standaard aantal weer te geven bewerkingen:",
        "prefs-help-recentchangescount": "Dit geldt voor recente wijzigingen, paginageschiedenis en logboekpagina's.",
-       "prefs-help-tokenmanagement": "U kunt uw geheime sleutel voor uw account bekijken en resetten. De geheime sleutel biedt toegang tot de webfeed van uw volglijst. Iedereen die het token kent, kan uw volglijst bekijken, dus deel dit token niet.",
+       "prefs-help-watchlist-token2": "Dit is de geheime sleutel voor de webfeed van uw volglijst.\nIedereen die het token kent, kan uw volglijst bekijken, dus deel dit token niet.\nU kunt de [[Special:ResetTokens|tokens opnieuw instellen]] als u dat wilt.",
        "savedprefs": "Uw voorkeuren zijn opgeslagen.",
        "savedrights": "De gebruikergroepen van {{GENDER:$1|$1}} zijn opgeslagen.",
        "timezonelegend": "Tijdzone:",
        "rcfilters-view-tags-tooltip": "Filter resultaten door middel van bewerkingslabels",
        "rcfilters-view-return-to-default-tooltip": "Terug naar het filterhoofdmenu",
        "rcfilters-view-tags-help-icon-tooltip": "Meer informatie over gelabelde bewerkingen",
-       "rcfilters-liveupdates-button": "Liveupdates",
+       "rcfilters-liveupdates-button": "Live-updates",
        "rcfilters-liveupdates-button-title-on": "Liveupdates uitschakelen",
        "rcfilters-liveupdates-button-title-off": "Toon nieuwe wijzigingen op het moment dat ze gebeuren",
        "rcfilters-watchlist-markseen-button": "Alle wijzigingen markeren als bezocht",
        "pageswithprop-text": "Op deze pagina worden pagina's weergegeven met een bepaalde pagina-eigenschap.",
        "pageswithprop-prop": "Naam van de eigenschap:",
        "pageswithprop-reverse": "Sorteren met omgekeerde volgorde",
-       "pageswithprop-sortbyvalue": "Sorteren op eigenschapwaarde",
+       "pageswithprop-sortbyvalue": "Sorteren op eigenschapswaarde",
        "pageswithprop-submit": "OK",
        "pageswithprop-prophidden-long": "lange teksteigenschapswaarde verborgen ($1)",
        "pageswithprop-prophidden-binary": "binaire eigenschapswaarde verborgen ($1)",
index 6d973e3..cfe95f2 100644 (file)
        "prefs-watchlist-edits": "Liczba edycji pokazywanych w liście obserwowanych:",
        "prefs-watchlist-edits-max": "Maksymalnie 1000",
        "prefs-watchlist-token": "Identyfikator listy obserwowanych:",
-       "prefs-watchlist-managetokens": "Zarządzaj tokenami",
        "prefs-misc": "Ustawienia różne",
        "prefs-resetpass": "Zmień hasło",
        "prefs-changeemail": "Zmień lub usuń adres e‐mail",
        "recentchangesdays-max": "(maksymalnie $1 {{PLURAL:$1|dzień|dni}})",
        "recentchangescount": "Domyślna liczba wyświetlanych edycji:",
        "prefs-help-recentchangescount": "Uwzględnia ostatnie zmiany, historię stron i rejestry.",
-       "prefs-help-tokenmanagement": "Możesz zobaczyć i zresetować sekretny klucz przypisany do konta, służący do uzyskania dostępu do kanału internetowego zmian w obserwowanych przez ciebie stronach. Każdy, kto go zna, będzie mógł je zobaczyć, więc nie udostępniaj go.",
+       "prefs-help-watchlist-token2": "To jest tajny klucz umożliwiający dostęp do kanału internetowego zmian w obserwowanych przez ciebie stronach.\nKażdy, kto go zna, będzie mógł je zobaczyć, więc zachowaj go dla siebie.\n[[Special:ResetTokens|Kliknij tu, jeśli chcesz go zresetować]].",
        "savedprefs": "Twoje preferencje zostały zapisane.",
        "savedrights": "Zapisano grupy {{GENDER:$1|użytkownika $1|użytkowniczki $1}}.",
        "timezonelegend": "Strefa czasowa:",
index 1313f7a..bfa021d 100644 (file)
        "rcfilters-activefilters": "فعال فيلټرونه",
        "rcfilters-advancedfilters": "پرمختللي فلټرونه",
        "rcfilters-limit-title": "د ښودلو لپاره بدلونونه",
-       "rcfilters-limit-shownum": "آخري ښودنه {{PLURAL:$1|changes|$1 بدلونونه}}",
        "rcfilters-days-title": "وروستي ورځي",
        "rcfilters-hours-title": "وروستي ساعتونه",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|day|ورځې}}",
        "pageinfo-recent-authors": "د بېلابېلو ليکوالو وروستنی شمېر",
        "pageinfo-magic-words": "کوډگريز {{PLURAL:$1|ويي|وييونه}} ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1|پټه وېشنيزه|پټې وېشنيزې}} ($1)",
-       "pageinfo-templates": "ترجمه {{PLURAL:$1|کينډۍ|Template}} ($1)",
+       "pageinfo-templates": "ترجمه {{PLURAL:$1|کينډۍ|کينډۍ}} ($1)",
        "pageinfo-toolboxlink": "د مخ مالومات",
        "pageinfo-redirectsto": "مخ گرځونې و",
        "pageinfo-redirectsto-info": "مالومات",
index d47782d..b7d92e0 100644 (file)
        "prefs-watchlist-edits": "Número máximo de alterações para mostrar na lista de observação:",
        "prefs-watchlist-edits-max": "Número máximo: 1000",
        "prefs-watchlist-token": "Senha para a lista de páginas vigiadas:",
-       "prefs-watchlist-managetokens": "Gerenciar chaves",
        "prefs-misc": "Diversos",
        "prefs-resetpass": "Alterar senha",
        "prefs-changeemail": "Alterar ou remover endereço de email",
        "recentchangesdays-max": "(máximo: $1 {{PLURAL:$1|dia|dias}})",
        "recentchangescount": "Número de edições a serem exibidas por padrão:",
        "prefs-help-recentchangescount": "Isto inclui mudanças recentes, histórico de páginas e registros.",
-       "prefs-help-tokenmanagement": "Você pode ver e redefinir a chave secreta para sua conta que pode acessar o feed da Web da sua lista de vigilância. Qualquer pessoa que conheça a chave poderá ler sua lista de observação, então não compartilhe.",
+       "prefs-help-watchlist-token2": "Esta é a senha secreta para o feed da Web com sua lista de tokens vigiados.\nQualquer pessoa que descobrir esta senha será capaz de ler sua lista, então não a compartilhe.\n[[Special:ResetTokens|Clique aqui para redefini-la]].",
        "savedprefs": "As suas preferências foram salvas.",
        "savedrights": "Os grupos {{GENDER:$1|do usuário|da usuária}} $1 foram gravados.",
        "timezonelegend": "Fuso horário:",
index c11f9a6..56a8955 100644 (file)
        "prefs-watchlist-edits": "Número máximo de edições a mostrar na lista de vigiadas:",
        "prefs-watchlist-edits-max": "Máximo: 1000",
        "prefs-watchlist-token": "Chave secreta da lista de páginas vigiadas:",
-       "prefs-watchlist-managetokens": "Gerir chaves",
        "prefs-misc": "Diversos",
        "prefs-resetpass": "Alterar palavra-passe",
        "prefs-changeemail": "Alterar ou remover correio eletrónico",
        "recentchangesdays-max": "Máximo: $1 {{PLURAL:$1|dia|dias}}",
        "recentchangescount": "Número de edições a apresentar por omissão:",
        "prefs-help-recentchangescount": "Inclui mudanças recentes, histórico de páginas e registos.",
-       "prefs-help-tokenmanagement": "Pode ver e repor a chave secreta da sua conta que permite aceder ao feed da sua lista de páginas vigiadas. Qualquer pessoa que conheça a chave será capaz de ler a sua lista de páginas vigiadas, por isso não a partilhe.",
+       "prefs-help-watchlist-token2": "Esta é a chave secreta para o ''feed'' RSS da sua lista de páginas vigiadas.\nQualquer pessoa que conheça a chave será capaz de ler a sua lista de páginas vigiadas, por isso não a divulgue.\n[[Special:ResetTokens|Clique aqui para redefini-la]].",
        "savedprefs": "As suas preferências foram gravadas.",
        "savedrights": "Os grupos {{GENDER:$1|do utilizador|da utilizadora}} $1 foram gravados.",
        "timezonelegend": "Fuso horário:",
        "rcfilters-activefilters": "Filtros ativos",
        "rcfilters-advancedfilters": "Filtros avançados",
        "rcfilters-limit-title": "Resultados a mostrar",
+       "rcfilters-limit-and-date-label": "{{PLURAL:$1|mudança|$1 mudanças}}, $2",
+       "rcfilters-date-popup-title": "Período a pesquisar",
        "rcfilters-days-title": "Dias recentes",
        "rcfilters-hours-title": "Horas recentes",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|dia|dias}}",
        "import-mapping-namespace": "Importar para um domínio:",
        "import-mapping-subpage": "Importar como sub-páginas da seguinte página:",
        "import-upload-filename": "Nome do ficheiro:",
-       "import-upload-username-prefix": "Prefixos interwikis:",
+       "import-upload-username-prefix": "Prefixo interwikis:",
+       "import-assign-known-users": "Atribuir as edições aos utilizadores locais se o utilizador nomeado existir localmente",
        "import-comment": "Comentário:",
        "importtext": "Exporte o ficheiro da wiki de origem utilizando a página especial [[Special:Export|exportação de páginas]].\nGrave o ficheiro no seu computador e importe-o aqui.",
        "importstart": "A importar páginas...",
        "imported-log-entries": "{{PLURAL:$1|Foi importada $1 entrada|Foram importadas $1 entradas}} de registo.",
        "importfailed": "A importação falhou: $1",
        "importunknownsource": "Tipo da fonte de importação desconhecido",
+       "importnoprefix": "Não foi fornecido nenhum prefixo interwikis",
        "importcantopen": "Não foi possível abrir o ficheiro a importar",
        "importbadinterwiki": "Ligação interlíngua incorreta",
        "importsuccess": "Importação completa!",
        "autosumm-blank": "Limpou toda a página",
        "autosumm-replace": "Página substituída por \"$1\"",
        "autoredircomment": "Redirecionamento para [[$1]]",
+       "autosumm-removed-redirect": "Remoção do redirecionamento para [[$1]]",
+       "autosumm-changed-redirect-target": "Alteração do redirecionamento de [[$1]] para [[$2]]",
        "autosumm-new": "Criou a página com \"$1\"",
        "autosumm-newblank": "Página em branco criada",
        "lag-warn-normal": "Alterações realizadas {{PLURAL:$1|no último segundo|nos últimos $1 segundos}} podem não constar desta lista.",
        "tag-mw-contentmodelchange": "alteração do modelo de conteúdo",
        "tag-mw-contentmodelchange-description": "Edições que [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel alteram o modelo de conteúdo] de uma página",
        "tag-mw-new-redirect": "Novo redirecionamento",
+       "tag-mw-new-redirect-description": "Edições que criam um redirecionamento novo ou tornam uma página num redirecionamento",
+       "tag-mw-removed-redirect": "Redirecionamento removido",
+       "tag-mw-removed-redirect-description": "Edições que alteram um redirecionamento existente para um não-redirecionamento",
+       "tag-mw-changed-redirect-target": "Destino de redirecionamento alterado",
+       "tag-mw-changed-redirect-target-description": "Edições que modificam o destino de um redirecionamento",
+       "tag-mw-blank": "Esvaziamento",
+       "tag-mw-blank-description": "Edita que esvaziam uma página",
+       "tag-mw-replace": "Substituição",
+       "tag-mw-replace-description": "Edições que removem mais de 90% do conteúdo de uma página",
+       "tag-mw-rollback": "Reversão",
+       "tag-mw-rollback-description": "Edições que revertem edições anteriores usando a hiperligação desfazer",
        "tags-title": "Etiquetas de modificação válidas",
        "tags-intro": "Esta página lista as etiquetas com que o software poderá marcar uma edição, e o seu significado.",
        "tags-tag": "Nome da etiqueta",
index 27d8e43..6eaf80a 100644 (file)
        "prefs-watchlist-edits": "Used in [[Special:Preferences]], tab \"Watchlist\".",
        "prefs-watchlist-edits-max": "Shown as hint in [[Special:Preferences]], tab \"Watchlist\"",
        "prefs-watchlist-token": "Used in [[Special:Preferences]], tab Watchlist.",
-       "prefs-watchlist-managetokens": "Label for the button to see and reset the user's private tokens",
        "prefs-misc": "Tab used on the [[Special:Preferences|user preferences]] special page.",
        "prefs-resetpass": "Button on user data tab in user preferences. When you click the button you go to the special page [[Special:ResetPass]].\n\n{{Identical|Change password}}",
        "prefs-changeemail": "Link on [[Special:Preferences]] to [[Special:ChangeEmail]]. [[Special:ChangeEmail]] also allows removing email address. \n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-setemail|link title}}",
        "recentchangesdays-max": "Shown as hint in [[Special:Preferences]], tab \"Recent changes\". Parameters:\n* $1 - number of days\nSee also:\n* {{msg-mw|Prefs-watchlist-days-max}}",
        "recentchangescount": "Used in [[Special:Preferences]], tab \"Recent changes\".",
        "prefs-help-recentchangescount": "Used in [[Special:Preferences]], tab \"Recent changes\".",
-       "prefs-help-tokenmanagement": "Used in [[Special:Preferences]], Watchlist tab.",
+       "prefs-help-watchlist-token2": "Used in [[Special:Preferences]], tab Watchlist. (Formerly in {{msg-mw|prefs-help-watchlist-token}}.)",
        "savedprefs": "This message appears after saving changes to your user preferences.",
        "savedrights": "This message appears after saving the user groups on [[Special:UserRights]].\n* $1 - The user name of the user which groups was saved.",
        "timezonelegend": "{{Identical|Time zone}}",
        "autosumm-blank": "The auto summary when blanking the whole page. This is not the same as deleting the page.",
        "autosumm-replace": "The auto summary when a user removes a lot of characters in the page.\n\nParameters:\n* $1 - truncated text",
        "autoredircomment": "The auto summary when making a redirect. Parameters:\n* $1 - the page where it redirects to\n* $2 - (Optional) the first X number of characters of the redirect ($2 is usually only used when end users customize the message)\n{{Identical|Redirect}}",
-       "autosumm-removed-redirect": "The auto summary when making a redirect. Parameters:\n* $1 - the page where it redirects to\n* $2 - (Optional) the first X number of characters of the redirect ($2 is usually only used when end users customize the message)\n{{Identical|Redirect}}",
-       "autosumm-changed-redirect-target": "The auto summary when making a redirect. Parameters:\n* $1 - the page where it redirects to\n* $2 - (Optional) the first X number of characters of the redirect ($2 is usually only used when end users customize the message)\n{{Identical|Redirect}}",
+       "autosumm-removed-redirect": "The auto summary when making a redirect. Parameters:\n* $1 - the page where it redirects to\n* $2 - (Optional) the first X number of characters of the redirect ($2 is usually only used when end users customize the message)",
+       "autosumm-changed-redirect-target": "The auto summary when making a redirect. Parameters:\n* $1 - the page where it redirects to\n* $2 - (Optional) the first X number of characters of the redirect ($2 is usually only used when end users customize the message)",
        "autosumm-new": "The auto summary when creating a new page. $1 are the first X number of characters of the new page.",
        "autosumm-newblank": "The automatic edit summary when creating a blank page. This is not the same as blanking a page.",
        "autoblock_whitelist": "{{notranslate}}",
        "tag-mw-removed-redirect-description": "Description for \"Removed redirect\" change tag",
        "tag-mw-changed-redirect-target": "Change tag for edits that change the target of a redirect",
        "tag-mw-changed-redirect-target-description": "Description for \"Redirect target changed\" change tag",
-       "tag-mw-blank": "Change tag for edits that blank a page with existing content",
+       "tag-mw-blank": "Change tag for edits that blank a page with existing content\n{{Identical|Blanking}}",
        "tag-mw-blank-description": "Description for \"blank\" change tag",
-       "tag-mw-replace": "Change tag for edits removing more than 90% of the content of a page",
+       "tag-mw-replace": "Change tag for edits removing more than 90% of the content of a page\n{{Identical|Replaced}}",
        "tag-mw-replace-description": "Description for \"replace\" change tag",
        "tag-mw-rollback": "Change tag for rolling back an edit\n{{Identical|Rollback}}",
        "tag-mw-rollback-description": "Description for \"rollback\" change tag",
index ff5c801..5eac3de 100644 (file)
        "prefs-watchlist-edits": "Numere massime de cangiaminde ca se ponne fa 'ndrucà jndr'à l'lenghe de le pàggene condrollate:",
        "prefs-watchlist-edits-max": "Numere massime: 1000",
        "prefs-watchlist-token": "Token de le pàggene condrollate:",
-       "prefs-watchlist-managetokens": "Gestisce le gettone",
        "prefs-misc": "Misc",
        "prefs-resetpass": "Cange a 'password",
        "prefs-changeemail": "Cange o live 'u 'ndirizze e-mail",
        "recentchangesdays-max": "(massime $1 {{PLURAL:$1|sciurne|sciurne}})",
        "recentchangescount": "Numere de cangiaminde da fà vedè pe default:",
        "prefs-help-recentchangescount": "Quiste 'nglude le urteme cangiaminde, le storie de le pàggene e le archivije.",
+       "prefs-help-watchlist-token2": "Queste jè 'a chiave segrete a le feed d'u web de l'elenghe de le pàggene condrollate tune.\nCengate vò ccu canosce ce pò leggere l'elenghe de le pàggene condrollate tune, accussì non g'ù pò condividere.\n[[Special:ResetTokens|Cazze aqquà ce tìne abbesogne de azzerarle]].",
        "savedprefs": "Le preferenze tue onne state aggiornete.",
        "savedrights": "Le gruppe utinde de {{GENDER:$1$1}} onne state reggistrate.",
        "timezonelegend": "Orarie d'a zone:",
index ed95af8..2531255 100644 (file)
        "prefs-watchlist-edits": "Максимальное количество правок для показа в списке наблюдения:",
        "prefs-watchlist-edits-max": "Наибольшее значение: 1000",
        "prefs-watchlist-token": "Токен списка наблюдения:",
-       "prefs-watchlist-managetokens": "Управление токенами",
        "prefs-misc": "Другие настройки",
        "prefs-resetpass": "Изменить пароль",
        "prefs-changeemail": "изменить или удалить адрес электронной почты",
        "recentchangesdays-max": "(не более $1 {{PLURAL:$1|дня|дней}})",
        "recentchangescount": "Количество правок, отображаемое по умолчанию:",
        "prefs-help-recentchangescount": "Включает свежие правки, истории страниц, журналы.",
-       "prefs-help-tokenmanagement": "Вы можете просмотреть и сбросить для своей учётной записи секретный ключ, который может получить доступ к веб-каналу вашего списка наблюдения. Любой, кто знает ключ, сможет прочитать ваш список наблюдения, поэтому не делитесь им ни с кем.",
+       "prefs-help-watchlist-token2": "Это секретный ключ для веб-канала вашего списка наблюдений.\nЛюбой, кто знает его, сможет читать ваш список наблюдения, поэтому не сообщайте его другим. [[Special:ResetTokens|Нажмите здесь, если вам нужно сбросить его]].",
        "savedprefs": "Настройки сохранены.",
        "savedrights": "Группы {{GENDER:$1|участника|участницы}} $1 были сохранены.",
        "timezonelegend": "Часовой пояс:",
        "rcfilters-group-results-by-page": "Группировать результаты по странице",
        "rcfilters-activefilters": "Активные фильтры",
        "rcfilters-advancedfilters": "Расширенные фильтры",
-       "rcfilters-limit-title": "Изменения для показа",
+       "rcfilters-limit-title": "Результаты для показа",
+       "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|изменение|изменения|изменений}}, $2",
+       "rcfilters-date-popup-title": "Период времени для поиска",
        "rcfilters-days-title": "Последние дни",
        "rcfilters-hours-title": "Последние часы",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|день|дня|дней}}",
        "uploadstash-bad-path-unknown-type": "Неизвестный тип «$1».",
        "uploadstash-bad-path-unrecognized-thumb-name": "Нераспознанное имя миниатюры.",
        "uploadstash-bad-path-no-handler": "Не найден обработчик для mime-типа $1 файла $2.",
+       "uploadstash-bad-path-bad-format": "Ключ «$1» — в неподходящем формате.",
        "uploadstash-file-not-found-no-thumb": "Не удалось получить миниатюру.",
        "uploadstash-file-not-found-missing-content-type": "Отсутствует заголовок content-type.",
        "uploadstash-wrong-owner": "Этот файл ($1) не принадлежит текущему участнику.",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Метка|Метки}}]]: $2)",
        "tag-mw-contentmodelchange": "изменение модели содержимого",
        "tag-mw-contentmodelchange-description": "Правки, которые [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel изменяют модель содержимого] страницы",
+       "tag-mw-new-redirect": "Новое перенаправление",
+       "tag-mw-new-redirect-description": "Правки, которые создают новое перенаправление или изменяют страницу на перенаправление",
+       "tag-mw-removed-redirect": "Удалённое перенаправление",
+       "tag-mw-removed-redirect-description": "Правки, которые изменяют существующее перенаправление на не-перенаправление",
+       "tag-mw-changed-redirect-target": "Изменение цели перенаправления",
+       "tag-mw-changed-redirect-target-description": "Правки, которые изменяют цель перенаправления",
+       "tag-mw-blank": "Очистка",
+       "tag-mw-blank-description": "Правки, которые очищают страницу",
+       "tag-mw-replace": "Заменено",
+       "tag-mw-replace-description": "Правки, которые удаляют более 90 % содержимого страницы",
+       "tag-mw-rollback": "Откат",
+       "tag-mw-rollback-description": "Правки, которые откатывают предыдущие правки по нажатию ссылки отката",
        "tags-title": "Метки",
        "tags-intro": "На этой странице приведён список меток, которыми программное обеспечение отмечает правки, а также значения этих меток.",
        "tags-tag": "Имя метки",
index bb7989a..9f53e48 100644 (file)
        "anontalk": "Ságastallan IP-čujuhussii",
        "navigation": "Navigašuvdna",
        "and": "&#32;ja",
-       "qbfind": "Oza",
-       "qbbrowse": "Bláđe",
-       "qbedit": "Rievdat",
-       "qbpageoptions": "Siidoásahusat",
-       "qbmyoptions": "Ásahusat",
        "errorpagetitle": "Feaila",
        "returnto": "Máhcat siidui $1.",
        "tagline": "{{SITENAME}}",
        "permalink": "Bissovaš liŋka",
        "print": "Prente",
        "edit": "Rievdat",
-       "editthispage": "Rievdat dán siiddu",
+       "create": "Álggat",
        "delete": "Sihko",
-       "deletethispage": "Sihko dán siiddu",
        "undelete_short": "Máhcat {{PLURAL:$1|ovtta rievdadusa|$1 rievdadusa}}",
        "protect": "Suodjal",
        "protect_change": "rievdat",
-       "protectthispage": "Suodjal dán siiddu",
        "unprotect": "Sihko suodjalusa",
-       "unprotectthispage": "Sihko dán siiddu suodjalusa",
        "newpage": "Ođđa siidu",
-       "talkpage": "Ságastala dán siiddu birra",
        "talkpagelinktext": "Ságastallan",
        "specialpage": "Sierrasiidu",
        "personaltools": "Persovnnalaš bargoneavvu",
-       "articlepage": "Geahča sisdoalu",
        "talk": "Ságastallan",
        "views": "Čájáhusat",
-       "toolbox": "Neavvobumbá",
-       "userpage": "Čájet geavaheaddjesiiddu",
-       "projectpage": "Čájet prošeaktasiiddu",
+       "toolbox": "Neavvut",
        "imagepage": "Čájet fiilasiiddu",
        "mediawikipage": "Čájet diehtosiiddu",
        "templatepage": "Čájet mállevuođđosiiddu",
        "disclaimers": "Friijavuohta vástideamis",
        "disclaimerpage": "Project:Friijavuohta vástideamis",
        "edithelp": "Rievdadanrávvagat",
+       "helppage-top-gethelp": "Veahkki",
        "mainpage": "Váldosiidu",
        "mainpage-description": "Váldosiidu",
        "portal": "Gáffestohpu",
        "nstab-template": "Mállevuođđu",
        "nstab-help": "Veahkki",
        "nstab-category": "Luohkká",
+       "mainpage-nstab": "Váldosiidu",
        "nosuchaction": "Dovdameahttun dahkku",
        "nosuchspecialpage": "Diekkár doaibmasiidu ii dihtto",
        "nospecialpagetext": "Wikiprográmma ii dovdda diekkár doaibmasiiddu.",
        "viewsourcetext": "Sáhtát geahčat ja kopieret dán siiddu gáldokoda:",
        "logouttext": "'''Don leat dál loggen olggos {{GRAMMAR:elative|{{SITENAME}}}}s.'''\n\nSáhtát joatkit {{GRAMMAR:genitive|{{SITENAME}}}} geavaheami anonyman dahje logget ođđasit sisa",
        "yourname": "Geavaheaddjidovddaldat",
+       "userlogin-yourname": "Geavaheaddjinamma",
        "yourpassword": "Suollemassátni:",
+       "userlogin-yourpassword": "Suollemassátni",
        "yourpasswordagain": "Čále suollemassáni ođđasit:",
        "yourdomainname": "Fierbmenamma",
        "login": "Čálligoađe sisa",
        "userlogout": "Logge olggos",
        "notloggedin": "It leat čálligoahttan sisa",
        "createaccount": "Ráhkat dovddaldaga",
+       "createacct-emailrequired": "Šleađgaboastačujuhus",
        "createaccountmail": "e-poasttain",
+       "createacct-reason": "Sivva",
        "badretype": "Suollemassánit maid čállet eai leat seammalaganat.",
        "userexists": "Geavaheaddjidovddaldat, man evttohit, lea jo anus. Leage buorre ja vállje nubbi geavaheaddjidovddaldaga.",
        "loginerror": "Feaila sisačálidettiin",
        "retypenew": "Ođđa suollemassátni ođđasit",
        "resetpass_submit": "Čále suollemassáni ja čálligoađe sisa",
        "changepassword-success": "Suollemassáni rievdadeapmim lihkosmuvai.",
+       "botpasswords-label-create": "Álggat",
+       "botpasswords-label-update": "Ođasmahte",
+       "botpasswords-label-delete": "Sihko",
        "resetpass_forbidden": "Suollemassániid rievdan ii lihkosmuva dán wikis.",
        "resetpass-submit-loggedin": "Molsso suollemassáni",
+       "passwordreset-email": "Šleađgaboastačujuhus:",
        "bold_sample": "Buoiddes teaksta",
        "bold_tip": "Buoiddes teaksta",
        "italic_sample": "Vitnju teaksta",
        "whatlinkshere-links": "liŋkkat",
        "block": "Hehtte geavaheaddji",
        "blockip": "Hehtte rievdadeamis",
-       "blockip-legend": "Cagge geavaheaddji",
        "ipaddressorusername": "IP-čujuhus dahje geavaheaddjidovddaldat",
        "ipbexpiry": "Guhkkodat",
        "ipbreason": "Sivva",
index 35ef654..a726127 100644 (file)
        "botpasswords-insert-failed": "Dodajanje imena bota »$1« ni uspelo. Ste ga že dodali?",
        "botpasswords-update-failed": "Posodobitev imena bota »$1« je spodletelo. Ste ga izbrisali?",
        "botpasswords-created-title": "Ustvarili smo geslo bota",
-       "botpasswords-created-body": "Ustvarili smo geslo bota »$1« uporabnika »$2«.",
+       "botpasswords-created-body": "Ustvarili smo geslo bota »$1« {{GENDER:$2|uporabnika|uporabnice}} »$2«.",
        "botpasswords-updated-title": "Posodobili smo geslo bota",
-       "botpasswords-updated-body": "Posodobili smo geslo bota »$1« uporabnika »$2«.",
+       "botpasswords-updated-body": "Posodobili smo geslo bota »$1« {{GENDER:$2|uporabnika|uporabnice}} »$2«.",
        "botpasswords-deleted-title": "Izbrisali smo geslo bota",
-       "botpasswords-deleted-body": "Izbrisali smo geslo bota »$1« uporabnika »$2«.",
+       "botpasswords-deleted-body": "Izbrisali smo geslo bota »$1« {{GENDER:$2|uporabnika|uporabnice}} »$2«.",
        "botpasswords-newpassword": "Novo geslo za prijavo z imenom <strong>$1</strong> je <strong>$2</strong>. <em>Prosimo, zabeležite si to za uporabo v prihodnje.</em> <br> (Za starejše bote, pri katerih mora biti prijavno ime enako uporabniškemu imenu, lahko uporabite <strong>$3</strong> kot uporabniško ime in <strong>$4</strong> kot geslo.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider ni na voljo.",
        "botpasswords-restriction-failed": "Omejitve gesla bota preprečujejo to prijavo.",
        "prefs-watchlist-edits": "Največje število sprememb za prikaz na spisku nadzorov:",
        "prefs-watchlist-edits-max": "Največje število: 1000",
        "prefs-watchlist-token": "Ključ spiska nadzorov:",
-       "prefs-watchlist-managetokens": "Upravljaj žetone",
        "prefs-misc": "Druge nastavitve",
        "prefs-resetpass": "Spremeni geslo",
        "prefs-changeemail": "Sprememba ali odstranitev e-poštnega naslova",
        "recentchangesdays-max": "Največ $1 {{PLURAL:$1|dan|dneva|dnevi|dni}}",
        "recentchangescount": "Privzeto število prikazanih urejanj:",
        "prefs-help-recentchangescount": "Vključuje zadnje spremembe, zgodovine strani in dnevniške zapise.",
-       "prefs-help-tokenmanagement": "Lahko si ogledate ali ponastavite skrivni ključ vašega računa, s katerim lahko dostopate do spletnega vira vašega spiska nadzorov. Vsak, ki pozna vaš ključ, lahko bere vaš spisek nadzorov, zato ga ne delite.",
+       "prefs-help-watchlist-token2": "To je skrivni ključ do spletnega vira vašega spiska nadzorov.\nKdor ve zanj, lahko bere vaš spisek nadzorov, zato ključa ne delite.\nČe želite, [[Special:ResetTokens|ga lahko ponastavite]].",
        "savedprefs": "Spremembe smo uspešno shranili.",
        "savedrights": "Uporabniške skupine {{GENDER:$1|$1}} smo shranili.",
        "timezonelegend": "Časovni pas",
index cdfd8f8..3277d16 100644 (file)
        "botpasswords-insert-failed": "Kunde inte lägga till botnamnet \"$1\". Har det redan lagts till?",
        "botpasswords-update-failed": "Kunde inte uppdatera botnamnet \"$1\". Har det raderats?",
        "botpasswords-created-title": "Botlösenord skapades",
-       "botpasswords-created-body": "Botlösenordet för botnamnet \"$1\" till användaren \"$2\" skapades.",
+       "botpasswords-created-body": "Botlösenordet för botnamnet \"$1\" till {{GENDER:$2|användaren}} \"$2\" skapades.",
        "botpasswords-updated-title": "Botlösenordet uppdaterades",
-       "botpasswords-updated-body": "Botlösenordet för botnamnet \"$1\" till användaren \"$2\" uppdaterades.",
+       "botpasswords-updated-body": "Botlösenordet för botnamnet \"$1\" till {{GENDER:$2|användaren}} \"$2\" uppdaterades.",
        "botpasswords-deleted-title": "Botlösenord raderades",
-       "botpasswords-deleted-body": "Botlösenordet för botnamnet \"$1\" till användaren \"$2\" raderades.",
+       "botpasswords-deleted-body": "Botlösenordet för botnamnet \"$1\" till {{GENDER:$2|användaren}} \"$2\" raderades.",
        "botpasswords-newpassword": "Det nya lösenordet för att logga in med <strong>$1</strong> är <strong>$2</strong>. <em>Spara detta för framtida referens.</em> <br> (För äldre botar som kräver att inloggningsnamnet är detsamma som det eventuella användarnamnet kan du även använda <strong>$3</strong> som användarnamn och <strong>$4</strong> som lösenord.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider är inte tillgänglig.",
        "botpasswords-restriction-failed": "Begränsningar av botlösenord tillåter inte denna inloggning.",
        "prefs-watchlist-edits": "Maximalt antal redigeringar som visas i bevakningslistan:",
        "prefs-watchlist-edits-max": "Maximalt antal: 1 000",
        "prefs-watchlist-token": "Bevakningslistsnyckel:",
-       "prefs-watchlist-managetokens": "Hantera nycklar",
        "prefs-misc": "Diverse",
        "prefs-resetpass": "Ändra lösenord",
        "prefs-changeemail": "Ändra eller ta bort e-postadress",
        "recentchangesdays-max": "Maximalt $1 {{PLURAL:$1|dygn}}",
        "recentchangescount": "Antal redigeringar som visas som standard:",
        "prefs-help-recentchangescount": "Detta inkluderar senaste ändringarna, sidhistorik och loggar.",
-       "prefs-help-tokenmanagement": "Du kan se och återställa den hemliga nyckeln för ditt konto som har åtkomst till webbmatningen för din bevakningslista. Alla som vet nyckeln kan läsa din bevakningslista, så dela inte ut den.",
+       "prefs-help-watchlist-token2": "Detta är den hemliga nyckeln till webbflödet i din bevakningslista.\nNågon som vet den kommer att kunna läsa din bevakningslista, så dela inte ut den.\n[[Special:ResetTokens|Klicka här om du behöver återställa den]].",
        "savedprefs": "Dina inställningar har sparats",
        "savedrights": "Användargrupperna för {{GENDER:$1|$1}} har sparats.",
        "timezonelegend": "Tidszon:",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nykomlingar",
        "rcfilters-filter-user-experience-level-newcomer-description": "Registrerade redigerare som har färre än 10 redigeringar eller 4 dagars aktivitet.",
        "rcfilters-filter-user-experience-level-learner-label": "Nybörjare",
-       "rcfilters-filter-user-experience-level-learner-description": "Registrerade redigerare vars erfarenhet hamnar mellan \"Nybörjare\" och \"Erfarna användare\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Registrerade redigerare vars erfarenhet hamnar mellan \"Nykomlingar\" och \"Erfarna användare\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Erfarna användare",
        "rcfilters-filter-user-experience-level-experienced-description": "Registrerade redigerare med fler än 500 redigeringar och 30 dagars aktivitet.",
        "rcfilters-filtergroup-automated": "Automatiserade bidrag",
index 6409fe6..979ce43 100644 (file)
        "recentchangesdays-max": "زیادہ سے زیادہ $1 {{PLURAL:$1|دن}}",
        "recentchangescount": "دکھائی جانے والی ترامیم کی تعداد:",
        "prefs-help-recentchangescount": "اِس میں حالیہ تبدیلیاں، تاریخچے اور نوشتہ جات شامل ہیں۔",
+       "prefs-help-watchlist-token2": "یہ آپ کی زیر نظر فہرست کے ویب فیڈ کی خفیہ کلید ہے۔\nاسے خفیہ رکھیں، تاکہ کوئی دوسرا شخص آپ کی زیر نظر فہرست نہ دیکھ سکے۔\nاگر آپ کو کلید تبدیل کرنی ہو تو [[Special:ResetTokens|یہاں کلک کریں]]۔",
        "savedprefs": "آپ کی ترجیحات محفوظ ہوگئیں۔",
        "savedrights": "{{GENDER:$1|$1}} کے اختیارات محفوظ ہو گئے۔",
        "timezonelegend": "منطقۂ وقت:",
index a75062e..b303cf7 100644 (file)
        "recentchangesdays-max": "最多 $1 日",
        "recentchangescount": "預設顯示嘅編輯數:",
        "prefs-help-recentchangescount": "呢個包埋最近修改、頁歷史同埋日誌紀錄。",
+       "prefs-help-watchlist-token2": "呢個係網上訂閱你個監視清單嘅密匙。\n任何人只要知道個密匙,就會睇到你個監視清單,所以唔好畀人知。\n如果有需要嘅話,[[Special:ResetTokens|你可以重設佢]]。",
        "savedprefs": "你嘅喜好設定已經儲存。",
        "savedrights": "儲存咗 {{GENDER:$1|$1}} 嘅用戶群組。",
        "timezonelegend": "時區:",
index 3568b77..dcc5748 100644 (file)
        "botpasswords-insert-failed": "无法添加机器人名“$1”。它是否已添加?",
        "botpasswords-update-failed": "无法更新机器人名“$1”。它是否已删除?",
        "botpasswords-created-title": "机器人密码已创建",
-       "botpasswords-created-body": "用于用户“$2”的机器人名称“$1”的机器人密码已创建。",
+       "botpasswords-created-body": "用于{{GENDER:$2|用户}}“$2”的机器人名称“$1”的机器人密码已创建。",
        "botpasswords-updated-title": "机器人密码已更新",
-       "botpasswords-updated-body": "用于用户“$2”的机器人名称“$1”的机器人密码已更新。",
+       "botpasswords-updated-body": "用于{{GENDER:$2|用户}}“$2”的机器人名称“$1”的机器人密码已更新。",
        "botpasswords-deleted-title": "机器人密码已删除",
-       "botpasswords-deleted-body": "用于用户“$2”的机器人名称“$1”的机器人密码已删除。",
+       "botpasswords-deleted-body": "用于{{GENDER:$2|用户}}“$2”的机器人名称“$1”的机器人密码已删除。",
        "botpasswords-newpassword": "用于登录<strong>$1</strong>的新密码是<strong>$2</strong>。<em>请记住它以备今后参考。</em><br>(对于需要登录名与最终用户名相同的旧机器人,您也可以使用<strong>$3</strong>作为用户名,<strong>$4</strong>作为密码。)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider不可用。",
        "botpasswords-restriction-failed": "机器人密码限制阻止此次登录。",
        "prefs-watchlist-edits": "在监视列表中显示的更改的最大数目:",
        "prefs-watchlist-edits-max": "最大数目:1000",
        "prefs-watchlist-token": "监视列表密钥:",
-       "prefs-watchlist-managetokens": "管理令牌",
        "prefs-misc": "其他",
        "prefs-resetpass": "更改密码",
        "prefs-changeemail": "更改或移除电子邮件地址",
        "recentchangesdays-max": "最多$1天",
        "recentchangescount": "默认显示的编辑数:",
        "prefs-help-recentchangescount": "这包括最近更改、页面历史和日志。",
-       "prefs-help-tokenmanagement": "您可以查看并重置您账户的密钥,它用来访问您监视列表的Web订阅源。任何知道密钥的人都将可以阅读您的监视列表,所以不要分享它。",
+       "prefs-help-watchlist-token2": "这是您的监视列表的网络feed密钥。任何拥有者均可以浏览您的监视列表,因此不要公开该密钥。如果有需要,[[Special:ResetTokens|您可以重置密钥]]。",
        "savedprefs": "您的系统设置已保存。",
        "savedrights": "{{GENDER:$1|$1}}的用户组已被保存。",
        "timezonelegend": "时区:",
index 0665a2a..0e6939b 100644 (file)
@@ -2098,11 +2098,10 @@ return [
        'mediawiki.special.pagesWithProp' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.pagesWithProp.css',
        ],
-       'mediawiki.special.preferences.ooui' => [
+       'mediawiki.special.preferences' => [
                'scripts' => [
                        'resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js',
                        'resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js',
-                       'resources/src/mediawiki.special/mediawiki.special.preferences.editfont.js',
                        'resources/src/mediawiki.special/mediawiki.special.preferences.tabs.js',
                        'resources/src/mediawiki.special/mediawiki.special.preferences.timezone.js',
                ],
@@ -2116,12 +2115,9 @@ return [
                        'mediawiki.language',
                        'mediawiki.confirmCloseWindow',
                        'mediawiki.notification.convertmessagebox',
-                       'oojs-ui-widgets',
-                       'mediawiki.widgets.SelectWithInputWidget',
-                       'mediawiki.editfont.styles',
                ],
        ],
-       'mediawiki.special.preferences.styles.ooui' => [
+       'mediawiki.special.preferences.styles' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.preferences.styles.css',
        ],
        'mediawiki.special.recentchanges' => [
index 596b0d6..7b2d711 100644 (file)
@@ -220,6 +220,28 @@ table.toc td {
        font-size: larger;
 }
 
+/* preference page with js-genrated toc */
+#preftoc {
+       float: left;
+       margin: 1em 1em 1em 1em;
+       width: 13em;
+}
+
+#preftoc li {
+       border: 1px solid #fff;
+}
+
+#preftoc li.selected {
+       background-color: #f9f9f9;
+       border: 1px dashed #aaa;
+}
+
+#preftoc a,
+#preftoc a:active {
+       display: block;
+       color: #005189;
+}
+
 .mw-prefs-buttons {
        clear: left;
        float: left;
index fe127eb..45df37f 100644 (file)
@@ -4,11 +4,9 @@
  */
 ( function ( mw, $ ) {
        $( function () {
-               var allowCloseWindow, saveButton, restoreButton;
+               var allowCloseWindow;
 
-               // Check if all of the form values are unchanged.
-               // (This function could be changed to infuse and check OOUI widgets, but that would only make it
-               // slower and more complicated. It works fine to treat them as HTML elements.)
+               // Check if all of the form values are unchanged
                function isPrefsChanged() {
                        var inputs = $( '#mw-prefs-form :input[name]' ),
                                input, $input, inputType,
                        return false;
                }
 
-               saveButton = OO.ui.infuse( $( '#prefcontrol' ) );
-               restoreButton = OO.ui.infuse( $( '#mw-prefs-restoreprefs' ) );
-
                // Disable the button to save preferences unless preferences have changed
                // Check if preferences have been changed before JS has finished loading
                if ( !isPrefsChanged() ) {
-                       saveButton.setDisabled( true );
-                       $( '#preferences .oo-ui-fieldsetLayout' ).one( 'change keydown mousedown', function () {
-                               saveButton.setDisabled( false );
+                       $( '#prefcontrol' ).prop( 'disabled', true );
+                       $( '#preferences > fieldset' ).one( 'change keydown mousedown', function () {
+                               $( '#prefcontrol' ).prop( 'disabled', false );
                        } );
                }
 
                        namespace: 'prefswarning'
                } );
                $( '#mw-prefs-form' ).submit( $.proxy( allowCloseWindow, 'release' ) );
-               restoreButton.on( 'click', function () {
-                       allowCloseWindow.release();
-                       // The default behavior of events in OOUI is always prevented. Follow the link manually.
-                       // Note that middle-click etc. still works, as it doesn't emit a OOUI 'click' event.
-                       location.href = restoreButton.getHref();
-               } );
+               $( '#mw-prefs-restoreprefs' ).click( $.proxy( allowCloseWindow, 'release' ) );
        } );
 }( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.editfont.js b/resources/src/mediawiki.special/mediawiki.special.preferences.editfont.js
deleted file mode 100644 (file)
index fe48886..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*!
- * JavaScript for Special:Preferences: editfont field enhancements.
- */
-( function ( mw, $ ) {
-       $( function () {
-               var widget, lastValue;
-
-               try {
-                       widget = OO.ui.infuse( $( '#mw-input-wpeditfont' ) );
-               } catch ( err ) {
-                       // This preference could theoretically be disabled ($wgHiddenPrefs)
-                       return;
-               }
-
-               // Style options
-               widget.dropdownWidget.menu.items.forEach( function ( item ) {
-                       item.$label.addClass( 'mw-editfont-' + item.getData() );
-               } );
-
-               function updateLabel( value ) {
-                       // Style selected item label
-                       widget.dropdownWidget.$label
-                               .removeClass( 'mw-editfont-' + lastValue )
-                               .addClass( 'mw-editfont-' + value );
-                       lastValue = value;
-               }
-
-               widget.on( 'change', updateLabel );
-               updateLabel( widget.getValue() );
-
-       } );
-}( mediaWiki, jQuery ) );
index 0ee4ac2..33b630a 100644 (file)
@@ -1,29 +1,28 @@
 /* Reuses colors from mediawiki.legacy/shared.css */
-.mw-email-not-authenticated .oo-ui-labelWidget,
-.mw-email-none .oo-ui-labelWidget {
+.mw-email-not-authenticated .mw-input,
+.mw-email-none .mw-input {
        border: 1px solid #fde29b;
        background-color: #fdf1d1;
        color: #000;
 }
 /* Authenticated email field has its own class too. Unstyled by default */
 /*
-.mw-email-authenticated .oo-ui-labelWidget { }
+.mw-email-authenticated .mw-input { }
 */
-
-/* This is needed because add extra buttons in a weird way */
-.mw-prefs-buttons .mw-htmlform-submit-buttons {
-       margin: 0;
-       display: inline;
+/* This breaks due to nolabel styling */
+#preferences > fieldset td.mw-label {
+       width: 20%;
 }
 
-.mw-prefs-buttons {
-       margin-top: 1em;
+#preferences > fieldset table {
+       width: 100%;
 }
-
-#prefcontrol {
-       margin-right: 0.5em;
+#preferences > fieldset table.mw-htmlform-matrix {
+       width: auto;
 }
 
+/* The CSS below is also for JS enabled version, because we want to prevent FOUC */
+
 /*
  * Hide, but keep accessible for screen-readers.
  * Like .mw-jump, #jump-to-nav from shared.css
        zoom: 1;
 }
 
-/* Override OOUI styles so that dropdowns near the bottom of the form don't get clipped,
- * e.g.'Appearance' / 'Threshold for stub link formatting'. This is hacky and bad, it would be
- * better solved by setting overlays for the widgets, but we can't do it from PHP... */
-#preferences .oo-ui-panelLayout {
-       position: static;
-       overflow: visible;
-       -webkit-transform: none;
-       transform: none;
-}
-
-#preferences .oo-ui-panelLayout-framed .oo-ui-panelLayout-framed {
-       border-color: #c8ccd1;
-       border-width: 1px 0 0;
-       border-radius: 0;
-       padding-left: 0;
-       padding-right: 0;
-       box-shadow: none;
+.client-nojs #preftoc {
+       display: none;
 }
 
-/* Tweak the margins to reduce the shifting of form contents
- * after JS code loads and rearranges the page */
-.client-js #preferences > .oo-ui-panelLayout {
-       margin: 1em 0;
+.client-js #preferences > fieldset {
+       display: none;
 }
 
-.client-js #preferences .oo-ui-panelLayout-framed .oo-ui-panelLayout-framed {
-       margin-left: 0.25em;
-}
-
-.client-js #preferences .oo-ui-tabPanelLayout {
-       padding-top: 0.5em;
-       padding-bottom: 0.5em;
-}
-
-.client-js #preferences .oo-ui-tabPanelLayout .oo-ui-panelLayout-framed {
-       margin-left: 0;
-       margin-bottom: 0;
-       border: 0;
-       padding-top: 0;
-}
-
-.client-js #preferences > .oo-ui-panelLayout > .oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header {
-       margin-bottom: 1em;
-}
-
-/* Make the "Basic information" section more compact */
-/* OOUI's `align: 'left'` for FieldLayouts sucks, so we do our own */
-#mw-htmlform-info > .oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
-       width: 20%;
-       display: inline-block;
-       vertical-align: middle;
-       padding: 0;
-}
-
-#mw-htmlform-info > .oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-       width: 80%;
-       display: inline-block;
-       vertical-align: middle;
-}
-
-/* Expand the dropdown and textfield of "Time zone" field to the */
-/* usual maximum width and display them on separate lines. */
-#wpTimeCorrection .oo-ui-dropdownInputWidget,
-#wpTimeCorrection .oo-ui-textInputWidget {
+/* Only the 1st tab is shown by default in JS mode */
+.client-js #preferences #mw-prefsection-personal {
        display: block;
-       max-width: 50em;
-}
-
-#wpTimeCorrection .oo-ui-textInputWidget {
-       margin-top: 0.5em;
 }
index 9f1691c..dcfad27 100644 (file)
@@ -3,10 +3,29 @@
  */
 ( function ( mw, $ ) {
        $( function () {
-               var $preferences, tabs, wrapper, previousTab;
+               var $preftoc, $preferences, $fieldsets, labelFunc, previousTab;
 
+               labelFunc = function () {
+                       return this.id.replace( /^mw-prefsection/g, 'preftab' );
+               };
+
+               $preftoc = $( '#preftoc' );
                $preferences = $( '#preferences' );
 
+               $fieldsets = $preferences.children( 'fieldset' )
+                       .attr( {
+                               role: 'tabpanel',
+                               'aria-labelledby': labelFunc
+                       } );
+               $fieldsets.not( '#mw-prefsection-personal' )
+                       .hide()
+                       .attr( 'aria-hidden', 'true' );
+
+               // T115692: The following is kept for backwards compatibility with older skins
+               $preferences.addClass( 'jsprefs' );
+               $fieldsets.addClass( 'prefsection' );
+               $fieldsets.children( 'legend' ).addClass( 'mainLegend' );
+
                // Make sure the accessibility tip is selectable so that screen reader users take notice,
                // but hide it per default to reduce interface clutter. Also make sure it becomes visible
                // when selected. Similar to jquery.mw-jump
                                } else {
                                        $( this ).css( 'height', 'auto' );
                                }
-                       } ).prependTo( '#mw-content-text' );
-
-               tabs = new OO.ui.IndexLayout( {
-                       expanded: false,
-                       // Do not remove focus from the tabs menu after choosing a tab
-                       autoFocus: false
-               } );
-
-               mw.config.get( 'wgPreferencesTabs' ).forEach( function ( tabConfig ) {
-                       var panel, $panelContents;
-
-                       panel = new OO.ui.TabPanelLayout( tabConfig.name, {
-                               expanded: false,
-                               label: tabConfig.label
-                       } );
-                       $panelContents = $( '#mw-prefsection-' + tabConfig.name );
-
-                       // Hide the unnecessary PHP PanelLayouts
-                       // (Do not use .remove(), as that would remove event handlers for everything inside them)
-                       $panelContents.parent().detach();
-
-                       panel.$element.append( $panelContents );
-                       tabs.addTabPanels( [ panel ] );
-
-                       // Remove duplicate labels
-                       // (This must be after .addTabPanels(), otherwise the tab item doesn't exist yet)
-                       $panelContents.children( 'legend' ).remove();
-                       $panelContents.attr( 'aria-labelledby', panel.getTabItem().getElementId() );
-               } );
-
-               wrapper = new OO.ui.PanelLayout( {
-                       expanded: false,
-                       padded: false,
-                       framed: true
-               } );
-               wrapper.$element.append( tabs.$element );
-               $preferences.prepend( wrapper.$element );
-
-               function updateHash( panel ) {
-                       var scrollTop, active;
-                       // Handle hash manually to prevent jumping,
-                       // therefore save and restore scrollTop to prevent jumping.
-                       scrollTop = $( window ).scrollTop();
-                       // Changing the hash apparently causes keyboard focus to be lost?
-                       // Save and restore it. This makes no sense though.
-                       active = document.activeElement;
-                       location.hash = '#mw-prefsection-' + panel.getName();
-                       if ( active ) {
-                               active.focus();
-                       }
-                       $( window ).scrollTop( scrollTop );
-               }
-
-               tabs.on( 'set', updateHash );
+                       } ).insertBefore( $preftoc );
 
                /**
+                * It uses document.getElementById for security reasons (HTML injections in $()).
+                *
                 * @ignore
                 * @param {string} name the name of a tab without the prefix ("mw-prefsection-")
                 * @param {string} [mode] A hash will be set according to the current
-                *  open section. Set mode 'noHash' to supress this.
+                *  open section. Set mode 'noHash' to surpress this.
                 */
                function switchPrefTab( name, mode ) {
-                       if ( mode === 'noHash' ) {
-                               tabs.off( 'set', updateHash );
+                       var $tab, scrollTop;
+                       // Handle hash manually to prevent jumping,
+                       // therefore save and restore scrollTop to prevent jumping.
+                       scrollTop = $( window ).scrollTop();
+                       if ( mode !== 'noHash' ) {
+                               location.hash = '#mw-prefsection-' + name;
                        }
-                       tabs.setTabPanel( name );
-                       if ( mode === 'noHash' ) {
-                               tabs.on( 'set', updateHash );
+                       $( window ).scrollTop( scrollTop );
+
+                       $preftoc.find( 'li' ).removeClass( 'selected' )
+                               .find( 'a' ).attr( {
+                                       tabIndex: -1,
+                                       'aria-selected': 'false'
+                               } );
+
+                       $tab = $( document.getElementById( 'preftab-' + name ) );
+                       if ( $tab.length ) {
+                               $tab.attr( {
+                                       tabIndex: 0,
+                                       'aria-selected': 'true'
+                               } ).focus()
+                                       .parent().addClass( 'selected' );
+
+                               $preferences.children( 'fieldset' ).hide().attr( 'aria-hidden', 'true' );
+                               $( document.getElementById( 'mw-prefsection-' + name ) ).show().attr( 'aria-hidden', 'false' );
                        }
                }
 
+               // Enable keyboard users to use left and right keys to switch tabs
+               $preftoc.on( 'keydown', function ( event ) {
+                       var keyLeft = 37,
+                               keyRight = 39,
+                               $el;
+
+                       if ( event.keyCode === keyLeft ) {
+                               $el = $( '#preftoc li.selected' ).prev().find( 'a' );
+                       } else if ( event.keyCode === keyRight ) {
+                               $el = $( '#preftoc li.selected' ).next().find( 'a' );
+                       } else {
+                               return;
+                       }
+                       if ( $el.length > 0 ) {
+                               switchPrefTab( $el.attr( 'href' ).replace( '#mw-prefsection-', '' ) );
+                       }
+               } );
+
                // Jump to correct section as indicated by the hash.
                // This function is called onload and onhashchange.
                function detectHash() {
                        }
                }
 
-               // Handle other things that change the hash (e.g. using
+               // In browsers that support the onhashchange event we will not bind click
+               // handlers and instead let the browser do the default behavior (clicking the
+               // <a href="#.."> will naturally set the hash, handled by onhashchange.
+               // But other things that change the hash will also be caught (e.g. using
                // the Back and Forward browser navigation).
-               if ( 'onhashchange' in window ) {
+               // Note the special check for IE "compatibility" mode.
+               if ( 'onhashchange' in window &&
+                       ( document.documentMode === undefined || document.documentMode >= 8 )
+               ) {
                        $( window ).on( 'hashchange', function () {
                                var hash = location.hash;
                                if ( hash.match( /^#mw-[\w-]+/ ) ) {
                                } else if ( hash === '' ) {
                                        switchPrefTab( 'personal', 'noHash' );
                                }
+                       } )
+                               // Run the function immediately to select the proper tab on startup.
+                               .trigger( 'hashchange' );
+               // In older browsers we'll bind a click handler as fallback.
+               // We must not have onhashchange *and* the click handlers, otherwise
+               // the click handler calls switchPrefTab() which sets the hash value,
+               // which triggers onhashchange and calls switchPrefTab() again.
+               } else {
+                       $preftoc.on( 'click', 'li a', function ( e ) {
+                               switchPrefTab( $( this ).attr( 'href' ).replace( '#mw-prefsection-', '' ) );
+                               e.preventDefault();
                        } );
+                       // If we've reloaded the page or followed an open-in-new-window,
+                       // make the selected tab visible.
+                       detectHash();
                }
 
-               // If we've reloaded the page or followed an open-in-new-window,
-               // make the selected tab visible.
-               detectHash();
-
                // Restore the active tab after saving the preferences
                previousTab = mw.storage.session.get( 'mwpreferences-prevTab' );
                if ( previousTab ) {
                }
 
                $( '#mw-prefs-form' ).on( 'submit', function () {
-                       var value = tabs.getCurrentTabPanelName();
+                       var value = $( $preftoc ).find( 'li.selected a' ).attr( 'id' ).replace( 'preftab-', '' );
                        mw.storage.session.set( 'mwpreferences-prevTab', value );
                } );
 
index 7fbcc77..03656ee 100644 (file)
@@ -4,19 +4,13 @@
 ( function ( mw, $ ) {
        $( function () {
                var
-                       timezoneWidget, $localtimeHolder, servertime;
+                       $tzSelect, $tzTextbox, $localtimeHolder, servertime;
 
                // Timezone functions.
                // Guesses Timezone from browser and updates fields onchange.
 
-               // This is identical to OO.ui.infuse( ... ), but it makes the class name of the result known.
-               try {
-                       timezoneWidget = mw.widgets.SelectWithInputWidget.static.infuse( $( '#wpTimeCorrection' ) );
-               } catch ( err ) {
-                       // This preference could theoretically be disabled ($wgHiddenPrefs)
-                       timezoneWidget = null;
-               }
-
+               $tzSelect = $( '#mw-input-wptimecorrection' );
+               $tzTextbox = $( '#mw-input-wptimecorrection-other' );
                $localtimeHolder = $( '#wpLocalTime' );
                servertime = parseInt( $( 'input[name="wpServerTime"]' ).val(), 10 );
 
 
                function updateTimezoneSelection() {
                        var minuteDiff, localTime,
-                               type = timezoneWidget.dropdowninput.getValue();
+                               type = $tzSelect.val();
 
                        if ( type === 'other' ) {
                                // User specified time zone manually in <input>
                                // Grab data from the textbox, parse it.
-                               minuteDiff = hoursToMinutes( timezoneWidget.textinput.getValue() );
+                               minuteDiff = hoursToMinutes( $tzTextbox.val() );
                        } else {
                                // Time zone not manually specified by user
                                if ( type === 'guess' ) {
                                        // Get browser timezone & fill it in
                                        minuteDiff = -( new Date().getTimezoneOffset() );
-                                       timezoneWidget.textinput.setValue( minutesToHours( minuteDiff ) );
-                                       timezoneWidget.dropdowninput.setValue( 'other' );
+                                       $tzTextbox.val( minutesToHours( minuteDiff ) );
+                                       $tzSelect.val( 'other' );
                                } else {
-                                       // Grab data from the dropdown value
+                                       // Grab data from the $tzSelect value
                                        minuteDiff = parseInt( type.split( '|' )[ 1 ], 10 ) || 0;
                                }
                        }
@@ -82,9 +76,9 @@
                        $localtimeHolder.text( mw.language.convertNumber( minutesToHours( localTime ) ) );
                }
 
-               if ( timezoneWidget ) {
-                       timezoneWidget.dropdowninput.on( 'change', updateTimezoneSelection );
-                       timezoneWidget.textinput.on( 'change', updateTimezoneSelection );
+               if ( $tzSelect.length && $tzTextbox.length ) {
+                       $tzSelect.change( updateTimezoneSelection );
+                       $tzTextbox.blur( updateTimezoneSelection );
                        updateTimezoneSelection();
                }
 
index 6723a0b..e2aacae 100644 (file)
@@ -75,8 +75,10 @@ class JobTest extends MediaWikiTestCase {
                                'someCommand  pages={"932737":[0,"Robert_James_Waller"]} ' .
                                'rootJobSignature=45868e99bba89064e4483743ebb9b682ef95c1a7 ' .
                                'rootJobTimestamp=20160309110158 masterPos=' .
-                               '{"file":"db1023-bin.001288","pos":"308257743","asOfTime":1457521464.3814} ' .
-                               'triggeredRecursive=1 ' .
+                               '{"file":"db1023-bin.001288","pos":"308257743","asOfTime":' .
+                               // Embed dynamically because TestSetup sets serialize_precision=17
+                               // which, in PHP 7.1 and 7.2, produces 1457521464.3814001 instead
+                               json_encode( 1457521464.3814 ) . '} ' . 'triggeredRecursive=1 ' .
                                $requestId
                        ],
                ];
index 890fe5b..98b87fe 100644 (file)
@@ -3,8 +3,8 @@ const Page = require( './page' );
 
 class PreferencesPage extends Page {
 
-       get realName() { return browser.element( '#mw-input-wprealname .oo-ui-inputWidget-input' ); }
-       get save() { return browser.element( '#prefcontrol .oo-ui-buttonElement-button' ); }
+       get realName() { return browser.element( '#mw-input-wprealname' ); }
+       get save() { return browser.element( '#prefcontrol' ); }
 
        open() {
                super.open( 'Special:Preferences' );