You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms 本地化功能无法正确识别系统语言问题求助

你所标注的「德语资源文件」内容实际为西班牙语,比如Notas、Agregar nuevo elemento均为西班牙语词汇,这是你修改NeutralResourcesLanguage后显示异常的核心原因之一,建议先核对资源文件的内容与命名是否匹配。

配置遗漏排查清单
  • 资源文件属性配置错误

    右键所有resx文件打开属性面板,确认以下配置:

    • 基础资源文件AppResources.resx的生成操作设置为嵌入式资源,自定义工具设置为ResXFileCodeGenerator
    • 德语资源文件AppResources.de.resx的生成操作设置为嵌入式资源,自定义工具留空,避免生成冲突的资源类
  • 应用支持语言未声明

    不同平台需要显式声明支持的语言,否则系统会直接回退到默认中性语言:

    • 若为MAUI项目:在csproj文件的<PropertyGroup>节点下添加 <SupportedCultures>en;de</SupportedCultures>
    • 若为Xamarin.Android项目:在AndroidManifest.xml中添加对应语言的locale声明
    • 若为Xamarin.iOS项目:在Info.plist的CFBundleLocalizations数组中添加en、de两个值
  • 未显式同步线程文化

    部分移动平台不会自动将应用线程的UI文化同步为系统语言,需要在应用启动入口处添加如下代码:

    var sysCulture = CultureInfo.CurrentUICulture;
    // 同步全局默认文化
    CultureInfo.DefaultThreadCurrentCulture = sysCulture;
    CultureInfo.DefaultThreadCurrentUICulture = sysCulture;
    // 同步当前线程文化
    Thread.CurrentThread.CurrentCulture = sysCulture;
    Thread.CurrentThread.CurrentUICulture = sysCulture;
    
  • NeutralResourcesLanguage属性配置错误

    该属性用于指定默认中性资源文件对应的语言,若你的AppResources.resx中存放的是英文内容,正确配置应为:

    [assembly: NeutralResourcesLanguage("en", UltimateResourceFallbackLocation.MainAssembly)]
    

    错误的配置会打乱资源回退逻辑,导致显示内容与预期不符。

验证方法

完成上述配置后,可以添加调试代码确认逻辑是否正常:

Debug.WriteLine($"当前UI文化:{CultureInfo.CurrentUICulture.Name}");
Debug.WriteLine($"AddButton资源值:{AppResources.AddButton}");

若输出文化为de但资源值仍为英文,检查德语资源文件是否存在编译错误,是否被正确打包到对应语言的卫星程序集中。

内容的提问来源于stack exchange,提问作者innom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 10:00:05