C# Xamarin表单:独立于操作系统设置设置应用程序语言

C# Xamarin表单:独立于操作系统设置设置应用程序语言,c#,android,ios,localization,xamarin,C#,Android,Ios,Localization,Xamarin,Out客户端希望我们正在开发的应用程序的语言能够独立于操作系统设置进行配置。我已经开始使用以下方法设置本地化:这很好 现在,我正在尝试从应用程序的存储设置设置所有三个应用程序中的CurrentUICulture(或等效设置)。我已经扩展了ILocalize界面以允许设置,WinPhone没有问题,但是Android和iOS让我抓狂 这是android代码 public class Localize : AppResources.ILocalize { public CultureInfo

Out客户端希望我们正在开发的应用程序的语言能够独立于操作系统设置进行配置。我已经开始使用以下方法设置本地化:这很好

现在,我正在尝试从应用程序的存储设置设置所有三个应用程序中的CurrentUICulture(或等效设置)。我已经扩展了ILocalize界面以允许设置,WinPhone没有问题,但是Android和iOS让我抓狂

这是android代码

public class Localize : AppResources.ILocalize
{
    public CultureInfo CurrentUICulture
    {
        get
        {
            var androidLocale = Locale.Default;
            var netLanguage = androidLocale.ToString().Replace("_", "-"); // turns fi_FI into fi-FI

            return new CultureInfo(netLanguage);
        }

        set
        {
            var locale = value.ToString().Replace("-", "_");

            Locale.Default = new Locale(locale);
        }
    }
}
它部分工作,但由于我不知道的原因,只有一些资源字符串被翻译(可能是在xaml中设置的)

在iOS中,我不知道如何设置区域设置


有什么建议吗?还有更好的主意吗?遗憾的是,仅使用手机语言是不可取的。

在iOS上,我成功地将CultureInfo设置为:

        CultureInfo newCulture = // whatever :)
        // make sure the following is executed on the UI thread
        System.Threading.Thread.CurrentThread.CurrentCulture = newCulture;
        System.Threading.Thread.CurrentThread.CurrentUICulture = newCulture;

这会影响DateTime等的字符串格式,但不会影响本机控件的外观,如日期选择器的日期格式。

如何保存?我必须保存区域性信息,否则用户每次使用应用程序时都必须更改语言…您需要存储用户选择的值,并在每次启动时设置区域性。例如,您可以在Xamarin.Forms的“Properties Dictionary”中存储和加载区域性代码: