wpf – 在Windows桌面和Windows Store应用程序之间共享字符串资源

前端之家收集整理的这篇文章主要介绍了wpf – 在Windows桌面和Windows Store应用程序之间共享字符串资源前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 Windows桌面和 Windows存储的应用程序,可能我将来会添加Windows Phone.我在图书馆中拥有大部分的逻辑,并为不同的平台创建不同的GUI.

我想本地化我的应用程序,并希望在平台之间共享字符串资源.但是我该如何做呢?

对于Windows桌面,最常见的方法似乎是使用resx文件.这是一个简短的例子:

http://compositeextensions.codeplex.com/discussions/52910

对于Windows存储应用程序转换文件而言,这里是一个例子:

http://msdn.microsoft.com/en-us/library/windows/apps/hh965326.aspx

这两个解决方案都是平台特定的,我不喜欢:-(我真的希望把所有的字符串都放在一个文件/语言中,并且能够在所有的平台上使用这个解决方案.

更新2014年2月17日:据了解,resx和resw文件格式相同. Windows商店应用程序中缺少的是没有为文件生成文件.如果我可以得到一个这样的文件,我的问题将被解决.然后我可以在我的视图模型中放置该类的一个实例,并通过属性访问所有文本.

在WPF应用程序中生成的类文件几乎可以工作.问题是这条线看起来像这样:

global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ResxTest.Properties.StringTest",typeof(StringTest).Assembly);

要得到这个编译,我需要将其更改为:

global::System.Resources.ResourceManager temp = new System.Resources.ResourceManager("ResxTest.Properties.StringTest",typeof(StringTest).GetTypeInfo().Assembly);

但资源ResxTest.Properties.StringTest无法加载到我的Windows Store应用程序中.由于某些原因,我需要将资源重命名为Resource.resw,并将其以“资源”的名称加载.我尝试了所有的名字,但这是唯一的名字.使用名称MyApplication.MyResource从不工作.

我不知道我是否在正确的轨道上.我几乎非常绝望,我将自己的解决方案是将我需要的所有字符串的XML文件转换为一个具有属性的巨大类,可以使用它来获取所有字符串,而不需要任何资源文件.但我认为这是丑陋和欺骗,所以我希望有人可以给我一个更好的想法:-).

更新2014年2月24日:我错了!事情正在与Portable类库相当好的工作.如果我使用它,我可以在我的视图模型中放置一个自动生成的C#类的实例,并访问该对象的所有字符串.

但如果我使用普通的图书馆的东西在Windows Store应用程序(WPF是好的)不正常工作.我已经尝试将所有文​​件从一个可移植的类库中复制到Windows存储类库中.当我尝试创建一个自动生成文件的实例我总是得到:

An exception of type ‘System.Resources.MissingManifestResourceException’ occurred in mscorlib.dll but was not handled in user code

Additional information: Unable to load resources for resource file “MetroLib.StringResources” in package…

非常讨厌,因为我使用的Visual Studio的便携式类库不可用的快速版本.所以可能我会开发自己的解决方案,从资源文件生成类(这也给了我一些其他好处).但我仍然好奇我做错了什么

我终于解决了这个问题.我只是开发了一个简单的工具(ResToCode)来将资源文件转换为纯C#类.非常类似于Visual Studios resgen.exe正在做的,但具有一些额外的功能.它工作得很好,所以我很高兴:-).

该工具可用于CodeProject的任何人:

http://www.codeproject.com/Articles/744528/ResToCode-Localization-tool-for-Windows-Desktop-St

猜你在找的Windows相关文章