iOS多语言国际化(一)-python脚本自动翻译

百度翻译开发者平台申请开发者信息

通用翻译API接入文档https://api.fanyi.baidu.com/doc/21

请求参数

q=apple
from=en
to=zh
appid=2015063000000001(请替换为您的appid)
salt=1435660288(随机码)
平台分配的密钥: 12345678

生成签名sign:

Step1. 拼接字符串1:
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678得到字符串1:“2015063000000001apple143566028812345678”
Step2. 计算签名:(对字符串1做md5加密)
sign=md5(2015063000000001apple143566028812345678),得到sign=f89f9594663708c1605f3d736d01d2d4

拼接完整请求:

http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
注:也可使用POST方式,如POST方式传送,Content-Type请指定为:application/x-www-form-urlencoded

在百度开发者平台申请APPID和密钥,按照上述API接入,以下为中文翻译成英语方法

#! /usr/bin/env python3
# coding=utf-8
import sys
import json
import urllib.request
import urllib.parse
import http.client
import hashlib
import time
from io import StringIO

TRANS_URL = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
ORIGIN_HOST = 'fanyi.baidu.com'


class Result:
    def __init__(self, src, dest, meanings=None):
        self.src = src
        self.dest = dest
        self.meanings = meanings

    def parse_from_json(json_data):
        trans_data = json_data['trans_result']['data'][0]
        try:
            dict_data = json_data['dict_result']['simple_means']['symbols'][0]['parts']
            means = list()
            for item in dict_data:
                tmp = item['means']
                if isinstance(tmp[0], dict):
                    for t_item in tmp:
                        means.append(t_item['word_mean'])
                else:
                    means.append(tmp)
        except Exception:
            means = None
        return Result(trans_data['src'], trans_data['dst'], means)

    def show(self, file=sys.stdout):
        str_template = '<<%s\n<<>> is_eng('hello')
    True

    >>> is_eng('你好')
    False

    >>> is_eng('\'')
    True

    >>> is_eng('‘')
    False

    """
    for uchar in word:
        if len(uchar.encode('utf-8')) == 1:
            continue
        else:
            return False
    return True

#中文转英文
def chinese_to_english(word):
    time.sleep(2)
    resp = urllib.request.urlopen(compose_request(word))
#    print("resp.status:"+ str(resp.status))
    if (resp.status == 200):
        json_data = resp.read().decode('utf-8')
        data2 = json.loads(json_data)
        #print('json_data:'+data2)
#        print(data2)
        trans_data = data2['trans_result'][0]['dst']
#        print('json_data:'+trans_data)
        return trans_data
        #result = handle_result(resp.read().decode('utf-8'))
        #return result.dest
    else:
        print('Rquest Error: \n HTTP Status: %d \n Reason: %s \n', resp.status, resp.reason)
        return None

2、

你可能感兴趣的:(工具化)