[独立开发] 拒绝手动 CV:我用 Next.js 16 + Gemini 打造了一款“并发翻译”的 i18n 神器 (t9n)

22 阅读2分钟

前言:出海开发者的痛

最近在做独立开发,为了让产品“出海”,i18n 多语言支持是必不可少的。

但我发现翻译 JSON 文件是一个极度折磨人的过程。 虽然 ChatGPT/Claude 翻译质量不错,但工作流太痛苦了:

  1. 复制 en.json -> 粘贴给 GPT -> "翻译成日语" -> 等待 -> 复制回来 -> 手动修 JSON 逗号
  2. 重复上述步骤 5 次(日语、韩语、德语...)。
  3. 最崩溃的是:它经常自作聪明把代码变量 {name} 翻译成了 {名字},导致上线后 App 报错。

为了解决这个痛点,周末我肝了一个工具 —— t9n


✨ t9n 是什么?

t9n.dev 是一个专为开发者设计的 i18n JSON 翻译工具。 它的核心理念是:Respect your code (尊重你的代码)

👉 在线体验:t9n.dev

t9n-web.gif

🚀 核心功能:为什么不直接用 ChatGPT?

作为一个“套壳”工具,如果没有核心竞争力是没意义的。t9n 解决了通用 AI 无法解决的 “最后一公里” 问题:

1. 并发翻译 (Batch Mode) ⚡️

这是最新上线的功能。

  • 痛点:在 ChatGPT 里,你需要串行地对话 5 次才能得到 5 种语言。
  • 解法:在 t9n 里,勾选 🇯🇵 日语 🇰🇷 韩语 🇩🇪 德语,点击 Run
  • 技术实现:后端使用 Promise.all 并发调用 Gemini API,一次点击,三倍效率。结果会自动分 Tab 展示,直接复制即可。

2. 变量守门员 (Variable Guard) 🛡️

  • 痛点Hello {name} 被翻译成 你好 {名字}
  • 解法:通过 System Prompt 强约束 + 正则预处理,确保 {name}, %s, {{count}} 等变量100% 不会被翻译

3. 状态持久化 (IndexedDB) 💾

  • 痛点:写好了提示词(Context),手抖刷新了一下页面,全没了。
  • 解法:利用 IndexedDB 实现了自动保存。无论是源码、Context 还是翻译结果,刷新甚至关机重启都在。

🛠 技术栈揭秘

为了保证开发效率和极致的加载速度,我选择了目前最新的技术栈:

  • 框架: Next.js 16 (App Router) —— 拥抱 RSC,首屏加载极快。
  • 样式: Tailwind CSS v4 —— 刚刚发布的 v4 版本,构建速度飞起,配合极简 Dark Mode 风格。
  • 编辑器: Monaco Editor —— 为了提供 VS Code 同款的编辑体验(高亮、折叠、格式化)。
  • 模型: Google Gemini —— 速度快、并发能力强,且 Flash 模型性价比极高。

👋 总结

目前项目处于 MVP 阶段,完全免费。 如果你也受够了手动复制粘贴 JSON,或者被 AI 翻译坏过变量,欢迎试用并提 Bug!

🔗 链接:t9n.dev

也欢迎在评论区交流 Next.js 16 和 Tailwind v4 的踩坑经验!👇