【问题标题】:changing cultureinfo on android using xamarin and c#使用 xamarin 和 c# 在 android 上更改cultureinfo
【发布时间】:2013-10-07 01:41:41
【问题描述】:

我正在调用一个自定义方法将当前文化信息动态切换为法语“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);
    }

【问题讨论】:

  • 附加信息:在调试模式下,cultureinfo 为 FR,但提交按钮的文本仍为英文。我是否需要刷新 UI 或重新加载我的布局?我不确定...

标签: c# android resources xamarin cultureinfo


【解决方案1】:

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

 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);  

【讨论】:

    【解决方案2】:

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

            Resources.Configuration.Locale = new Locale(lang);
            Resources.UpdateConfiguration(Resources.Configuration, Resources.DisplayMetrics);
    

    【讨论】:

    • 不工作...这是我的尝试...我的目标是找到一种方法来更改区域设置,然后根据您的回答使用 UpdateConfiguration...
    • 我还在等待。请告诉我如何使用 C#/Xamarin 更改 LOCALE。导致您的第一行无法编译或工作。如果您无法给我答案,请告诉我。在此期间,我将尝试与 google 合作。
    • 对不起,我以前用虚拟机开发过那个应用程序,但现在没有了。我正在使用 TFS 查找...我们在 ActivityBase 中有这段代码 `private void SetCurrentCulture() { Resources.Configuration.Locale = new Locale(Thread.CurrentThread.CurrentCulture.Name.ToLower()); Resources.UpdateConfiguration(Resources.Configuration, Resources.DisplayMetrics); }`
    【解决方案3】:

    所有这些都在 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      相关资源
      最近更新 更多