MediaWiki:Gadget-translation-editor.js: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
nie wyswietlaj pola 'Obserwuj' uzytkownikom anonimowym
umozliwij naprawianie tlumaczen zawierajacych bledy skladniowe
Linia 26:
'transl-validate-error': 'Lista tłumaczeń zawiera niewspierane języki albo błędy składniowe.',
'transl-load-error': 'Istnieje nowsza wersja strony. Przeładuj ją i spróbuj ponownie.',
'transl-invalidissues-langfound': 'Niewspierany język lub wykrytoWykryto błedy składniowe w wikikodzie.',
'transl-invalid-code': 'Nie rozpoznano kodu języka: „$1”.',
'transl-select-lang': 'Wybierz język:',
'transl-lang-label': 'Tłumaczysz na<br><strong>$1</strong> <small>(<strong>nieznany kod</strong>)</small>',
Linia 56:
'transl-help-syntax': '(<a href="//upload.wikimedia.org/wiktionary/pl/1/1d/Edytor_t%C5%82umacze%C5%84_%28sk%C5%82adnia%29.png" target="_blank">składnia</a>)',
'transl-lang-suggest-code': 'Język z kodem <strong>$1</strong>',
'transl-forbidden-lang': 'BrakNarzędzie wsparcianie dlawspiera językatłumaczeń na język: $11”.',
'transl-confirm-close': 'Masz niezapisane tłumaczenia. Czy na pewno chcesz opuścić stronę?',
'transl-preview-parsing': 'poczekaj, trwa parsowanie wikikodu'
Linia 274:
if ( forbiddenTranslations.indexOf( lang ) !== -1 ) {
drafts[ lang ] = terms;
metadata[ lang ].invalidunsupported = true;
} else {
drafts[ lang ] = parseTerms( terms ) || terms;
}
}
Linia 331:
} );
return obj || terms;
}
 
function validateDrafts( drafts, metadata ) {
Object.keys( drafts ).filter( function ( lang ) {
var lang, term;
return !(
'invalid' in metadata[ lang ] ||
langs:
'unsupported' in metadata[ lang ]
for ( lang in drafts ) {
);
if ( 'invalid' in metadata[ lang ] ) {
} ).forEach( function ( lang ) {
continue;
}
if (
!$.isPlainObject( drafts[ lang ] ) ||
$.isEmptyObject( drafts[ lang ] ) ||
!validateDraft( drafts[ lang ] )
) {
metadata[ lang ].invalid = true;
continue;
}
} );
terms:
for ( term in drafts[ lang ] ) {
if ( !gadget.$defn.filter( function () {
return $( this ).text() === term;
} ).length ) {
metadata[ lang ].invalid = true;
continue langs;
}
if ( drafts[ lang ][ term ].some( function ( subterm ) {
return /\(\d+\.\d+\)/.test( subterm.base );
} ) ) {
metadata[ lang ].invalid = true;
continue langs;
}
}
}
return !Object.keys( metadata ).some( function ( lang ) {
return 'invalid' in metadata[ lang ];
} );
}
 
function validateDraft( draft ) {
return Object.keys( draft ).every( function ( term ) {
return gadget.$defn.filter( function () {
return $( this ).text() === term;
} ).length && !draft[ term ].some( function ( subterm ) {
return /\(\d+\.\d+\)/.test( subterm.base );
} );
} );
}
Linia 389 ⟶ 380:
gui.$langSelector.val( '' ).trigger( 'focus' );
gui.$saveButton.prop( 'disabled', true );
gui.$textInputs.find( 'input' ).val( '' ).prop( 'disabled', true );
gui.$textArea.find( 'textarea' ).val( '' );
gui.$apply.prop( 'disabled', true );
gui.$textInputs.find( 'input' ).prop( 'disabled', true );
}
 
Linia 405 ⟶ 396:
 
function onLoadLang( gui, targetLang, evt ) {
var issuesFound,
var lang = targetLang || gui.$langSelector.val();
lang = targetLang || gui.$langSelector.val();
evt && evt.preventDefault();
Linia 418 ⟶ 410:
resetForms( gui );
if ( lang in gadget.draftMetadata && gadget.draftMetadata[ lang ].invalid ) {
mw.notify( mw.msg( 'transl-invalid-lang' ), { type: 'error' } );
return;
}
if ( forbiddenLanguageNames.indexOf( lang ) !== -1 ) {
Linia 428 ⟶ 415:
return;
}
issuesFound = lang in gadget.draftMetadata && gadget.draftMetadata[ lang ].invalid;
gadget.activeLang = lang;
Linia 437 ⟶ 426:
if ( !( lang in config.lang2code ) ) {
mw.notify( mw.msg( 'transl-invalid-code', lang ), { type: 'warn' } );
}
Linia 447 ⟶ 436:
);
if ( issuesFound ) {
gui.$textInputs.find( 'input' ).prop( 'disabled', false );
mw.notify( mw.msg( 'transl-issues-found' ), { type: 'warn' } );
gui.$textInputs.hide();
if ( lang in gadget.drafts ) {
gui.$textInputstextArea.childrenshow().eachfind( $'textarea' ).proxyval( loadDrafts, null, gadget.drafts[ lang ] ) );
} else {
gui.$textInputs.show().find( 'input' ).prop( 'disabled', false );
gui.$textArea.hide();
if ( lang in gadget.drafts ) {
gui.$textInputs.children().each( $.proxy( loadDrafts, null, gadget.drafts[ lang ] ) );
}
}
Linia 457 ⟶ 453:
setTimeout( function () {
var $el = issuesFound ? gui.$textInputstextArea.find( 'inputtextarea' ) : gui.first()$textInputs.triggerfind( 'focusinput' ).first();
$el.trigger( 'focus' );
}, 1 );
}
Linia 542 ⟶ 539:
function onApplyChanges( gui, evt ) {
var apiPromise, $line,
rawDraft = '',
draft = {},
metadata = gadget.draftMetadata[ gadget.activeLang ] || {},
Linia 547 ⟶ 545:
evt && evt.preventDefault();
gui.$textInputs.children().each( $.proxy( constructDrafts, null, draft ) );
if ( $.isEmptyObject('invalid' draftin )metadata ) {
rawDraft = gui.$textArea.find( 'textarea' ).val();
return;
draft = parseTerms( rawDraft ) || {};
if ( !$.isEmptyObject( draft ) && validateDraft( draft ) ) {
gui.$textInputs.show().find( 'input' ).prop( 'disabled', false );
gui.$textArea.hide();
gui.$textInputs.children().each( $.proxy( loadDrafts, null, draft ) );
delete metadata.invalid;
}
} else {
gui.$textInputs.children().each( $.proxy( constructDrafts, null, draft ) );
if ( $.isEmptyObject( draft ) ) {
return;
}
}
Linia 556 ⟶ 567:
gui.$submit.prop( 'disabled', true );
gadget.drafts[ gadget.activeLang ] = !$.isEmptyObject( draft ) ? draft : rawDraft;
if ( isFreshDraft ) {
Linia 566 ⟶ 577:
formatversion: 2,
action: 'parse',
text: !$.isEmptyObject( draft ) ? serializeDraft( draft ) : rawDraft,
contentmodel: 'wikitext',
disablelimitreport: true
Linia 769 ⟶ 780:
$li.append( $change, $remove, $abort ).appendTo( $ul );
if ( 'invalid' in metadata ) {
$li.addClass( 'transl-entry-invalid' );
} else if ( 'unsupported' in metadata ) {
$change.addClass( 'disabled' );
}
if ( lang === active ) {
$li.addClass( 'transl-active' );
$change.addClass( 'disabled' );
} else if ( metadata.invalid ) {
$change.addClass( 'disabled' );
$li.addClass( 'transl-entry-invalid' );
} else {
$change.on( 'click', function () {
gadget.activeLang = lang;
Linia 992 ⟶ 1006:
gui.$textInputs = $( '<div>' )
.attr( 'id', 'transl-textinputs' );
gui.$textArea = $( '<div>' )
.attr( 'id', 'transl-textarea' )
.append( $( '<textarea>' )
.attr( {
rows: 6,
cols: 71
} )
)
.hide();
gadget.$defn.each( function ( i, el ) {
Linia 1149 ⟶ 1173:
),
gui.$textInputs,
gui.$textArea,
$( '<div>' )
.attr( 'id', 'transl-edit-buttons' )
Linia 1176 ⟶ 1201:
}
gui.$editbox.on( 'focus', 'input[type="text"], textarea', function () {
$activeTextInput = $( this );
} );