> 译文仅供阅读便利。具有规范效力的是英文原文。 # 国际化 **元宇宙规范** **文档编号:** MU-V2-ARCH-012 **标题:** 国际化与本地化模型 **文档类别:** 规范性 **版本:** 2.0(草案) **状态:** 工作草案 **规范性引用:** [Naming-Conventions](../02-architecture/Naming-Conventions.md)、[MMAS-Interchange](../02-architecture/MMAS-Interchange.md)、[MMAS-Core](../02-architecture/MMAS-Core.md)、BCP 47、RFC 2119 **说明性引用:** [Traceability](../02-architecture/Traceability.md)、[Projection](../04-core-concepts/Projection.md) **版权:** © Orkestron.AI **许可:** Apache-2.0 --- # 1. 目的 本文档定义元宇宙的**国际化(i18n)模型**:单一的、与语言无关的含义如何以多种语言承载人可读的标签、描述与文档,而这些本地化内容永远不会影响身份或[语义指纹](../02-architecture/MMAS-Interchange.md)。 [Naming-Conventions](../02-architecture/Naming-Conventions.md) 已经陈述了这条统摄原则:[正典语义名称(CSN)](../02-architecture/Naming-Conventions.md)与语言无关,而显示名称可以本地化。本文档把该原则补充完整,并使之对对象、属性与投影具有规范效力。 --- # 2. 适用范围 本规范适用于: - 与语言无关的含义同可本地化呈现之间的分离; - 把本地化的标签、描述与文档附加到对象、属性与投影; - 本地化内容的语言标记规则; - 保证本地化不具语义性。 它不定义翻译流程,也不定义本地化内容在用户界面中的呈现方式。 --- # 3. 原则 - **含义与语言无关。**概念的身份是它的 CSN,而不是任何人类语言中的任何一个词。 - **呈现可本地化。**凡是人会读到的东西,标签、描述、文档,都可以被翻译。 - **本地化不具语义性。**增加、修改或删除一条翻译,都不得改变某个概念的含义或它的语义指纹。 --- # 4. 正典语义名称不作本地化 [正典语义名称(CSN)](../02-architecture/Naming-Conventions.md)必须与语言无关,且不得被本地化。 - 无论一个概念以多少种语言呈现,它都必须恰好只有一个 CSN。 - CSN 不得被翻译、按语言音译,或随地区设置而变化。 - 凡涉及身份,所有[联邦](../03-federation/MUFP.md)交互都必须交换 CSN,而绝不是本地化后的显示名称。 CSN 不承诺任何一种人类语言,正如它不承诺任何一种编程语言:它表达的只是在语义层级中的位置,仅此而已。 --- # 5. 什么是可本地化的 以下内容属于呈现,必须被视为**非语义**: - **显示名称** - 概念对人友好的标签; - **描述** - 简短的人可读说明; - **文档** - 长篇的人可读文本; - 附加在属性与投影上的**标签**与界面文案。 这些键在 [MMAS-Interchange §5](../02-architecture/MMAS-Interchange.md) 中已被列为非语义并排除在规范化之外。本地化只是往这些同样的非语义字段中*增加更多取值*;它从不引入语义内容。 --- # 6. 语言标签 本地化内容必须带有符合 **BCP 47** 的语言标签(例如 `en`、`ru`、`zh`、`zh-Hans`、`pt-BR`)。 - 每一个本地化取值都必须声明其语言标签。 - 模型应当为缺少标签的内容声明一个默认语言标签。 - 语言标签必须按 BCP 47 以不区分大小写的方式比较,并且应当以其 BCP 47 正典形式存储。 因此,本地化字段就是从 BCP 47 语言标签到文本的一个映射,附加在该概念的非语义呈现之上。 --- # 7. 在不影响指纹的前提下附加本地化标签 本地化标签必须作为第 5 节所列非语义呈现键的取值,附加到对象、属性与投影上。由于这些键被排除在规范化之外: - 一个拥有一个 CSN 与十个已翻译显示名称的概念,必须产生与同一概念只有一条翻译、或一条也没有时**相同的语义指纹**; - 增加、编辑或删除一条翻译都不得要求[迁移事件](../02-architecture/Semantic-Migration.md),因为含义未变; - 以不同语言呈现同一概念的两个宇宙,仍必须解析到同一个 CSN 与同一枚指纹,因而认定彼此所指相同。 用户界面应当呈现与用户地区设置相称的本地化显示名称,同时把它解析回底层的 CSN;若所请求的地区没有翻译,则应当回退到默认语言。 --- # 8. 完整示例 同一个薪酬概念,在一个不可变的 CSN 之上以三种语言呈现: ```text CSN : employee.compensation.salaryAgreement (language-independent) displayName : en : "Salary Agreement" ru : "Соглашение об оплате труда" zh : "薪资协议" description : en : "The agreed terms of an employee's base compensation." ru : "Согласованные условия базовой оплаты труда сотрудника." zh : "员工基本薪酬的约定条款。" ``` 语义指纹是在语义内核之上计算的,该内核包含 CSN 与结构性事实,但**不包含**任何 `displayName` 或 `description` 取值。因此三种呈现以及它们的任意子集都得出完全相同的指纹。删掉 `zh` 翻译或添加一条 `de` 翻译,在语义上什么也没改变。 --- # 9. 校验 当满足以下条件时,模型即符合本规范: - 每个公共概念都恰有一个与语言无关的 CSN; - 没有任何 CSN 被本地化; - 每一个本地化取值都带有 BCP 47 语言标签; - 本地化内容只占据非语义的呈现键; - 语义指纹在任何翻译被增加、修改或删除时都保持不变。 适用的级别见 [Validation](../02-architecture/Validation.md)。 --- # 10. 架构不变量 - CSN 必须与语言无关,且不得被本地化。 - 本地化内容必须是非语义的,且不得影响语义指纹。 - 本地化取值必须带有 BCP 47 语言标签。 - 凡涉及身份,联邦必须交换 CSN,而绝不是本地化后的显示名称。 - 更改一条翻译不得构成语义变更。 --- # 未来方向 未来的修订可以定义一种**本地化包**格式,使翻译能够独立于它们所装点的模型而被发布、版本化与联邦,这样社群就能贡献一门语言而无需触碰权威的语义模型;同时定义一个翻译覆盖度的质量信号,用以支撑[语义连贯度评分](../06-ecosystem/Semantic-Coherence-Score.md)中的文档完整性维度;并支持按地区设置选择[投影](../04-core-concepts/Projection.md)。 --- # 结语 > 一个概念只意味着一件事;世界却用许多语言来读它。元宇宙把两者分开:一个正典语义名称承载含义,任意多个本地化标签承载词语,于是翻译一个模型永远不会改变它所说的内容。