refactor(i18n): 迁移到 rust-i18n 语义键体系(ns.key),废弃中文原文作 key

旧实现的问题(按用户反馈):
- 中文原文作 key:文案措辞与代码耦合,一词多义撞 key("主题" Topic/Theme)
- 巨型 match 文案表:重复键靠编译警告暴露;漏翻静默回退,无任何校验
- tf 参数到处 &n.to_string() 噪音

新体系(gpui-kit 官方方案):
- locales/ui.yml 语言包(rust-i18n v2,en/zh-CN 双语并排),key 为
  语义标识符(common.save / conn.connect / status.connected…),
  与自然语言彻底解耦;改措辞不动代码
- crate 根 i18n! 编译期内嵌;init_i18n() 经 extend! 并入 gpui-kit
  组件内置文案(按钮/空态等随语言切换)
- t/tf 薄门面查 _rust_i18n_translate(运行时 key),模型 label()
  改返回语义 key;tf 参数只需 Display
- 四个强制单测:语言包 en/zh-CN 完整、占位符 {x} 两侧一致、
  全源码 t()/tf() 字面量必须存在词条、模型 label 必须有真实译文
- 语言中性文案("QoS"、"/mqtt" 等)去掉 t() 包裹
- 顺带补翻 30 条漏网文案(资源监控统计行/表单校验/阿里云说明段等)

42 测试全绿;中英双语实机截图验证零裸 key。
This commit is contained in:
2026-10-04 12:27:55 +08:00
parent 0406dee7a4
commit 35e2b6fb60
27 changed files with 1749 additions and 805 deletions
+11
View File
@@ -1,5 +1,16 @@
//! MQTTX:数据模型、持久化、MQTT 引擎与 GPUI 界面。
// 语言包编译期内嵌(key = 语义标识符,en/zh-CN 并排);miss 回退 en
rust_i18n::i18n!("locales", fallback = "en");
/// 把 gpui-kit 组件内置文案(按钮/日历/空态等)并入当前语言包。
/// 启动时调用一次;extend! 展开引用本 crate 的 _rust_i18n_backend,
/// 必须在 lib 内调用(bin crate 的 crate:: 指向不同根)。
pub fn init_i18n() {
use gpui_kit::component as gpui_component;
rust_i18n::extend!(gpui_component);
}
pub mod aliyun;
pub mod model;
pub mod mqtt;