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>