Skip to content

多语言

INFO 模块 是 TechUI Core 的“喉舌”。它负责管理 Wasm 内部的所有文案输出,确保授权状态、错误警告及法律声明能够以正确的语言、准确无误地传达给开发者或最终用户。

与常规的前端 i18n 框架(如 vue-i18n)不同,TechUI Core 的多语言系统是独立且封闭的,旨在确保关键信息的不可篡改性。

核心机制

静态字典构建

多语言数据结构在 Rust 层面通过 HashMap 构建,并在编译阶段被硬编码进 .wasm 二进制文件中。

  • 内存驻留:字典在模块初始化时加载至线性内存,随后的每一次文案读取均为纳秒级的内存寻址操作。
  • 按需编译:利用 Rust 的 #[cfg] 特性,不同版本的组件库(Prime/Base/Scifi)仅包含其对应的文案集。例如,免费版组件库中物理上不存在付费版的授权提示文案,从而减小了模块体积。

语言同步逻辑

Wasm 模块不直接监听浏览器的语言变化,而是通过 会话存储 (Session Storage) 与宿主环境保持同步。

  1. 读取:Wasm 初始化时,会自动读取 sessionStorage 中的 sysLang 参数。
  2. 匹配:支持 cn (简体), hk (繁体), en (英文) 三种标准代码。
  3. 回退:若参数缺失或不支持,默认回退至 cn (或根据构建配置决定)。

文案分类

INFO 模块管理的文案主要分为以下三类:

🎫 授权与状态 (Licensing Status)

最核心的反馈信息,用于明确当前的授权等级。

  • 免费/付费区分:明确提示当前是“免费版”、“体验模式”还是“正式授权”。
  • 有效期提示:如 距离到期 [XX] 天永久有效
  • 授权链路:展示 本许可证由 [授权方] 授权给 [被授权方] 的完整法律链路。

🛡️ 错误与熔断 (Errors & Meltdown)

当 VALID 模块检测到异常时,调用此类文案进行控制台告警。

  • 环境错误:如 当前域名与许可证限定域名不匹配当前许可证仅可以内网部署
  • 完整性错误:如 检测到WASM模块依赖的浏览器的原生方法遭篡改
  • 配置错误:如 许可证配置密钥错误或缺失

硬编码的法律红线,用于保护知识产权及规避合规风险。

  • 版权声明:明确严禁提取素材或源码。
  • 合规限制:包含特定区域的黑名单警告,这是基于出口管制或反诈策略的特殊风控文案。

信息输出渠道

INFO 模块并不直接操作 DOM 显示文字(除了水印),它通常通过以下方式输出信息:

  1. Console 铭牌:在开发者工具控制台打印带有样式版权信息。
  2. tuiCoreInfo():当开发者在控制台主动调用此函数时,返回完整的结构化信息对象。
  3. 错误对象 (Error Object):当发生 Panic 或熔断时,抛出的 Error Message 源自此模块。