多语言
INFO 模块 是 TechUI Core 的“喉舌”。它负责管理 Wasm 内部的所有文案输出,确保授权状态、错误警告及法律声明能够以正确的语言、准确无误地传达给开发者或最终用户。
与常规的前端 i18n 框架(如 vue-i18n)不同,TechUI Core 的多语言系统是独立且封闭的,旨在确保关键信息的不可篡改性。
核心机制
静态字典构建
多语言数据结构在 Rust 层面通过 HashMap 构建,并在编译阶段被硬编码进 .wasm 二进制文件中。
- 内存驻留:字典在模块初始化时加载至线性内存,随后的每一次文案读取均为纳秒级的内存寻址操作。
- 按需编译:利用 Rust 的
#[cfg]特性,不同版本的组件库(Prime/Base/Scifi)仅包含其对应的文案集。例如,免费版组件库中物理上不存在付费版的授权提示文案,从而减小了模块体积。
语言同步逻辑
Wasm 模块不直接监听浏览器的语言变化,而是通过 会话存储 (Session Storage) 与宿主环境保持同步。
- 读取:Wasm 初始化时,会自动读取
sessionStorage中的sysLang参数。 - 匹配:支持
cn(简体),hk(繁体),en(英文) 三种标准代码。 - 回退:若参数缺失或不支持,默认回退至
cn(或根据构建配置决定)。
文案分类
INFO 模块管理的文案主要分为以下三类:
🎫 授权与状态 (Licensing Status)
最核心的反馈信息,用于明确当前的授权等级。
- 免费/付费区分:明确提示当前是“免费版”、“体验模式”还是“正式授权”。
- 有效期提示:如
距离到期 [XX] 天或永久有效。 - 授权链路:展示
本许可证由 [授权方] 授权给 [被授权方]的完整法律链路。
🛡️ 错误与熔断 (Errors & Meltdown)
当 VALID 模块检测到异常时,调用此类文案进行控制台告警。
- 环境错误:如
当前域名与许可证限定域名不匹配、当前许可证仅可以内网部署。 - 完整性错误:如
检测到WASM模块依赖的浏览器的原生方法遭篡改。 - 配置错误:如
许可证配置密钥错误或缺失。
⚖️ 法律声明 (Legal Statements)
硬编码的法律红线,用于保护知识产权及规避合规风险。
- 版权声明:明确严禁提取素材或源码。
- 合规限制:包含特定区域的黑名单警告,这是基于出口管制或反诈策略的特殊风控文案。
信息输出渠道
INFO 模块并不直接操作 DOM 显示文字(除了水印),它通常通过以下方式输出信息:
- Console 铭牌:在开发者工具控制台打印带有样式版权信息。
- tuiCoreInfo():当开发者在控制台主动调用此函数时,返回完整的结构化信息对象。
- 错误对象 (Error Object):当发生 Panic 或熔断时,抛出的 Error Message 源自此模块。