常见问题
与官方工作流的关系
用了 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 URL 与 DeepSeek 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 也会重建。