2013-10-07 1 views
1

Im вызывая специальный метод для динамического переключения текущего CultureInfo на французский «FR»изменение CultureInfo на андроид с помощью Xamarin и C#

Как это, но после вызова этого метода моего андроида приложение по-прежнему использовать культуру по умолчанию, который является «ан ', но в режиме отладки культура кажется ок. Моя папка в порядке. У меня есть оба и строковые значения. папка: 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); 
    } 
+0

additionnal информации: в режиме отладки CultureInfo является FR, но текст кнопки отправки еще на английском. Нужно ли обновлять пользовательский интерфейс или перезагружать мой макет? im not sure ... –

ответ

1

я не могу проверить это прямо сейчас, но попробуйте это:

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

не работает ... вот мои попытки ... моя цель - найти способ изменить Locale, а затем, согласно вашему ответу, используйте UpdateConfiguration ... –

+0

Im все еще ждет. Скажите, пожалуйста, как я могу использовать C#/Xamarin для изменения LOCALE. Причина, почему ваша первая строка не компилируется или не работает. Если вам не удастся дать мне ответ, просто скажите мне. Тем временем плохой шанс с Google. –

+0

Прошу прощения, я использовал это приложение с виртуальной машиной, но у меня его больше нет. Я использую TFS, чтобы посмотреть ... У нас есть этот код в Activitybase ' собственной недействительным SetCurrentCulture() { Resources.Configuration.Locale = новый 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); 
}