使用 Xamarin 和 C# 在 Android 上更改 CultureInfo

本文关键字:CultureInfo Android Xamarin 使用 | 更新日期: 2023-09-27 18:34:14

我调用自定义方法将当前区域性信息动态切换到法语"fr"

像这样,但在调用该方法后,我的 android 应用程序仍然使用默认文化"en",但在调试模式下,文化似乎还可以。我的文件夹没问题。我两者都有,字符串值已配置。文件夹:资源/值/字符串.xml,资源/值-fr/字符串.xml。

我需要重新加载我的内容视图或其他东西吗? 我在这里错过了什么?

    private void SetLocal(string lang) 
    {
        System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(lang);
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
    }

使用 Xamarin 和 C# 在 Android 上更改 CultureInfo

我知道

现在回答这个问题有点晚了,但我找到了解决方案!!试试这个它对我有用:

 string cultureName = "fr-FR";
        var locale = new Java.Util.Locale(cultureName);
        Java.Util.Locale.Default = locale;
        var config = new Android.Content.Res.Configuration { Locale = locale };
        BaseContext.Resources.UpdateConfiguration(config, BaseContext.Resources.DisplayMetrics);  

我现在无法测试它,但请尝试以下操作:

        Resources.Configuration.Locale = new Locale(lang);
        Resources.UpdateConfiguration(Resources.Configuration, Resources.DisplayMetrics);

所有这些都在主活动中

using System.Threading;
using System.Globalization;
void SetLocale() {
    CultureInfo ci = new CultureInfo("es-US");
    Thread.CurrentThread.CurrentCulture = ci;
    Thread.CurrentThread.CurrentUICulture = ci;
    Console.WriteLine("CurrentCulture set: " + ci.Name);
}