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,
)
| 300 | |
| 301 | |
| 302 | def 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 |
no test coverage detected