多语言翻译与本地化
大模型翻译的常见用法:主力用一个价格低、语言能力稳定的对话模型逐段翻译,术语表固定写在系统提示词里,重要页面再交给更强的模型复核。按每月翻译约 400 万字中文估算,用最低价分组计算,模型费用每月约 ¥96.8。
价格更新于 2026年11月12日 20:17|
01
业务问题
出海企业要把商品详情、帮助文档、App 界面和营销邮件翻成多种语言,内容多、改得勤。人工翻译周期长,传统机翻引擎的术语又常常前后不一致。
大模型能理解上下文,译文更自然。但整篇长文一次丢进去,容易漏段、改格式,同一个术语在不同段落里还可能译得不一样。
实际做法是把术语表和风格要求固定在系统提示词里,长文按段落切开逐段翻译,保留 Markdown 和占位符,再按内容的重要程度安排复核。
02
推荐模型组合
逐段翻译(对话模型)
deepseek-v4.1-flashDeepSeek输入 ¥2.8 / 输出 ¥11.2 每百万 tokens· 国产模型分组承担全部翻译量,选单价低、目标语言表现稳定的模型。每次请求都带同一份术语表和风格说明;模型支持上下文缓存时,这段重复前缀命中后按更低的缓存价计费。
复核与润色(更强的模型)
Claude Sonnet 5.5Anthropic输入 ¥3.2 / 输出 ¥16 每百万 tokens· Claude 经济分组落地页、合同条款、应用商店文案这类重要内容,交给更强的模型对照原文检查漏译、错译和术语,必要时直接改写。
推荐模型按实时目录自动选取,价格取各模型最低价分组,更新于 2026年11月12日 20:17。点模型名可查看全部分组价格。
03
参考架构
- 1
准备术语表
整理品牌名、功能名和固定说法的中英对照,连同语气要求(正式还是口语,称呼用您还是你)写进系统提示词。
- 2
切分原文
按段落切分,每段控制在 1,000 到 2,000 字;代码、链接和变量占位符原样保留,不交给模型改写。
- 3
逐段翻译
每段单独请求,temperature 设低一些;保持段落顺序,失败的段落单独重试。
- 4
程序检查
对比原文和译文的段落数、数字、链接、占位符是否一致,不一致的段落重新翻译。
- 5
抽检复核
重要页面交给更强的模型或母语人员复核,复核中发现的新术语补进术语表。
04
成本估算
假设:每月翻译约 400 万字中文,分成 5,000 次请求;每次输入约 2,000 tokens(术语表与风格说明约 1,200、原文约 800),输出约 1,000 tokens;其中 10%(500 段)交给更强的模型复核,每次输入约 3,000 tokens、输出约 1,000 tokens。
| 项目 | 模型 | 用量假设 | 费用 |
|---|---|---|---|
| 逐段翻译 | deepseek-v4.1-flash | 5,000 次 × 输入 2,000 + 输出 1,000 tokens | ¥84 |
| 重要内容复核 | Claude Sonnet 5.5 | 500 次 × 输入 3,000 + 输出 1,000 tokens | ¥12.8 |
| 合计(每月) | ¥96.8 | ||
按各模型最低价分组的实时价格计算,价格更新于 2026年11月12日 20:17。
只含模型调用费用。表中没有计入上下文缓存,术语表这类固定前缀在支持缓存的模型上命中后按缓存读取价计费,实际费用可能更低。同一份内容译成几种语言,费用就乘以几。
05
示例代码
术语表和风格要求固定写在系统提示词里,原文按空行切段后逐段翻译,最后按原顺序拼接。
import os
from openai import OpenAI
client = OpenAI(base_url="https://open.tutujin.com/v1", api_key=os.environ["TUTUJIN_API_KEY"])
GLOSSARY = {"土土金 API": "Tutujin API", "分组": "group", "用量明细": "Usage"}
SYSTEM = (
"Translate Simplified Chinese into natural English for a software product. "
"Keep Markdown, numbers, code, URLs and placeholders such as %s unchanged. "
"Always use these term translations:\n"
+ "\n".join(k + " => " + v for k, v in GLOSSARY.items())
)
def chunks(text, limit=1500):
"""Split on blank lines so every request stays small and paragraphs stay whole."""
part = ""
for para in text.split("\n\n"):
if part and len(part) + len(para) > limit:
yield part
part = ""
part = part + "\n\n" + para if part else para
if part:
yield part
def translate(text):
out = []
for piece in chunks(text):
resp = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{"role": "system", "content": SYSTEM}, # identical prefix on every call
{"role": "user", "content": piece},
],
temperature=0.2,
)
out.append(resp.choices[0].message.content)
return "\n\n".join(out)
with open("article.zh.md", encoding="utf-8") as f:
print(translate(f.read()))
# Important pages: send source and translation to claude-sonnet-5-5 and ask it to flag omissions and wrong terms.常见问题
每月翻译 400 万字要多少钱?
按每次请求输入约 2,000 tokens、输出约 1,000 tokens,共 5,000 次,再抽 10% 复核估算,用最低价分组计算约 ¥96.8。要译成几种语言,费用就乘以几。
怎么保证术语前后一致?
把术语对照表写进系统提示词,每次请求都带上;翻译完再用程序检查术语表里的词是否按指定译法出现,不一致的段落重新翻译。
长文档为什么要分段翻译?
一次塞进太多内容,模型更容易漏段、改动格式,输出还可能达到长度上限被截断。按段落切开后,出错时只需要重试那一小段。
机器翻译能达到人工水平吗?
不同语种、不同领域差别很大,没法一概而论。建议先拿几篇代表性内容对比几个模型,再决定哪些内容可以直接发布,哪些必须人工复核。
术语表很长,会不会很贵?
术语表每次请求都要发送,会占输入 tokens。可以只放当前内容用得到的词条;模型支持上下文缓存时,固定不变的前缀命中缓存后按更低的价格计费。