From 262fe08da1217e60db559f9c8011e814184320fd Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Fri, 6 Sep 2024 12:28:45 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E5=A4=9A=E5=9B=BD=E8=AF=AD?= =?utf8?q?=E8=A8=80=E8=87=AA=E5=8A=A8=E7=BF=BB=E8=AF=91=E8=84=9A=E6=9C=AC?= =?utf8?q?=EF=BC=9A=E5=BE=85=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- tools/language_tool/Language_xlxs/cs.xlsx | Bin 0 -> 21035 bytes tools/language_tool/Language_xlxs/zh.xlsx | 568 ++++++++++++++++++ tools/language_tool/translate_languages.py | 153 +++++ ...45\345\205\267\350\204\232\346\234\254.md" | 25 +- 4 files changed, 744 insertions(+), 2 deletions(-) create mode 100644 tools/language_tool/Language_xlxs/cs.xlsx create mode 100644 tools/language_tool/Language_xlxs/zh.xlsx create mode 100644 tools/language_tool/translate_languages.py diff --git a/tools/language_tool/Language_xlxs/cs.xlsx b/tools/language_tool/Language_xlxs/cs.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..59a1d14323eb70c5c2a3c07d2cb4d1078959cd48 GIT binary patch literal 21035 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 +STR_SLIDE_TO_REBOOT 滑动重启 >> +STR_AI_FAMILY_MEALS AI 全家桶 +STR_CHAT 对话 +STR_PCY4GC_OR_AS 请检查4G连接或APP设置 +STR_API_KEYS API keys +STR_PGTTAF 请先前往APP +STR_DAFBS “设备”-“AI全家桶”设置 +STR_OPENAI_API_KEYS OpenAI API keys +STR_KHBB 已绑定API keys +STR_GTAS 更换请前往APP设置 +STR_DYWTDAK 是否确认删除API keys +STR_CONNECTING 正在连接 +STR_CONNECTION_FAIL 连接失败 +STR_PTALORTM 请稍后再重试或更换模型 +STR_MOTION_DETECTION_WALK_NOTE 检测到您好像在进行走路,是否开始记录 +STR_MOTION_DETECTION_RUN_NOTE 检测到您好像在进行跑步,是否开始记录 +STR_MOTION_DETECTION_RIDE_NOTE 检测到您好像在进行骑车,是否开始记录 +STR_MOTION_DETECTION_ROWING_NOTE 检测到您好像在进行划船机,是否开始记录 +STR_MOTION_DETECTION_ELLIPTICAL_NOTE 检测到您好像在进行椭圆机,是否开始记录 +STR_PE4GC 请开启4G能力 +STR_OBU_MESSAGE OBU +STR_DELETE 删除 +STR_CHARGE 正在充电 +STR_CHARGE_NOTE 当前处于充电中,请勿使用检测 +STR_STEP_FREQUENCY 步频(步/分钟) +STR_STEP_LENGTH 步幅(CM) +STR_AVG_PACE 平均配速 +STR_TONGYI_QIANWEN 通义千问 +STR_IFLYTEK_SPARK 讯飞星火 +STR_DISTURBNOTE_OFF 勿扰模式已开启是否关闭 +STR_4G_NOTE 注:开启后,手表功耗会提高,待机时间会缩短 +STR_MUSIC_PLAYER_SOURCE_NOTE 请从手表端应用界面进入“音乐”-“音乐来源”,设置为“手机模式”后重试 +STR_MUSIC_LIST_IS_EMPTY 当前音乐列表为空请通过APP下载添加 +STR_BT_HEADSET_RESCAN 重新搜索 +STR_BT_HEADSET_NOFOND 当前搜索不到蓝牙耳机设备 +STR_SCHEDULE 日程 +STR_SCHEDULE_TITLE 日程管理 +STR_SCHEDULE_NO_DATA 当前无日程 +STR_SCHEDULE_NO_DATA_PROMPT 请先通过APP同步 +STR_NO_PAIRED_DEV 暂无已配对设备 +STR_IGNORE 忽略 +STR_START 开始 +STR_ARC_SCALE_LIST_DISPLAY 弧形列表显示 +STR_COUNT_DOWN 倒计时 +STR_CUSTOM_TIME 自定义时间 +STR_QUICK_START 快速开始 +STR_1_MIN 1分钟 +STR_5_MIN 5分钟 +STR_10_MIN 10分钟 +STR_30_MIN 30分钟 +STR_SET_COUNT_DOWN_NOTE 请先设置好倒计时间 +STR_COUNTDOWN_ENDS 倒计时结束 +STR_MAXIMUM_TIME_REACH_NOTE 当前已达到了最长时间 +STR_STOPWATCH_STOP_NOTE 秒表自动暂停,请重新开始 +STR_TMCHBR 当前已达到了最高计数 +STR_SCHEDULE_TOPIC 主题: +STR_SCHEDULE_TIME 时间: +STR_SCHEDULE_NOTES 备注: +STR_SCHEDULE_DELETE_PROMPT 是否确认删除该日程 +STR_HANG_UP_OR_ANSWER 挂断/接听 +STR_WATCH_CALL 手表来电 +STR_PHONE_CALL 手机来电 +STR_STEPS_OF_THE_DAY 今日步数 +STR_MILEAGE 里程(KM) +STR_FAT_BURNING_TIME 燃脂时间 +STR_NUMBER_OF_STANDS 站立次数 +STR_CONSUME_CALORIES 消耗卡路里 +STR_GOAL_HINT 目标设置及更多数据请前往手机APP查看 +STR_SLEEPMODE 睡眠模式 +STR_SLEEP_MODE_PROMPT_ON 开启睡眠模式,手表将禁用所有提醒并开启睡眠监测 +STR_LOW_POWER_NOTIF_1 当前电量低于10%请及时充电 +STR_LOW_POWER_NOTIF_2 电量过低XXs后将自动关机 +STR_CONNECTION_SUCC 连接成功 +STR_RETRY 重试 +STR_BTEARPHONE_CONN_FAIL_TIP 请确认该设备在通信范围内且处于待配对状态 +STR_FLASHLIGHT_SETTING 手电筒设置 +STR_LIGHT_COLOR 灯光颜色 +STR_FLICKER_FREQUENCY 闪烁频率 +STR_NO_FLICKER 不闪烁 +STR_FAST_FLICKER 快闪烁 +STR_SLOW_FLICKER 慢闪烁 +STR_BROWSING_SPECIAL_EFFECTS 浏览特效 +STR_OVERLAY_FLOW 覆盖流 +STR_ROLLER 滚筒 +STR_DIAL_BROWSING_SPECIAL_EFFECTS 表盘浏览特效 +STR_SET_TARGET 设置目标> +STR_PWUWC 请正确佩戴手表,并保存静止 \ No newline at end of file diff --git a/tools/language_tool/translate_languages.py b/tools/language_tool/translate_languages.py new file mode 100644 index 000000000..60b25cce3 --- /dev/null +++ b/tools/language_tool/translate_languages.py @@ -0,0 +1,153 @@ +import openpyxl +import requests +import hashlib +import random +import os +import time +import argparse + +# 百度翻译 API 配置 使用需要先配置 +# BAIDU_APP_ID = '20240906002142607' # 替换百度翻译 API ID +# BAIDU_SECRET_KEY = 'DIVPZjQEY1mXc10EtV20' # 替换百度翻译 API 密钥 + +def translate_baidu(text, from_lang='zh', to_lang='en'): + url = 'https://fanyi-api.baidu.com/api/trans/vip/translate' + salt = str(random.randint(32768, 65536)) + sign = BAIDU_APP_ID + text + salt + BAIDU_SECRET_KEY + sign = hashlib.md5(sign.encode()).hexdigest() + + params = { + 'q': text, + 'from': from_lang, + 'to': to_lang, + 'appid': BAIDU_APP_ID, + 'salt': salt, + 'sign': sign, + } + + for _ in range(5): # 尝试 5 次 + try: + response = requests.get(url, params=params) + result = response.json() + if 'trans_result' in result: + return result['trans_result'][0]['dst'] + else: + time.sleep(2) # 等待 2 秒后重试 + except Exception as e: + print(f"翻译时发生错误:{e}") + time.sleep(2) # 等待 2 秒后重试 + return None + +# 语言列表,包含所需的目标语言代码 +language_list = [ + ["en", "English", "英语"], + ["ja", "日本語", "日语"], + ["ko", "한국어", "韩语"], + ["es", "Español", "西班牙语"], + ["ru", "Русский", "俄语"], + ["hr", "Hrvatski", "克罗地亚语"], + ["de", "Deutsch", "德语"], + ["pt", "Português", "葡萄牙语"], + ["fr", "Français", "法语"], + ["nl", "Nederlands", "荷兰语"], + ["it", "Italiano", "意大利语"], + ["cs", "Čeština", "捷克语"], + ["el", "Ελληνικά", "希腊语"], + ["hi", "हिन्दी", "印地语"], + ["id", "Bahasa Indonesia", "印尼语"], + ["ms", "Bahasa Melayu", "马来语"], + ["pl", "Polski", "波兰语"], + ["th", "ไทย", "泰语"], + ["vi", "Tiếng Việt", "越南语"], + ["fi", "Suomi", "芬兰语"], + ["ro", "Română", "罗马尼亚语"], + ["tr", "Türkçe", "土耳其语"], + ["fa", "فارسی", "波斯语"], + ["ar", "العربية", "阿拉伯语"], + ["he", "עברית", "希伯来语"], + ["uk", "Українська", "乌克兰语"], + ["sv", "Svenska", "瑞典语"], + ["uz", "O‘zbek", "乌兹别克语"], + ["az", "Azərbaycan dili", "阿塞拜疆语"] +] + +def main(): + parser = argparse.ArgumentParser(description='Translate Excel file using Baidu Translate API.') + parser.add_argument('-l', '--language', required=True, help='Specify the target language code.') + args = parser.parse_args() + + target_lang_code = args.language + + # 加载中文 Excel 文件 + input_file = 'Language_xlxs/zh.xlsx' + if not os.path.exists(input_file): + print(f"输入文件 {input_file} 不存在。") + return + + try: + workbook = openpyxl.load_workbook(input_file) + sheet = workbook.active + except Exception as e: + print(f"打开 Excel 文件时发生错误:{e}") + return + + # 创建输出文件夹 + output_dir = 'Language_xlxs' + try: + os.makedirs(output_dir, exist_ok=True) + except Exception as e: + print(f"创建输出文件夹时发生错误:{e}") + return + + # 找到指定语言在列表中的信息 + lang_info = None + for lang in language_list: + if lang[0] == target_lang_code: + lang_info = lang + break + + if lang_info is None: + print(f"找不到指定的语言代码 {target_lang_code}。") + return + + lang_code, lang_name, _ = lang_info + print(f"正在处理语言: {lang_name}") + + # 创建一个新的工作簿 + try: + output_workbook = openpyxl.Workbook() + output_sheet = output_workbook.active + output_sheet.append(["id", lang_name]) + except Exception as e: + print(f"创建输出工作簿时发生错误:{e}") + return + + for row in sheet.iter_rows(values_only=True): + if row[0]!= "id": + original_text = row[1] + id_value = row[0] + + # 进行翻译 + translated_text = translate_baidu(original_text, from_lang='zh', to_lang=lang_code) + if translated_text is not None: + output_sheet.append([id_value, translated_text]) + print(f"{original_text} => {translated_text}") + else: + print(f"翻译 {original_text} 时出错。") + + # 保存新工作簿为相关语言的文件名 + output_file = os.path.join(output_dir, f"{lang_code}.xlsx") + try: + output_workbook.save(output_file) + print(f"{lang_name} 的翻译结果已保存到 {output_file}。") + except Exception as e: + print(f"保存输出文件时发生错误:{e}") + + # 关闭工作簿 + try: + workbook.close() + except Exception as e: + print(f"关闭输入工作簿时发生错误:{e}") + +if __name__ == "__main__": + main() diff --git "a/tools/language_tool/\345\244\232\345\233\275\350\257\255\350\250\200\345\267\245\345\205\267\350\204\232\346\234\254.md" "b/tools/language_tool/\345\244\232\345\233\275\350\257\255\350\250\200\345\267\245\345\205\267\350\204\232\346\234\254.md" index 794ddb6cd..37967f2c3 100644 --- "a/tools/language_tool/\345\244\232\345\233\275\350\257\255\350\250\200\345\267\245\345\205\267\350\204\232\346\234\254.md" +++ "b/tools/language_tool/\345\244\232\345\233\275\350\257\255\350\250\200\345\267\245\345\205\267\350\204\232\346\234\254.md" @@ -4,6 +4,7 @@ * @LastEditTime: 2024-08-19 11:23:23 * @FilePath: /FD230/tools/language_tool/多国语言工具脚本.md --> + ## 多国语言工具脚本使用方法 ### 1.下载打包工具 @@ -66,8 +67,8 @@ Output Path: /tools/string_packer/font res路径: \FD230\code\sdk\build\config\target_config\brandy\mk_fs_image\fd230\fs\user\res\font - 【完成多国语言文件配置】 + ### PS:如果需要增加语言语种 需要增加 languagetool.py 里面语种数组项 ### 更新 0709 @@ -78,19 +79,39 @@ python language_trans.py ../Language_xml/ ../font/ ../font/ 脚本 输入路径 字体文件输出路径 头文件输出路径 ### 更新 0710 + 在language路径下 直接使用脚本即可生成语言文件夹 /font chmod +x languagemake.sh ./languagemake.sh ### 更新 0711 + 更换路径 ### 更新 0720 + 修复脚本异常 ### 更新 0815 + 脚本增加生成文件直接copy功能 复制到对应文件夹 ### 更新 0819 -脚本增加xlsx表格生成功能 \ No newline at end of file + +脚本增加xlsx表格生成功能 + +### 更新0906 + +增加自动翻译脚本测试 + +1. 先安装apk模块 + + `pip install openpyxl requests` +2. 运行脚本 + +` python translate_languages.py -l cs` + +脚本参数 -l 【list里面的语言缩写】 + +生成路径:/Language_xlxs/cs.xlsx -- 2.17.1