我正在嘗試使用以下 google translate api 端點來翻譯應用程式中的文本: https ://clients5.google.com/translate_a/t?client=dict-chrome-ex&sl=auto&tl=en&q=контрольная работа
當我點擊鏈接時,它會下載一個文本檔案,打開該檔案時包含我需要的所有資訊,格式似乎正確(sentences[0].trans = "text" 與我手動寫出單詞的格式相同“文本”)。
然而,在 C# 中,當使用 www 檔案請求時,在 python 中使用 requests.get 或通過郵遞員,我得到以下字串而不是“trans”:“DoD?D??,? € D?D ???D?D ° ? ? € D ° D ± D??,D °”。
我嘗試將其轉換為一堆不同的編碼,但沒有一個給出正確的值。我也不認為完整請求的英文部分正確,但應該是英文的翻譯顯示錯誤,而顯示原始翻譯的俄語部分也顯示錯誤。
無論我在 C# 中嘗試不同的編碼(utf7、utf8、utf16、utf16-be)時如何更改其編碼,我從中得到的文本似乎都不會轉換回測驗。
有什么我在這里想念的嗎?
嘗試請求的代碼、手動下載檔案的結果以及運行代碼的結果如下所示:
代碼:
import json
import requests
text = "контрольная работа"
lang = "en"
url = f"https://clients5.google.com/translate_a/t?client=dict-chrome-ex&sl=auto&tl={lang}&q={text}"
url = url.replace(" ", " ")
res = requests.get(url)
res = res.text
jres = json.loads(res)
translation = jres["sentences"][0]["trans"]
print(res, end="\n\n")
print("\t", translation)
手動下載(點擊 chrome 中的鏈接下載檔案):
{
"sentences": [
{
"trans": "test",
"orig": "контрольная работа",
"backend": 10
},
{
"src_translit": "kontrol'naya rabota"
}
],
"dict": [
{
"pos": "noun",
"terms": [
"test"
],
"entry": [
{
"word": "test",
"reverse_translation": [
"тест",
"испытание",
"анализ",
"проверка",
"критерий",
"контрольная работа"
],
"score": 0.18498141
}
],
"base_form": "контрольная работа",
"pos_enum": 1
}
],
"src": "ru",
"alternative_translations": [
{
"src_phrase": "контрольная работа",
"alternative": [
{
"word_postproc": "test",
"score": 1000,
"has_preceding_space": true,
"attach_to_next_token": false,
"backends": [
10
]
},
{
"word_postproc": "test work",
"score": 0,
"has_preceding_space": true,
"attach_to_next_token": false,
"backends": [
3
]
}
],
"srcunicodeoffsets": [
{
"begin": 0,
"end": 18
}
],
"raw_src_segment": "контрольная работа",
"start_pos": 0,
"end_pos": 0
}
],
"confidence": 1,
"ld_result": {
"srclangs": [
"ru"
],
"srclangs_confidences": [
1
],
"extended_srclangs": [
"ru"
]
},
"target_inflections": [
{
"written_form": "test",
"features": {
"number": 2
}
},
{
"written_form": "tests",
"features": {
"number": 1
}
}
]
}
使用 C# 中的 www 請求檔案(不推薦使用 www 時使用統一引擎的 .net framework 3.5)或 Python 中的請求:
{
"sentences": [
{
"trans": "DoD?D???? € D?D ???D?D ° ? ? € D ° D ± D???D °",
"orig": "DoD?D????€D?D???D?D°? ?€D°D±D???D°",
"backend": 3,
"translation_engine_debug_info": [
{
"model_tracking": {
"checkpoint_md5": "ef4a126affdcc2d3c84e987e2d0fb6b1",
"launch_doc": "tea_GermanicB_afdaislbnosvfyyiiw_en_2020q2.md"
}
}
]
}
],
"src": "is",
"alternative_translations": [
{
"src_phrase": "DoD?D????€D?D???D?D°? ?€D°D±D???D°",
"alternative": [
{
"word_postproc": "DoD?D???? € D?D ???D?D ° ? ? € D ° D ± D???D °",
"score": 0,
"has_preceding_space": true,
"attach_to_next_token": false,
"backends": [
3
]
},
{
"word_postproc": "DoD?D???? € D?D ???D?D ° ? ? € D ° D °",
"score": 0,
"has_preceding_space": true,
"attach_to_next_token": false,
"backends": [
8
]
}
],
"srcunicodeoffsets": [
{
"begin": 0,
"end": 35
}
],
"raw_src_segment": "DoD?D????€D?D???D?D°? ?€D°D±D???D°",
"start_pos": 0,
"end_pos": 0
}
],
"confidence": 1,
"ld_result": {
"srclangs": [
"is"
],
"srclangs_confidences": [
1
],
"extended_srclangs": [
"is"
]
}
}
uj5u.com熱心網友回復:
由于它直接與 Chrome 一起使用,我添加了一個 Chrome 用戶代理標頭并且它正常作業:
import json
import requests
from pprint import pprint
url = 'https://clients5.google.com/translate_a/t'
params = {'client': 'dict-chrome-ex',
'sl': 'auto',
'tl': 'en',
'q': 'контрольная работа'}
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
r = requests.get(url,params=params,headers=headers)
jres = r.json()
print(json.dumps(jres, indent=2, ensure_ascii=False))
輸出:
{
"sentences": [
{
"trans": "test",
"orig": "контрольная работа",
"backend": 10
},
{
"src_translit": "kontrol'naya rabota"
}
],
"dict": [
{
"pos": "noun",
"terms": [
"test"
],
"entry": [
{
"word": "test",
"reverse_translation": [
"тест",
"испытание",
"анализ",
"проверка",
"критерий",
"контрольная работа"
],
"score": 0.18498141
}
],
"base_form": "контрольная работа",
"pos_enum": 1
}
],
"src": "ru",
"alternative_translations": [
{
"src_phrase": "контрольная работа",
"alternative": [
{
"word_postproc": "test",
"score": 1000,
"has_preceding_space": true,
"attach_to_next_token": false,
"backends": [
10
]
},
{
"word_postproc": "control work",
"score": 0,
"has_preceding_space": true,
"attach_to_next_token": false,
"backends": [
3
]
}
],
"srcunicodeoffsets": [
{
"begin": 0,
"end": 18
}
],
"raw_src_segment": "контрольная работа",
"start_pos": 0,
"end_pos": 0
}
],
"confidence": 1,
"ld_result": {
"srclangs": [
"ru"
],
"srclangs_confidences": [
1
],
"extended_srclangs": [
"ru"
]
},
"target_inflections": [
{
"written_form": "test",
"features": {
"number": 2
}
},
{
"written_form": "tests",
"features": {
"number": 1
}
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416075.html
標籤:
