As @scholastique237 suggested, the current google translate API might need a renewal like other game translator did (e.g. Translator ++).
My Attempt:
I created a Python file named _google.py, which implements the logic for calling the translate-pa.googleapis.com/v1/translateHtml API. This file is intended to serve as a new translation engine within the custom_engine plugin library.
# src/custom_engine/_google.py
# Moteur Google Translate (endpoint public via translate-pa.googleapis.com)
import traceback
import json
import requests
def get_max_length():
return 15000
def translate_single(app_key, app_secret, source, target, proxies, text):
try:
filtered = text.replace('\n', '<brk>')
data = [[ [filtered], source, target ], 'te_lib']
url = 'https://translate-pa.googleapis.com/v1/translateHtml'
key = app_key if app_key else 'AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520'
headers = {
'Content-Type': 'application/json+protobuf',
'User-Agent': 'Mozilla/5.0 (Linux; Android 13; SM-S901B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36',
'Referer': 'https://www.amazon.com',
'x-goog-api-key': key,
}
resp = requests.post(url, data=json.dumps(data), headers=headers, proxies=proxies)
resp.raise_for_status()
result = resp.json()
translated = ''.join([seg for seg in result[0][0]]).replace('<brk>', '\n')
return translated
except Exception:
traceback.print_exc()
return None
def translate_queue(app_key, app_secret, source, target, proxies, q):
url = 'https://translate-pa.googleapis.com/v1/translateHtml'
api_key_to_use = app_key if app_key else 'AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520'
headers = {
'Content-Type': 'application/json+protobuf',
'User-Agent': 'Mozilla/5.0 (Linux; Android 13; SM-S901B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36',
'Referer': 'https://www.amazon.com',
'x-goog-api-key': api_key_to_use,
}
ori_dic = {str(i): text for i, text in enumerate(q)}
text_list = list(ori_dic.values())
data = [[text_list, source, target], 'te_lib']
try:
resp = requests.post(url, data=json.dumps(data), headers=headers, proxies=proxies)
resp.raise_for_status()
result = resp.json()
translated_list = [''.join(seg).replace('<brk>', '\n') if isinstance(seg, list) else seg.replace('<brk>', '\n') for seg in result[0]]
l = []
for i, translated_text in enumerate(translated_list):
item = {
'untranslatedText': text_list[i],
'translatedText': translated_text
}
l.append(item)
return l
except Exception:
msg = traceback.format_exc()
print(msg)
return []
Suggestion/Purpose
I have successfully used this plugin to translate a Ren'Py game, demonstrating its effectiveness. Therefore, I propose to migrate this API into the software.
As @scholastique237 suggested, the current google translate API might need a renewal like other game translator did (e.g. Translator ++).
My Attempt:
I created a Python file named _google.py, which implements the logic for calling the translate-pa.googleapis.com/v1/translateHtml API. This file is intended to serve as a new translation engine within the custom_engine plugin library.
Suggestion/Purpose
I have successfully used this plugin to translate a Ren'Py game, demonstrating its effectiveness. Therefore, I propose to migrate this API into the software.