尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

alfred-google-translate架构完全指南:一个轻量Node项目如何优雅编排翻译、TTS与历史记录

alfred-google-translate架构完全指南:一个轻量Node项目如何优雅编排翻译、TTS与历史记录 alfred-google-translate架构完全指南一个轻量Node项目如何优雅编排翻译、TTS与历史记录【免费下载链接】alfred-google-translateAlfred 3 workflow - translate with google api项目地址: https://gitcode.com/gh_mirrors/al/alfred-google-translatealfred-google-translate 是一个基于 Node.js 的 Alfred 工作流workflow它通过 Google Translate API 实现快速文本翻译、TTS 语音朗读与翻译历史记录的本地管理。整个项目仅由 5 个 JavaScript 文件 1 个 Alfred 工作流描述文件组成却完整覆盖了输入 → 翻译 → 朗读 → 存档的完整链路是学习轻量 Node 项目分层编排的绝佳范本。 核心关键词Alfred 翻译工作流、Google Translate API、Node.js 轻量架构、TTS 语音合成、翻译历史记录如果你需要体验完整效果可以克隆仓库git clone https://gitcode.com/gh_mirrors/al/alfred-google-translate一张图看懂项目架构先看整体分层自上而下职责清晰、互不越权层级文件职责Alfred 编排层info.plist定义热键触发、tr关键词入口、发音动作业务编排层index.js读取配置、语言检测、串联翻译/历史/TTS翻译服务层translate.js调用 Google 翻译接口并解析结构化结果语音服务层tts.js长文本切分 下载 MP3 语音文件令牌层token.js生成并缓存 Google 接口所需的 TKK 令牌数据字典层languages.jsISO 639-1 语言代码 ↔ 语言名映射这种小文件、单职责的拆分方式是该项目最值得新手借鉴的架构特点每个文件只做一件事模块之间通过require单向依赖几乎没有循环引用。核心模块逐一拆解index.js整个翻译流程的总指挥index.js是入口文件它做了四件关键的事读取环境变量把voice发音模式、save_count历史记录条数上限、domain翻译域名、socks_proxy代理地址统一收集成g_config全局配置对象解析语言对从 configstore 中读取language-config-pair支持自动检测与双向语言对两种模式组装 Alfred 结果项把翻译结果渲染为原句、译文、释义Definition、同义翻译Translation Of等多种可操作条目异步串联后置任务翻译完成后依次写入历史记录、后台下载 TTS 语音文件——注意这两个任务都不阻塞结果展示用户体验非常流畅。它的调用链是一个典型的 Promise 流水线translator.translate() → 输出 Alfred 结果项 → 写入历史记录 → 后台下载 TTStranslate.js把黑盒接口变成结构化数据translate.js是 Google 翻译接口的适配层核心价值在于把 Google 返回的数组型 JSON 解析成语义清晰的对象自动识别输入语言from.language.iso捕获拼写纠错建议corrected/didYouMean让 Alfred 可以提示是否用更正后的内容翻译提取音标、释义、同义翻译及词频等丰富信息。token.jsTKK 令牌的生成与小时级缓存Google 翻译接口要求请求携带一个tk令牌token.js内嵌了sM令牌算法并用 configstore 缓存TKK 种子值。设计亮点在于TKK 按小时失效程序会先比对当前小时只有过期才发起网络请求刷新——用最少的网络开销维持令牌有效性这是轻量项目里很典型的高性价比设计。tts.js长文本切分 串行语音下载voice: remote模式下语音文件由 Google 生成。tts.js解决了一个实际问题Google TTS 接口对单次文本长度有限制。它的split函数把长文本按 200 字符为边界切分且只在空格处断句避免把一个单词拦腰截断随后multi函数串行下载各段 MP3 并追加到同一个临时文件中最终交给系统播放。三种发音模式的对比voice 值行为适用场景remote默认下载 Google MP3 语音多语言朗读local调用 macOS 系统say命令仅英文离线可用none不发音纯翻译场景languages.js语言代码字典languages.js收录了 Google 支持的全部语言ISO 639-1 代码 ↔ 英文名用于在检测结果中把en、zh-CN这类代码翻译成人类可读的EnglishChinese Simplified让提示文案更友好。info.plistAlfred 如何串起整个 Node 项目这是本项目优雅编排的另一半答案。info.plist定义了一个极简的三节点工作流Hotkey 触发器全局热键如 ⌥T直接唤起翻译输入框Script Filter监听tr关键词执行./node_modules/.bin/run-node index.js $1把用户输入交给 Node 层处理Script 动作用户选中结果后根据voice配置选择afplay播放 MP3 或say本地朗读。Node 层只负责算Alfred 层负责演两层通过标准输入输出stdout交换数据——这正是 Alfred 工作流生态的经典协作模式。环境变量配置四步完成个性化调优所有用户可配置项都通过 Alfred 环境变量注入在 Alfred 偏好设置中修改无需改动一行代码变量默认值作用domainhttps://translate.google.com翻译域名中国大陆可改为https://translate.google.cnvoiceremote发音模式remote / local / nonesave_count20翻译历史记录条数上限0 表示不保存socks_proxy未开启Socks 代理格式如socks://127.0.0.1:1086历史记录则存储在 configstore 中键名translate-history采用数组 容量上限的环形策略每当条数达到save_count时淘汰最早一条无需额外维护清理逻辑。值得新手抄作业的 5 个设计亮点单向依赖、单文件单职责index.js编排translate.js/tts.js干活token.js供令牌依赖关系一目了然配置外置环境变量 configstore 持久化用户零改代码即可定制行为非阻塞后置任务历史记录写入与 TTS 下载都不阻塞 Alfred 结果展示令牌小时级缓存网络请求只在 TKK 过期时发生开销极小健壮的细节处理断句切分、拼写纠错识别、BAD_NETWORK/BAD_REQUEST错误分类处处体现防御式编程。依赖清单同样精简alfyAlfred 输入输出、configstore配置存储、gotHTTP 请求、uuid临时文件名、socks-proxy-agent代理支持见 package.json。掌握这套Alfred 编排 Node 分层服务的架构思路后你可以轻松把其他 API 能力搜索、总结、转换以同样的模式接入 Alfred扩展出自己的效率工具链。【免费下载链接】alfred-google-translateAlfred 3 workflow - translate with google api项目地址: https://gitcode.com/gh_mirrors/al/alfred-google-translate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表