<html lang=fr><meta charset=UTF-8><meta content="width=device-width,initial-scale=1"name=viewport><title>Zoto IPA</title><link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap"rel=stylesheet><style>:root{--primary-color:#6f1d99;--secondary-color:#2e86de;--accent-color:#ff6b81;--bg-color:#f5f5f5;--text-color:#212121;--shadow-color:rgba(0, 0, 0, 0.15);--popup-bg-color:#fff9f0;--popup-border-color:#ffecb3;--container-bg-color:#ffffff;--input-bg-color:#e6f7ff}*{margin:0;padding:0;box-sizing:border-box;font-family:Roboto,sans-serif}body{background:var(--bg-color);color:var(--text-color);display:flex;flex-direction:column;align-items:center;padding:2rem 1rem;min-height:100vh;transition:background .3s ease}.coins{position:fixed;bottom:20px;left:20px;background:var(--secondary-color);border-radius:10px;padding:10px 15px;box-shadow:0 6px 12px var(--shadow-color);color:#fff;font-weight:700;font-size:1rem;transition:transform .3s,box-shadow .3s,background-color .3s;border:2px solid var(--accent-color);z-index:1000;opacity:0;animation:fadeInUp .5s forwards}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.coins:hover{transform:scale(1.05);box-shadow:0 12px 24px var(--shadow-color);background-color:var(--accent-color)}@media (max-width:768px){.coins{font-size:.9rem;padding:8px 12px}}.popup{display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--popup-bg-color);border:2px solid var(--popup-border-color);box-shadow:0 5px 20px var(--shadow-color);z-index:100;width:90%;max-width:420px;padding:30px;border-radius:15px;animation:fadeIn .3s ease,slideIn .3s ease;text-align:center;overflow:hidden}.popup.active{display:block}.popup .close:hover{background:var(--accent-color);transform:translateY(-2px)}.popup-buttons{display:flex;justify-content:center;gap:10px;margin-top:20px}.popup button{margin-top:10px;padding:8px 16px;font-size:.9rem;font-weight:700;background-color:var(--secondary-color);color:#fff;border:2px solid var(--secondary-color);border-radius:5px;cursor:pointer;transition:background .3s,transform .2s,box-shadow .2s;box-shadow:0 3px 8px var(--shadow-color)}.popup button:hover{background-color:var(--accent-color);transform:translateY(-1px);box-shadow:0 4px 12px var(--shadow-color)}.popup .close{background:var(--primary-color)}.popup .close:hover{background:var(--accent-color)}.popup .timer{font-weight:700;margin-top:15px;font-size:1.5rem;color:var(--accent-color)}.container{max-width:900px;width:100%;background:var(--container-bg-color);padding:2rem;border-radius:15px;box-shadow:0 10px 30px var(--shadow-color);animation:slideIn .6s ease-out;transition:all .3s}h1{color:var(--primary-color);text-align:center;margin-bottom:1.5rem;font-size:2.5rem;font-weight:700;text-shadow:0 2px 5px rgba(0,0,0,.1)}h1::after{content:'';display:block;position:relative;height:4px;width:60px;background:var(--accent-color);margin:10px auto;border-radius:2px}p{text-align:center;margin-bottom:1.5rem;font-size:1.1rem;opacity:.8}.input-container{padding:1.5rem;border-radius:10px;margin-bottom:1.5rem;background:var(--input-bg-color);box-shadow:0 2px 6px var(--shadow-color)}.input-group{display:flex;gap:.75rem;margin-bottom:1rem;justify-content:center}input{flex:1;text-align:center;padding:12px 15px;border:2px solid #e0e0e0;border-radius:8px;font-size:1rem;transition:border-color .3s ease}input:focus{border-color:var(--accent-color);outline:0;box-shadow:0 0 0 3px rgba(57,73,171,.1)}button{background:var(--accent-color);color:#fff;border:none;padding:12px 20px;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;text-transform:uppercase;transition:background .3s ease,transform .2s ease}button:hover{background:var(--primary-color);transform:translateY(-2px);box-shadow:0 4px 8px var(--shadow-color)}#output{background:#f8f9fa;padding:1.5rem;border-radius:10px;font-size:1.2rem;text-align:center;min-height:60px;border:2px solid #e0e0e0;transition:all .3s ease}@media (max-width:768px){.container{padding:1.5rem}.input-group{flex-direction:column}button{width:100%}h1{font-size:2rem}}@keyframes slideIn{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.contact-button{position:fixed;bottom:20px;right:20px;width:70px;height:70px;background-color:#ff5733;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(0,0,0,.7);color:#fff;font-size:2.5rem;text-decoration:none;animation:bounce 2s infinite;transition:transform .3s,box-shadow .3s,background-color .3s}@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-15px)}}.contact-button a{color:#fff}.contact-button:hover{background-color:#c70039;transform:rotate(360deg) scale(1.1);box-shadow:0 12px 30px rgba(0,0,0,.8)}.contact-button:active{transform:scale(.9);transition:transform .1s}</style><div class=coins>Crédits Restants: <span id=coinCount>3</span></div><div class=popup id=coinsPopup><p id=popupMessage>Votre quota de crédits est épuisé. Veuillez attendre <span id=remainingTime class=timer>1000</span> secondes ou acheter des crédits supplémentaires.<div class=popup-buttons><button id=purchaseBtn onclick=showPayPalForm()>Acheter des crédits</button> <button id=closeBtn onclick=closePopup() class=close>Fermer</button></div><form action=https://www.paypal.com/ncp/payment/UGVNSEMC29ZRW id=paypalForm method=post style=display:none target=_top><input id=payNowBtn class=pp-UGVNSEMC29ZRW type=submit value="Payer maintenant"> <img alt=cards src=https://www.paypalobjects.com/images/Debit_Credit_APM.svg><section>Powered by <img alt=paypal src=https://www.paypalobjects.com/paypal-ui/logos/svg/paypal-wordmark-color.svg style=height:.875rem;vertical-align:middle></section></form></div><div class=container><h1 id=title>ZOTO IPA</h1><p id=description>Convertisseur de mots malgaches en phonétique IPA<div class=input-container><div class=input-group><input id=inputText autocomplete=off placeholder="Entrez un mot malgache"> <button id=btn onclick=convertToPhonetic()>Convertir</button></div></div><div id=output></div></div><div class=contact-button><a href=mailto:ezrdn@mbox.re>✉️</a></div><script src=https://cdn.jsdelivr.net/npm/js-cookie/src/js.cookie.js></script><script>let credits = parseInt(localStorage.getItem("credits")) || 3;
        let isBlocked = false;
        let blockEndTime = parseInt(localStorage.getItem("blockEndTime")) || null;

        function displayCoins() {
            if (isBlocked) {
                document.getElementById("coinCount").innerText = 0;
            } else {
                document.getElementById("coinCount").innerText = credits;
            }

            if (credits <= 0 && !isBlocked) {
                blockUser();
            }
        }

        function blockUser() {
            isBlocked = true;
            credits = 0; // Fixer les crédits à 0
            localStorage.setItem("credits", credits);
            blockEndTime = Date.now() + (1000 * 1000); // 1000 secondes
            localStorage.setItem("blockEndTime", blockEndTime);
            startCountdown();
            displayCoins(); // Mettre à jour l'affichage des crédits
            document.getElementById("coinsPopup").classList.add('active');
        }

        function startCountdown() {
            const countdownInterval = setInterval(() => {
                const remaining = Math.max(0, blockEndTime - Date.now());
                if (remaining <= 0) {
                    clearInterval(countdownInterval);
                    isBlocked = false;
                    credits = 3; // Réinitialiser les crédits après le blocage
                    localStorage.setItem("credits", credits);
                    displayCoins();
                    closePopup();
                }
                document.getElementById("remainingTime").innerText = Math.floor(remaining / 1000);
            }, 1000);
        }

        function closePopup() {
            document.getElementById("coinsPopup").classList.remove('active');
        }

        function initialize() {
            credits = parseInt(localStorage.getItem("credits")) || 3;
            blockEndTime = parseInt(localStorage.getItem("blockEndTime")) || null;

            if (blockEndTime && blockEndTime > Date.now()) {
                isBlocked = true;
                credits = 0;
                startCountdown();
            }

            displayCoins();
        }
        
        function showPayPalForm() {
    // Cacher le bouton d'achat et le bouton de fermeture 
    document.getElementById("purchaseBtn").style.display = 'none';
    document.getElementById("closeBtn").style.display = 'none';
    // Afficher le formulaire PayPal
    document.getElementById("paypalForm").style.display = 'block';
}

        function handlePayPalSubmit() {
    alert('Vous serez redirigé vers PayPal pour finaliser votre paiement.');
    return true; // Continue le formulaire vers PayPal
}

function handlePaymentSuccess() {
    credits += 100; // Ajoute 100 crédits en cas de succès
    localStorage.setItem("credits", credits);
    displayCoins();
    
    // Affiche l'alerte traduite
    alert(translations[currentLanguage].alertPurchaseSuccess); // Utilise la langue courante
    closePopup();
}

function blockUser() {
    isBlocked = true;
    credits = 0; // Fixer les crédits à 0
    localStorage.setItem("credits", credits);
    blockEndTime = Date.now() + (1000 * 1000); // 1000 secondes
    localStorage.setItem("blockEndTime", blockEndTime);
    startCountdown();
    displayCoins(); // Met à jour l'affichage des crédits
    document.getElementById("coinsPopup").classList.add('active');
    
    // Affiche l'alerte pour l'utilisateur bloqué
    alert(translations[currentLanguage].alertBlockedUser);
}

        window.onload = initialize;
        
       // Empêcher le clic droit
  document.addEventListener('contextmenu', (e) => e.preventDefault());
  document.addEventListener('keydown', (e) => {
    if (e.key === 'F12' || (e.ctrlKey && e.shiftKey && (e.key === 'I' || e.key === 'J')) || (e.ctrlKey && e.key === 'U')) {
      e.preventDefault();
    }
  });
  
  // Anti-débogage
  (function () {
    const element = new Image();
    Object.defineProperty(element, 'id', {
      get: function () {
        throw new Error('Debugging is not allowed.');
      },
    });
    setInterval(() => {
      console.log(element);
    }, 1000);
  })();
  
  // règles 
  const noAccentWords = ["manao ahoana", "fananana", "aotra", "aoka", "mizaka", "misaotra", "mitete", "midoka", "mabdoka", "tsotsotra", "mitsotra", "mifoka", "miloka",  "fanambarana", "maratra", "makà", "mialà", "miasà", "miomàna", "miomàna", "mihomàna", "mifonà", "mamanà", "mijanòna", "manomàna", "mamelà", "fizarana", "rà", "fizaràna", "karàna", "karana", "tanàna", "lalàna", "asa", "isa", "iza", "izy", "ivy",  "avy", "ovy", "iva", "aza", "ary", "àry", "ilo", "indro", "any", "eny", "iny", "iry", "ito", "aty", "abo", "ebo", "ala", "elo", "ela", "va", "ve", "vy", "zo", "izaho", "na", "sa", "sy", "ta", "te", "ny", "no", "ra", "ro", "ry", "fa", "fo", "ho", "ka", "manao akôry", "manao akory", "mantsana", "ianao", "aho", "efa", "sina", "zoma", "ity", "sharia", "ilay", "oisikia", "abidy", "soalà", "soala", "na aiza na aiza", "mikotaoaza", "katolika", "politika", "sosialy", "zo", "na inona na inona"]; // Ajoutez vos mots sans accent ici
            
        function splitIntoSyllables(word) {
            return word.match(/([aeiouy]+[^aeiouy]*)/g) || [word];
        }

        function applyAccent(outputText, accentPosition) {
            const syllables = outputText.split(/(?=[aioue])/);
            if (syllables.length > accentPosition) {
                const syllableToAccent = syllables[accentPosition];
                const consonantIndex = syllableToAccent.search(/[^aeiou]/);
                if (consonantIndex !== -1) {
                    syllables[accentPosition] = syllableToAccent.slice(0, consonantIndex) + "'" + syllableToAccent.slice(consonantIndex);
                }
            }
            return syllables.join('');
        }

        function removeExtraApostrophes(outputText) {
            const apostropheOccurences = outputText.split("'");
            if (apostropheOccurences.length > 2) {
                const validApostrophe = apostropheOccurences[0];
                const rest = apostropheOccurences.slice(1).join('').replace(/'/g, '');
                return validApostrophe + "'" + rest;
            }
            return outputText;
        }

        function determineAccent(inputText) {
            const trimmedInput = inputText.trim().toLowerCase();
            const syllables = splitIntoSyllables(trimmedInput); 
            const syllableNum = syllables.length;
            
             // Exception 6 : Si le mot se termine par "iaka", "iana" ou "iatra" ou etc
            if (/iaka$|iana$|iatra$|oaka$|oana$|oatra$|oika$|oina$|oitra$/.test(trimmedInput)) {
                const accentIndex = syllables.findIndex(syllable => syllable.includes('ø'));
                return accentIndex !== -1 ? accentIndex : syllableNum - 2; 
            } 
            
            if (/oy$|oa$/.test(trimmedInput)) {
                const accentIndex = syllables.findIndex(syllable => syllable.includes('ø'));
                return accentIndex !== -1 ? accentIndex : syllableNum - 1; 
            } 
            
            // Exception 5 : Si le mot se termine par "ia"
            if (trimmedInput.endsWith("ia")) {
                return syllableNum - 1; // Accent sur la dernière syllabe
            } 
        

      // Exception 2 et 3 : Pour les mots commencant par "FI" ou "FA"
            if ((trimmedInput.startsWith("fi") && (syllableNum === 4 || syllableNum === 6)) || 
                (trimmedInput.startsWith("fa") && (syllableNum === 4 || syllableNum === 5))) {
                return syllableNum - 2; // Accentuate second syllable from end
            } 
            
            // Règles standards
            if (trimmedInput.endsWith("ka") || trimmedInput.endsWith("na") || trimmedInput.endsWith("tra")) {
                return syllableNum >= 3 ? syllableNum - 3 : syllableNum - 2; // Accentuate third syllable from end
            } 

            // Exception 4 : Accent sur les syllabes contenant les voyelles spécifiées
function determineAccent(word) {
    const syllables = splitIntoSyllables(word);

    // Recherche des voyelles spéciales (e, à, ì, ò, ỳ)
    const specialVowels = /[eàìòỳ]/;
    for (let i = 0; i < syllables.length; i++) {
        if (specialVowels.test(syllables[i])) {
            return i; // Retourne l'index de la syllabe contenant une voyelle spéciale
        }
    }

    // Si aucune voyelle spéciale n'est trouvée, retourne l'avant-dernière syllabe
    return Math.max(syllables.length - 2, 0);
}

            // Par défaut, l'accent est sur la deuxième syllabe à partir de la fin
            return syllableNum >= 2 ? syllableNum - 2 : syllableNum - 1;
        }

        function removeAccents(word) {
            return word
                .replace(/[éèêë]/g, 'e')
                .replace(/[àâ]/g, 'a')
                .replace(/[îï]/g, 'i')
                .replace(/[ôö]/g, 'o')
                .replace(/[ùûü]/g, 'u')
                // Ajoutez d'autres remplacements si nécessaire
        }

        function getPhoneticWriting(inputText) {
            const accentIndex = determineAccent(inputText);
            const syllables = splitIntoSyllables(inputText);

            let phoneticOutput = syllables.map((syllable, index) => {
                return index === accentIndex ? syllable.toUpperCase() : removeAccents(syllable);
            }).join('-');

            return phoneticOutput;
        }
        
        function convertToPhonetic() {
            if (isBlocked) {
                document.getElementById("coinsPopup").classList.add('active');
                return;
            }

            if (credits <= 0) {
                blockUser();
                return;
            }

            credits--; // Décrémenter les crédits s'ils sont disponibles
            localStorage.setItem("credits", credits);
            displayCoins();

            let inputText = document.getElementById("inputText").value.trim().toLowerCase();
            let outputText = inputText;

            if (inputText === "manao akôry" || inputText === "manao akory") {
                outputText = "mana'kɔːri̥";
            } else if (inputText === "manao ahoana") {
                outputText = "mana'wɔːnḁ";
            } else if (inputText === "mantsana") {
                outputText = "man'tsanḁ";
            } else if (inputText === "ianao") {
                outputText = "e'naw || a'naw";
            } else if (inputText === "aho") {
                outputText = "ahu̥";
            } else if (inputText === "efa") {
                outputText = "fḁ";
            } else if (inputText === "sina") {
                outputText = "'sinnḁ";
            } else if (inputText === "soalà" || inputText === "soala") {
                outputText = "swaˈlaa";
            } else if (inputText === "soala" || inputText === "soala") {
                outputText = "swaˈlaa";
            } else if (inputText === "zoma") {
                outputText = "zu'maa";
            } else if (inputText === "abidy") {
                outputText = "abi'di";
            } else if (inputText === "ity") {
                outputText = "'ti";
            } else if (inputText === "ilay") {
                outputText = "laj";
            } else if (inputText === "oisikia") {
                outputText = "wis'ki";
            } else if (inputText === "na inona na inona") {
                outputText = "ninni'nnḁ";
            } else if (inputText === "na aiza na aiza") {
                outputText = "naiza'naizḁ";
             } else if (inputText === "sharia") {
                outputText = "ʃa'rjḁ";
            } else if (inputText === "mikotaoaza") {
                outputText = "mi'kuta'wazḁ";
            } else if (inputText === "katolika") {
                outputText = "katɔː'likḁ";
            } else if (inputText === "politika") {
                outputText = "pɔːli'tikḁ";
            }
            else if (inputText === "sosialy") {
                outputText = "sɔːsiali̥";
            } 
            else if (inputText === "fa") {
                outputText = "faa";
            } 
            else if (inputText === "fo") {
                outputText = "fu";
            } 
            else if (inputText === "ho") {
                outputText = "hu";
            } 
            else if (inputText === "ka") {
                outputText = "ku";
            } 
            else if (inputText === "na") {
                outputText = "naa";
            } 
            else if (inputText === "no") {
                outputText = "nu";
            } 
            else if (inputText === "ny") {
                outputText = "ni";
            } 
            else if (inputText === "ra") {
                outputText = "raa";
            } 
            else if (inputText === "rà") {
                outputText = "raa";
            } 
           else if (inputText === "ro") {
                outputText = "ru";
            } 
            else if (inputText === "ry") {
                outputText = "ri";
            } 
            else if (inputText === "sa") {
                outputText = "saa";
            } 
            else if (inputText === "sy") {
                outputText = "si";
            } 
            else if (inputText === "ta") {
                outputText = "taa";
            } 
            else if (inputText === "te") {
                outputText = "te";
            } 
            else if (inputText === "va") {
                outputText = "vaa";
            } 
            else if (inputText === "ve") {
                outputText = "ve";
            } 
            else if (inputText === "vy") {
                outputText = "vi";
            } 
            else if (inputText === "zo") {
                outputText = "zu";
            } 
            else if (inputText === "izaho") {
                outputText = "za(w)";
            } 
            else if (inputText === "abo") {
                outputText = "'abu̥";
            } 
            else if (inputText === "ebo") {
                outputText = "'ebu̥";
            } 
            else if (inputText === "ala") {
                outputText = "'alḁ";
            } 
            else if (inputText === "elo") {
                outputText = "'elu̥";
            } 
            else if (inputText === "ela") {
                outputText = "'elḁ";
            } 
            else if (inputText === "ilo") {
                outputText = "'ilu̥";
            } 
            else if (inputText === "indro") {
                outputText = "'indru̥";
            } 
            else if (inputText === "any") {
                outputText = "'any";
            } 
            else if (inputText === "eny") {
                outputText = "'eni̥";
            } 
            else if (inputText === "iny") {
                outputText = "'ini̥";
            } 
            else if (inputText === "ary") {
                outputText = "'ari̥ (et) || a’ri (là-bas)";
            } 
            else if (inputText === "iry") {
                outputText = "ri";
            } 
            else if (inputText === "ito") {
                outputText = "'itu̥";
            } 
            else if (inputText === "aty") {
                outputText = "'ati̥ (foie) || a’ti (ici)";
            } 
            
            else if (inputText === "avy") {
                outputText = "avi̥";
            } 
            
            else if (inputText === "ovy") {
                outputText = "'uvi̥";
            } 
            
            else if (inputText === "iva") {
                outputText = "'ivḁ";
            } 
            
            else if (inputText === "aza") {
                outputText = "'aza";
            } 
            else if (inputText === "iza") {
                outputText = "'izḁ";
            } 
            
            else if (inputText === "izy") {
                outputText = "'izi̥";
            } 
            
            else if (inputText === "ivy") {
                outputText = "'ivi̥";
            } 
            
            else if (inputText === "asa") {
                outputText = "'asḁ";
            } 
            else if (inputText === "isa") {
                outputText = "'isḁ";
            } 
            else if (inputText === "fananana") {
                outputText = "fa'nananḁ";
            } 
            else if (inputText === "lalàna") {
                outputText = "la'lanḁ";
            } 
            else if (inputText === "tanàna") {
                outputText = "tan'anḁ";
            } 
            else if (inputText === "karàna") {
                outputText = "kar'anḁ";
            } 
            else if (inputText === "karana") {
                outputText = "1. 'karanḁ || 2. ka'ranḁ";
            } 
            else if (inputText === "fizaràna") {
                outputText = "fizar'anḁ";
            } 
            else if (inputText === "fizarana") {
                outputText = "1. fi'zaranḁ || 2. fiza'ranḁ";
            } 
            else if (inputText === "makà") {
                outputText = "ma'kaa";
            } 
            else if (inputText === "mialà") {
                outputText = "me'laa";
            } 
            else if (inputText === "miasà") {
                outputText = "me'saa";
            } 
            else if (inputText === "mifonà") {
                outputText = "mifu'naa";
            } 
            else if (inputText === "mamanà") {
                outputText = "mama'naa";
            } 
            else if (inputText === "mamelà") {
                outputText = "mame'laa";
            } 
            else if (inputText === "manomàna") {
                outputText = "manu'manḁ";
            } 
            else if (inputText === "miomàna") {
                outputText = "miw'manḁ";
            } 
           else if (inputText === "mihomàna") {
                outputText = "mihu'manḁ";
            } 
            else if (inputText === "fanambarana") {
                outputText = "1. fanamba'ranḁ || 2. fana’mbaranḁ";
            } 
            else if (inputText === "maratra") {
                outputText = "ma'raʈ͡ʂḁ";
            } 
            else if (inputText === "misaotra") {
                outputText = "mi'sɔːʈ͡ʂḁ";
            } 
            else if (inputText === "tsotsotra") {
                outputText = "tsu't͡suʈ͡ʂḁ";
            } 
            else if (inputText === "mitsotra") {
                outputText = "mi't͡suʈ͡ʂḁ";
            } 
            else if (inputText === "mifoka") {
                outputText = "mi'fukḁ";
            } 
            else if (inputText === "mitsoka") {
                outputText = "mi't͡sokḁ";
            } 
            else if (inputText === "miloka") {
                outputText = "mi'lukḁ";
            } 
            else if (inputText === "midoka") {
                outputText = "mi'dukḁ";
            } 
            else if (inputText === "mandoka") {
                outputText = "man'dukḁ";
            } 
            else if (inputText === "mitete") {
                outputText = "mite'te";
            } 
            else if (inputText === "mizaka") {
                outputText = "mi'zakḁ";
            } 
               else if (inputText === "mijanòna") {
                outputText = "mija'nunḁ";
            } 
            else if (inputText === "aoka") {
                outputText = "'awkḁ || ’ɔːkḁ";
            } 
            else if (inputText === "aotra") {
                outputText = "'awʈ͡ʂḁ ";
            } 
            

            const isNoAccentWord = noAccentWords.includes(inputText);            

            const rules = [
                { regex: /io/g, replacement: "iw" },
                { regex: /oitra$/g, replacement: "uiʈ͡ʂḁ" },
                { regex: /oika$/g, replacement: "uikḁ" },
                { regex: /oina$/g, replacement: "u(i)nḁ" },
                { regex: /j/g, replacement: "d͡z" },
                { regex: /ziana/g, replacement: "z'jannḁ" },
                { regex: /peana/g, replacement: "pe'jannḁ" },
                { regex: /mima/g, replacement: "mmḁ" },
                { regex: /mina/g, replacement: "mma" },
                { regex: /nina/g, replacement: "nnḁ" },
                { regex: /nona/g, replacement: "nnḁ" },
                { regex: /iaka$/g, replacement: "ikḁ" },
                { regex: /iana$/g, replacement: "inḁ" },
                { regex: /iatra$/g, replacement: "iʈ͡ʂḁ" },
                { regex: /ia$/g, replacement: "i" },
                { regex: /ia/g, replacement: "ja" },
                { regex: /dr/g, replacement: "ɖ͡ʐ" },
                { regex: /ts/g, replacement: "t͡s" },
                { regex: /tr/g, replacement: "ʈ͡ʂ" },
                { regex: /sh/g, replacement: "ʃ" },
                { regex: /oana$/g, replacement: "unḁ" },
                 { regex: /^hoa/g, replacement: "wa" },
                 { regex: /^oa/g, replacement: "wa" },
                { regex: /oa$/g, replacement: "u(wḁ)" },
                { regex: /oa/g, replacement: "ɔː" },
                { regex: /a$/g, replacement: "ḁ" },
                { regex: /ay/g, replacement: "aj" },
                { regex: /ey/g, replacement: "ej" },
                { regex: /oy$/g, replacement: "uj" },
                { regex: /y$/g, replacement: "i̥" },
                { regex: /ao/g, replacement: "aw" },
                { regex: /ô/g, replacement: "ɔː" },
                { regex: /oe/g, replacement: "we" },
                { regex: /oi/g, replacement: "wi" },
                { regex: /o$/g, replacement: "u̥" },
                { regex: /o/g, replacement: "u" },
                { regex: /h/g, replacement: "(h)" },
                { regex: /aa/g, replacement: "a" },
                { regex: /aḁ/g, replacement: "a" },
                { regex: /ae/g, replacement: "eje" },
                { regex: /ai/g, replacement: "aj" },
                { regex: /ee/g, replacement: "e" },
                { regex: /ea/g, replacement: "e" },
                { regex: /eḁ/g, replacement: "e" },
                { regex: /ei/g, replacement: "ej" },
                { regex: /ii/g, replacement: "i" },
                { regex: /ie/g, replacement: "ije" },
                { regex: /ea$/g, replacement: "e" },
                { regex: /à/g, replacement: "a" },
                { regex: /ò/g, replacement: "u" },
                { regex: /ì/g, replacement: "i" },
                { regex: /ỳ/g, replacement: "y" },
            ];
            
            rules.forEach(rule => {
                outputText = outputText.replace(rule.regex, rule.replacement);
            });

            if (!isNoAccentWord) {
                const accentPosition = determineAccent(inputText);
                outputText = applyAccent(outputText, accentPosition);
            }

            outputText = removeExtraApostrophes(outputText);

            document.getElementById("output").innerText = "[ " + outputText + " ]";
        }
        
        // traductions automatiques 
        const translations = {
    fr: {
        title: "ZOTO IPA",
        description: "Convertisseur de mots malgaches en phonétique IPA",
        placeholder: "Entrez un mot malgache",
        btn: "Convertir",
        popupMessage: "Votre quota de crédits est épuisé. Veuillez attendre <span class='timer' id='remainingTime'>1000</span> secondes ou acheter des crédits supplémentaires.",
        closeBtn: "Fermer",
        purchaseBtn: "Acheter des crédits",
        payNow: "Acheter maintenant",
        alertPurchaseSuccess: "Achat réussi ! Vous avez reçu 100 crédits supplémentaires.", // Nouvelle ligne pour le succès d'achat
        alertBlockedUser: "Votre quota de crédits est épuisé. Veuillez attendre quelques instants.", // Alerte pour l'utilisateur bloqué
        coinText: "Crédits Restants: <span id='coinCount'>3</span>"
    },
    en: {
        title: "ZOTO IPA",
        description: "Malagasy words to IPA phonetic converter",
        placeholder: "Enter a Malagasy word",
        btn: "Convert",
        popupMessage: "Your credit quota is exhausted. Please wait <span class='timer' id='remainingTime'>1000</span> seconds or purchase additional credits.",
        closeBtn: "Close",
        purchaseBtn: "Buy Credits",
        payNow: "Buy now",
        alertPurchaseSuccess: "Purchase successful! You have received 100 additional credits.", // Nouvelle ligne pour le succès d'achat
        alertBlockedUser: "Your credit quota is exhausted. Please wait a moment.", // Alerte pour l'utilisateur bloqué
        coinText: "Remaining Credits: <span id='coinCount'>3</span>"
    },
    ar: {
        title: "زوتو فونيتيك",
        description: "محول الكلمات الملغاشية إلى الفونيتيك الدولي",
        placeholder: "أدخل كلمة ملغاشية",
        btn: "تحويل",
        popupMessage: "تم استنفاد رصيدك. يرجى الانتظار <span class='timer' id='remainingTime'>1000</span> ثانية أو شراء أرصدة إضافية.",
        closeBtn: "إغلاق",
        purchaseBtn: "شراء أرصدة",
        payNow: "شراء الآن",
        alertPurchaseSuccess: "تم شراء بنجاح! لقد حصلت على 100 رصيد إضافي.", // Nouvelle ligne pour le succès d'achat
        alertBlockedUser: "لقد استنفدت رصيدك. يرجى الانتظار لبعض الوقت.", // Alerte pour l'utilisateur bloqué
        coinText: "الرصيد المتبقي: <span id='coinCount'>3</span>"
    }
};

let currentLanguage = 'fr'; // Valeur par défaut
function setLanguage(lang) {
	currentLanguage = lang; // Définit la langue actuelle
    document.getElementById("title").innerText = translations[lang].title;
    document.getElementById("description").innerText = translations[lang].description;
    document.getElementById("inputText").placeholder = translations[lang].placeholder;
    document.getElementById("btn").innerText = translations[lang].btn;

    const popupMessageElement = document.getElementById("popupMessage");
    if (popupMessageElement) {
        popupMessageElement.innerHTML = translations[lang].popupMessage;
    }

    document.getElementById("closeBtn").innerText = translations[lang].closeBtn;
    
    // Met à jour le texte du bouton d'achat
    document.getElementById("purchaseBtn").innerText = translations[lang].purchaseBtn; // Mettez à jour ici !
    
    // Assurez-vous également que le bouton "Payer maintenant" est mis à jour ici si nécessaire
    document.getElementById("payNowBtn").value = translations[lang].payNow; // Ceci est pour le bouton PayPal.
 
    // Mettez à jour le texte des crédits restants
    document.querySelector(".coins").innerHTML = translations[lang].coinText;
}

// Detecter et appliquer la langue de l'utilisateur
document.addEventListener('DOMContentLoaded', () => {
    const userLang = navigator.language || navigator.userLanguage; // Détecte la langue de l'utilisateur
    const lang = userLang.startsWith('ar') ? 'ar' : (userLang.startsWith('en') ? 'en' : 'fr');
    setLanguage(lang); // Configure la langue
});</script>