MediaWiki:Gadget-global-utils.js
Vai alla navigazione
Vai alla ricerca
Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.
- Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
- Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
- Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
- Opera: premi Ctrl-F5.
const wikis = Object.freeze( require( './global.json' ).wikis );
const wikiList = Object.freeze( Object.values( wikis ) );
function localization( i18nData ) {
const i18n = {};
mw.language.getFallbackLanguageChain().forEach( function(lang) {
if ( !i18nData.hasOwnProperty( lang ) ) return;
getAllKeys(i18nData[lang], i18n);
} );
return i18n;
}
function getAllKeys(data, target) {
Object.keys(data).forEach( function(key) {
if ( !data.hasOwnProperty( key ) ) return;
if ( target.hasOwnProperty( key ) ) {
if ( typeof target[key] === 'object' && !Array.isArray(target[key]) && target[key] !== null
&& typeof data[key] === 'object' && !Array.isArray(data[key]) && data[key] !== null ) {
getAllKeys(data[key], target[key]);
}
return;
}
target[key] = structuredClone(data[key]);
} );
}
class MessageParser {
constructor( i18nData, resolved ) {
this.map = new mw.Map();
if ( resolved ) this.map.set( i18nData );
else this.map.set( localization( i18nData ) );
}
message( key, ...parameters ) {
return new mw.Message( this.map, key, parameters );
}
msg( key, ...parameters ) {
return this.message( key, ...parameters ).text();
}
}
module.exports = {
wikis,
wikiList,
localization,
MessageParser
};