Karber:Balyozxane/çarnayış.js
Note: Qeydi ra dıme, gani viriya cıgeyrayoği pak bo ke vurnayışi bıvêniyê.
- Gışta şıma ke niya ro gocega Firefox / Safari: Shift ser, bıtıknê ra newe ra bar kerên ya zi Ctrl-F5 ya zi Ctrl-R bıtıknê (seba Mac ra ⌘-R).
- Google Chrome: Ctrl-Shift-R ro nê. (seba Mac ra ⌘-Shift-R)
- Internet Explorer / Edge: Ctrl ke niyo ro cı, Newe ke bıtıknê ya zi Ctrl-F5 bıkerê.
- Opera: Ctrl-F5 bıtıknê.
// <nowiki>
//[[Karber:Balyozxane/sort-çarnayış.js]]
mw.loader.load('//diq.wiktionary.org/w/index.php?title=Karber:Balyozxane/sort-çarnayış.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": "Bohairi",
"Sahidic": "Sahidi",
"Hebrew": "İbrani",
"Jewish Aramaic": "Aramiya cihû",
"Jewish Babylonian Aramaic": "{{z|tmr}}",
"Syriac": "Sıryani",
"Ancient": "Kevn",
"Carakan": "Karakani",
"Rumi": "Rumi",
"Adlam": "Adlami",
"Latin": "Latini",
"Doric": "Dorik",
"Föhr": "Föhr",
"Hallig": "Hallig",
"Mooring": "Mooring",
"Mongolian": "Mongoli",
"Cyrillic": "Kırili",
"Roman": "Latini",
"Glagolitic": "Glagolitik",
"Classical": "Klasik",
"Gurmukhi": "Gurmuxi",
"Shahmukhi": "Şahmuxi",
// 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 = /\*(:)? (.*?): \{\{ç(.*?)\|(.*?)\|/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}}: {{ç${WPrefix ? WPrefix : ''}|${langCode}|`;
} else if (language.toLowerCase().includes("cyrillic")) {
// Handle Cyrillic script names
const kurdishScript = getKurdishScriptName(language);
if (kurdishScript.script) {
return `*: ${kurdishScript.script}: {{ç${WPrefix}|${langCode}|`;
} else {
return `*${asterixColon ? asterixColon : ''} {{z|${langCode}}}: {{ç${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}: {{ç${WPrefix ? WPrefix : ''}|${langCode}|`;
} else {
return `*${asterixColon ? asterixColon : ''} {{z|${langCode}}}: {{ç${WPrefix ? WPrefix : ''}|${langCode}|`;
}
} else {
// For regular language names, replace with {{z|langCode}}
return `*${asterixColon ? asterixColon : ''} {{z|${langCode}}}: {{ç${WPrefix ? WPrefix : ''}|${langCode}|`;
}
});
}
$(document).ready(function() {
mw.loader.using(['jquery.ui'], function() {
mw.util.addCSS('#t-çarnayış { font-weight: normal; }');
$(mw.util.addPortletLink('p-tb', '#', 'Çarnayış', 't-çarnayış', 'Beşa Translation bike Çarnayış')).click(handleButtonClick);
});
const languagesArray = [
"Apache: Apaçi",
"Arabic: {{z|ar}}",
"Aramaic: {{z|arc}}",
"Berber: Berberi",
"Coptic: {{z|cop}}",
"Chinese: {{z|zh}}",
"Cree: {{z|cr}}",
"Fula: {{z|ff}}",
"Javanese: {{z|jv}}",
"Kurdish: Kurdki",
"Ladino: {{z|lad}}",
"Low German: {{z|nds}}",
"Mari: Mari",
"Mongolian: {{z|mn}}",
"North Frisian: {{z|frr}}",
"Norwegian: {{z|no}}",
"Old Church Slavonic: {{z|cu}}",
"Serbo-Croatian: {{z|sh}}",
"Sorbian: Sorbi",
"Sami: Sami",
// 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 = /^.*(Zazaki:).*$/gim;
content = content.replace(excludedLanguagesRegex, '');
// Clean up empty lines
content = content.replace(/^\s*[\r\n]/gm, '');
// Replace en.wiktionary templates with ku.wiktionary templates
content = content.replace(/\{\{trans-top.*\}\}/g, "{{ç-ser}}");
content = content.replace(/\{\{trans-bottom\}\}/g, "{{ç-bın}}");
// 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, "{{ç-|");
content = content.replace(/\{\{t(\+|-)\|/g, "{{ç$1|");
content = content.replace(/\{\{tt(\+|-)\|/g, "{{ç$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(/(\||\}\})f(\||\}\})/g, '$1mêbike$2');
content = content.replace(/(\||\}\})n(\||\}\})/g, '$1nêtarbike$2');
content = content.replace(/(\||\}\})m(\||\}\})/g, '$1nêrbike$2');
//c common? content = content.replace(/(\||\}\})c(\||\}\})/g, '$1g$2');
//s singular? 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(/(\||\}\})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(/.*?\{\{t-needed\|[^}]*\}\}\n?/g, "");
content = content.replace(/.*?\{\{attention\|[^}]*\}\}\n?/g, "");
content = content.replace(/.*?\{\{not used\|[^}]*\}\}\n?/g, "");
content = content.replace(/.*?\{\{t-?\+?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(/\{\{q\|[^}]*\}\}/g, "");
content = content.replace(/\{\{qual\|[^}]*\}\}/g, "");
content = content.replace(/\{\{qualifier\|[^}]*\}\}/g, "");
content = content.replace(/\{\{gloss\|[^}]*\}\}/g, "");
content = content.replace(/ /g, ' ');
content = content.replace(/ , /g, ', ');
content = content.replace(/,,/g, ',');
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=== Çıme ===\n*Çıme bo çarnayış {{çıme2|en.wiktionary.org: [[:en:Special:PermanentLink'+ '/' + oldId + '|' + rupelaEn + ']] }}\n';
let content = $textBox.val();
content = content.replace(/=====?Translations=?====/g, "==== Çarnayış ====");
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);
const sablonaEN = '* {{z|en}}: {{ç|en|' + rupelaEn + '}}';
// Replace {{trans-top}} with {{werger-ser}} and {{trans-bottom}} with {{werger-bin}}
content =
content.substring(0, transTopStart) +
"{{ç-ser}}\n" +
replacedContent +
'\n' + sablonaEN +
"{{ç-bın}}" + 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("[[Karber:Balyozxane/çarnayış.js|Çarnayış]] from en.wikt");
} 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>