c# - Xamarin 表格 : Setting app language independently from OS settings

标签 c# android ios localization xamarin

Out 客户端希望我们正在开发的应用程序的语言可以独立于操作系统设置进行配置。我已经开始使用以下方法设置本地化:http://developer.xamarin.com/guides/cross-platform/xamarin-forms/localization/这很好用。

现在,我正尝试通过应用程序的存储设置在所有三个应用程序中设置 CurrentUICulture(或等效项)。我扩展了ILocalize接口(interface)允许设置,WinPhone没问题,但Android和iOS让我摸不着头脑。

这是安卓代码。

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

关于c# - Xamarin 表格 : Setting app language independently from OS settings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28984326/

相关文章:

c# - 为什么 Span<T> 扩展方法未使用 'in' 参数修饰符实现?

c# - 作为 MDI 子窗口的程序

ios - 以编程方式从 NSCachesDirectory 中删除文件

c# - AutoMapper 与 Google Protocol Buffers 3 的务实使用

c# - SQL Server 2005 SQL 身份验证连接字符串

android - 如何访问我的 ios 委托(delegate)类中的组件方法

android - AdMob - 未加载 admob 横幅时出现空白

android - Android 应用程序中的高内存使用率 (50MB)

ios - 如何访问DJIGO App飞行计划日志文件

ios - Collection View 还是 TableView ?