Skip to content

Commit bbd18d4

Browse files
calebedenCopilot
andauthored
Fix reset session dialog localization (#919)
Use a runtime session-action cancel label for reset confirmations and avoid promoting Cancel as the default dialog button. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent 54e4b86 commit bbd18d4

8 files changed

Lines changed: 28 additions & 4 deletions

File tree

src/OpenClaw.Tray.WinUI/App.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,8 +1247,8 @@ private async Task<bool> ConfirmSessionActionAsync(string title, string body, st
12471247
Title = title,
12481248
Content = body,
12491249
PrimaryButtonText = actionLabel,
1250-
CloseButtonText = LocalizationHelper.GetString("CancelButton.Content"),
1251-
DefaultButton = ContentDialogButton.Close,
1250+
CloseButtonText = LocalizationHelper.GetString("SessionActionPrompt_CancelLabel"),
1251+
DefaultButton = ContentDialogButton.None,
12521252
XamlRoot = root.XamlRoot
12531253
};
12541254
var result = await dialog.ShowAsync();

src/OpenClaw.Tray.WinUI/Pages/SessionsPage.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -735,8 +735,8 @@ private async Task<bool> ConfirmAsync(SessionActionPrompt prompt)
735735
Title = localizedPrompt.Title,
736736
Content = localizedPrompt.Body,
737737
PrimaryButtonText = localizedPrompt.ConfirmLabel,
738-
CloseButtonText = LocalizationHelper.GetString("CancelButton.Content"),
739-
DefaultButton = ContentDialogButton.Close,
738+
CloseButtonText = LocalizationHelper.GetString("SessionActionPrompt_CancelLabel"),
739+
DefaultButton = ContentDialogButton.None,
740740
XamlRoot = XamlRoot,
741741
};
742742
if (localizedPrompt.IsDestructive)

src/OpenClaw.Tray.WinUI/Strings/en-us/Resources.resw

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4816,6 +4816,9 @@ Commands are blocked while sandboxing is unavailable because strict fallback blo
48164816
<data name="SessionActionPrompt_Reset_ConfirmLabel" xml:space="preserve">
48174817
<value>Reset</value>
48184818
</data>
4819+
<data name="SessionActionPrompt_CancelLabel" xml:space="preserve">
4820+
<value>Cancel</value>
4821+
</data>
48194822
<data name="SessionActionPrompt_Compact_Title" xml:space="preserve">
48204823
<value>Compact session log?</value>
48214824
</data>

src/OpenClaw.Tray.WinUI/Strings/fr-fr/Resources.resw

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4768,6 +4768,9 @@ Les commandes sont bloquées tant que le sandboxing est indisponible, car le blo
47684768
<data name="SessionActionPrompt_Reset_ConfirmLabel" xml:space="preserve">
47694769
<value>Réinitialiser</value>
47704770
</data>
4771+
<data name="SessionActionPrompt_CancelLabel" xml:space="preserve">
4772+
<value>Annuler</value>
4773+
</data>
47714774
<data name="SessionActionPrompt_Compact_Title" xml:space="preserve">
47724775
<value>Compacter le journal de session ?</value>
47734776
</data>

src/OpenClaw.Tray.WinUI/Strings/nl-nl/Resources.resw

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4769,6 +4769,9 @@ Opdrachten worden geblokkeerd zolang sandboxing niet beschikbaar is, omdat strik
47694769
<data name="SessionActionPrompt_Reset_ConfirmLabel" xml:space="preserve">
47704770
<value>Resetten</value>
47714771
</data>
4772+
<data name="SessionActionPrompt_CancelLabel" xml:space="preserve">
4773+
<value>Annuleren</value>
4774+
</data>
47724775
<data name="SessionActionPrompt_Compact_Title" xml:space="preserve">
47734776
<value>Sessielog compact maken?</value>
47744777
</data>

src/OpenClaw.Tray.WinUI/Strings/zh-cn/Resources.resw

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4768,6 +4768,9 @@
47684768
<data name="SessionActionPrompt_Reset_ConfirmLabel" xml:space="preserve">
47694769
<value>重置</value>
47704770
</data>
4771+
<data name="SessionActionPrompt_CancelLabel" xml:space="preserve">
4772+
<value>取消</value>
4773+
</data>
47714774
<data name="SessionActionPrompt_Compact_Title" xml:space="preserve">
47724775
<value>压缩会话日志?</value>
47734776
</data>

src/OpenClaw.Tray.WinUI/Strings/zh-tw/Resources.resw

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4768,6 +4768,9 @@
47684768
<data name="SessionActionPrompt_Reset_ConfirmLabel" xml:space="preserve">
47694769
<value>重設</value>
47704770
</data>
4771+
<data name="SessionActionPrompt_CancelLabel" xml:space="preserve">
4772+
<value>取消</value>
4773+
</data>
47714774
<data name="SessionActionPrompt_Compact_Title" xml:space="preserve">
47724775
<value>壓縮工作階段記錄?</value>
47734776
</data>

tests/OpenClaw.Tray.Tests/SessionActionsWiringTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public void SessionsPage_ConfirmsDestructiveActions_ViaPlanner()
2424
Assert.Contains("RunSessionActionAsync(sender, SessionActionKind.Reset)", source);
2525
Assert.Contains("RunSessionActionAsync(sender, SessionActionKind.Compact)", source);
2626
Assert.Contains("RunSessionActionAsync(sender, SessionActionKind.Delete)", source);
27+
// Runtime dialogs must not use XAML property resource keys; those can
28+
// fall back to raw key text such as "CancelButton.Content".
29+
Assert.Contains("SessionActionPrompt_CancelLabel", source);
30+
Assert.DoesNotContain("LocalizationHelper.GetString(\"CancelButton.Content\")", source);
31+
Assert.Contains("DefaultButton = ContentDialogButton.None", source);
2732
}
2833

2934
[Fact]
@@ -78,6 +83,9 @@ public void App_SessionActions_UsePlanner_NotInlineCopy()
7883

7984
Assert.Contains("SessionActionPlanner.BuildPrompt", source);
8085
Assert.Contains("SessionActionPlanner.IsAllowed", source);
86+
Assert.Contains("SessionActionPrompt_CancelLabel", source);
87+
Assert.DoesNotContain("LocalizationHelper.GetString(\"CancelButton.Content\")", source);
88+
Assert.Contains("DefaultButton = ContentDialogButton.None", source);
8189
// The confirmation copy comes from the shared planner, not inline strings.
8290
Assert.DoesNotContain("Start a fresh session for '", source);
8391
Assert.DoesNotContain("Keep the latest log lines for '", source);
@@ -89,6 +97,7 @@ public void SessionActionPrompts_AreRuntimeLocalized()
8997
var source = ReadSource("src", "OpenClaw.Tray.WinUI", "Helpers", "SessionActionPromptLocalizer.cs");
9098
var requiredKeys = new[]
9199
{
100+
"SessionActionPrompt_CancelLabel",
92101
"SessionActionPrompt_Reset_Title",
93102
"SessionActionPrompt_Reset_BodyFormat",
94103
"SessionActionPrompt_Reset_ConfirmLabel",

0 commit comments

Comments
 (0)