CmdPal: Localize additional UI strings in Registry and Services commands (#45508)

## Summary of the Pull Request

This PR
- Makes the "Browse the Windows registry" text for the Registry
extension command localizable
- Makes the "Manage Windows Services" text for the Windows services
command localizable
- Makes the Windows services filters ("all", "running", "paused",
"stopped") localizable
- Makes the Windows service primary command strings ("Start", "Stop",
"Resume") localizable
- Adds comment to "Open Windows Terminal profiles" resource

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
<!-- - [ ] Closes: #yyy (add separate lines for additional resolved
issues) -->
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated and all pass
- [ ] **Localization:** All end-user-facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [ ] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [ ] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [ ] [YML for signed
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request
on [our docs
repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys)
and link it here: #xxx

<!-- Provide a more detailed description of the PR, other things fixed,
or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
This commit is contained in:
Jiří Polášek
2026-02-11 18:25:23 +01:00
committed by GitHub
parent 67a4d344d6
commit 5eb3617660
14 changed files with 175 additions and 34 deletions

View File

@@ -285,6 +285,42 @@ namespace Microsoft.CmdPal.UI.ViewModels.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Built-in.
/// </summary>
public static string builtin_extension_name {
get {
return ResourceManager.GetString("builtin_extension_name", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0}, {1} commands.
/// </summary>
public static string builtin_extension_subtext {
get {
return ResourceManager.GetString("builtin_extension_subtext", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0}, {1}.
/// </summary>
public static string builtin_extension_subtext_disabled {
get {
return ResourceManager.GetString("builtin_extension_subtext_disabled", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0}, {1} commands, {2} fallback commands.
/// </summary>
public static string builtin_extension_subtext_with_fallback {
get {
return ResourceManager.GetString("builtin_extension_subtext_with_fallback", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Home.
/// </summary>

View File

@@ -126,6 +126,21 @@
<data name="builtin_display_name" xml:space="preserve">
<value>Built-in commands</value>
</data>
<data name="builtin_extension_name" xml:space="preserve">
<value>Built-in</value>
</data>
<data name="builtin_extension_subtext" xml:space="preserve">
<value>{0}, {1} commands</value>
<comment>{0}=extension name, {1}=number of commands</comment>
</data>
<data name="builtin_extension_subtext_with_fallback" xml:space="preserve">
<value>{0}, {1} commands, {2} fallback commands</value>
<comment>{0}=extension name, {1}=number of commands, {2} number of fallback commands</comment>
</data>
<data name="builtin_extension_subtext_disabled" xml:space="preserve">
<value>{0}, {1}</value>
<comment>{0}=extension name, {1}=message</comment>
</data>
<data name="builtin_log_subtitle" xml:space="preserve">
<value>View log messages</value>
</data>

View File

@@ -3,6 +3,8 @@
// See the LICENSE file in the project root for more information.
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Text;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.CmdPal.Core.Common.Services;
@@ -15,6 +17,9 @@ namespace Microsoft.CmdPal.UI.ViewModels;
public partial class ProviderSettingsViewModel : ObservableObject
{
private static readonly IconInfoViewModel EmptyIcon = new(null);
private static readonly CompositeFormat ExtensionSubtextFormat = CompositeFormat.Parse(Resources.builtin_extension_subtext);
private static readonly CompositeFormat ExtensionSubtextWithFallbackFormat = CompositeFormat.Parse(Resources.builtin_extension_subtext_with_fallback);
private static readonly CompositeFormat ExtensionSubtextDisabledFormat = CompositeFormat.Parse(Resources.builtin_extension_subtext_disabled);
private readonly CommandProviderWrapper _provider;
private readonly ProviderSettings _providerSettings;
@@ -39,13 +44,13 @@ public partial class ProviderSettingsViewModel : ObservableObject
public string DisplayName => _provider.DisplayName;
public string ExtensionName => _provider.Extension?.ExtensionDisplayName ?? "Built-in";
public string ExtensionName => _provider.Extension?.ExtensionDisplayName ?? Resources.builtin_extension_name;
public string ExtensionSubtext => IsEnabled ?
HasFallbackCommands ?
$"{ExtensionName}, {TopLevelCommands.Count} commands, {_provider.FallbackItems?.Length} fallback commands" :
$"{ExtensionName}, {TopLevelCommands.Count} commands" :
$"{ExtensionName}, {Resources.builtin_disabled_extension}";
string.Format(CultureInfo.CurrentCulture, ExtensionSubtextWithFallbackFormat, ExtensionName, TopLevelCommands.Count, _provider.FallbackItems?.Length ?? 0) :
string.Format(CultureInfo.CurrentCulture, ExtensionSubtextFormat, ExtensionName, TopLevelCommands.Count) :
string.Format(CultureInfo.CurrentCulture, ExtensionSubtextDisabledFormat, ExtensionName, Resources.builtin_disabled_extension);
[MemberNotNullWhen(true, nameof(Extension))]
public bool IsFromExtension => _provider.Extension is not null;