2015-08-26 1 views
0

À des fins de test, j'essaie de localiser une application fictive, afin de voir ce qui correspond le mieux à nos besoins.Problème de localisation WPF

Je voulais essayer WPF Localization Extension.

Je:

  1. créé une nouvelle application WPF ensemble, a créé une fenêtre principale.
  2. Ajout des références à l'extension de localisation WPF via nugget.
  3. Créé un resx nommé Localization.resx et un Localization.fr.resx
  4. I ajoutés dans les deux ResX un texte pour la touche « WelcomeText ».
  5. Dans les fenêtres principales, je mets:

    xmlns:lex="http://wpflocalizeextension.codeplex.com" 
    lex:LocalizeDictionary.DesignCulture="en" 
    lex:ResxLocalizationProvider.DefaultAssembly="LocalizedApplication" 
    lex:ResxLocalizationProvider.DefaultDictionary="Localization" 
    

    Dans la déclaration de fenêtre

  6. J'ai ajouté un TextBlock dans la grille: <TextBlock Text="{lex:Loc WelcomeText}" />

Si je lance l'application, J'ai le texte affiché en anglais.

Maintenant, j'ajouter ce qui suit dans le constructeur App.cs:

public App():base() 
    { 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr"); 
     Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture; 
     CultureInfo.DefaultThreadCurrentCulture = Thread.CurrentThread.CurrentUICulture; 
     CultureInfo.DefaultThreadCurrentUICulture = Thread.CurrentThread.CurrentUICulture; 
    } 

Pour tester l'application en FR. Je reconstruis et redémarre, mais je reçois toujours le message en anglais.

Alors d'abord: Qu'est-ce que j'ai fait de mal? Puis: Comment changer la culture actuelle au moment de l'exécution?

Répondre

1

En fait, je pense que je viens de trouver la réponse.

Il semble qu'il n'utilise pas le CurrentCulture et que vous devez définir avec:

LocalizeDictionary.Instance.Culture = new CultureInfo("fr"); 

Désolé pour la question