2013-10-07 33 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); 
}