在以.NET 4.5为目标的可移植类库中访问本地化的字符串资源时遇到麻烦。
我允许用户在首页上选择语言,并在以后的页面上有本地化的经验。我试图通过获取代码资源来实现这一目标
MyTextBloxk.Text = PasswordResetMethod_Page.Title;
PasswordResetMethod_Page是.resx中自动生成的类
在WP 8.1模拟器上,一切正常,但是当我尝试将其部署到实际设备时,我得到了
错误:DEP6810:MdilXapCompile.exe失败,错误代码为1004。有关更多详细信息,请参见日志文件'C:\ Projects \ WP81-ResourceBug \ ResourceBugRepro.WP81 \ obj \ Debug \ MDIL \ MDILXapCompileLog.txt'。
错误:指定的编译过滤器参数不存在文件:C:\ Projects \ WP81-ResourceBug \ ResourceBugRepro.WP81 \ obj \ Debug \ MSIL \ ar \ ResourceLib.resources.dll
无效的论点
复制:
在仿真器上工作正常,在部署到真实设备时不起作用
不幸的是,Phil Hoff博客上描述的解决方法对我来说效果不是很好。我已经开发了自己的解决方法。事实证明,如果您使用.resx文件仅存储字符串值,则可以轻松地将它们转换为.resw。
因此,我要做的是自动将PCL中的所有.resx文件转换为Windows Phone 8.1项目中的本机结构化文件夹,并使用我编写的此工具刷新它们的每个版本。
https://github.com/konradbartecki/ResxHell
然后,我可以从这样的代码轻松访问我的字符串资源
var resourceLoader = new ResourceLoader();
var localizedText = resourceLoader.GetString("MyCustomReswFile/MyCustom");
为了实现良好的绑定,我最终创建了ValueConventer和小型本地化帮助器类,请看以下要点:从.resw文件进行绑定的示例
使用它,您可以在xaml页面中执行以下操作:
//For resource in file Page.Login.resw and string ID "NotUserYet"
<TextBlock Text="{Binding ConverterParameter=Page.Login/NotUserYet, Converter={StaticResource ResString}, Mode=OneWay, Source={StaticResource ResString}}"/>
或者 string localizedtext = LocalizationHelper.GetString("MyCustomReswFile", "MyStringId");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句