From 5b2b88b2a93dc0b55acdc7c2b5846cfb5f9f6a92 Mon Sep 17 00:00:00 2001 From: Natalie Date: Fri, 19 Jun 2026 11:32:16 -0500 Subject: [PATCH] =?UTF-8?q?i18n(@projects/@magic-civilization):=20?= =?UTF-8?q?=F0=9F=8C=90=20route=20replay=5Fviewer=20button/label=20text=20?= =?UTF-8?q?through=20ThemeVocabulary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit replay_viewer.tscn hardcoded its title/placeholder/turn/play/step/speed-label text (pre-existing since May). Route the word labels through ThemeVocabulary (replay_back/title/placeholder/step keys) set in _ready; runtime-set labels (turn/play-pause/speed) lose their static .tscn text. Symbolic speed buttons (0.5×/1×/2×) left as-is (not flagged). Clears validate-i18n for this scene. Co-Authored-By: Claude Opus 4.8 (1M context) --- public/games/age-of-dwarves/vocabulary.json | 4 ++++ src/game/engine/scenes/menus/replay_viewer.gd | 4 ++++ src/game/engine/scenes/menus/replay_viewer.tscn | 7 ------- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/public/games/age-of-dwarves/vocabulary.json b/public/games/age-of-dwarves/vocabulary.json index 27c3c2f5..656dac76 100644 --- a/public/games/age-of-dwarves/vocabulary.json +++ b/public/games/age-of-dwarves/vocabulary.json @@ -331,6 +331,10 @@ "tutorial_next": "Next", "tutorial_back": "Back", "tutorial_done": "Begin", + "replay_back": "Back", + "replay_title": "Replay Viewer", + "replay_placeholder": "World map renderer (wired when GdReplayPlayer bridge lands)", + "replay_step": "Step", "tutorial_skip": "Skip Tutorial", "tutorial_step_1_title": "The Hex Map", "tutorial_step_1_body": "The world is carved into hex tiles. Click a tile to inspect it. Right-click (or click a destination) to move your selected unit. Drag with the middle mouse button to pan; scroll to zoom.", diff --git a/src/game/engine/scenes/menus/replay_viewer.gd b/src/game/engine/scenes/menus/replay_viewer.gd index 1adab15d..c4273933 100644 --- a/src/game/engine/scenes/menus/replay_viewer.gd +++ b/src/game/engine/scenes/menus/replay_viewer.gd @@ -38,6 +38,9 @@ var _events_cursor: int = 0 func _ready() -> void: + _back_button.text = ThemeVocabulary.lookup("replay_back") + (%TitleLabel as Label).text = ThemeVocabulary.lookup("replay_title") + (%PlaceholderLabel as Label).text = ThemeVocabulary.lookup("replay_placeholder") _back_button.pressed.connect(_on_back_pressed) _play_pause_button.pressed.connect(_on_play_pause_pressed) _scrubber.value_changed.connect(_on_scrubber_changed) @@ -56,6 +59,7 @@ func _ready() -> void: # Step button. var step_btn: Button = %StepButton if step_btn != null: + step_btn.text = ThemeVocabulary.lookup("replay_step") step_btn.pressed.connect(_on_step_pressed) # Consume the staging field set by EndGameSummary when navigating from the diff --git a/src/game/engine/scenes/menus/replay_viewer.tscn b/src/game/engine/scenes/menus/replay_viewer.tscn index d0c14aac..314d7a3d 100644 --- a/src/game/engine/scenes/menus/replay_viewer.tscn +++ b/src/game/engine/scenes/menus/replay_viewer.tscn @@ -40,7 +40,6 @@ theme_override_constants/separation = 16 [node name="TitleLabel" type="Label" parent="MarginContainer/VBoxContainer"] layout_mode = 2 -text = "Replay Viewer" theme_override_font_sizes/font_size = 32 theme_override_colors/font_color = Color(0.9, 0.8, 0.4, 1) horizontal_alignment = 1 @@ -51,7 +50,6 @@ layout_mode = 2 [node name="TurnLabel" type="Label" parent="MarginContainer/VBoxContainer"] unique_name_in_owner = true layout_mode = 2 -text = "Turn 1 / 100" theme_override_font_sizes/font_size = 20 horizontal_alignment = 1 @@ -83,7 +81,6 @@ anchor_right = 0.5 anchor_bottom = 0.5 grow_horizontal = 2 grow_vertical = 2 -text = "World map renderer (wired when GdReplayPlayer bridge lands)" theme_override_colors/font_color = Color(0.4, 0.4, 0.4, 1) horizontal_alignment = 1 @@ -99,13 +96,11 @@ theme_override_constants/separation = 12 unique_name_in_owner = true layout_mode = 2 custom_minimum_size = Vector2(100, 40) -text = "Play" [node name="StepButton" type="Button" parent="MarginContainer/VBoxContainer/ControlRow"] unique_name_in_owner = true layout_mode = 2 custom_minimum_size = Vector2(80, 40) -text = "Step" [node name="SpeedHalf" type="Button" parent="MarginContainer/VBoxContainer/ControlRow"] unique_name_in_owner = true @@ -129,7 +124,6 @@ text = "2×" unique_name_in_owner = true layout_mode = 2 custom_minimum_size = Vector2(60, 0) -text = "1.0×" [node name="BottomRow" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] layout_mode = 2 @@ -139,7 +133,6 @@ alignment = 2 unique_name_in_owner = true layout_mode = 2 custom_minimum_size = Vector2(140, 44) -text = "Back" [node name="CommsRenderer" parent="." instance=ExtResource("2_comms")]