feat(app-iced): M120 实例页与启动阶段标签跟着界面语言走
来源:M106 r1 复审点名——中文机器上首屏(实例页)仍是英中混排(页头 / New instance / Import / ALL INSTANCES / VERSION / Present on disk / Running · pid / Launch failed)。 用户的原话是「我系统语言是中文 为什么打开软件是英文」。 改了什么 - i18n:catalog/instances.rs 从 6 条死 key 补到 34 条(页头 / 列表列头 / 详情动作 / 窄窗说明 / 元信息标签与值 / 隔离档位 / 运行状态 / 四个启动阶段)。族在装配链第 2 位, 新 key 追加在本族末尾,golden 对应位置插入(不是文件末尾追加)。 - 页面:新增 pages/instances/text.rs(Texts)——页面唯一的取词入口,实例页里不再有 任何可见英文字面量;detail / demo 也改从它取。 - 阶段标签:view/instances.rs 的 Running / Launch failed / 四阶段全部走目录; **数字与分隔符不随语言变形**(运行中 · pid 1234 与 Running · pid 1234 只换前半句)。 - 顺手修掉两处「语言反向泄漏」:原版徽标此前直接画 presenter 的中文「原版」(英文界面 会漏中文),现在走 LoaderVanilla;隔离档位 isolated/shared 也从 core 的稳定 id 换成人话。 - 删掉 InstancesLastPlayed:M117 加的整句 key,从未接线,形状与「标签 + 值」的元信息卡 不符,由 InstancesMetaLastPlayed + InstancesNeverPlayed 取代。 守门(pages/instances/tests/i18n.rs + app/view/tests.rs) - 中文态无 ASCII 英文单词(品牌 Java / 技术标识 pid 白名单); - 每一条 Instances* 的两套译文必须不同(切语言时真的变); - Running 的数字与 · pid 分隔符在两套语言里逐字保留; - 页面源码里 29 条旧英文基线不许回来;每条 key 都必须被页面引用(死 key)。 出图:DevDocs/artifacts/m120/01~12(有实例 / 空态 / 运行中 × 浅深 × 中英)。
This commit is contained in:
1 parent
2f491c31f9
commit
1a4e1fee12
17 files changed
+924
-119
No files matched your search
@@ -3,9 +3,25 @@
|
||||
//! 只被 [`crate::pages::demo_model`] 用:产品路径的转换在 `app/view.rs`(presenter 快照 → 模型)。
|
||||
//! 两份数据源喂同一个渲染函数,这是 [`crate::pages::model`] 存在的理由。
|
||||
|
||||
use unlucky_i18n::{Catalog, Key, Lang};
|
||||
|
||||
use super::super::model::{Detail, Instances, Meta, Row};
|
||||
use super::data::{DEMO, NOTE, SELECTED};
|
||||
|
||||
/// 演示路径的目录:**恒英文**。
|
||||
///
|
||||
/// 为什么不是 `model.lang`:本函数只被 `pages::demo_model` 调用,而那条路(`pages_demo` harness /
|
||||
/// 单测)走 `Model::new`,`lang` 恒为 `Lang::En`(harness 没有换语言的开关)。产品路径不读这里
|
||||
/// ——它走 `app/view.rs` 的快照转换。等 harness 有 `--lang` 时把这一行换成参数即可。
|
||||
fn catalog() -> Catalog {
|
||||
Lang::En.catalog()
|
||||
}
|
||||
|
||||
/// 元信息卡的标签(与 `app/view/instances.rs` 的 `detail_of` 同一批 key,只是这里恒英文)。
|
||||
fn label(key: Key) -> &'static str {
|
||||
catalog().text(key)
|
||||
}
|
||||
|
||||
/// 把 M84 的演示条目 [`DEMO`] 转成视图模型(真页面走 `app/view.rs` 的 `AppState` 转换)。
|
||||
pub(crate) fn demo() -> Instances {
|
||||
let rows = DEMO
|
||||
@@ -24,12 +40,12 @@ pub(crate) fn demo() -> Instances {
|
||||
name: entry.name.to_string(),
|
||||
subtitle: format!("{} · {}", entry.version, entry.loader),
|
||||
meta: vec![
|
||||
meta("VERSION", entry.version),
|
||||
meta("LOADER", entry.loader),
|
||||
meta("MEMORY", entry.memory),
|
||||
meta("JAVA", entry.java),
|
||||
meta("MODS", entry.mods),
|
||||
meta("LAST PLAYED", entry.last_played),
|
||||
meta(label(Key::InstancesMetaVersion), entry.version),
|
||||
meta(label(Key::InstancesMetaLoader), entry.loader),
|
||||
meta(label(Key::InstancesMetaMemory), entry.memory),
|
||||
meta(label(Key::InstancesMetaJava), entry.java),
|
||||
meta(label(Key::InstancesMetaMods), entry.mods),
|
||||
meta(label(Key::InstancesMetaLastPlayed), entry.last_played),
|
||||
],
|
||||
note: Some(NOTE.to_string()),
|
||||
status: None,
|
||||
|
||||
Reference in new issue
Block a user