2009-02-18 8 views
3

J'ai plusieurs grandes applications MFC ici, et il est hors de question de les convertir dans un autre format. Nous nous étendons sur d'autres marchés et souhaitons que les applications fonctionnent dans d'autres langues et cultures. Jusqu'ici, j'ai trouvé des références occasionnelles sur ce qu'il faut faire avec Visual C++ version 6, avec une mention que les versions ultérieures de MFC ont des fonctionnalités pertinentes supplémentaires. La recherche dans MSDN me donne des instructions sur la façon de convertir les applications en Unicode, ce que nous avons déjà fait. Je n'ai rien trouvé sur MSDN sur la façon de rendre les langues multilingues une fois qu'ils sont en Unicode, seulement quelques choses plus anciennes en utilisant Google, et un livre sur l'internationalisation en utilisant VC++ 6. (Nous utilisons Visual Studio 2008 maintenant, sur XP et Vista.)Rendre une application MFC internationale

Je ne revendique pas la force de mon Google-fu, et serais heureux d'être dirigé vers des choses que j'ai manqué.

Est-il raisonnable d'utiliser les méthodes de VC++ 6, ou devrais-je utiliser des fonctionnalités ultérieures?

Si je devais utiliser des fonctions plus tard, où puis-je trouver des références?

Y a-t-il quelque chose dont je devrais m'inquiéter autre que de définir les paramètres régionaux, de convertir toutes les chaînes en ressources et de dupliquer les ressources dans différentes langues?

Je peux trouver plus de choses sur l'internationalisation .NET, mais je n'ai pas d'expérience en .NET. Que vais-je trouver là-bas qui est applicable à VC++ et MFC? Edit: Je viens d'éprouver des difficultés à essayer de mettre des chaînes Unicode dans la ressource String Table. (Pour autant que je sache, les chaînes Unicode doivent être entrées dans le fichier .rc avec un éditeur de texte, sous la forme L "0x0034".) Je n'ai pas trouvé d'éditeur de ressources pour le faire. Toute autre ressource que je peux utiliser dans VS2008 en utilisant VC++ et MFC? Editer: Quelqu'un sur un forum Microsoft a suggéré que j'ouvre le fichier .rc fautif dans le Bloc-notes, et l'enregistre en Unicode. Malheureusement, cela ne semble pas fixer les dialogues, bien que le stringtable semble fonctionner en japonais.

Répondre

3

Il y a beaucoup plus que la simple traduction de "chaînes" pour internationaliser une application.

La plupart de votre interface utilisateur devra être mise à jour pour prendre en compte les différentes longueurs de texte, et l'orientation de la langue (chose en hébreu, chinois, arabe, ...

Certaines images devront également être modifiées pour s'adapter à une culture différente (malheureusement, je n'ai pas d'exemple pour cela), soit le figuratif est différent ou les couleurs ne correspondent pas aux spécifications locales.

Nous utilisons un outil comme appTranslator pour nous aider à faire la localisation cosmétique (reformatage de l'interface utilisateur) et utiliser un traducteur technique professionnel pour les chaînes.

+0

Oui, acheter appTranslator et lisez la documentation. Cela vous donnera tout ce dont vous avez besoin. – Roel

+0

@Roel appTranslator n'est plus disponible. Des idées sur de nouvelles applications? –

+0

non, nous avons arrêté d'utiliser appTranslator et d'utiliser les fichiers PO gettext. – Max

1

Vous pouvez internationaliser votre application en utilisant les méthodes suivantes. Après avoir converti l'application en unicode (vous l'avez déjà fait), toutes les chaînes doivent être chargées à partir de la table de chaînes.

  1. Pour chaque langue que vous devez changer la table de chaînes et de compiler

  2. Une autre façon est de maintenir un fichier XML qui contient toutes les chaînes dans le format localisé. Chargez le xml et les chaînes en fonction de la langue.

0

Voici un article CodeProject de la mine qui décrit très « codage efficace » méthode pour tirer les ficelles de la table à cordes (obligatoire pour les textes traduisibles): http://www.codeproject.com/KB/string/stringtable.aspx

Voici une autre classe qui aident votre application choisir l'interface utilisateur droite la langue. Il vous permet également de créer un menu de sélection de la langue: http://www.codeproject.com/KB/locale/LanguageMenu.aspx

Last but not least, appTranslator est un outil qui vous aide à traduire l'interface utilisateur de votre application, détecter les changements ont été faits dans les ressources depuis la dernière version, créez exe traduit ou DLL de ressources et beaucoup plus: http://www.apptranslator.com

(note: Je suis l'auteur de appTranslator.)

+0

Un article utile, merci, même si je ne suis pas sûr de la licence sur le code qui va avec avec ça va voler ici. –

+0

Que voulez-vous dire? À ma connaissance, la licence n'est pas restrictive du tout. –