2009-10-12 6 views
2

OK, donc nous écrivons notre application MFC pour utiliser le built-in localization support with satellite DLL's depuis MFC 7. Tout semble fonctionner correctement, sauf que mon installation de Windows 7 Enterprise Edition avec MUI le support et l'utilisation d'une interface utilisateur suédoise au lieu d'une interface utilisateur anglaise affiche toujours l'interface utilisateur en anglais dans notre application.Localisation MFC ne fonctionne pas avec MUI installation de Windows 7

L'application utilise suédoise comme langue par défaut, avec une DLL de localisation anglaise sous la forme AppNameENU.dll, de sorte que MFC est en fait intentionnellement le passage à la langue anglaise dans ces circonstances, comme si elle ne se souciant pas le choix de l'utilisateur dans le système d'exploitation Windows compatible MUI, et seulement la langue d'expédition par défaut de l'installation de Windows? De la page MSDN sur ce (le lien ci-dessus), je l'ai lu comme MFC devrait effectivement prendre ces paramètres en compte, mais je ne suis pas sûr à 100%. Quelqu'un peut-il clarifier?

Répondre

4

C'est parce que le MFC support pour la sélection de la langue a un bug de conception: Il décide de charger des ressources de l'exe que si aucun utilisateur de correspondance DLL ou la langue du système.

Dans votre cas: il met en place son (ordonnée) liste des langues en tant que telles:

  1. suédois (langue de l'utilisateur)
  2. anglais (langue du système)

Ensuite, il recherche vos DLL (Bug: seulement les dll, pas les exe!): Aucune correspondance pour le suédois. Mais il y a un match pour l'anglais!

Solution: Utilisez ma classe CLanguageSupport. Cela fonctionne très bien même dans votre cas d'utilisation.

N'hésitez pas à l'utiliser. Vous n'aurez besoin que de quelques minutes pour l'intégrer dans votre application et il utilisera exactement le même schéma de DLL que celui que vous avez déjà implémenté. (Conseil: Ne pas oublier l'étape où vous devez vous débarrasser de la CWinApp :: InitInstance() appeler!)

En outre, si vous êtes intéressé (facultatif), vous pouvez obtenir une automatique des langues menu pour permettre à l'utilisateur de choisir sa propre préférence dans le cas où la valeur par défaut n'est pas ce qu'il veut.

Et si vous cherchez un excellent outil pour vous aider à gérer vos traductions, pensez appTranslator ;-)

HTH,

+0

Merci! Je vais certainement jeter un coup d'oeil à votre classe alors! Et oui, nous avons déjà regardé appTranslator un peu. ;-) Nous aurons peut-être à nous y habituer en raison de l'accumulation de ressources en chaînes et du manque de supervision dans l'horrible interface de Visual Studio. : S – Jonas

Questions connexes