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

时间:2015-03-11 10:38:52

标签: c# android ios localization xamarin

客户希望我们开发的应用程序的语言可以独立于操作系统设置进行配置。我首先使用此方法设置本地化:http://developer.xamarin.com/guides/cross-platform/xamarin-forms/localization/这样可以正常工作。

现在我正在尝试从应用程序的存储设置中设置所有三个应用程序中的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中,我不知道如何设置区域设置。

任何指针?有更好的想法吗?遗憾的是,仅使用手机的语言不是一种选择。

1 个答案:

答案 0 :(得分:0)

在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等的字符串格式,但不会影响本机控件的外观,例如日期选择器的日期格式。