extends Node ## i18n string table — player-visible strings ONLY. Code keys, EN values. ## ## Locked from day one (per CLAUDE.md): no hardcoded display copy in scenes or ## scripts. If you have player-facing text, add a key here and call Strings.t(key). ## ## Locale switching is post-MVP; the indirection lands now so we don't have to ## retrofit the whole game later. When the table grows, move it to a .tres or ## external CSV import; the public API (`Strings.t(key)`) stays the same. const TABLE: Dictionary = { # Phase 0 placeholder — populate as features land. &"app.title": "Rimlike", &"smoke.hello": "Phase 0 — autoloads online.", # Speed controls (top bar) &"speed.pause": "‖", &"speed.normal": "1×", &"speed.fast": "5×", &"speed.ultra": "12×", # HUD &"hud.tick": "Tick: {n}", # Pawn state labels &"pawn.state.idle": "idle", &"pawn.state.walking": "walking", # Item types (player-visible this phase) &"item.wood": "Wood", &"item.stone": "Stone", &"item.iron_ore": "Iron ore", # Item stack count badge ("{n}" is substituted at call site via .format()) &"item.stack_count": "×{n}", } func t(key: StringName) -> String: if TABLE.has(key): return TABLE[key] push_warning("Strings.t(): missing key %s" % key) return String(key)