yang baru buat saya adalah fungsi penterjemahan
<script>
/* ============================
SMART TRANSLATION (Google → Libre → MyMemory)
============================ */
const GOOGLE_TRANSLATE_ENDPOINT =
"https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=";
const LIBRETRANSLATE_ENDPOINT = "https://libretranslate.org/translate";
const MYMEMORY_ENDPOINT = "https://api.mymemory.translated.net/get?q=";
async function translateSmartSingle(text) {
if (!text || !text.trim()) return "";
/* Google unofficial */
try {
let r = await fetch(GOOGLE_TRANSLATE_ENDPOINT + encodeURIComponent(text));
if (r.ok) {
let arr = await r.json();
if (Array.isArray(arr) && arr[0]) {
let out = "";
for (let seg of arr[0]) if (seg[0]) out += seg[0];
if (out.trim()) return out;
}
}
} catch(e){}
/* Libre */
try {
let r = await fetch(LIBRETRANSLATE_ENDPOINT, {
method:"POST",
headers:{ "Content-Type":"application/json" },
body:JSON.stringify({
q:text, source:"auto", target:"en", format:"text"
})
});
if (r.ok) {
let j = await r.json();
if (j.translatedText) return j.translatedText;
}
} catch(e){}
/* MyMemory */
try {
let r = await fetch(MYMEMORY_ENDPOINT + encodeURIComponent(text) + "&langpair=auto|en");
if (r.ok) {
let j = await r.json();
if (j.responseData?.translatedText) return j.responseData.translatedText;
}
} catch(e){}
return "(translation unavailable)";
}
Comments
Post a Comment