| name | text-preserve-rules |
| description | 处理文本保护规则时使用。 |
文本保护领域判据
本技能以单条 text_preserve 规则为领域判断单位,输出保护资格、表达式和命中边界结论。
text_preserve 面向翻译过程中必须逐字保持的非语义控制符、占位符和格式脚手架;保护资格由结构身份与逐字保持需求决定。自定义规则的运行时行为由 src 的 JavaScript 正则确定,info 供用户识别规则。
1. 保护资格
先判断结构对象是否必须原样保留,再判断怎样用安全正则表达:
- 必须保护:已确认存在必须逐字保持的非语义结构,普通翻译不能稳定保持目标行为;保护资格与正则表达方案分别判断。
- 无需保护:当前对象属于自然语言或其它规则类型,普通翻译能够稳定处理,或补充调查确认其中不存在必须逐字保持的结构。
- 尚不能判断:仍无法确认命中是否为非语义结构;继续按形态、位置、固定前后缀或其它可观察边界缩小范围。
结构身份和逐字保持需求决定保护资格;出现次数、当前损坏、生效模式、既有规则存续时间和零命中作为辅助证据记录。
2. 单条规则的发现与核验
候选来自控制符、占位符、格式脚手架、相关 warning、已有译文中的结构损坏、glossary 路径发现的相邻固定标记和其它工程事实。
每个候选独立完成:
- 扫描表面为按
\n 拆行的原始 item.src;
- 以
new RegExp(source, "giu") 编译,拒绝非法或零长度表达式;
- 完整聚合 item、行、片段、
text_type 和文件分布;
- 保留有限代表片段、位置和必要上下文;
- 按结构形态和实际保护行为判断必须保护、无需保护或仍需核验;
- 直接采用、缩小范围、拆分、保留确定部分或列为需要补充信息。
扫描结论的适用范围是该候选在声明的原始 item.src 中的单条规则事实。
3. 表达式收束
- 直接表达:候选合法、非零长度、不会危险回溯或吞掉正文,且全部已知命中都必须原样保留。
- 形态分组:候选同时命中结构和正文时,依据已观察的标签名、控制符前缀、参数字符集、定界符、固定长度、位置或
text_type 分析差异;text_type 提供分布证据,运行时匹配由正则决定。
- 缩小范围或拆分:为确定安全的结构子集生成更窄正则,分别重新编译和完整扫描;安全子表达式独立形成规则,宽候选保留为调查证据。
- 保留确定部分:已验证安全的子对象独立形成规则,剩余形态作为独立对象单独判断。
- 需要补充信息:已确认必须保护的结构无法由任何合法、非零长度且不会吞正文的正则隔离;记录缺少的格式事实或建议的手工边界。
表达式修改后,新值建立自己的完整扫描证据。
4. 字段与安全边界
- 每条
src 独立按 JavaScript 正则语义执行;匹配结果由正则决定,text_type 和文件解释命中分布;
info 使用简短结构说明,表达式含义改变时同步更新;无法可靠命名时允许为空;
- 非法、零长度、无界通配、嵌套量词回溯或会吞自然语言正文的表达式不得进入最终规则;
- 宽表达式失败后保留结构对象的保护资格,并继续收窄或拆分表达式;
- 零长度或非法的既有规则形成调整或删除依据,结构对象的保护资格独立判断;
- 安全的 text_preserve 规则集合只由已验证的直接规则和安全子表达式组成;无法安全表达的结构保留为待补信息,不改变其它规则类型的独立判断。
5. 判例
以下判例在完成相应工程扫描后应用:
| 候选与证据 | 结论 | 理由 |
|---|
\{player_name\} 的全部命中都是同一角色名占位符 | 必须保护并直接形成规则 | 边界确定且每个命中都必须原样保留 |
\{\d+\} 的全部命中都是编号占位符 | 必须保护并直接形成规则 | 参数变化已由窄表达式覆盖,未吞掉自然语言 |
\{.*\} 同时覆盖占位符与正文 | 拒绝宽表达式,尝试由真实形态支持的窄候选 | 宽表达式不安全不代表占位符无需保护 |
^ 或 .*? 会产生零长度命中 | 拒绝候选;既有规则形成调整依据,对象资格另行判断 | 表达式失败不能单独否定结构保护必要性 |
<[^>]+> 同时命中 HTML 标签和比较表达式 | 按实际标签集合拆出安全规则 | 比较表达式不保护,已确认标签仍可独立形成规则 |
| 控制结构与自然语言使用完全相同,任何正则都会吞正文 | 列为需要补充信息 | 缺少可区分格式边界,不能安全表达 |