更改xamarin android应用程序中的显示语言

时间:2017-02-01 11:36:13

标签: xamarin.android localization

如何更改应用内的显示语言?我希望具有不同文化背景的用户可以使用一台扫描仪,而无需更改设备的全局文化。

我有一个带有点击事件的laguage按钮,我称之为方法:

public void SetLocale(string language = "")
{
    Locale locale = String.IsNullOrEmpty(language)
                               ? new Locale("de-DE")
                               : new Locale(language);
    Locale.Default = locale;
    var config = new global::Android.Content.Res.Configuration();
    config.Locale = locale;
    var context = global::Android.App.Application.Context;
    context.Resources.UpdateConfiguration(config, context.Resources.DisplayMetrics);
}

但遗憾的是,当我按下按钮时没有任何反应。

点击事件是:

_btnen.Click += delegate
{
    SetLocale("en-GB");
};

2 个答案:

答案 0 :(得分:3)

如果可以忘记上下文(所有属性值都可能丢失),什么对您有用?您可以强制Activity重绘自身。

btn.Click += delegate
{
    SetLocale("en-GB");

    this.Recreate(); //this line
}

答案 1 :(得分:2)

在@Rafael Stahl的帮助下,我找到了以下解决方案:

_btnen.Click += delegate
{              
    Java.Util.Locale.Default = new Locale("en", "GB");
    Resources.Configuration.Locale = Java.Util.Locale.Default;
    Resources.UpdateConfiguration(Resources.Configuration, Resources.DisplayMetrics);
    Intent intent = new Intent(this, this.Class);
    StartActivity(intent);
};