From 051fd648579d2f1fa1fc025b2a3051d4e51419e8 Mon Sep 17 00:00:00 2001 From: Jon Kazama Date: Tue, 18 Aug 2026 19:15:00 +0200 Subject: [PATCH] fix(settings): use the translations that were already sitting there The window came out half German and half English on a German client. Thirteen of those labels had a translated resource all along, reachable from no line of code -- the same defect this cycle has now hit four times. Most visible: all seven tab names in the sidebar. Settings_Tab_General and its siblings exist in 25 languages and the sidebar drew "General", "Appearance", "Chat" as literals. That is the first thing anyone sees in this window. Plus reduce motion, custom sound volume, show hide button, window opacity, the window style heading, and the themes folder button. Deliberately left alone where the wording matched but the context did not. "Never" exists as a world-suffix option, not as "the sweep has never run", and "Opacity" exists for a tab rather than a window; reusing either would read wrong in any language that inflects them differently. Those want their own keys, not a borrowed one. What stays English is what has no key at all: the section headings, the keybind labels, and the descriptions written during this cycle. Roughly a hundred strings, and adding them means 25 files each -- that is the localisation pass, not this commit. --- .../Ui/Components/Settings/TabSidebar.cs | 40 +++++++++++++++---- .../Ui/Components/Settings/Tabs/GeneralTab.cs | 4 +- .../Ui/Components/Settings/Tabs/WindowTab.cs | 12 ++++-- .../Settings/ThemeImportExportRow.cs | 3 +- 4 files changed, 46 insertions(+), 13 deletions(-) diff --git a/HellionChat/Ui/Components/Settings/TabSidebar.cs b/HellionChat/Ui/Components/Settings/TabSidebar.cs index 335c252..8cefa32 100644 --- a/HellionChat/Ui/Components/Settings/TabSidebar.cs +++ b/HellionChat/Ui/Components/Settings/TabSidebar.cs @@ -2,6 +2,7 @@ using System.Numerics; using Dalamud.Bindings.ImGui; using Dalamud.Interface; using Dalamud.Interface.Utility.Raii; +using HellionChat.Resources; using HellionChat.Themes; using HellionChat.Ui.StyleEngine; using HellionChat.Util; @@ -71,13 +72,38 @@ internal sealed class TabSidebar IconSize = iconSize, }; - DrawEntry("general", FontAwesomeIcon.SlidersH, "General", palette); - DrawEntry("appearance", FontAwesomeIcon.Palette, "Appearance", palette); - DrawEntry("chat", FontAwesomeIcon.Comments, "Chat", palette); - DrawEntry("window", FontAwesomeIcon.WindowMaximize, "Window", palette); - DrawEntry("channels", FontAwesomeIcon.Hashtag, "Channels", palette); - DrawEntry("data-privacy", FontAwesomeIcon.Shield, "Data & Privacy", palette); - DrawEntry("about", FontAwesomeIcon.InfoCircle, "About", palette); + DrawEntry( + "general", + FontAwesomeIcon.SlidersH, + HellionStrings.Settings_Tab_General, + palette + ); + DrawEntry( + "appearance", + FontAwesomeIcon.Palette, + HellionStrings.Settings_Tab_Appearance, + palette + ); + DrawEntry("chat", FontAwesomeIcon.Comments, HellionStrings.Settings_Tab_Chat, palette); + DrawEntry( + "window", + FontAwesomeIcon.WindowMaximize, + HellionStrings.Settings_Tab_Window, + palette + ); + DrawEntry("channels", FontAwesomeIcon.Hashtag, HellionStrings.Settings_Tab_Tabs, palette); + DrawEntry( + "data-privacy", + FontAwesomeIcon.Shield, + HellionStrings.Settings_Card_DataManagement_Title, + palette + ); + DrawEntry( + "about", + FontAwesomeIcon.InfoCircle, + HellionStrings.Settings_Tab_Information, + palette + ); } private readonly record struct SidebarPalette diff --git a/HellionChat/Ui/Components/Settings/Tabs/GeneralTab.cs b/HellionChat/Ui/Components/Settings/Tabs/GeneralTab.cs index cd76c42..10a7653 100644 --- a/HellionChat/Ui/Components/Settings/Tabs/GeneralTab.cs +++ b/HellionChat/Ui/Components/Settings/Tabs/GeneralTab.cs @@ -38,7 +38,7 @@ internal sealed class GeneralTab { _w.ToggleRow( ImGui.GetID("general.behaviour.reducemotion"u8), - "Reduce motion", + HellionStrings.Settings_ThemeAndLayout_ReduceMotion_Name, "Turns off theme crossfades, hover fades and the drifting motes.", () => Plugin.Config.ReduceMotion, v => Plugin.Config.ReduceMotion = v @@ -75,7 +75,7 @@ internal sealed class GeneralTab ); _w.SliderFloatRow( ImGui.GetID("general.notifications.volume"u8), - "Custom sound volume", + HellionStrings.Settings_General_CustomSoundVolume_Name, null, () => Plugin.Config.CustomSoundVolume, v => Plugin.Config.CustomSoundVolume = v, diff --git a/HellionChat/Ui/Components/Settings/Tabs/WindowTab.cs b/HellionChat/Ui/Components/Settings/Tabs/WindowTab.cs index adee5d5..f4feb8f 100644 --- a/HellionChat/Ui/Components/Settings/Tabs/WindowTab.cs +++ b/HellionChat/Ui/Components/Settings/Tabs/WindowTab.cs @@ -1,4 +1,5 @@ using Dalamud.Bindings.ImGui; +using HellionChat.Resources; using HellionChat.Ui.StyleEngine; namespace HellionChat.Ui.Components.Settings.Tabs; @@ -41,7 +42,12 @@ internal sealed class WindowTab ); } - if (_w.Section(ImGui.GetID("window.style"u8), "Window style")) + if ( + _w.Section( + ImGui.GetID("window.style"u8), + HellionStrings.Settings_ThemeAndLayout_WindowStyle_Heading + ) + ) { _w.ToggleRow( ImGui.GetID("window.style.titlebar"u8), @@ -59,7 +65,7 @@ internal sealed class WindowTab ); _w.ToggleRow( ImGui.GetID("window.style.hidebutton"u8), - "Show hide button", + Language.Options_ShowHideButton_Name, null, () => Plugin.Config.ShowHideButton, v => Plugin.Config.ShowHideButton = v @@ -70,7 +76,7 @@ internal sealed class WindowTab { _w.SliderFloatRow( ImGui.GetID("window.opacity.active"u8), - "Window opacity", + HellionStrings.Theme_WindowOpacity_Label, null, () => Plugin.Config.WindowOpacity, v => Plugin.Config.WindowOpacity = v, diff --git a/HellionChat/Ui/Components/Settings/ThemeImportExportRow.cs b/HellionChat/Ui/Components/Settings/ThemeImportExportRow.cs index 17a9743..4ae2f24 100644 --- a/HellionChat/Ui/Components/Settings/ThemeImportExportRow.cs +++ b/HellionChat/Ui/Components/Settings/ThemeImportExportRow.cs @@ -1,6 +1,7 @@ using System.Diagnostics; using System.Security; using Dalamud.Bindings.ImGui; +using HellionChat.Resources; using HellionChat.Themes; using Microsoft.Extensions.Logging; @@ -32,7 +33,7 @@ internal sealed class ThemeImportExportRow } ImGui.SameLine(); - if (ImGui.Button("Open themes folder")) + if (ImGui.Button(HellionStrings.Settings_Themes_OpenFolder)) { OpenThemesFolder(); }