2017-07-13 3 views
0

Tentative d'utilisation de l'extension de localisation wpf. Nos boutons/contrôles ont tous leurs identifiants stockés dans le code derrière, et en tant que tel, j'ai fini par créer un service de traduction pour traduire dans le code derrière. Donc, il suffit de lier la traduction terminée.WPFLocalizationExtension ne traduit pas le premier contrôle (code derrière)

Nous avons également nos traductions stockées dans un projet distinct car un groupe externe gère les traductions. En tant que tel, ma méthode de traduction est définie comme suit. Lorsque ma page est chargée, il semble qu'elle ne traduit pas le premier bouton de la page. Le premier bouton revient en tant que Buttun_BtnTxt plutôt que la valeur traduite. J'ai essayé d'échanger quel bouton est le premier dans la liste, et c'est toujours le premier qui échoue.

Si je mets une nouvelle fonctionnalité, elle échoue toujours. (mettre le code ci-dessus dans une boucle while, en vérifiant uistring == null, et réessayer 50000 fois)

Si je m'éloigne de la première page, toutes les autres pages se chargent bien, et si je reviens dessus, le les traductions se passent bien aussi. Je ne peux pas pour la vie de moi comprendre pourquoi il ne traduit pas la première fois.

Est-ce que quelqu'un a déjà dû faire quelque chose comme ça dans le passé et a eu le même problème?


A regardé un peu plus loin. Ajout de code pour vérifier les assemblys chargés. Au premier passage (où il échoue), c'est le seul exemple de ressources présentes. Après que la première tentative a échoué, j'ai ensuite vérifié à nouveau les assemblages, et j'ai maintenant les entrées suivantes également apparaissant.

XXX.UI.Resources.resources, Version=0.0.0.0, Culture=de-DE, PublicKeyToken=null 
XXX.UI.Resources.resources, Version=0.0.0.0, Culture=ja-JP, PublicKeyToken=null 
XXX.UI.Resources.resources, Version=0.0.0.0, Culture=zh-Hans, PublicKeyToken=null 

Aucune idée des raisons pour lesquelles le chargement est retardé ou si cela peut être à l'origine du problème. Mais c'est la seule chose à laquelle je peux penser en ce moment.

Répondre

0

Éventuellement compris. J'avais encore besoin d'avoir les trucs suivants dans mon xaml.

xmlns:lex="http://wpflocalizeextension.codeplex.com" 
lex:LocalizeDictionary.DesignCulture="en" 
lex:ResxLocalizationProvider.DefaultAssembly="XXX.UI.Resources" 
lex:ResxLocalizationProvider.DefaultDictionary="Resources" 

Au moins une fois, sans que la substance de localisation ne fonctionne pas du tout, même si vous faites la localisation dans le code derrière.

La raison pour laquelle il ne traduisait pas le premier contrôle était qu'il passait d'abord par la machine virtuelle, puis le xaml où ce code était appelé. Après quoi les traductions de codebehind ont bien fonctionné. Déplacé ce xaml à mon shellview et tout est bon.