⚠ MOCKUP · 需求討論用,非實作。圖片皆取自現有遊戲資產;模擬文字取自遊戲實際字串(server 原文 + `client/locales/zh-Hant.json` 實際譯文);缺圖處以空卡片(虛線)佔位。
撤離報告(Extraction Report)信件呈現改版
依現有模板信件(templateKey + params)架構模擬 · 語言可切換 · 2026-07-24
遊戲支援語言
A · 現況(純文字 body)
Extraction Report: T1 Fabrication Yard
SYSTEM
Outcome: Site depleted
Site: (167, 158)
Recovered this run:
- Metal: 7,227
- Food: 1,994
- Credits: 487
Items recovered:
- Signal Shards: 5
- Catalyst Residue: 2
- Standard Catalysts: 1
- Equipment Electric Stormcoil Rifle Common: 1
Left behind due to cargo:
- None
Final Cargo: 9,708/9,800
Delivery: Banked in Frontier
Outcome: Site depleted Site: (167, 158) Recovered this run: - Metal: 7,227 - Food: 1,994 - Credits: 487 項物品s recovered: - Signal Shards: 5 - Catalyst Residue: 2 - Standard Catalysts: 1 - Equipment Electric Stormcoil Rifle Common: 1 Left behind due to cargo: - None Final Cargo: 9,708/9,800 Delivery: Banked in Frontier
英文語系不安裝翻譯掃描器,body 以 pre-wrap 完整換行呈現——但仍是無層級的純文字。
繁中實況(與遊戲截圖逐字一致):翻譯掃描器的 pattern "{0} item{1}" → "{0} 項物品{1}" 把整個 body 當成一個 text node 改寫——所以同時出現 「項物品s recovered」 破碎字串 且所有換行被 collapse 成一行流。
B · 提案(結構化 params → 專屬版面)
T1
📍 (167, 158)
圖例:金色虛線底線 = 現行 catalog 無譯文(依 runtime fallback 顯示英文原文);⚠ = catalog 現有譯文有誤(見下方發現 F2)。
█ 查證發現(模擬文字均對照遊戲實際字串)
- F1 · 「項物品s recovered」+ 換行消失是同一次改寫造成的。翻譯掃描器的 pattern 條目
"{0} item{1}" → "{0} 項物品{1}" 對整個 body text node 命中一次:{0} 吃掉前半段、{1} 吃掉後半段,重組時把「Items」換成「項物品」並 collapse 掉所有換行——截圖裡兩個症狀同時成立。
- F2 · 發現既有誤譯:
"Credits" → "製作團隊"。catalog 把貨幣 Credits 譯成了片尾名單的「製作團隊」;HUD/信件任何以 "Credits" 為整節點的文字都會中招。本 mock 的繁中模式依 fallback 顯示英文並以 ⚠ 標記,需另開 l10n 修正。
- F3 · 稀有度已對
shared/itemRegistry.js 驗證:signal_shard = uncommon(罕見,綠框)、catalyst_residue = common(普通,灰框)、catalyst_standard = uncommon、Stormcoil Rifle Common = 普通(灰框)。
- F4 · 語言支援範圍確認:runtime 只支援 en 與 zh-Hant(
i18n.js 把 zh-TW/HK/MO 全映射到 zh-Hant,其餘語系 fallback 英文),故本 mock 只提供這兩種切換。詞彙依 client/locales/zh-Hant.json 實際條目 + locales/glossary.json(Extraction = 撤離)。
█ 待決策的討論點(對應版面上的 ①–⑤)
- ① 版頭場地圖:直接用世界地圖的 site sprite(`client/assets/map/site_*.png`,六種站型全有圖,零新資產)。要不要放?高度多少?
- ② 0 值資源:範例信沒有能量。灰態顯示(如圖)或整格隱藏?
- ③ 稀有度框色與類別章:現行信件正文沒有稀有度資料 → server 端需在結構化 params 補上 rarity/class 欄位才能上色(框色沿用遊戲 rarity tokens)。
- ④ 空卡片:任何缺圖示或未決定樣式的物品,以虛線空卡佔位,不阻塞版面。
- ⑤ 遺留區:多數情況是 None → 用 empty-state;有遺留時同物品卡片呈現但降飽和 + 紅框?
- ⑥ 無譯文字串(金色虛線者:Extraction Report/Recovered this run/Items recovered/Left behind due to cargo/Final Cargo):改版若走 templateKey,這批字串會自動進 l10n pipeline 產生譯文;glossary 建議詞彙為「撤離」系(如 Extraction Report → 撤離報告)。
- 實作路徑(供後續參考,非本次範圍):`sendExtractionSummaryMail` 改帶 templateKey + 結構化 params(mailManager 的 content 包裝已支援);client `mailTab._renderDetail` 偵測該 key 走此版面,舊信無 params 則 fallback 純文字。半翻譯/換行消失問題隨 templateKey 本地化一併消失。
- 可沿用同版面的其他純文字信:Arena 系列 4 封、Arcology Season Reward、Urgent event 結算——皆是「結果 + 獎勵清單」結構。