返回博客

我如何用AI翻译这篇博文

2025-08-217分钟阅读

我是西班牙语母语者。我住在美利坚合众国,所以每天都使用英语。我用英语写帖子来练习并接触更多人。

Google Analytics向我展示了一些重要的东西。我的访问者中有一半以上来自英语不是主要语言的国家。这告诉我我错失了价值。所以我决定用AI翻译博客。

我关注的重点

  • 清晰度:我注重保持清晰的含义,而不是逐字翻译。
  • 结构保留:我不允许翻译改变HTML、代码或URL。
  • 稳定的URL:每种语言都有固定的slug,这样链接就不会断开。
  • 速度:一个命令即可翻译所有内容。

我的设置

  • 内容格式:每个帖子都是一个JSON文件,包含titledateexcerptcontentreadTimetagscategoriestranslatedSlugsslug
  • 框架:Next.js和next-intl用于支持多语言路由。
  • 模型:我从scripts/translate-es-gemini.ts调用Google的Gemini API。它默认使用REST,并有一个备用模型。提示非常严格:只翻译值,不触碰HTML或URL。
  • 一个命令scripts/translate-all-languages.ts运行所有语言的翻译,同步slug映射,并验证完整性。
  • 语言切换器:它使用translatedSlugs将读者引导到每种语言的正确URL。

我的工作流程

  1. 我用英语写帖子,保存在app/[locale]/blog/posts/<slug>/index.json中。content字段是HTML。代码块是围起来的。
  2. 我用一个命令进行翻译。模型翻译titleexcerptcontentreadTime。元数据如datetagscategories保持不变。
  3. 我通过每个文件中的translatedSlugs映射来保持slug同步,包括英语和翻译版本。
  4. 我验证每种语言都存在,并且slug映射是完整的。

为什么AI对我有效

  • 遵循指令:提示保护了HTML、代码和链接。
  • 快速且良好:一个快速的模型,带有自动备用。
  • 一致的语调:低温度使跨语言的风格保持稳定。

安全措施

  • HTML安全翻译:我只发送JSON键的值,不发送标签或属性。
  • Slug规范translatedSlugs包含enesfrderunlitzh的slug。
  • 验证:一个命令检查每种语言的文件是否存在,并且slug映射是完整的。
  • 尊重API:我在调用之间添加了短暂的延迟。

翻译和SEO

  • 帮助读者:人们信任他们语言的内容。他们停留更长时间,分享更多。
  • URL很重要:翻译的slug可以包含人们在该语言中搜索的词语。
  • 每种语言一个页面:使用hreflang链接语言版本以避免重复。
  • 站点地图:包含所有语言版本,以便搜索引擎可以找到它们。
  • 稳定性:翻译slug但保持其稳定。经常更改URL可能会造成损害。

我运行的命令

# 将一篇帖子翻译成所有语言
npm run translate-all translate my-new-post

# 验证所有语言文件和slug映射是否存在
npm run translate-all validate my-new-post

# 在编辑英语后重新运行并覆盖翻译
npm run translate-all translate my-new-post --force

就是这样。一个用于翻译,一个用于验证。切换器之所以有效,是因为每个JSON文件都列出了每种语言的slug。

如果您尝试此方法,请注意

  • 写得简单。短句子翻译效果好。
  • 围住代码块,并将行内代码用<code>包裹。
  • 如果您不打算审查目标文本,请避免使用文字游戏。
  • 使用语义HTML。标题和列表有助于读者和模型。

常见问题

我需要编辑翻译吗?

有时需要,特别是标题和简介。我想要一个快速的起点,然后我会关注重要的地方进行润色。

隐私?

内容会发送到Gemini API。我不会发送秘密信息。API密钥保存在.env.local中(GOOGLE_API_KEYGEMINI_API_KEY)。

模型?

我使用一个快速的Gemini模型,并在其不可用时自动回退。您可以使用GEMINI_MODEL进行覆盖。

总结

AI不会取代你的声音。它消除了繁琐的工作。保持你的源内容干净,自动化可重复的部分,进行验证,然后发布。