piapia123
zh

结构化文件翻译

转换

这个工具会联网查询:输入会发往第三方服务,不经过本站服务器

把文件拖到这里,或点击选择 —— 也可以直接把内容贴进下面的框

文件名后缀:JSON · JSONL · YAML · CSV · TSV · SRT · WebVTT

译后文件

把一份语言包、配置或字幕文件丢进来,选好语言,点「翻译」。工具只翻字符串值,键名、字段顺序、列名、字幕时间轴一个字节都不动 —— 拿整份文件去翻译,`"Save"` 这样的键名也会变成中文,程序从此再也取不到那个键,而这是这类工具最典型的坏法。 文本会发给第三方翻译服务(页面标题下那行说明写着这件事)。 先「预检」再翻译。 预检一个请求都不发,只报出「将发送 48 条、1234 字符、跳过 12 条」,并逐条列出具体是哪些字符串。免费额度按字符数算,先看一眼再决定;这也顺便让你当场确认键名确实没有混进去。 同一个字符串只发一次。 语言包里 `"Save"` 会出现几十次,逐处翻译会把额度几倍地烧掉,还会让同一个词在不同位置翻成不同的说法。 关于排版:产物是结构等价的,但不是逐字相同 —— 注释会丢(JSON 与 CSV 本来就没有注释,YAML 有)、引号风格可能变、JSON 按你选的缩进重写。这一点 FAQ 里再说一次,因为它值得知道。

功能

  • 7 种格式:JSON、JSONL、YAML、CSV、TSV、SRT、WebVTT,也可以自动识别
  • 只翻字符串值:键名、字段顺序、CSV 列名、字幕时间轴一个字节不动
  • 同一个字符串只发一次(去重后再翻,省额度,也让同一个词的译法保持一致)
  • 默认跳过网址、邮箱、站内路径,以及整条就是 `{name}` / `%s` / `$1` 这类变量或占位符的值,两个开关都能关
  • 没有可翻内容的值(纯数字、纯符号)自动略过
  • 翻译前先「预检」:报出会发几条、多少字符、跳过哪些,一个请求都不发
  • 逐条翻译带进度显示(已完成 12 / 48),几十秒的等待不会让人以为卡住
  • 拖入文件或直接粘贴,译后可复制或下载,文件名后缀跟着格式走
  • 引擎可选免费的 MyMemory,或填自己的 Azure 密钥(密钥只存本机,不上传)
  • 结果里写明识别成什么格式、翻了几条、发了多少字符与几次请求

使用方法

  1. 把语言包、配置或字幕文件拖进上面的框,或把内容粘进左边
  2. 选源语言与目标语言;文件格式默认自动识别
  3. 点「预检」,看会发多少条、分别是哪些字符串
  4. 点「翻译」,等进度走完
  5. 右边是译后文件,可复制或下载

常见问题

我的文件会被谁看到?
发给所选的翻译服务(MyMemory 或 Azure),不经过本站 —— 这个站是纯静态的,没有服务端可以接触你的数据。但文件内容确实离开了你的设备,所以涉密或隐私内容请不要用在线翻译。
键名会被翻译吗?
不会,而这正是它与「把整份文件丢给翻译」最根本的区别。拿 `{"Save": "Save the file"}` 来说,只有右边那个值会被换掉,左边的 `"Save"` 原样保留 —— 键名被翻掉之后程序再也取不到那个键,而且那是运行时才炸,编译期毫无察觉。CSV 的第一行按列名处理,同样不翻。
为什么译后文件看起来和原来不一样?
因为值填回去之后是重新序列化的:结构等价、值都对,但排版按各格式自己的确定性写法重写 —— YAML 的注释会丢、引号风格可能变;JSON 按你选的缩进重排;CSV 统一成带引号转义的 CRLF 写法。JSON 与 CSV 本来就没有注释,所以受影响最小。所谓「逐字保留原排版」是做不到的,工具也不会假装做得到。
为什么有些值没有被翻译?
三类会被跳过:看起来是网址、邮箱或站内路径的;整条就是一个变量或占位符的(`{count}`、`%s`、`$1`);以及一个字母都没有的(`123`、`---`)。前两类可以在上面把开关关掉照样翻。默认跳过是因为翻译服务把 `{count}` 改成别的写法之后,程序就会崩,而那是很难查回来的。
为什么不支持 TOML 和 INI?
因为那两类文件里的值绝大多数是路径、开关和标识符,真正需要翻译的很少;而每多支持一种格式,就多一份「序列化之后和原文件长得不一样」的风险。真要翻,先用TOML 转换把它转成 JSON 再拿过来 —— 那条路更稳。
字幕的时间轴会变吗?
不会。SRT 与 WebVTT 只翻正文,cue 编号、时间戳、cue 设置全部原样保留。要整体平移或缩放时间轴,用字幕转换:那里有按秒平移和按系数缩放。
免费额度是怎么算的?
MyMemory 的匿名额度按字符数算、按天重置。这个工具在发出去之前先做了去重与跳过,所以只有真正不同的字符串会计入 —— 一份 `"Save"` 出现五十次的语言包只算一次。点「预检」就能看到这次实际会发多少字符。
它和「在线翻译」有什么区别?
那个翻的是一段文本,你贴什么它翻什么;这个翻的是一份文件,它在翻译之前先解析、只挑出该翻的值、翻完再按原结构填回去。翻语言包、配置或字幕用这个,翻一段话或一封邮件用在线翻译。

相关工具