MediaWiki:Gadget-wikt.transliterator-widget.js
Remarque: après avoir sauvegardé, vous devez vider le cache de votre navigateur pour que les changements prennent effet. Mozilla, cliquez sur Actualiser (ou ctrl-r). Internet Explorer / Opera: ctrl-f5. Safari: cmd-r. Konqueror ctrl-r.
/*************************************************************************
* (en)
* This gadget adds small forms to transliterate text in the specified
* language. To define a form, simply define a DIV tag in the wikicode
* with the class .transliterator and the lang attribute specifying the
* language code.
*************************************************************************
* (fr)
* Ce gadget ajoute des petits formulaires pour translittérer du texte
* dans la langue donnée. Pour définir un formulaire, définir une balise
* DIV dans le wikicode avec la classe .transliterator et l’attribut lang
* contenant le code de la langue.
*************************************************************************
* v1.0 2021-06-28 First version.
*************************************************************************
* [[Catégorie:JavaScript du Wiktionnaire|transliterator-widget.js]]
* <nowiki>
*************************************************************************/
$(function () {
console.log("Chargement de Gadget-wikt.transliterator-widget.js…");
wikt.gadgets.translatorWidget = {
/**
* Maps each available language code to the template when transliterating.
* @type {Object<string, string>}
* @private
*/
_langToTemplate: {
"ar": "ar-mot",
},
/**
* API hook.
* @type {mw.Api}
* @private
*/
_api: new mw.Api(),
/**
* Initializes this gadget.
* Creates all transliteration boxes found in the page.
*/
init: function () {
var self = this;
this._api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/langues.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function (data) {
var languages = {};
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
var $transBox = $(".transliterator");
var langCode = $transBox.attr("lang");
$transBox.each(function () {
self._initBox($(this), langCode, languages[langCode]);
});
});
},
/**
* Initializes the given transliteration box.
* @param $box {Object} The box to initialize.
* @param langCode {string} Language code for the box.
* @param langName {string} Language’s name.
* @private
*/
_initBox: function ($box, langCode, langName) {
var input = new OO.ui.TextInputWidget({
placeholder: "Texte à translittérer",
});
var button = new OO.ui.ButtonWidget({
label: "Translittérer en {0}".format(langName),
});
var self = this;
button.on("click", function () {
var value = input.getValue().trim();
if (value) {
self.transliterate(langCode, value, $transOutput);
}
});
var layout = new OO.ui.ActionFieldLayout(input, button);
var $transOutput = $("<p>");
$box.removeAttr("lang");
$box.append(layout.$element, $transOutput);
},
/**
* Transliterates the given text in the specified language.
* The generated text is displayed as HTML in the given element.
* @param langCode {string} Language code to fetch the correct template.
* @param text {string} The text to transliterate.
* @param $output {Object} The jQuery element to use as output.
*/
transliterate: function (langCode, text, $output) {
var templateName = this._langToTemplate[langCode];
if (templateName) {
// noinspection JSUnresolvedFunction
this._api.parse("{{{0}|{1}}}".format(templateName, text)).then(function (renderedHTML) {
var renderedText = $(renderedHTML).find("p:first-child").html();
$output.html("Résultat : " + renderedText);
});
}
},
};
wikt.gadgets.translatorWidget.init();
});
// </nowiki>