90 votes

La meilleure façon de mettre en œuvre multi-langue/de la mondialisation dans les grands .Un projet de réseau

Je vais bientôt travailler sur un grand projet c# et voudrais construire en multi-support de la langue de départ. J'ai eu un jouer et peut obtenir ce travail à l'aide d'un fichier de ressources distinct pour chaque langue, puis d'utiliser un gestionnaire de ressources de charger les chaînes.

Existe-il d'autres approches que je pouvais voir dans?

21voto

BenAlabaster Points 20189

J'ai vu les projets mis en œuvre à l'aide d'un certain nombre d'approches différentes, chacun ont leurs avantages et leurs inconvénients.

  • On fait dans le fichier de config (pas mon préféré)
  • On n'a l'aide d'une base de données - cela a fonctionné assez bien, mais il a été une douleur dans le vous savez quoi maintenir.
  • On a utilisé les fichiers de ressources de la façon dont vous êtes en train de suggérer et je dois dire que c'est mon préféré de l'approche.
  • La plus basique fait à l'aide d'un fichier include plein de cordes - laid.

Je dirais que la méthode que vous avez choisi fait beaucoup de sens. Il serait intéressant de voir les réponses des autres trop que je me demande souvent si il ya une meilleure façon de faire des choses comme cela. J'ai vu de nombreuses ressources que tous les points à l'aide des ressources de la méthode, y compris une ici sur DONC.

5voto

Coda Points 1145

Je ne pense pas qu'il ya une "meilleure façon". Il va vraiment dépendre sur les technologies et le type d'application que vous créez.

Webapps pouvez enregistrer les informations dans la base de données que d'autres affiches ont suggéré, mais je recommande l'utilisation de séparer les fichiers de ressources. C'est des fichiers de ressources séparé de votre source. Séparer les fichiers de ressources, réduit les conflits pour les mêmes fichiers, et que votre projet grandit, vous pouvez trouver la localisation sera fait separemment de la logique métier. (Les programmeurs et les Traducteurs).

Microsoft WinForm et WPF gourous recommandons l'utilisation séparée des ressources assemblys personnalisés pour chaque endroit.

WPF est de la capacité de taille de l'INTERFACE utilisateur éléments de contenu abaisse la mise en page de travail nécessaire, par exemple: (les mots japonais sont beaucoup plus courtes que l'anglais).

Si vous envisagez de WPF: je suggère la lecture de cet article msdn Pour être honnête, j'ai trouvé le WPF outils de localisation: msbuild, locbaml, (et peut-être une feuille de calcul excel) fastidieuse à utiliser, mais il fonctionne.

Quelque chose de légèrement connexes: Un problème commun que je face de l'intégration de systèmes legacy qui envoient des messages d'erreur (généralement en anglais), pas de codes d'erreur. Ceci oblige les changements apportés aux systèmes hérités, ou la cartographie backend chaînes à mes propres codes d'erreur et puis pour les chaînes localisées...yech. Les codes d'erreur sont les localisations ami

4voto

Cade Roux Points 53870

+1 Base de données

Formes dans votre application peut même re-traduire eux-mêmes à la volée si des corrections sont apportées à la base de données.

Nous avons utilisé un système où tous les contrôles ont été cartographiés dans un fichier XML (une par formulaire) à la langue Id de ressource, mais tous les Id ont été à la base de données.

En gros, au lieu d'avoir chaque contrôle de tenir l'ID (mise en place d'une interface, ou à l'aide de la propriété tag en VB6), nous avons utilisé le fait que dans .NET, le contrôle de l'arbre était facilement détectable par la réflexion. Un processus lorsque le formulaire est chargé de réaliser le fichier XML si c'était manquant. Le fichier XML définir les contrôles à leurs Id de ressource, donc ce tout simplement besoin d'être rempli et mappé à la base de données. Cela signifie qu'il n'y a pas besoin de changer le binaire compilé si quelque chose n'a pas été marqué, ou si elle devait être fendu pour une autre ID (quelques mots en anglais qui peut être utilisé comme les noms et les verbes peuvent avoir besoin de traduire les deux mots dans le dictionnaire et ne pas être ré-utilisé, mais vous pourriez ne pas découvrir ce lors de la première cession de l'Id). Mais le fait est que l'ensemble du processus de traduction devient complètement indépendante de votre binaire (chaque formulaire doit hériter d'une forme de base qui sait comment traduire lui-même et tous ses contrôles).

Les seules où l'application se prend au jeu, c'est quand une phase avec des points d'insertion est utilisé.

La base de données, logiciel de traduction a été votre CRUD de base d'entretien de l'écran avec diverses options de flux de travail pour faciliter passant par les traductions manquantes, etc.

2voto

KMessenger Points 51

J'irais avec la plusieurs fichiers de ressources. Il ne devrait pas être difficile à configurer. En fait, j'ai récemment répondu à une question similaire sur la configuration d'un langage basé sur des fichiers de ressources en conjonction avec la forme de fichiers de ressources de langue.

http://stackoverflow.com/questions/355685/localization-in-visual-studio-2008#358402

Je considère que la meilleure approche à moins de WinForm développement.

2voto

Davorin Points 958

Vous pouvez utiliser des outils comme Sisulizer. Il va créer l'assemblage de satellites pour chaque langue. Seule chose que vous devez faire attention est de ne pas obscurcir la forme des noms de classe (si vous utilisez obfuscator).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X