2013-10-07 32 views
1

林调用自定义方法,以当前CultureInfo动态切换至法国“FR”使用xamarin和C#

像这样在Android改变的CultureInfo但调用该方法后,我的Android应用程序仍在使用默认的文化,这是恩'但在调试模式下,文化似乎没问题。我的文件夹可以。我有两个和字符串值配置。 folder:resource/values/strings.xml,resource/values-fr/strings.xml。

是否需要重新加载我的contentview或其他东西?我在这里错过什么?

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); 
    } 
+0

其它附加信息:在调试模式下的CultureInfo是FR,但提交按钮的文字仍为英文。我需要刷新UI还是重新加载我的布局?即时通讯不知道... –

回答

1

我现在不能测试,但试试这个:

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

不工作......这里是我的尝试...我的目标是找到一种方法来更改语言环境,然后根据您的答案使用UpdateConfiguration ... –

+0

我仍在等待。请告诉我如何使用C#/ Xamarin更改LOCALE。导致你的第一行不能编译或工作。如果你无法给我一个答案,请告诉我。与此同时,不幸的是Google有机会与谷歌合作。 –

+0

对不起,我曾经用虚拟机开发那个应用程序,但我没有了。我使用TFS查找...我们有这样的代码在ACTIVITYBASE ' 私人无效SetCurrentCulture(){ Resources.Configuration.Locale =新的语言环境(Thread.CurrentThread.CurrentCulture.Name.ToLower()) ; Resources.UpdateConfiguration(Resources.Configuration,Resources.DisplayMetrics); }' – Guzmangm

3

我知道这是一个有点晚来回答这个问题,但我找到了解决办法! 试试这个工作对我来说:

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

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