我如何用AI翻译这篇博文
2025-08-21•7分钟阅读
我是西班牙语母语者。我住在美利坚合众国,所以每天都使用英语。我用英语写帖子来练习并接触更多人。
Google Analytics向我展示了一些重要的东西。我的访问者中有一半以上来自英语不是主要语言的国家。这告诉我我错失了价值。所以我决定用AI翻译博客。
我关注的重点
- 清晰度:我注重保持清晰的含义,而不是逐字翻译。
- 结构保留:我不允许翻译改变HTML、代码或URL。
- 稳定的URL:每种语言都有固定的slug,这样链接就不会断开。
- 速度:一个命令即可翻译所有内容。
我的设置
- 内容格式:每个帖子都是一个JSON文件,包含
title
、date
、excerpt
、content
、readTime
、tags
、categories
、translatedSlugs
和slug
。 - 框架:Next.js和
next-intl
用于支持多语言路由。 - 模型:我从
scripts/translate-es-gemini.ts
调用Google的Gemini API。它默认使用REST,并有一个备用模型。提示非常严格:只翻译值,不触碰HTML或URL。 - 一个命令:
scripts/translate-all-languages.ts
运行所有语言的翻译,同步slug映射,并验证完整性。 - 语言切换器:它使用
translatedSlugs
将读者引导到每种语言的正确URL。
我的工作流程
- 我用英语写帖子,保存在
app/[locale]/blog/posts/<slug>/index.json
中。content
字段是HTML。代码块是围起来的。 - 我用一个命令进行翻译。模型翻译
title
、excerpt
、content
和readTime
。元数据如date
、tags
和categories
保持不变。 - 我通过每个文件中的
translatedSlugs
映射来保持slug同步,包括英语和翻译版本。 - 我验证每种语言都存在,并且slug映射是完整的。
为什么AI对我有效
- 遵循指令:提示保护了HTML、代码和链接。
- 快速且良好:一个快速的模型,带有自动备用。
- 一致的语调:低温度使跨语言的风格保持稳定。
安全措施
- HTML安全翻译:我只发送JSON键的值,不发送标签或属性。
- Slug规范:
translatedSlugs
包含en
、es
、fr
、de
、ru
、nl
、it
和zh
的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_KEY
或GEMINI_API_KEY
)。
模型?
我使用一个快速的Gemini模型,并在其不可用时自动回退。您可以使用GEMINI_MODEL
进行覆盖。
总结
AI不会取代你的声音。它消除了繁琐的工作。保持你的源内容干净,自动化可重复的部分,进行验证,然后发布。