MCPcopy
hub / github.com/mvdctop/Movie_Data_Capture / translate

Function translate

ADC_function.py:302–358  ·  view source on GitHub ↗

translate japanese kana to simplified chinese 翻译日语假名到简体中文 :raises ValueError: Non-existent translation engine

(
        src: str,
        target_language: str = config.getInstance().get_target_language(),
        engine: str = config.getInstance().get_translate_engine(),
        app_id: str = "",
        key: str = "",
        delay: int = 0,
)

Source from the content-addressed store, hash-verified

300
301
302def translate(
303 src: str,
304 target_language: str = config.getInstance().get_target_language(),
305 engine: str = config.getInstance().get_translate_engine(),
306 app_id: str = "",
307 key: str = "",
308 delay: int = 0,
309) -> str:
310 """
311 translate japanese kana to simplified chinese
312 翻译日语假名到简体中文
313 :raises ValueError: Non-existent translation engine
314 """
315 trans_result = ""
316 # 中文句子如果包含&等符号会被谷歌翻译截断损失内容,而且中文翻译到中文也没有意义,故而忽略,只翻译带有日语假名的
317 if (is_japanese(src) == False) and ("zh_" in target_language):
318 return src
319 if engine == "google-free":
320 gsite = config.getInstance().get_translate_service_site()
321 if not re.match('^translate\.google\.(com|com\.\w{2}|\w{2})$', gsite):
322 gsite = 'translate.google.cn'
323 url = (
324 f"https://{gsite}/translate_a/single?client=gtx&dt=t&dj=1&ie=UTF-8&sl=auto&tl={target_language}&q={src}"
325 )
326 result = get_html(url=url, return_type="object")
327 if not result.ok:
328 print('[-]Google-free translate web API calling failed.')
329 return ''
330
331 translate_list = [i["trans"] for i in result.json()["sentences"]]
332 trans_result = trans_result.join(translate_list)
333 elif engine == "azure":
334 url = "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=" + target_language
335 headers = {
336 'Ocp-Apim-Subscription-Key': key,
337 'Ocp-Apim-Subscription-Region': "global",
338 'Content-type': 'application/json',
339 'X-ClientTraceId': str(uuid.uuid4())
340 }
341 body = json.dumps([{'text': src}])
342 result = post_html(url=url, query=body, headers=headers)
343 translate_list = [i["text"] for i in result.json()[0]["translations"]]
344 trans_result = trans_result.join(translate_list)
345 elif engine == "deeplx":
346 url = config.getInstance().get_translate_service_site()
347 res = requests.post(f"{url}/translate", json={
348 'text': src,
349 'source_lang': 'auto',
350 'target_lang': target_language,
351 })
352 if res.text.strip():
353 trans_result = res.json().get('data')
354 else:
355 raise ValueError("Non-existent translation engine")
356
357 time.sleep(delay)
358 return trans_result
359

Callers 1

get_data_from_jsonFunction · 0.90

Calls 7

is_japaneseFunction · 0.85
get_htmlFunction · 0.85
post_htmlFunction · 0.85
get_target_languageMethod · 0.80
get_translate_engineMethod · 0.80
sleepMethod · 0.80

Tested by

no test coverage detected