跳到主要内容

用于游戏本地化的翻译表,上线前就检查好。

每个键一行,附上下文和给译者的最大长度,每种语言一列。每条译文都带有状态,过长或丢失占位符的文本会在输入时被标出,整张表可以导出为 CSV、JSON、.po 和 XLIFF,供 Unity、Unreal 和 Godot 使用。

Nodary 中 Saltmarrow 的翻译表:键、上下文和最大长度,旁边是英语、法语、德语、日语和巴西葡萄牙语列,每条译文都有表示状态的彩色条,表格上方是每种语言的进度,以及德语和巴西葡萄牙语中有待修正的文本。
Saltmarrow 是一个示例项目:其中的工作室、团队和游戏都是虚构的。

翻译表就在项目里

把任意电子表格变成翻译表,或者从现成的表开始。Nodary 会根据表头推断各列用途,例如 Key、Context、Max length、English,或 Godot 风格的 keys、en、fr,点一下就能把一种语言加为新列。这张表是一份文档,与它的文本所出自的对话、角色和系统在同一张地图上,也能像其他文档一样与它们链接。

  • 输入 / 并选择“翻译表”,或把已有表格变成翻译表
  • 根据表头推断各列用途,再由你确认
  • 逐单元格协同编辑:两位审阅者编辑不同单元格时绝不会互相覆盖
  • 阿拉伯语和希伯来语等从右到左的语言按从右到左书写

它不做什么 对话台词不会自动进入翻译表:键需要手动输入、粘贴、从表格导入或由智能体添加。一张表最多 50,000 个单元格,所以大型游戏会把文本分到多张表中。

Saltmarrow 项目在 Nodary 的星图上:文档围绕愿景、世界与故事、角色、系统、制作、本地化、音频和美术指导等中心分组,由层级线相连,有两位队友的光标,以及在线成员列表。
翻译表位于本地化中心之下,与其文本所出自的文档只隔一条链接。

每条译文都有状态,也都经过检查

译文的状态可以是缺失、草稿、已审阅、已定稿;如果写好之后源文本发生变化,就变为源文本已改。源文本变化时不会改写任何内容:每条译文都记得它所对应的文本。输入时,Nodary 会标出超出字符限制(按玩家看到的字符计)的文本、丢失或多出的占位符、仍是源语言的文本,以及首尾多余的空格。

  • 每种语言的进度,可筛选出待处理或有问题的文本
  • 译者面板:源文本、上下文、字符计数和需保留的占位符
  • 把选中的内容标为已审阅或已定稿,或在源文本小改后保留状态
  • 识别 ICU、i18next、Unity、Unreal 和 printf 形式的占位符,以及标记标签

它不做什么 没有翻译记忆库、术语库或内置机器翻译。译文来自你的译者,或来自你委托的 AI 智能体,智能体的成果以草稿形式提交。

上下文
Banner when a storm forms. {seconds} counts down
源文本(英语)
Storm in {seconds} s. Get to the stilts.需保留 {seconds}

38/44 个字符

  • 占位符:缺少 {seconds}
伪本地化(用于测试界面)[Šţóŕɱ íñ {seconds} š. Ĝéţ ţó ţĥé šţíĺţš. ~~~~~~~~~~~~]

给引擎和译者的文件,以及给构建流程的数据源

导出包含所有语言的 CSV 供 Godot 和 Unity 使用,导出 JSON 供 i18next 和引擎使用,导出以键作为上下文的 gettext .po 供 Unreal 和 Godot 使用,导出 XLIFF 1.2 供翻译工具使用,其中带有每条文本的状态、长度限制和上下文。伪本地化语言能在任何译文出现之前,就在你的界面中显示未翻译或被截断的文本。如果构建不该等任何人,它可以用只读数据密钥从固定地址自行拉取这张表。

  • 导入 XLIFF 1.2 或 2.0、.po、JSON 或 CSV,按键匹配,并可预览
  • 文件中的空译文绝不会清除表中已有的译文
  • 单一语言导出为 JSON、.po 或 XLIFF,或全部语言导出为 CSV;final=1 只保留已定稿的文本
  • 表格未变化时返回 304,每个密钥每分钟最多 120 次请求

它不做什么 复数形式以 ICU 消息写在同一个单元格里:导入时会跳过 .po 文件中的复数条目。数据源只读;不会通过它向 Nodary 写回任何内容。

Nodary 中 Saltmarrow 的翻译表,导出菜单已打开:包含所有语言的 Godot 和 Unity 用 CSV、带伪本地化语言的 CSV,以及针对所选语言的 i18next 和引擎用 JSON、gettext .po 和 XLIFF 1.2。
所有格式都在翻译表的导出菜单中。同一工具栏里的“数据源”按地址把表格提供给构建。

智能体填写翻译表,而不改写整张表

通过 MCP 连接后,智能体用 get_localization 读取翻译表:每种语言的进度和仍需处理的文本,以及它们的上下文、长度限制和问题。set_translations 按键写入,除非你要求它直接批准,否则都以草稿形式写入;它还能添加键或语言列,并报告哪些文本过长或丢失了占位符。同时在编辑这张表的人会保留他们的单元格。

连接智能体

你的提问把 Saltmarrow 翻译表中缺失的德语文本以草稿形式补齐。保留每个占位符,不超过每条的最大长度,并告诉我哪些还有问题。

它调用的工具
  • search_documents
  • get_localization
  • set_translations

常见问题

如何把游戏文本导出到 Unity、Unreal 或 Godot?

打开翻译表的“导出”菜单。CSV 包含所有语言,先是一列键,然后每种语言一列,正是 Godot 和 Unity 读取的格式;gettext .po 包含一种语言,以键作为上下文,供 Unreal 和 Godot 使用;JSON 把一种语言输出为扁平的键值文件,供 i18next 和引擎使用。导入本身在你的引擎中完成,使用引擎自带的本地化工具。

Nodary 会帮我翻译文本吗?

不会。没有翻译记忆库,也没有内置的机器翻译服务。你的译者在表中工作,或通过 XLIFF 在他们自己的工具中工作;你连接的 AI 智能体也可以写译文,这些译文会以草稿形式提交,等人审阅。

源文本改变后,译文会怎样?

每条译文都会保存它所对应的源文本的指纹。源文本改变时,它的译文显示为“源文本已改”,不会改写任何内容。如果只是小改,“源文本改动很小”会让它们保持原有状态。

我们的构建能自动下载文本吗?

可以。任何成员都可以在个人资料中创建只读数据密钥,作用于整个工作区或一个项目,翻译表的“数据源”按钮会列出它的地址。构建可以拉取 JSON、.po 或 XLIFF 格式的单一语言,或 CSV 格式的全部语言,final=1 会排除尚未定稿的内容。

检查能识别哪些占位符和标签?

ICU 消息(包括 plural 和 select)、Unity 和 Unreal 写法的 {name} 和 {0}、i18next 的 {{name}}、printf 形式(例如 %s、%d 和 %1$s),以及 <b> 或 <color=#f00> 这样的标记标签。长度按玩家看到的字符计算:一个带重音的字母或一个 emoji 算一个字符,标签不计入。

译者可以把文件发回来吗?

可以。导入 XLIFF 1.2 或 2.0、gettext .po、JSON 或 CSV,最大 8 MB。译文按键匹配,表中没有的键会被列出而不是被添加,应用前的预览会显示每处更改,基于旧源文本完成的译文会以“源文本已改”状态导入。

把你的文本放到你的游戏旁边。

免费开始,输入 / 并选择“翻译表”,再粘贴你的第一批键。无需绑卡,无需安装。

两名成员、十份文档以内免费。无需绑卡。