我有localized我的Xamarin.Forms项目(PCL approach)。此外,我通过引用Debug
文件夹中的输出dll添加了另一个PCL作为此项目的参考。通过使用RESX文件并使用AppResources.Culture = ci;
目前的问题是,这在我的本地机器上按预期工作,但在构建服务器上没有(Jenkins调用MSBuild)。不同之处在于我在Debug
模式下工作,生成的apk文件(Android)以Release
模式构建。但无论模式如何,本地化本地化在两种模式下都能正常工作!在构建服务器上,生成的apk文件现在包含两种语言的混合:
现在我不明白为什么它在本地工作,但不在构建服务器端。我尝试了什么:
AppResources.resources
(显然它包含所有RESX文件,包括特定于语言的资源?)MSBuild
类似于在Jenkins构建服务器上完成的任务,但是一如既往,本地工作正常en-US
,但我的语言中性RESX文件设置为en
。我尝试将AppResources.en-US.resx
文件添加到其他PCL,但系统仍显示语言中性RESX文件中的内容。这是构建服务器上与MSBuild
组合的配置问题吗?如果是,有什么不同或缺失?或者这是一个代码问题?在两个项目(XF和其他PCL)中使用相同名称AppResources
进行本地化是一个问题吗?你有什么提示让我找到这个问题吗?
答案 0 :(得分:0)
问题是PCL(一个dll)的结果被复制到XF项目中。但PCL的构建工件还包含特定于语言的资源(称为satellite assembly)。文件夹结构如下所示:
MyLib中/ bin中/调试/中是指mylib.dll
MyLib中/ bin中/调试/ EN / MyLib.resources.dl
文件夹en
取决于您支持的语言,可能会有所不同。如果我将具有相同文件夹结构的所有必需文件复制到XF项目,则翻译按预期工作。这就是为什么它在当地运作的原因。看来,在附加PCL的资源文件中set the Culture
不需要。