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
# +------------------------+-------+------------------------+-------+