最佳地识别String ResourceDictionary的区域设置?

时间:2012-03-06 19:09:20

标签: wpf localization

我有一个本地化字符串的资源字典。我想在其上设置一个属性(例如,它的Tag)到区域设置的名称,以便我可以轻松地从代码隐藏中识别ResourceDictionary。 (否则,我会做一些脏文件名解析,这会以各种方式冒犯我。)

例如,我想做这样的事情:

<ResourceDictionary 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"
                    Tag="de-DE">

    <system:String x:Key="Hello">Hallo Welt!</system:String>

</ResourceDictionary>

但由于XamlParseException不存在,因此导致ResourceDictionary.Tag。还有另一种方法可以在这里设置标签吗?或者有更好的方法来实现我的目标吗?感谢。

修改 为了澄清,我有一个包含多个ResourceDictionary XAML文件的目录,每个文件都包含特定区域设置的本地化字符串。例如,当用户将语言环境设置为德语时,我的应用程序会在上述目录中查找以"de-DE.xaml"结尾的XAML文件,并加载该文件的资源字典。我不希望以这种方式受到文件名的约束。我认为使用类似Tag之类的东西的缺点是我必须在确定其实际区域设置之前加载字典,因此文件名解析在该方面获胜。理想(对我而言)解决方案不依赖于文件名,也不需要加载资源字典。

1 个答案:

答案 0 :(得分:0)

我有几个方法

  • 如果您的资源字典是REAL资源,那么只需将文件名作为文化。我没有在这里看到问题,因为只有开发人员才能访问文件名。

  • 有一个虚拟钥匙(可怕的方法)

    <system:String x:Key="Culture">de-DE</system:String>
    

    这很糟糕,因为你必须在物理上打开每个字典,并确保第一个字符串是真正的文化。

  • 如果您的资源字典是一个内容文件,那么就像它是一个资源一样,只要确保在最终用户删除文件时出现错误。