.net本地化:老派.resx和新学校wpf .baml的共存

fej*_*oco 7 .net wpf localization

我知道所有关于老派的方式:使用一个资源文件用的.resx扩展,提供了NeutralResourcesLanguage属性,中性资源在装配编译,就可以编译从其他本地化资源(blahblah.de-DE卫星组件的.resx).Visual Studio还从资源生成强类型.cs,因此很容易从代码中使用(Properties.Resources.Default.WhateverStringResource).

我刚学的新的WPF的方式:把资源的.xaml文件中,使用的UICulture标签中的.csproj把.baml资源在卫星组装,还是不行,就把.baml资源的主要组件.这些资源很容易在.xaml中使用,但是AFAIK,而不是代码,因为没有.cs文件是自动生成的.

所以也许我错了,但我有几个问题."说真的,到底怎么了?" 成为第一个.为了使我的ranting有效,只需在Visual Studio 2010中创建一个新的WPF应用程序:你将获得.xaml文件,它也将在那里放置一个空的Properties\Resources.resx.你有它,所以他们需要共存.

首先,我还需要新老学校吗?我看不到从代码隐藏中使用强类型.xaml资源的简单方法.为什么不?也许有一种方法可以将它们生成到.cs文件中,我只是不知道它.

现在更大的问题是我不能使用.xaml中的.resx资源.为什么?!Visual Studio 2010的设计师肯定不会看到它们,但同样,它可能是我的坏事.

MSDN建议使用UICulture标记.它确实将.baml资源放在附属程序集中,因此程序集甚至不包含中性程序集.但它不适用于老式的中立资源,AFAIK,非本地化的.resx需要进入主程序集.因此,如果我想在同一个项目中使用new和old-school,我就不能使用UICulture标签,我需要主程序集中的所有中性资源.我是唯一一个为此烦恼的人吗?

所以问题:

  • 我可以在代码中使用.xaml中的资源,其命名方式与.resx文件一样吗?
  • 有没有办法在.xaml中使用不会破坏SilverLight的.resx资源?
  • 是仅仅是我还是.baml本地化比.resx本地化复杂得多?(DLL解析,重新编译,csv编辑,而不是仅编辑.resx文件)
  • 我可以将中性.resx编译成一个卫星装配,就像在wpf中使用UICulture一样吗?

Ela*_*atz 2

实际上,您可以在 WPF 中相当轻松地使用 RESX 文件,对于本地化来说,这是最佳选择。

查看: http: //www.codeproject.com/KB/WPF/WPF_Resx_Localization.aspx从 XAML 中的 *.resx 文件获取值