[feat] new google translator api (#62)
This commit is contained in:
@@ -341,13 +341,11 @@
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|
||||||
{#if isTauri}
|
|
||||||
<span class="text-neutral-200 mt-4">{language.translator}</span>
|
<span class="text-neutral-200 mt-4">{language.translator}</span>
|
||||||
<select class="bg-transparent input-text mt-2 mb-4 text-gray-200 appearance-none text-sm" bind:value={$DataBase.translator}>
|
<select class="bg-transparent input-text mt-2 mb-4 text-gray-200 appearance-none text-sm" bind:value={$DataBase.translator}>
|
||||||
<option value="" class="bg-darkbg appearance-none">{language.disabled}</option>
|
<option value="" class="bg-darkbg appearance-none">{language.disabled}</option>
|
||||||
<option value="ko" class="bg-darkbg appearance-none">한국어</option>
|
<option value="ko" class="bg-darkbg appearance-none">한국어</option>
|
||||||
</select>
|
</select>
|
||||||
{/if}
|
|
||||||
<span class="text-neutral-200">{language.UISize}</span>
|
<span class="text-neutral-200">{language.UISize}</span>
|
||||||
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="50" max="200" bind:value={$DataBase.zoomsize}>
|
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="50" max="200" bind:value={$DataBase.zoomsize}>
|
||||||
<span class="text-gray-400 mb-6 text-sm">{($DataBase.zoomsize)}%</span>
|
<span class="text-gray-400 mb-6 text-sm">{($DataBase.zoomsize)}%</span>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Body,fetch,ResponseType } from "@tauri-apps/api/http"
|
import { Body,fetch as TauriFetch,ResponseType } from "@tauri-apps/api/http"
|
||||||
import { isTauri } from "../globalApi"
|
import { isTauri } from "../globalApi"
|
||||||
import { translatorPlugin } from "../process/plugins"
|
import { translatorPlugin } from "../process/plugins"
|
||||||
import { sleep } from "../util"
|
import { sleep } from "../util"
|
||||||
@@ -11,9 +11,6 @@ let cache={
|
|||||||
let waitTrans = 0
|
let waitTrans = 0
|
||||||
|
|
||||||
export async function translate(text:string, reverse:boolean) {
|
export async function translate(text:string, reverse:boolean) {
|
||||||
if(!isTauri){
|
|
||||||
return text
|
|
||||||
}
|
|
||||||
const plug = await translatorPlugin(text, reverse ? 'ko' : 'en', reverse ? 'en' : 'ko')
|
const plug = await translatorPlugin(text, reverse ? 'ko' : 'en', reverse ? 'en' : 'ko')
|
||||||
if(plug){
|
if(plug){
|
||||||
return plug.content
|
return plug.content
|
||||||
@@ -35,39 +32,45 @@ export async function translate(text:string, reverse:boolean) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function googleTrans(text:string, reverse:boolean) {
|
async function googleTrans(text:string, reverse:boolean) {
|
||||||
const time = Date.now()
|
|
||||||
if(time < waitTrans){
|
|
||||||
const waitTime = waitTrans - time
|
|
||||||
waitTrans += 5000
|
|
||||||
await sleep(waitTime)
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
waitTrans = time + 5000
|
|
||||||
}
|
|
||||||
const arg = {
|
const arg = {
|
||||||
|
|
||||||
from: reverse ? 'ko' : 'en',
|
from: reverse ? 'ko' : 'en',
|
||||||
|
|
||||||
to: reverse ? 'en' : 'ko',
|
to: reverse ? 'en' : 'ko',
|
||||||
host: 'translate.google.com',
|
|
||||||
|
host: 'translate.googleapis.com',
|
||||||
|
|
||||||
}
|
}
|
||||||
const body = Body.form({
|
|
||||||
sl: reverse ? 'ko' : 'en',
|
|
||||||
tl: reverse ? 'en' : 'ko',
|
|
||||||
q: text,
|
const url = `https://${arg.host}/translate_a/single?client=gtx&dt=t&sl=${arg.from}&tl=${arg.to}&q=` + encodeURIComponent(text)
|
||||||
})
|
|
||||||
const url = `https://${arg.host}/translate_a/single?client=at&dt=t&dt=rm&dj=1`
|
|
||||||
|
|
||||||
const f = await fetch(url, {
|
const f = await fetch(url, {
|
||||||
method: "POST",
|
|
||||||
body: body,
|
method: "GET",
|
||||||
responseType: ResponseType.JSON
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const res = f.data as {sentences:{trans?:string}[]}
|
const res = await f.json()
|
||||||
if(typeof(f.data) === 'string'){
|
|
||||||
|
|
||||||
|
|
||||||
|
if(typeof(res) === 'string'){
|
||||||
|
|
||||||
return res as unknown as string
|
return res as unknown as string
|
||||||
|
|
||||||
}
|
}
|
||||||
const result = res.sentences.filter((s) => 'trans' in s).map((s) => s.trans).join('');
|
|
||||||
|
const result = res[0].map((s) => s[0]).filter(Boolean).join('');
|
||||||
|
|
||||||
cache.origin.push(reverse ? result : text)
|
cache.origin.push(reverse ? result : text)
|
||||||
|
|
||||||
cache.trans.push(reverse ? text : result)
|
cache.trans.push(reverse ? text : result)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user