OVH Cloud OVH Cloud

CurrentUICulture

3 réponses
Avatar
Sebastien Ollivier
Bonjour

Je développe actuellement une application WinForm en C# exploitant l'API
System.Globalization me permettant de gérer facilement une version Française
et Américaine de celle-ci.

J'ai bien reussi à créer mes fichiers de ressoucres pour chaque langue.
Pour tester la version américaine, je suis cependant obliger de mettre au
debut de mon programe l'instruction suivante :

System.Threading.Thread.CurrentThread.CurrentUICulture = new
System.Globalization.CultureInfo("en-US");


Pour que mes test soient réellement significatif, je souhaiterai pourvoir me
passer de cette instruction au lancement de mon appli.
Il faudrait à priori que je modifie mon environnement Windows.
J'ai testé en changeant mes paramètres régionaux à "en-US": la
CurrentUICulture reste "fr-FR".

Comment dois-je configurer Windows pour que ma CurrentUICulture passe en
"en-US" ?
Faut-il une version Windows amércaine pour que la CurrentUICulture soit
"en-US" ?

Cordialement

Sébastien OLLIVIER

3 réponses

Avatar
Fabrice MALAINGRE
Bonsoir Sébastien,

J'ai testé en changeant mes paramètres régionaux à
"en-US": la CurrentUICulture reste "fr-FR".


Les paramètres régionaux influent sur la "CurrentCulture"
du Thread en cours et non sur la "CurrentUICulture".

Comment dois-je configurer Windows pour
que ma CurrentUICulture passe en "en-US" ?


La valeur par défaut de la "CurrentUICulture" est celle qui correspond
à la culture du système d'exploitation (i.e.
"CultureInfo.InstalledUICulture").

Faut-il une version Windows amércaine
pour que la CurrentUICulture soit "en-US" ?


Oui, sauf pour la version MUI de Windows XP qui permet de
basculer l'intégralité du système d'exploitation d'une culture à l'autre
(dans l'onglet "Langues" des paramètres régionaux).

Pour tester la version américaine, je suis cependant
obliger de mettre au debut de mon programe l'instruction suivante :
System.Threading.Thread.CurrentThread.CurrentUICulture > new System.Globalization.CultureInfo("en-US");


Autres solutions enviseageables :
1) Thread.CurrentThread.CurrentUICulture =
Thread.CurrentThread.CurrentCulture ;
Le changement des paramètres régionaux aura alors l'effet escompté
2) Passer le code de la culture désirée en paramètre de l'application
3) Installer un XP MUI...

Cordialement

____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr
Avatar
Sebastien Ollivier
Merci beaucoup, cela fonctionne très bien.

Maintenant, j'ai besoin de changer la langue au cours de l'exécution.
Par exemple, si je suis en version anglaise-us et que je souhaite passer en
version française-fr, je clique sur un bouton qui contient le code :
System.Threading.Thread.CurrentThread.CurrentUICulture = new
System.Globalization.CultureInfo("fr-FR");

Cependant, mes fenetres restent en anglais tant que je ne les ai pas fermée
pui réouvertent.

Y a-t-il un moyen d'effectuer ce changement sans avoir à recharger toutes
les fenêtres déjà ouvertes ?

Cordialement

Sébastien OLLIVIER




"Fabrice MALAINGRE" a écrit :

Bonsoir Sébastien,

> J'ai testé en changeant mes paramètres régionaux à
> "en-US": la CurrentUICulture reste "fr-FR".
Les paramètres régionaux influent sur la "CurrentCulture"
du Thread en cours et non sur la "CurrentUICulture".

> Comment dois-je configurer Windows pour
> que ma CurrentUICulture passe en "en-US" ?
La valeur par défaut de la "CurrentUICulture" est celle qui correspond
à la culture du système d'exploitation (i.e.
"CultureInfo.InstalledUICulture").

> Faut-il une version Windows amércaine
> pour que la CurrentUICulture soit "en-US" ?
Oui, sauf pour la version MUI de Windows XP qui permet de
basculer l'intégralité du système d'exploitation d'une culture à l'autre
(dans l'onglet "Langues" des paramètres régionaux).

> Pour tester la version américaine, je suis cependant
> obliger de mettre au debut de mon programe l'instruction suivante :
> System.Threading.Thread.CurrentThread.CurrentUICulture > > new System.Globalization.CultureInfo("en-US");
Autres solutions enviseageables :
1) Thread.CurrentThread.CurrentUICulture =
Thread.CurrentThread.CurrentCulture ;
Le changement des paramètres régionaux aura alors l'effet escompté
2) Passer le code de la culture désirée en paramètre de l'application
3) Installer un XP MUI...

Cordialement

____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr





Avatar
Fabrice MALAINGRE
Bonjour Sébastien,

Y a-t-il un moyen d'effectuer ce changement sans
avoir à recharger toutes les fenêtres déjà ouvertes ?


Oui... Ecrire le code qui va bien :-)

En fait, plutôt que de laisser l'IDE faire le boulot (code situé dans
InitializeComponent), le mieux est d'implémenter une méthode qui affecte
toutes les propriétés du formulaire dont la valeur émane des ressources.

Ainsi, pour un changement dynamique, il suffit d'invoquer cette méthode.

Cordialement

____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr