Neatbo.

XCstrings 人工翻译交换与回填

导出既有直接译文及状态交给协作者,再将完整返回表或绑定 SHA 的部分补丁回填;未编辑的目录字节保持原样。

浏览器本地处理输入XCstrings 1.0 / 1.3 + JSON输出XCstrings / JSON单个文件最多 16 MiB · 最多 2 个
  1. 1添加输入
  2. 2调整设置
  3. 3获取结果

工具输入和文件在当前浏览器处理,不会上传。

输入内容

切换工具时在当前标签页临时保留输入。刷新或关闭后清除,较大的结果可能需要重新生成。

⌘ / Ctrl + Enter 运行

选择完全相同的原件,最多 5 MiB。内容只在本浏览器处理。

尚未选择文件

正在准备处理工具…

开始之前

导出既有直接译文及状态交给协作者,再将完整返回表或绑定 SHA 的部分补丁回填;未编辑的目录字节保持原样。

如何使用

  1. 选择“导出交换表”,选取原始目录。
  2. 将 manual-exchange.json 交给协作者。在 JSON 编辑器中只改 value 和 state,保留保护字段及每一行。
  3. 选择“应用完整返回表”,选取逐字节相同的原件及完整返回 JSON;或选择“应用部分补丁”,显式提供原值。
  4. 检查计数及完整变更报告,下载更新目录,再让接收的 Xcode 项目验证。

支持范围与限制

选择一个严格 UTF-8、无 BOM 的 XCstrings 1.0 或 1.3 原件,最多 5 MiB。导入另需一个返回 JSON File:完整表最多 16 MiB,显式部分补丁最多 5 MiB。整读前验证两个文件角色、全部参数、大小及最多 512 UTF-8 字节的 Unicode 标量文件名。

导出所有既有直接 stringUnit 的 value 与 state。支持状态为 new、needs_review、translated。语言键作为固定的不透明键,不证明其在 Xcode 中合法。可以保留空条目/本地化对象,但不创建新语言或单元。

完整返回表只能改 value 和 state;保留 format、sourceSha256、version、sourceLanguage、columns、所有行、行序、valuePath 和 sourceLocale。部分补丁为每项显式提供 valuePath、originalValue、originalState、value、state;未知/重复路径或原值冲突会使整个导入失败。

根、条目、本地化或单元层的任何 variations/substitutions、未知状态或未知本地化形态都会原子拒绝。失败界面保留逐字节 original.xcstrings 与完整 unsupported-shapes.json,均可完整复制/下载。结构前提非法时另给明确的非穷举诊断,不呈现为成功更新的目录。

最多 10,000 个条目、50,000 条本地化记录、50,000 个直接单元、64 层 JSON 容器及 1,000,000 个 JSON 树节点。成熟 scanner 在递归解析前计数:容器/字面量及 property 节点,键字符串也计数。重复键、非法 JSON、无效 UTF-8 或转义孤立代理项均原子失败。

完整交换表或更新目录各最多 16 MiB。完整导入变更报告采用推导的 40 MiB 容量;全部交付文件字节合计最多 61 MiB。失败文件限于 5 MiB 原件加 16 MiB 诊断,不静默截短输出。

除选定 value/state 字符串 token 外,原 UTF-8 字节保持原样:存为元数据的注释、空格、CRLF、未知对象、小数和超安全整数的数字写法均保留。原件下载不经过 JSON 重序列化。

宿主 10 秒时限覆盖 File 读取、Worker 加载、ready、计算和完整结果校验。取消立即结束并终止活跃 Worker,忽略迟到的读取/回复。停止后可用相同原 File 和参数重试。预览最多 4,000 个 Unicode 码点,复制/下载保留每个文件的完整字节。

操作示例

示例输入

{
  "sourceLanguage": "en",
  "strings": {
    "Greeting": {
      "localizations": {
        "en": {"stringUnit": {"state": "translated", "value": "Hello"}},
        "fr": {"stringUnit": {"state": "needs_review", "value": "Bonjour"}}
      }
    }
  },
  "version": "1.3",
  "opaqueRevision": 9007199254740993,
  "opaqueFraction": 0.125
}
示例参数
{"mode":"export"}

示例输出

{"format":"neatbo-xcstrings-manual-exchange-v1","sourceSha256":"b891764f343f28dec3340d0b75dab2590ba5bcf08b6ac81cab9330b473cb0d11","version":"1.3","sourceLanguage":"en","columns":["valuePath","value","state","sourceLocale"],"rows":[["/strings/Greeting/localizations/en/stringUnit/value","Hello","translated",true],["/strings/Greeting/localizations/fr/stringUnit/value","Bonjour","needs_review",false]]}

出现问题时

保留原件与完整拒绝诊断。变体需交给理解该目录的编辑器;修正绑定/语法问题,或拆分超限输入。取消或超时后,已选 File 可用于完整重试。

常见问题

可以修改源语言行吗?

可以,任何既有直接单元的 value 与 state 都可改。sourceLocale 是描述原件的保护标志,不用于创建或验证语言。

回填时可以选重新排版的原件吗?

不可以。SHA-256 绑定原始字节,包括空格与 CRLF。原件发生任何变化后应重新导出表;返回表必须保留行序及保护字段。

这是否证明 Xcode 兼容?

已声明的直接单元子集有保留的 Xcode 生产/消费证据。语言键及接收项目要求仍需在该项目验证;变体会原子拒绝。

文档与延伸阅读

相关工具