在 UWP 中本地化 XAML UI 中的字符串

Posted

技术标签:

【中文标题】在 UWP 中本地化 XAML UI 中的字符串【英文标题】:Localize strings in XAML UI in UWP 【发布时间】:2021-12-21 08:29:59 【问题描述】:

我的 UWP 应用的 Resources.resw 文件中有一个名为 info_278 的资源条目。我有 3 个场景需要使用此资源,但看起来我需要复制它以适应不同的场景。场景如下。

    来自代码的错误消息内容

    var displayErrorOnPopup = ResourceHandler.Get("info_278");

    XAML 中的 TextBlock Text 属性(看起来需要一个新条目,如 info_278.Text

    <TextBlock x:Uid="info_278" Margin="10,0,0,0" />

    来自 XAML 的按钮内容属性(看起来需要一个新条目,如 info_278.Content

    <Button x:Uid="info_278" Margin="10,0,0,0" />

如何在不复制 .resw 文件中的此资源的情况下继续操作?


【问题讨论】:

您想避免重复“info_278”字符串吗? 是的。如果不能,我想知道我的选择。 【参考方案1】:

避免重复的唯一方法是使用ResourceLoader 在代码隐藏中设置字符串值。因为您可以直接访问目标控件的特定属性。像这样:

var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();
this.TextBlock.Text = resourceLoader.GetString("info_278");

如果你不打算在后面的代码中做,那么我不得不说没有办法避免资源字符串的重复。您应该为不同的 XAML 场景添加 info_278.Textinfo_278.Content

【讨论】:

您能否在此docs.microsoft.com/en-us/windows/uwp/app-resources/…的“注释”部分下进一步解释@ @SurenSaluka 你指的是哪个音符部分?红色音符部分?还是上面的注释部分? 我引用“注意对于附加属性,您需要在”...这部分中使用特殊语法。很高兴看到一个使用本地化附加属性的示例。 @SurenSaluka 我不得不说我以前没有对附加属性使用本地化。所以我不能分享这个例子。【参考方案2】:

ButtonContent 可以是TextBlock

<Button>
  <TextBlock x:Uid="MyTextId" Style="StaticResource MyTextBlockStyle" />
</Button>

【讨论】:

以上是关于在 UWP 中本地化 XAML UI 中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

UWP App 在发布模式下崩溃(故障模块:Windows.UI.Xaml.dll)

UWP DependencyObject 绑定 Windows.UI.Xaml.Markup.XamlParseException

UWP 应用程序第一次崩溃,而不是每次都在 0x06515AE7 (Windows.UI.Xaml.dll) 处引发异常

[UWP]XAML中的响应式布局技术

win10 uwp 使用 XamlTreeDump 获取 XAML 树元素内容

Windows 10 UWP 应用程序在启动时崩溃(错误模块名称:Windows.UI.Xaml.dll)