常见问题

与官方工作流的关系

用了 CLIFF 之后,还能用官方的 PO / CSV 导出吗?

可以。CLIFF 只是官方 GatherText 管线里的额外步骤,不改变 manifest / archive / .locres 的任何结构。官方的 Gather / Import / Export / Compile 按钮、Translation Editor、PO 交换都照常可用。

会不会绕过官方直接写二进制?

不会。.locmeta / .locres 全部由官方 FTextLocalizationResourceGenerator 生成(EGenerateLocResFlags::None)。插件的导入器只通过 FLocTextHelper 写 manifest / archive。

需要修改引擎吗?

不需要。插件只使用 Core / Developer / Editor 的公开类,引擎源码零 diff。

支持哪些引擎版本与平台?

宿主工程使用 UE 5.8,模块 PlatformAllowList 为 Win64 / Mac / Linux。插件 .uplugin 未声明 EngineVersion 字段,其它版本请自行验证。

数据与语义

为什么导出后 type 变成了 sentence

因为 UE 侧没有类型信息。type 的推导顺序是:cliff.type 元数据 → Namespace to Type 映射表 → 兜底 sentence + 告警。补上映射表规则即可(见语义映射)。

reviewed / final 会丢吗?

不会——它们保存在 archive 的 cliff.status 元数据与侧车中。但如果这两个来源都没有(例如从别人机器的纯 .locres 导出),状态只能按官方二元语义落到 translated / initial

一定要提交 .cliffmap.json 吗?

强烈建议。没有侧车时导入仍能工作,但 UE Key 会变成 <group-path>.<entry-id>,与原始 Key 不同,往返不再无损。

ICU 文本能在 UE 运行时装扮吗?

UE 的 FText::Format 不实现 ICU MessageFormat 求值。插件原样存取 ICU 字符串并关闭编译期格式校验;如需在游戏里格式化,请在运行时自行解释(或改用 UE 自身的格式语法)。

status: initial 的条目会写进 archive 吗?

不会。initial 只写 manifest 的源文本,不产生 archive 译文条目。

AI 翻译

会覆盖我人工翻译的内容吗?

不会。插件不提供覆盖开关,只翻译没有 target 的条目与「自翻译」条目;reviewed / final 永不触碰。

为什么有的条目没有被翻译?

常见原因:条目已经是人工译文(跳过)、模型返回空译文或原样返回源文(拒绝写回)、占位符不一致(拒绝写回)。日志会逐条给出原因。

提示词和术语表放在哪里?

术语、人称、标点风格Translation Standard(会随 .cliff 流转,外部工具也看得到);模型行为约束System Prompt(只影响本机 AI 请求)。两者都会参与请求。

API Key 怎么放才安全?

用环境变量 DEEPSEEK_API_KEY。写进项目设置会被明文保存到 Config/DefaultEditor.ini,提交仓库前务必清空。

一次翻译多个语言会重复计费吗?

不会重复:每个语言只请求自己缺失的条目,多语言并发执行。重复运行也不会重新翻译已有译文。

支持 DeepSeek 以外的模型吗?

当前版本只实现 DeepSeek 的 OpenAI 兼容 /chat/completions;只要兼容该协议的服务通常也能用(改 DeepSeek Base URLDeepSeek Model),但未做验证。

工程实践

.cliff 应该放进版本控制吗?

应该。它是纯文本、UTF-8、LF、稳定文件名,diff 清晰,适合评审。建议与侧车一起提交;把「导出目录」放在仓库外或专门的翻译仓库。

导出目录放在哪里合适?

默认取 Target 的本地化数据目录(Content/Localization/<Target>),因为那里已经是官方数据目录。若只想临时查看,建议 Saved/CliffExport/

多个 Target 怎么处理?

在 Dashboard 里选中 TargetSet,三个按钮会批量处理集合中的全部 Target(每个 Target 一个子目录)。AI 翻译会一次性为所有 Target 装配任务。

导入是幂等的吗?

是。同一份 .cliff 重复导入不会产生重复条目或重复 manifest context;需要回滚时重新导入旧版 .cliff 即可。

CI 里怎么用?

UnrealEditor-Cmd.exe <Project>.uproject -run=GatherText -config="<Config>.ini"

或使用控制台命令(-ExecCmds="CliffLocalizationSuite.AITranslate Game ja,ko")。AI 翻译需要环境变量 DEEPSEEK_API_KEY

插件的 UI 文本支持中文吗?

支持。插件自带 7 个 Localization Target、15 种语言的译文,随包分发在 Content/Localization/;导入管线会把 NativeCulture 一起编译,因此编辑器界面语言的原生 .locres 也会重建。

还有问题?