班级图书馆A
所以我有一个View,ViewA
我需要手动加载本地化的字符串。但是,每当我这样做时,我都会收到一个空字符串。
我试过了:
var loader = ResourceLoader.GetForCurrentView();
var myLocalizedText = loader.GetString("Foo");
和
var loader = new ResourceLoader();
var myLocalizedText = loader.GetString("Foo");
变量myLocalizedText
始终为空字符串。
答案 0 :(得分:0)
我尝试重现您的问题,但在使用ResourceMap Not Found.
或ResourceLoader.GetForCurrentView()
时,我遇到new ResourceLoader()
例外。
如果我们想为库包中的资源构建资源加载器,我们需要使用ResourceLoader.GetForCurrentView(String)
method或ResourceLoader.ResourceLoader(String)
constructor。这里String
是新资源加载器用于非限定资源引用的ResourceMap的资源标识符。
组件或库文件通常会添加到构建过程中包含的包的子文件夹中,类似于其字符串资源。他们的资源标识符通常采用以下形式:
ClassLibraryOrAssemblyName / ResourceFileName /字符串名称
因此,对于您的情况,我们可以使用以下代码来加载本地化字符串:
var loader = ResourceLoader.GetForCurrentView("ClassLibraryA/Resources");
var myLocalizedText = loader.GetString("Foo");
有关详细信息,请参阅Loading strings from libraries or controls中的Application resources and localization sample和方案6 。
此外,请注意,对于UWP应用,最好使用GetForCurrentView(String)
方法:
在Windows 8.1之后,[ResourceLoader(String)可能会被更改或不可用于发布。相反,使用 GetForCurrentView(String)。]
此外,如果您想添加中文,最好使用 zh-Hans
,而不是 zh-CN
:
在没有为该语言定义的抑制脚本值时包含脚本。有关语言标记的详细信息,请参阅IANA subtag registry。例如,使用zh-Hant,zh-Hant-TW或zh-Hans,而不是zh-CN或zh-TW。
有关详细信息,请参阅:Qualify resources with their language。