From 1fa6181f7e6526e1bf2e85260d9051000916c47c Mon Sep 17 00:00:00 2001 From: Vendicated Date: Fri, 11 Apr 2025 18:14:09 +0200 Subject: [PATCH] Translate: use newer google api with better results --- src/plugins/translate/utils.ts | 38 +++++++++++----------------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/src/plugins/translate/utils.ts b/src/plugins/translate/utils.ts index aff64e8a..9bb175ad 100644 --- a/src/plugins/translate/utils.ts +++ b/src/plugins/translate/utils.ts @@ -29,11 +29,8 @@ export const cl = classNameFactory("vc-trans-"); const Native = VencordNative.pluginHelpers.Translate as PluginNative; interface GoogleData { - src: string; - sentences: { - // 🏳️‍⚧️ - trans: string; - }[]; + translation: string; + sourceLanguage: string; } interface DeeplData { @@ -77,21 +74,13 @@ export async function translate(kind: "received" | "sent", text: string): Promis } async function googleTranslate(text: string, sourceLang: string, targetLang: string): Promise { - const url = "https://translate.googleapis.com/translate_a/single?" + new URLSearchParams({ - // see https://stackoverflow.com/a/29537590 for more params - // holy shidd nvidia - client: "gtx", - // source language - sl: sourceLang, - // target language - tl: targetLang, - // what to return, t = translation probably - dt: "t", - // Send json object response instead of weird array - dj: "1", - source: "input", - // query, duh - q: text + const url = "https://translate-pa.googleapis.com/v1/translate?" + new URLSearchParams({ + "params.client": "gtx", + "dataTypes": "TRANSLATION", + "key": "AIzaSyDLEeFI5OtFBwYBIoK_jj5m32rZK5CkCXA", // some google API key + "query.sourceLanguage": sourceLang, + "query.targetLanguage": targetLang, + "query.text": text, }); const res = await fetch(url); @@ -101,14 +90,11 @@ async function googleTranslate(text: string, sourceLang: string, targetLang: str + `\n${res.status} ${res.statusText}` ); - const { src, sentences }: GoogleData = await res.json(); + const { sourceLanguage, translation }: GoogleData = await res.json(); return { - sourceLanguage: GoogleLanguages[src] ?? src, - text: sentences. - map(s => s?.trans). - filter(Boolean). - join("") + sourceLanguage: GoogleLanguages[sourceLanguage] ?? sourceLanguage, + text: translation }; }