C# 使用xamarin和c在android上更改cultureinfo#

C# 使用xamarin和c在android上更改cultureinfo#,c#,android,resources,xamarin,cultureinfo,C#,Android,Resources,Xamarin,Cultureinfo,我正在调用一个自定义方法来动态地将当前cultureinfo切换为法语“fr” 像这样,但在调用该方法后,我的android应用程序仍然使用默认区域性,即“en”,但在调试模式下,区域性似乎正常。我的文件夹没问题。我有两个,字符串值已配置。文件夹:resource/values/strings.xml,resource/values-fr/strings.xml 我是否需要重新加载contentview或其他内容?我错过了什么 private void SetLocal(string l

我正在调用一个自定义方法来动态地将当前cultureinfo切换为法语“fr”

像这样,但在调用该方法后,我的android应用程序仍然使用默认区域性,即“en”,但在调试模式下,区域性似乎正常。我的文件夹没问题。我有两个,字符串值已配置。文件夹:resource/values/strings.xml,resource/values-fr/strings.xml

我是否需要重新加载contentview或其他内容?我错过了什么

    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);
    }

我现在无法测试,但请尝试以下方法:

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

我知道现在回答这个问题有点晚了,但我找到了解决办法!! 试试这个,它对我很管用:

 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);  

所有这一切都在主要活动中

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);
}

附加信息:在调试模式下,cultureinfo为FR,但submit按钮的文本仍为英文。我需要刷新UI还是重新加载布局?我不确定…不工作。。。这是我的尝试。。。我的目标是找到一种方法来更改区域设置,然后根据您的回答使用UpdateConfiguration…我还在等待。请告诉我如何使用C#/Xamarin更改区域设置。因为你的第一行无法编译或工作。如果你不能给我一个答案,就告诉我。在此期间,我会和谷歌碰碰运气。对不起,我以前用虚拟机开发那个应用程序,但现在我没有了。我正在使用TFS查找。。。我们在ActivityBase`private void SetCurrentCulture(){Resources.Configuration.Locale=new Locale(Thread.CurrentThread.CurrentCulture.Name.ToLower());Resources.UpdateConfiguration(Resources.Configuration,Resources.DisplayMetrics);}`