3

我正在调用一个自定义方法将当前的文化信息动态切换为法语“fr”

像这样,但在调用该方法后,我的 android 应用程序仍然使用默认文化,即“en”,但在调试模式下,文化似乎没问题。我的文件夹没问题。我两者都有,并且字符串值已配置。文件夹:resource/values/strings.xml、resource/values-fr/strings.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);
    }
4

3 回答 3

4

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

 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);  
于 2015-02-05T16:25:30.447 回答
1

我现在无法测试它,但试试这个:

        Resources.Configuration.Locale = new Locale(lang);
        Resources.UpdateConfiguration(Resources.Configuration, Resources.DisplayMetrics);
于 2013-10-08T15:19:10.057 回答
1

所有这些都在 MainActivity

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);
}
于 2017-11-28T20:56:34.710 回答