2013-10-07 2 views
1

Im appeler une méthode personnalisée pour changer dynamiquement le cultureinfo courant « fr » françaischanger cultureinfo sur android en utilisant Xamarin et C#

Comme cela, mais après avoir appelé cette méthode mon application android toujours utiliser la culture par défaut qui est « en 'mais en mode débogage la culture semble être ok. Mon dossier est ok. J'ai les deux et les valeurs de chaîne sont configurées. dossier: resource/values ​​/ strings.xml, ressource/valeurs-fr/strings.xml. Dois-je recharger mon contenu ou quelque chose? qu'est-ce qui me manque ici?

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

Informations complémentaires: en mode débogage est le cultureinfo FR mais le texte de ce bouton est toujours en anglais. Ai-je besoin d'actualiser l'interface utilisateur ou de recharger ma mise en page? Je ne suis pas sûr ... –

Répondre

1

Je ne peux pas le tester en ce moment, mais essayez ceci:

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

ne fonctionne pas ... voici mes tentatives ... mon but est de trouver un moyen de changer les paramètres régionaux et puis selon votre réponse, utilisez le UpdateConfiguration ... –

+0

Im toujours en attente. S'il vous plaît dites-moi comment je peux utiliser C#/Xamarin changer le LOCALE. Parce que votre première ligne ne compile pas ou ne fonctionne pas. Si ce n'est pas possible pour vous de me donner une réponse, dites-le moi. En attendant, prenez le risque avec google. –

+0

Je suis désolé, j'avais l'habitude de développer cette application avec une machine virtuelle mais je ne l'ai plus. J'utilise TFS pour rechercher ... Nous avons ce code dans ActivityBase ' SetCurrentCulture private void() { Resources.Configuration.Locale = new Locale (Thread.CurrentThread.CurrentCulture.Name.ToLower()) ; Resources.UpdateConfiguration (Resources.Configuration, Resources.DisplayMetrics); } ' – Guzmangm

3

Je sais qu'il est un peu tard pour répondre à cette question, mais j'ai trouvé la solution !! Essayez ceci cela fonctionne pour moi:

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

Tout cela dans le 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); 
} 
Questions connexes