C# 卫星装配部署
我正在尝试使用附属程序集本地化我的windows phone 7应用程序。我建造了C# 卫星装配部署,c#,windows-phone-7,windows-phone,C#,Windows Phone 7,Windows Phone,我正在尝试使用附属程序集本地化我的windows phone 7应用程序。我建造了 (al /t:lib /embed:stringlibrary.it-It.resx /culture:it /out:PhoneApp2.resources.dll /template:PhoneApp2.dll) 我的应用程序PhoneApp2的dll“PhoneApp2.resources.dll”来自一个资源文件stringlibrary.it.resx,然后我下载了该dll 使用webclient并将
(al /t:lib /embed:stringlibrary.it-It.resx /culture:it /out:PhoneApp2.resources.dll /template:PhoneApp2.dll)
我的应用程序PhoneApp2的dll“PhoneApp2.resources.dll”来自一个资源文件stringlibrary.it.resx
,然后我下载了该dll
使用webclient并将其存储在一个目录中,然后从应用程序PhoneApp2将其删除。现在,dll驻留在PhoneApp2的isolatedstorage中
我有另一个资源文件stringlibrary.resx,它总是与应用程序一起编译,并且有英语支持条目(默认)
我在汇编文件中也有条目[assembly:NeutralResourcesLanguageAttribute(“it”,ultimateResourceCallbackLocation.Satellite)]
它总是在Messagebox中显示中性语言文本(英语),即使当前的语言和文化是意大利语。
这意味着它无法找到卫星组件
rm = new ResourceManager("PhoneApp2.stringlibrary", Assembly.GetExecutingAssembly());
string greeting = rm.GetString("String1");
MessageBox.Show(greeting);
但是如果我使用PhoneApp2而不是卫星程序集编译stringlibrary.it.resx
,Messagebox会正确显示意大利语文本
当文化为意大利语时,英语为英语文化。我在部署卫星组件时是否遗漏了什么?请让我知道
问候,,
Senthil我没有像您这样尝试本地化。对我来说,这似乎太复杂了。但是我已经本地化了几个应用程序,考虑到我很难找到一个完整的源代码来实现它,我在博客上写了它。这是我的博客: 基本上你是这样做的:
您不能在已下载到独立存储中的应用程序中使用程序集。运行时只能加载/执行由Microsoft签名的程序集(因此,提交时已在XAP中的程序集)
如果您想在以后下载其他翻译,您应该使用resx文件或任何其他格式,然后您可以自己解析。我的建议是对所有资源字符串使用某种数据库,然后将新下载的数据添加到此数据库中。这比您想要完成的要灵活得多:)谢谢您提供的信息。我已经完成了您所描述的所有步骤,并且运行良好。但是现在我想让用户选择下载dll(资源文件)所以只有很少的DLL集。我这样做是为了最小化.xap文件的大小。您描述的过程和我已经完成的过程将始终包括所有DLL。但我想有一个设置按钮,用户可以在其中选择区域性,只有这些DLL才会从Web服务器下载,并按照[assembly:NeutralResourcesLanguageAttribute(“it”,UltimateResourceCallbackLocation.Satellite)定义的目录结构存储在应用程序的独立存储中。这将查找意大利语资源文件的it目录。希望我已经清楚地说明了我要做的事情。感谢您提供的信息。我将尝试直接下载resx文件并对其进行解析。
rm = new ResourceManager("PhoneApp2.stringlibrary", Assembly.GetExecutingAssembly());
string greeting = rm.GetString("String1");
MessageBox.Show(greeting);