Keil 翻译插件:一键翻译中英文注释,提升嵌入式开发效率

📅 2026/7/16 2:53:12
Keil 翻译插件:一键翻译中英文注释,提升嵌入式开发效率
初衷针对初学嵌入式时看不懂 Keil 中英文注释、频繁切换翻译工具效率低的痛点。核心思路通过给 Keil 添加翻译插件实现一键选中注释翻译支持中英互译无需切换浏览器直接在 Keil 编辑器内完成翻译大幅提升开发效率。前置条件Keil MDK-ARM V5.28V6 版本操作类似已安装 Python 3.8添加系统环境变量安装翻译 API 依赖如百度翻译 API / 有道翻译 API免费额度足够初学使用步骤 1申请免费翻译 API以百度翻译为例登录百度翻译开放平台注册并创建应用获取 APP_ID 和 密钥。记录 API 接口地址https://api.fanyi.baidu.com/个人认证免费额度100 万字符 / 月。步骤 2编写 Python 翻译脚本新建 keil_translator.py 文件放在 Keil 安装目录下或者在电脑上新建任意一个文件夹存放文件路径要记住一会添加插件的时候要用到代码如下import requests import pyperclip import json import sys import random # 配置百度翻译API (免费申请http://api.fanyi.baidu.com) APP_ID APP ID SECRET_KEY 密钥 def translate(text, from_langen, to_langzh): url http://api.fanyi.baidu.com/api/trans/vip/translate salt random.randint(32768, 65536) # 随机数 # 生成签名 sign APP_ID text str(salt) SECRET_KEY import hashlib sign hashlib.md5(sign.encode()).hexdigest() params { q: text, from: from_lang, to: to_lang, appid: APP_ID, salt: salt, sign: sign } try: response requests.get(url, paramsparams) result json.loads(response.text) # 处理多行翻译结果 translations [item[dst] for item in result[trans_result]] return \n.join(translations) except Exception as e: return f翻译失败: {str(e)} if __name__ __main__: # 获取Keil传来的选中文本 text_to_translate sys.argv[1] if len(sys.argv) 1 else pyperclip.paste() if not text_to_translate.strip(): print(未检测到选中文本) else: # 自动检测中英文 is_chinese any(\u4e00 char \u9fff for char in text_to_translate) from_lang zh if is_chinese else en to_lang en if is_chinese else zh translated translate(text_to_translate, from_lang, to_lang) print(f原文: {text_to_translate}\n翻译: {translated}) # 可选自动复制到剪贴板 pyperclip.copy(translated)步骤 3配置 Keil 外部工具关联翻译脚本打开 Keil点击菜单栏 Tools → Customize Tools Menu不同版本可能位置不一样。点击 Add 新增工具配置参数Name翻译选中文本自定义Commandpython.exe需填写完整路径如 C:\Python38\python.exeArgumentskeil_translator.py 文件的路径如C:\ARM\Scripts\keil_translator.pyInitial Folder空着勾选 Capture Output捕获翻译结果、Show Console显示结果窗口。如果有这两个选项就勾上我的版本没有。点击 OK 保存配置。步骤 4使用方法在 Keil 编辑器中选中需要翻译的英文注释如 /* Initialize UART peripheral */然后按CtrlC复制这段注释。点击菜单栏 Tools → 翻译选中文本即可在弹出的控制台中看到翻译结果/* 初始化UART外设 */。也可以给这个翻译选中文本的插件添加快捷键点击菜单栏 Edit → Configuration → Shortcut Keys 在Select Command中找到Tools:翻译选中文本 → 点击右侧Create Shortcut就可以设置你想用的快捷键了设置完成点击OK保存如 我用的是AltShiftF。————————————————版权声明本文为CSDN博主「毛毛゛」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。原文链接https://blog.csdn.net/2501_90739332/article/details/155864155以上是原文作者的我只说我遇到的问题最终翻译结果如下我在想为什么是不是没有选中段落于是我进行了一下测试根本原因Keil 的$C当前行内容和$S选中文本这类宏只在特定上下文中有效。在你的环境下它们没有被正确解析为实际的文本内容可能的原因有Keil 版本较老如 μVision 4对$S支持不完整宏被转义或误用在Arguments中写法有细微差别焦点位置不对工具执行时焦点不在编辑器窗口解决方案推荐切换为剪贴板方式与其跟 Keil 的宏较劲不如换一种更稳定可靠的方法让 Python 脚本直接读取剪贴板内容。这样你只需要CtrlC 复制要翻译的文本然后运行脚本即可完全不依赖 Keil 的宏。修改后的脚本剪贴板版在keil_translator.py中替换为以下代码import requests import json import hashlib import random import pyperclip # 新增库用于读取剪贴板 # 请替换为你的百度翻译密钥 APPID 你的APPID SECRET_KEY 你的密钥 def translate(text, from_lang, to_lang): url https://fanyi-api.baidu.com/api/trans/vip/translate salt random.randint(32768, 65536) sign hashlib.md5((APPID text str(salt) SECRET_KEY).encode(utf-8)).hexdigest() params { q: text, from: from_lang, to: to_lang, appid: APPID, salt: salt, sign: sign } try: response requests.get(url, paramsparams) result response.json() translations [item[dst] for item in result[trans_result]] return \n.join(translations) except Exception as e: return f翻译失败: {str(e)} if __name__ __main__: # 从剪贴板读取文本而不是从命令行参数 text_to_translate pyperclip.paste() if not text_to_translate.strip(): print(剪贴板为空请先复制要翻译的文本) else: # 判断中英文自动切换方向 is_chinese any(\u4e00 char \u9fff for char in text_to_translate) from_lang zh if is_chinese else en to_lang en if is_chinese else zh translated translate(text_to_translate, from_lang, to_lang) print(f原文: {text_to_translate}\n翻译: {translated})安装剪贴板库在命令行执行pip install pyperclip使用方法在 Keil 编辑器中选中你要翻译的英文注释按CtrlC复制这一步替代了原来的宏取词点击Tools→翻译选中文本弹出窗口显示翻译结果结果