iOS 翻译

87 阅读4分钟

iOS Python 脚步翻译

1、安装python后执行 python3 -m pip install requests

天行接口 www.tianapi.com/


import requests
import os

# 翻译函数
def translate_text(api_key, text, to_language):
    # API 请求的 URL
    url = "https://apis.tianapi.com/fanyi/index"
    # 请求参数
    params = {
        'key': api_key,
        'text': text,
        'to': to_language
    }

    # 发送 API 请求
    response = requests.get(url, params=params)
    # 解析响应数据
    response_data = response.json()
    if response_data['code'] == 200:
        # 提取翻译结果
        result = response.json().get('result', {})
        dst_text = result.get('dst', '')
        return dst_text.strip(';')  # 移除字符串末尾的分号
    else:
        return f"Error: {response_data['msg']}"

# 检查文件的函数
def check_file(file_path):
    # 检查文件路径是否存在
    if not os.path.exists(file_path):
        print(f"错误:文件路径 '{file_path}' 不存在。")
        return False

    # 检查文件路径是否指向文件
    if not os.path.isfile(file_path):
        print(f"错误:'{file_path}' 不是一个文件。")
        return False

    # 检查文件是否可写
    if not os.access(file_path, os.W_OK):
        print(f"错误:没有写入文件 '{file_path}' 的权限。")
        return False

    return True

# 向文件中追加翻译后的文本的函数
def append_translated_lines(file_path, content_list, to_language, api_key):
    # 使用 check_file 函数检查文件
    if not check_file(file_path):
        return

    with open(file_path, 'a', encoding='utf-8') as file:
        for line in content_list:
            if '"' in line:
                parts = line.split('"')
                if len(parts) >= 4:
                    key = parts[1]
                    value = parts[3]
                    if to_language != 'zh':
                        # 对非中文文本进行翻译
                        translated_text = translate_text(api_key, value.strip(), to_language)
                        translated_row = f'"{key}" = "{translated_text}" ;\n'
                        file.write(translated_row)
                        print(f"语言 {to_language} 翻译结果:   {translated_text}  ")
                    else:
                        # 对中文文本直接写入
                        file.write(f'"{key}" = "{value.strip()}" ;\n')
                        print(f"语言 {to_language} 翻译结果:   {value.strip()}  ")
                else:
                    print(f"警告:行 '{line}' 中的格式不正确,无法处理。")
            else:
                print(f"警告:行 '{line}' 中没有找到双引号,无法处理。")

# 删除已存在的行的函数
def delete_existing_line(file_path, key):
    # 使用 check_file 函数检查文件
    if not check_file(file_path):
        return

    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()

    # 过滤掉包含指定键的行
    filtered_lines = [line for line in lines if '=' in line and key.strip() not in line.split('=')[0].strip()]

    # 将过滤后的内容写回文件中
    with open(file_path, 'w', encoding='utf-8') as file:
        file.writelines(filtered_lines)


# API 密钥(需修改)
api_key = 'd848283cf05d8fe5c4ef54ec626636d6'

# 定义文件路径(需修改)
chinese_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/zh-Hans.lproj/Localizable.strings"
english_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/en.lproj/Localizable.strings"
german_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/de.lproj/Localizable.strings"
french_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/fr.lproj/Localizable.strings"
Spanish_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/es.lproj/Localizable.strings"
greek_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/el.lproj/Localizable.strings"
korean_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/ko.lproj/Localizable.strings"
japanese_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/ja.lproj/Localizable.strings"
russian_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/ru.lproj/Localizable.strings"
brazil_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/pt-BR.lproj/Localizable.strings"
portugal_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/pt-PT.lproj/Localizable.strings"
thai_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/th.lproj/Localizable.strings"
chineseTw_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/zh-Hant.lproj/Localizable.strings"
chineseHongKong_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/zh-HK.lproj/Localizable.strings"
italian_file_path = r"/Users/dhf/Desktop/ios_headset/HeylinkPro/HeylinkPro/it.lproj/Localizable.strings"

# 提供的字符串(需修改)
chinese_content_str = """
"官方" = "官方";
"发现" = "发现";
"本地" = "本地";
"作者" = "作者";
"标签" = "标签";
"日期" = "日期";
"分享" = "分享";
"分享到" = "分享到";
"微信" = "微信";
"朋友圈" = "朋友圈";
"复制链接" = "复制链接";
"示例弹框" = "示例弹框";
"草稿" = "草稿";
"审核中" = "审核中";
"已拒绝" = "已拒绝";
"已发布" = "已发布";
"暂无内容" = "暂无内容";
"制作弹框" = "制作弹框";
"保存" = "保存";
"使用" = "使用";
"发布" = "发布";
"""

# 按行拆分字符串并去除空行
chinese_content_list = [line.strip() for line in chinese_content_str.strip().split('\n') if line.strip()]

# 删除已存在的行(需修改)
for line in chinese_content_list:
    if '=' in line:
        key = line.split('=')[0].strip()
        delete_existing_line(chinese_file_path, key)
        delete_existing_line(english_file_path, key)
    else:
        print(f"警告:行 '{line}' 中没有找到 '=' 分隔符,无法处理。")

# 执行翻译并添加到文件中(需修改)
# append_translated_lines(chinese_file_path, chinese_content_list, 'zh', api_key)
# append_translated_lines(english_file_path, chinese_content_list, 'en', api_key)
# append_translated_lines(german_file_path, chinese_content_list, 'de', api_key)
# append_translated_lines(french_file_path, chinese_content_list, 'fra', api_key)
# append_translated_lines(Spanish_file_path, chinese_content_list, 'spa', api_key)
# append_translated_lines(greek_file_path, chinese_content_list, 'el', api_key)
# append_translated_lines(korean_file_path, chinese_content_list, 'kor', api_key)
# append_translated_lines(japanese_file_path, chinese_content_list, 'jp', api_key)
# append_translated_lines(russian_file_path, chinese_content_list, 'ru', api_key)
append_translated_lines(brazil_file_path, chinese_content_list, 'pt', api_key)
append_translated_lines(portugal_file_path, chinese_content_list, 'pt', api_key)
append_translated_lines(thai_file_path, chinese_content_list, 'th', api_key)
append_translated_lines(chineseTw_file_path, chinese_content_list, 'cht', api_key)
append_translated_lines(chineseHongKong_file_path, chinese_content_list, 'cht', api_key)
append_translated_lines(italian_file_path, chinese_content_list, 'it', api_key)


#https://www.tianapi.com/apiview/52#apicode 接口文档

# +------------------------+-------+------------------------+-------+
# | 语言                   | 代码   | 语言                   | 代码   |
# +------------------------+-------+------------------------+-------+
# | 英语                   | en    | 中文                   | zh    |
# | 韩语                   | kor   | 法语                   | fra   |
# | 西班牙语               | spa   | 泰语                   | th    |
# | 阿拉伯语               | ara   | 俄语                   | ru    |
# | 葡萄牙语               | pt    | 德语                   | de    |
# | 意大利语               | it    | 波兰语                 | pl    |
# | 荷兰语                 | nl    | 瑞典语                 | swe   |
# | 丹麦语                 | dan   | 日语                  |  jp     |
# | 越南语                 | vie   |                        |       |
# | 希腊语                 | vie   |                        |  el     |
# | 繁体中文                 | vie   |                        |  cht     |
# | 希腊语                 | vie   |                        |  el     |
# | 希腊语                 | vie   |                        |  el     |


# 自动检测	auto	中文	zh	英语	en
# 粤语	yue	文言文	wyw	日语	jp
# 韩语	kor	法语	fra	西班牙语	spa
# 泰语	th	阿拉伯语	ara	俄语	ru
# 葡萄牙语	pt	德语	de	意大利语	it
# 希腊语	el	荷兰语	nl	波兰语	pl
# 保加利亚语	bul	爱沙尼亚语	est	丹麦语	dan
# 芬兰语	fin	捷克语	cs	罗马尼亚语	rom
# 斯洛文尼亚语	slo	瑞典语	swe	匈牙利语	hu
# 		越南语	vie



# +------------------------+-------+------------------------+-------+