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