.NET Maui Android项目引用NuGet包后本地化功能失效
.NET Maui Android 无法加载NuGet包中的本地化资源
我有两个项目:
- 类库项目(
Home.BudgetPlanner.Data):在Localization文件夹下包含多份资源文件,比如TransactionType.resx(默认英文)和TransactionType.nl-BE.resx(荷兰语),两份文件都包含Expense和Income字符串。该项目已打包为NuGet包。 - .NET Maui项目(
Home.BudgetPlanner.Mobile):支持Android和Windows平台,已安装上述类库的NuGet包。
问题现象
在.NET Maui项目中设置区域性为nl-BE后,获取Home.BudgetPlanner.Data.Localization.TransactionType.Expense时,得到的却是默认英文字符串,而非预期的荷兰语值:
var cultureInfo = new CultureInfo("nl-BE"); Thread.CurrentThread.CurrentCulture = cultureInfo; Thread.CurrentThread.CurrentUICulture = cultureInfo; CultureInfo.DefaultThreadCurrentCulture = cultureInfo; CultureInfo.DefaultThreadCurrentUICulture = cultureInfo; var x = Home.BudgetPlanner.Data.Localization.TransactionType.Expense; // 期望荷兰语值,但实际得到英文
- 仅Android平台出现问题,Windows平台完全正常。
- 仅通过NuGet包安装类库时会触发问题,手动添加类库的项目引用(直接引用DLL)则本地化功能正常。
- 若在Maui项目自身添加资源文件,本地化也能正常工作,因此判断这是Android与NuGet包本地化结合的特有问题。
环境信息
使用Microsoft Visual Studio Professional 2022(64位)17.6.2版本,已在物理Android设备上测试,结果一致。
已尝试的解决步骤
- 在类库的
.csproj文件中添加配置:
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
- 在Android项目的
MainActivity类中添加ConfigChanges.Locale:
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, AllowEmbedded = true, ConfigurationChanges = ConfigChanges.Locale | ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] public class MainActivity : MauiAppCompatActivity
- 额外尝试:将设备系统语言改为荷兰语,添加
nl.resx资源文件,但均无效果,仍返回英文。
是否有其他人遇到过相同问题?
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

