<!doctypehtml><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:80px;right:80px;background:var(--secondary-color);border-radius:50%;padding:15px 20px;box-shadow:0 4px 15px var(--shadow-color);color:#fff;font-weight:700;font-size:1.4rem;transition:transform.3s}.coins:hover{transform:scale(1.1)}.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{margin-top:-20px;padding:10px;background:var(--primary-color);color:#fff;font-size:1rem;border:none;border-radius:8px;cursor:pointer;transition:background.3s,transform.2s}.popup.close:hover{background:var(--accent-color);transform:translateY(-2px)}.popup button{margin-top:15px;padding:12px 20px;background-color:var(--primary-color);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:background.3s,transform.2s}.popup button:hover{background-color:var(--accent-color);transform:translateY(-2px)}.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><button id=closeBtn onclick=closePopup()class=close>Fermer</button><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.<form id=purchaseForm onsubmit=handlePurchase(event)><input id=purchaseBtn class=pp-WXZKTQJSERSFQ type=submit value="Acheter des crédits"></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:let isBlocked=!1;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=!0;credits=0;localStorage.setItem("credits",credits);blockEndTime=Date.now()+(1000*1000);localStorage.setItem("blockEndTime",blockEndTime);startCountdown();displayCoins();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=!1;credits=3;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=!0;credits=0;startCountdown()}
displayCoins()}
function handlePurchase(event){event.preventDefault();handlePurchaseSuccess()}
function handlePurchaseSuccess(){credits+=500;localStorage.setItem("credits",credits);displayCoins();alert("Achat réussi ! Vous avez reçu 500 crédits supplémentaires.");closePopup()}
window.onload=initialize;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()}});(function(){const element=new Image();Object.defineProperty(element,'id',{get:function(){throw new Error('Debugging is not allowed.')},});setInterval(()=>{console.log(element)},1000)})();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"];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;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}
if(trimmedInput.endsWith("ia")){return syllableNum-1}
if((trimmedInput.startsWith("fi")&&(syllableNum===4||syllableNum===6))||(trimmedInput.startsWith("fa")&&(syllableNum===4||syllableNum===5))){return syllableNum-2}
if(trimmedInput.endsWith("ka")||trimmedInput.endsWith("na")||trimmedInput.endsWith("tra")){return syllableNum>=3?syllableNum-3:syllableNum-2}
function determineAccent(word){const syllables=splitIntoSyllables(word);const specialVowels=/[eàìòỳ]/;for(let i=0;i<syllables.length;i++){if(specialVowels.test(syllables[i])){return i}}
return Math.max(syllables.length-2,0)}
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')}
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--;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+" ]"}
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",coinText:"Crédits Restants: <span id='coinCount'>3</span>"},ar:{title:"زوتو فونيتيك",description:"محول الكلمات الملغاشية إلى الفونيتيك الدولي",placeholder:"أدخل كلمة ملغاشية",btn:"تحويل",popupMessage:"تم استنفاد رصيدك. يرجى الانتظار <span class='timer' id='remainingTime'>1000</span> ثانية أو شراء أرصدة إضافية.",closeBtn:"إغلاق",purchaseBtn:"شراء أرصدة",coinText:"الرصيد المتبقي: <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",coinText:"Remaining Credits: <span id='coinCount'>3</span>"}};function setLanguage(lang){console.log("Langue sélectionnée :",lang);console.log("Ancienne valeur du bouton:",document.getElementById("purchaseBtn").value);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;document.getElementById("purchaseBtn").value=translations[lang].purchaseBtn;console.log("Nouvelle valeur du bouton:",document.getElementById("purchaseBtn").value);document.querySelector(".coins").innerHTML=translations[lang].coinText}
document.addEventListener('DOMContentLoaded',()=>{const userLang=navigator.language||navigator.userLanguage;console.log("Langue de l'utilisateur détectée :",userLang);const lang=userLang.startsWith('ar')?'ar':(userLang.startsWith('en')?'en':'fr');setLanguage(lang)});</script>