公司最近拓展海外项目,需要对克罗地亚语进行初步翻译。想着调用翻译API进行初步翻译,故写了如下函数。注:该函数修改自官方文档。

这个只是翻译函数及简单测试,如果需要翻译文档等,需要自己调用该函数。


import hashlib
import time
import uuid
import requests

# 有道翻译API配置信息
YOUDAO_URL = 'https://openapi.youdao.com/api'
#获取方式见网址https://ai.youdao.com/doc.s#guide
APP_KEY = '自己获取'
APP_SECRET = '自己获取'

#常用语言id
LANGUAGES = {
    "Chinese": "zh-CHS",
    "English": "en",
    "French": "fr",
    "Spanish": "es",
    "German": "de",
    "Japanese": "ja",
    "Korean": "ko",
    "Russian": "ru",
    "Portuguese": "pt",
    "Italian": "it"
}

def encrypt(signStr):
    hash_algorithm = hashlib.sha256()
    hash_algorithm.update(signStr.encode('utf-8'))
    return hash_algorithm.hexdigest()

def truncate(q):
    if q is None:
        return None
    size = len(q)
    return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]

def do_request(data):
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    response = requests.post(YOUDAO_URL, data=data, headers=headers)
    response.raise_for_status()  # 检查请求是否成功
    return response

#参数分别为 需要翻译的语句 源语言id 目标语言id
#返回值为翻译结果
def translate(text, from_lang, to_lang):
    data = {
        'from': from_lang,
        'to': to_lang,
        'signType': 'v3',
        'curtime': str(int(time.time())),
        'appKey': APP_KEY,
        'q': text,
        'salt': str(uuid.uuid1()),
        'vocabId': ''  # 可选,用户词表ID
    }
    signStr = APP_KEY + truncate(text) + data['salt'] + data['curtime'] + APP_SECRET
    data['sign'] = encrypt(signStr)

    response = do_request(data)
    result = response.json()
    if result.get('errorCode') == '0':
        return result['translation'][0]
    else:
        raise Exception(f"Error: {result.get('errorCode')}, {result.get('errorMsg')}")

print(translate('WIFI password', 'en', 'ch'))

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐