每一条术语表条目、品牌语气文本、规则和模型配置,都会绑定到某个 locale。引擎在处理翻译请求时,会判断哪些已存储条目适用于该请求的 locale——包括精确匹配代码、在区域变体之间继承,以及在没有精确匹配时进行回退。这套解析逻辑对这四类配置都同样适用。
工作原理#
区域设置在输入时会先规范化为标准格式,随后也会以该格式存储并返回。大小写和分隔符会被统一修正,子标签则会完整保留。
| 输入值 | 存储为 |
|---|---|
EN | en |
en_US | en-US |
sr_Latn-RS | sr-Latn-RS |
zh-cn | zh-CN |
匹配会双向跨越子标签边界进行——当已存储的语言区域与请求完全一致,或一方是另一方的上级时,该存储语言区域就会匹配该请求。即使同一语言区域的两种写法彼此都不是对方的上级,也同样视为匹配;但区域会决定书写系统,因此仅带区域的形式与显式指定书写系统的形式是等价的(zh-CN ≡ zh-Hans-CN,zh-TW ≡ zh-Hant-TW)。
| 已存储 | 适用于 | 不适用于 |
|---|---|---|
de | de、de-DE、de-AT、de-CH | - |
de-DE | de-DE、de | de-AT、de-CH(同级区域) |
zh-CN | zh-CN、zh-Hans-CN、zh | zh-TW、zh-Hant-TW(书写系统不同) |
反向继承
已存储的 de-DE 响应不带地区的 de 请求,是现实中最常见的主流模式:大多数引擎按完整地区代码配置,但收到的往往是基础语言代码请求。两个方向都支持。
多个匹配项如何决出结果#
当有多个已存储条目同时适用时,引擎会对它们排序,并采用最优项:
- 精确匹配或语言默认项优先。 对于
de请求,会优先选择de-DE(德语的 CLDR 默认地区),其次才是不带地区的de。 - 其次看谁更具体,作为决胜规则。
- 其他任何匹配地区仍会保留为回退项——如果某个客户唯一的条目是
de-CH,那么在de请求没有更优匹配时,依然会使用它,因此配置永远不会被搁置。
| 请求 | 首选 | 同样适用(回退) | 排除 |
|---|---|---|---|
de | de-DE,然后是 de | de-CH、de-AT | - |
de-DE | de-DE,然后是 de | - | de-AT、de-CH |
de-AT | de-AT,然后是 de | - | de-DE、de-CH |
排序与选取#
上面的排序规则既决定可叠加配置项的先后顺序,也决定只能选一个的配置项由谁胜出:
| 配置项 | 排序的作用 |
|---|---|
| 术语表 | 所有匹配的条目都可以检索;最终哪些会进入提示词,由语义相关性决定 |
| 规则 | 所有匹配的规则都会纳入,并按 locale 匹配度从高到低排序 |
| 品牌语气 | 最匹配的那一条文本胜出——每个请求只会应用一条品牌语气文本 |
| 模型配置 | 最佳匹配会成为主模型,其余则组成回退链 |
文字系统安全性#
还有一条额外规则只适用于术语表custom_translation条目,因为它的文本会绑定到特定书写系统。对于书写系统存在歧义的基础语言——sr(西里尔或拉丁)、zh(简体或繁体)——写入时必须明确指定书写系统:要么使用显式书写系统标签(zh-Hans、sr-Cyrl),要么使用能确定书写系统的区域(zh-CN → 简体,sr-RS → 西里尔,依据 CLDR)。只有完全不带书写系统也不带区域的裸代码才会被拒绝。读取时,这些已明确指定的形式彼此等价——例如,存储为 zh-Hans-CN 的词条同样适用于 zh-CN 请求,反之亦然——但对于裸露的 zh 请求,由于其书写系统未知,不会匹配到已绑定书写系统的条目,因此若想获得可预期的结果,请传入显式书写系统或区域。像 de 这类只有单一书写系统的语言,无需指定书写系统,并会照常将 de 解析为 de-DE。non_translatable 条目则不会受书写系统影响,始终直接通过。
示例#
当一个按地区代码配置的引擎(en-US 到 fr-FR、de-DE、nb-NO)收到基础语言代码请求(fr、de、no)时:
fr目标会匹配到fr-FR的术语表条目、品牌语气文本和规则——这些会被当作fr的默认项参与排序,而不是作为最后兜底,因为fr-FR是法语的 CLDR 默认区域。- 当源语言是
en时,也会匹配到en-US条目——因为匹配是双向的。 no目标不会采用nb-NO。no和nb属于不同的语言子标签,而不是一组地区变体;请使用nb作为目标。
在 API 中使用区域设置解析#
调用 localize endpoint 时,这一解析过程会自动完成。引擎会根据请求中的 sourceLocale 和 targetLocale,匹配应当应用的术语表条目、品牌语气文本、规则和模型配置——无需额外参数。
