我们使用 LocBaml 工具来本地化我们的应用程序。为此,我们创建了一个资源字典,如本文所述:https ://wpf.2000things.com/2014/08/12/1134-localization-xv-localizing-other-content/
我们不使用像 Button 这样的控件或像 TextBlock 这样的 FrameworkElements,而是直接使用 System.String,如下所示,到目前为止效果很好:
<ResourceDictionary x:Uid="ResourceDictionary_1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:System="clr-namespace:System;assembly=mscorlib">
<System:String x:Uid="System:String_1" x:Key="Home">Home</System:String>
</ResourceDictionary>
但是如果我们尝试使用 Localization.Comments 附加属性(对于 LocBaml 作为输入;它会在输出中生成一个附加列并填写注释,我们想用它来给我们的翻译人员一些提示),编译器会抱怨这是不支持的。我们怀疑这只适用于 FrameworkElements,也许也适用于 DependencyObjects。
有什么方法可以在我们的原始字符串上进行这项工作(也许也可以通过为字符串定义 AttachedProperty;或编写扩展方法)?我们希望能够在不同的控件(如 MessageBox 和 Button)以及 FrameworkElements(如 TextBlock)中使用它们。因此,将这些添加到资源中并不是我们的选择。
PS:为什么 x:Key 和 x:Uid 处理这些原始字符串呢?也许我们可以通过相同的机制将其扩展到 Localization.Comments?