Bikarhêner:Balyozxane/wergerîne.js
Zanibe: Piştî weşandinê, ji bo dîtina guhartinan dibe ku hewce be "cache"ya geroka xwe paqij bikî.
- Firefox / Safari: Pê li Shift û Reload bike an jî Ctrl-F5 an Ctrl-R bike (ji bo Mac: ⌘-R)
- Google Chrome: Pê li Ctrl-Shift-R (ji bo Mac: ⌘-Shift-R) bike
- Internet Explorer / Edge: Pê li Ctrl û Refresh bike, an jî Ctrl-F5 bike
- Opera: Pê li Ctrl-F5 bike.
// <nowiki>
//[[Bikarhêner:Balyozxane/sort-werger.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Balyozxane/sort-werger.js&action=raw&ctype=text/javascript');
function getKurdishScriptName(language) {
// Define special cases where language names need to be replaced with Kurdish translations
const scriptTranslations = {
"Bohairic": "Bohaîrî",
"Sahidic": "Sahîdî",
"Hebrew": "Îbranî",
"Jewish Aramaic": "Aramiya cihû",
"Jewish Babylonian Aramaic": "{{Z|tmr}}",
"Western Neo-Aramaic": "Neo-aramiya rojavayî",
"Middle and Late Egyptian": "Misiriya navîn û dereng",
"Old Egyptian": "Misiriya kevn",
"Middle Egyptian": "Misiriya navîn",
"Late Egyptian": "Misiriya dereng",
"Syriac": "Siryanî",
"Ancient": "Kevn",
"Carakan": "Karakanî",
"Rumi": "Rûmî",
"Adlam": "Adlamî",
"Latin": "Latînî",
"Abjad": "Erebî",
"Doric": "Dorîk",
"Föhr": "Föhr",
"Hallig": "Hallig",
"Mooring": "Mooring",
"Mongolian": "Mongolî",
"Cyrillic": "Kirîlî",
"Roman": "Latînî",
"Glagolitic": "Glagolîtîk",
"Classical": "Klasîk",
"Gurmukhi": "Gurmuxî",
"Shahmukhi": "Şahmuxî",
"Campidanese": "Kampîdanî",
"Logudorese": "Logudorî",
// Add more language translations here as needed
};
// If the language exists in the translations, return the Kurdish translation
if (language in scriptTranslations) {
return {
script: scriptTranslations[language]
};
}
// If the language is not in the translations, it's not a script name
// Return the language as it is
return language;
}
function replaceLanguageNames(inputText) {
// The regular expression to match lines with language names and W template
const regex = /\*(:)? (.*?): \{\{W(.*?)\|(.*?)\|/g;
return inputText.replace(regex, (match, asterixColon, language, WPrefix, langCode) => {
// Check if the language is Egyptian
if (language.toLowerCase() === "egyptian") {
// Always return {{Z|egy}} for Egyptian
return `*${asterixColon ? asterixColon : ''} {{Z|egy}}: {{W${WPrefix ? WPrefix : ''}|${langCode}|`;
} else if (language.toLowerCase().includes("cyrillic")) {
// Handle Cyrillic script names
const kurdishScript = getKurdishScriptName(language);
if (kurdishScript.script) {
return `*: ${kurdishScript.script}: {{W${WPrefix}|${langCode}|`;
} else {
return `*${asterixColon ? asterixColon : ''} {{Z|${langCode}}}: {{W${WPrefix ? WPrefix : ''}|${langCode}|`;
}
} else if (asterixColon === ":") {
// Replace the script names with their Kurdish translations
const scriptNames = language.split(/\s*:\s*/);
let kurdishScript = "";
for (const script of scriptNames) {
const kurdish = getKurdishScriptName(script);
if (kurdish.script) {
kurdishScript += kurdish.script + ", ";
}
}
if (kurdishScript) {
kurdishScript = kurdishScript.slice(0, -2);
return `*: ${kurdishScript}: {{W${WPrefix ? WPrefix : ''}|${langCode}|`;
} else {
return `*${asterixColon ? asterixColon : ''} {{Z|${langCode}}}: {{W${WPrefix ? WPrefix : ''}|${langCode}|`;
}
} else {
// For regular language names, replace with {{Z|langCode}}
return `*${asterixColon ? asterixColon : ''} {{Z|${langCode}}}: {{W${WPrefix ? WPrefix : ''}|${langCode}|`;
}
});
}
$(document).ready(function() {
mw.loader.using(['jquery.ui'], function() {
mw.util.addCSS('#t-wergerîne { font-weight: normal; }');
$(mw.util.addPortletLink('p-tb', '#', 'Wergerîne', 't-wergerîne', 'Beşa Translation bike Werger')).click(handleButtonClick);
});
const languagesArray = [
"Apache: Apaçî",
"Arabic: {{Z|ar}}",
"Aramaic: {{Z|arc}}",
"Azerbaijani: {{Z|az}}",
"Berber: Berberî",
"Coptic: {{Z|cop}}",
"Chinese: {{Z|zh}}",
"Cree: {{Z|cr}}",
"Fula: {{Z|ff}}",
"Greek: {{Z|el}}",
"Javanese: {{Z|jv}}",
"Ladino: {{Z|lad}}",
"Low German: {{Z|nds}}",
"Mari: Marî",
"Mongolian: {{Z|mn}}",
"North Frisian: {{Z|frr}}",
"Norwegian: {{Z|no}}",
"Old Church Slavonic: {{Z|cu}}",
"Sardinian: {{Z|sc}}",
"Serbo-Croatian: {{Z|sh}}",
"Sorbian: Sorbî",
"Sami: Samî",
// Add more languages and translations as needed
];
const regex = /\* (.+?):/g;
function replaceWithKurdishTranslations(inputText) {
return inputText.replace(regex, (match, language) => {
const translation = languagesArray.find(item => {
const [english, kurdish] = item.split(":");
return english.trim() === language.trim();
});
return translation ? `* ${translation.split(":")[1].trim()}:` : match;
});
}
function convertTemplates(content) {
// Remove lines containing "Kurdish:" or Zazaki (zza)
const excludedLanguagesRegex = /^.*(Kurdish:|Zazaki).*$/gim;
content = content.replace(excludedLanguagesRegex, '');
// Replace en.wiktionary templates with ku.wiktionary templates
content = content.replace(/\{\{trans-top.*\}\}/g, "{{werger-ser}}");
content = content.replace(/\{\{trans-bottom\}\}/g, "{{werger-bin}}");
content = content.replace(/\{\{t-egy\|/g, "{{W-egy|");
content = content.replace(/\{\{multitrans\|data=/g, "");
content = content.replace(/<([^\>]+)\>/g, "");
content = content.replace(/\n\}\}\n/g, "");
content = content.replace(/\{\{tt?\|/g, "{{W-|");
content = content.replace(/\{\{l\|/g, "{{W-|");
content = content.replace(/\{\{t(\+|-)\|/g, "{{W$1|");
content = content.replace(/\{\{tt(\+|-)\|/g, "{{W$1|");
// content = content.replace(/\{\{W(-|\+)\|ko\|([^(]+)\(([^\)]+)\)([^\}]+)?\}\}/g, "{{W$1|ko|$2$4}}, {{W$1|ko|$3}}");
content = content.replace(/\|\?/g, ""); // ji bo xwestina zayend ? ji rûpelê rake
content = content.replace(/\|alt=/g, "|cuda=");
content = content.replace(/(\||\}\})f(\||\}\})/g, '$1mêbike$2');
content = content.replace(/(\||\}\})n(\||\}\})/g, '$1nêtarbike$2');
content = content.replace(/(\||\}\})m(\||\}\})/g, '$1nêrbike$2');
content = content.replace(/(\||\}\})c(\||\}\})/g, '$1g$2');
content = content.replace(/(\||\}\})s(\||\}\})/g, '$1y$2');
content = content.replace(/(\||\}\})mêbike(\||\}\})/g, '$1m$2');
content = content.replace(/(\||\}\})nêtarbike(\||\}\})/g, '$1nt$2');
content = content.replace(/(\||\}\})nêrbike(\||\}\})/g, '$1n$2');
content = content.replace(/(\||\}\})f-p(\||\}\})/g, '$1mê-pbike$2');
content = content.replace(/(\||\}\})n-p(\||\}\})/g, '$1nêtar-pbike$2');
content = content.replace(/(\||\}\})m-p(\||\}\})/g, '$1nêr-pbike$2');
content = content.replace(/(\||\}\})mf(\||\}\})/g, '$1mêûnêrbike$2');
content = content.replace(/(\||\}\})mê-pbike(\||\}\})/g, '$1m-p$2');
content = content.replace(/(\||\}\})nêtar-pbike(\||\}\})/g, '$1nt-p$2');
content = content.replace(/(\||\}\})nêr-pbike(\||\}\})/g, '$1n-p$2');
content = content.replace(/(\||\}\})mêûnêrbike(\||\}\})/g, '$1mn$2');
content = content.replace(/.*?\{\{t-needed\|[^}]*\}\}\n?/g, "");
content = content.replace(/.*?\{\{attention\|[^}]*\}\}\n?/g, "");
content = content.replace(/.*?\{\{not used\|[^}]*\}\}\n?/g, "");
content = content.replace(/.*?\{\{tt?-?\+?check\|[^}]*\}\}\n?/g, "");
content = content.replace(/\*? [^\:]+:\n\* /g, "* "); // Navê zimanê beyî binzimanan jê bibe
content = content.replace(/\([^\)]+\)/g, ""); //Her tiştê di navbera () jê bibe
content = content.replace(/\{\{g\|[^\}]+\}\}/g, ""); // şablona {{g| bo zayendê jê bibe
content = content.replace(/.*?\{\{W(\+|-)\|lki\|(.*?)\}\}\n/g, "");
content = content.replace(/\{\{q\|[^}]*\}\}/g, "");
content = content.replace(/\{\{qual\|[^}]*\}\}/g, "");
content = content.replace(/\{\{qualifier\|[^}]*\}\}/g, "");
content = content.replace(/\{\{gloss\|[^}]*\}\}/g, "");
content = content.replace(/\{\{i\|[^}]*\}\}/g, "");
content = content.replace(/ /g, ' ');
content = content.replace(/ , /g, ', ');
content = content.replace(/,,/g, ',');
// Clean up empty lines
content = content.replace(/^\s*[\r\n]/gm, '');
return content;
}
function getOldId(pageTitle, callback) {
var apiUrl = `https://en.wiktionary.org/w/api.php?action=query&titles=${encodeURIComponent(pageTitle)}&prop=revisions&rvprop=ids&rvlimit=1&format=json&callback=?`;
$.getJSON(apiUrl, function(data) {
var pages = data.query.pages;
var pageId = Object.keys(pages)[0];
var revisions = pages[pageId].revisions;
var oldId;
if (revisions && revisions.length > 0) {
oldId = revisions[0].revid;
}
callback(oldId); // Call the callback function with the oldId value
}).fail(function (error) {
console.error("Error fetching data:", error);
callback(null); // Call the callback function with null in case of an error
});
}
function handleButtonClick() {
const $textBox = $("#wpTextbox1");
const $editSummaryBox = $("#wpSummary");
var rupelaEn = prompt("Sernavê rûpela inglîzî binivîse");
var oldId;
var cavkani;
if (rupelaEn) {
getOldId(rupelaEn, function(oldId) {
if ($textBox.length > 0) {
cavkani = '\n\n:{{werger çavkanî|en|'+ rupelaEn + '|beş=Ev qismê Wergerê|oldid=' + oldId + '}}\n';
let content = $textBox.val();
content = content.replace(/=====?Translations=?====/g, "==== Werger ====");
const transTopRegex = /\{\{trans-top\b.*?\}\}/g;
const transBottomRegex = /\{\{trans-bottom\}\}/g;
const transTopMatch = transTopRegex.exec(content);
const transBottomMatch = transBottomRegex.exec(content);
if (transTopMatch && transBottomMatch) {
// Get the start and end positions of {{trans-top}} and {{trans-bottom}}
const transTopStart = transTopMatch.index;
const transTopEnd = transTopRegex.lastIndex;
const transBottomStart = transBottomMatch.index;
const transBottomEnd = transBottomRegex.lastIndex;
// Extract the content between {{trans-top}} and {{trans-bottom}}
const extractedContent = content.substring(
transTopEnd,
transBottomStart
);
// Process the extracted content using convertTemplates and replaceWithKurdishTranslations
const processedContent = convertTemplates(extractedContent);
const translatedContent = replaceWithKurdishTranslations(processedContent);
const replacedContent = replaceLanguageNames(translatedContent);
// Check if rupelaEn starts with "translations" and remove it
if (rupelaEn.endsWith("translations")) {
rupelaEn = rupelaEn.replace(/\/translations$/g, '');
}
const sablonaEN = '* {{Z|en}}: {{W|en|' + rupelaEn + '}}';
// Replace {{trans-top}} with {{werger-ser}} and {{trans-bottom}} with {{werger-bin}}
content =
content.substring(0, transTopStart) +
"{{werger-ser}}\n" +
replacedContent +
'\n' + sablonaEN +
"\n{{werger-bin}}" + cavkani +
content.substring(transBottomEnd);
$textBox.val(content);
mw.notify("Şablonên inglîzî hatine wergerandin.");
mw.notify("Bisekine.");
// Use sortWerger() function here (on another wiki page)
sortWerger();
// Set the edit summary to "Werger ji en.wiktê"
$editSummaryBox.val("[[Bikarhêner:Balyozxane/wergerîne.js|Wergerîne]] ji [[en:"+ rupelaEn +"]]");
} else {
mw.notify(
"Required templates {{trans-top}} or {{trans-bottom}} not found on page: " +
mw.config.get("wgTitle")
);
}
}
}
)}
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
});
// </nowiki>