2009-09-01 5 views
3

Salut frères et sœurs,Conseils sur ASP.NET stratégie multi-lingual

Je me demande si quelqu'un partager leur expérience sur ce qu'ils pensent que la meilleure stratégie pour permettre système multilingue dynamique à l'aide .NET

J'ai un client qui souhaite avoir un système semi-MRP qui stocke tous les matériaux et les spécifications du produit. Ces informations seront ensuite utilisées pour d'autres modules tels que Factures, Achats, Marketing (extraction des informations pour l'impression) et bien d'autres. En fait, il veut que tout soit stocké dans plusieurs langues. Il est également incapable de fixer le nombre de langues. Par conséquent, le nombre de langues augmentera au fil du temps.

Donc je suppose que ce que je demande est, quelle est la meilleure stratégie pour installer un site Web dynamique qui englobe les noms de champs (par exemple, le nom) et aussi ses données (par exemple, Lasker).

Un grand merci à l'avance, Lasker

Répondre

4

Il y a plusieurs options disponibles.


Premièrement, les étiquettes et des éléments de l'interface utilisateur.

Deux options sont généralement possibles: soit vous utilisez des ressources (* .resx), soit vous déployez votre propre support multilingue au niveau de la base de données. Ils ont tous deux leurs avantages et leurs inconvénients.

Resoures:

[+] solution facile, tout est prêt pour une utilisation immédiate. Vous définissez une ressource textuelle dans une famille de fichiers nommée Orders.en.resx, Orders.fr.resx etc. Dans le code, vous référencez ces chaînes sous la forme Resources.Orders.Title. Donc, c'est une solution simple pour statique éléments de l'interface utilisateur. [+] Les fichiers de ressources sont essentiellement des documents XML simples qui peuvent être rapidement lus et analysés, ce qui réduit les frais généraux et les pertes de performances.

[-] Si vous devez changer quelque chose, vous devrez recompiler le projet. Cela signifie par conséquent que vous aurez besoin de l'environnement de développement (VS) installé pour quiconque peut envisager de mettre à jour des textes. Ensuite, vous devrez également déployer à nouveau la version recompilée. La même chose s'applique pour l'introduction de nouvelles langues dans le système.

[-] Ne fonctionnera pas pour des tâches non techniques, car la participation de spécialistes est requise.

solution multilingue en base de données personnalisée:

[-] il faudra un certain temps et d'efforts pour concevoir et mettre en œuvre

[-] Chaque texte de l'interface utilisateur sera tiré de la base de données, ce qui signifie baisse de performance et charge supplémentaire sur la base de données

[+] Permet le changement de texte dynamique à la volée et la suppression/ajout de nouvelles langues. Aucune recompilation ou déploiement ne sera nécessaire.

[+] Maintenant, un énorme avantage. Comme aucune compétence technique n'est requise pour travailler sur des textes, vous pouvez externaliser ce travail à n'importe quel endroit. Vous pouvez implémenter une interface web et changer le système de suivi pour les magasins professionnels de services de traduction pour corriger vos textes et effectuer des traductions dans n'importe quelle langue dont vous avez besoin rapidement après la découverte de nouveaux textes.


maintenant aux textes dynamiques (contenu réel).

Ici, vous pouvez soit scinder chaque texte en un enregistrement supplémentaire par langue dans une table, soit fusionner toutes les traductions en une seule entité.

enregistrements multiples:

modèle de base de données Imagine suivantes:

[Language] 
----------------- 
ID Description 

[Translation] 
------------------ 
ID FallbackText 

[TranslationText] 
-------------------------------- 
ID TRID LanguageID Text 

[Order] 
------------------------------------------------ 
ID TitleTRID DescriptionTRID RemarkTRID 

Partout dans la base de données où vous devez stocker un texte multilingue vous à la place de référence certains TranslationID. Ensuite, en fonction de la langue active, votre système cherchera une traduction appropriée ou, s'il n'est pas trouvé, retournera un texte par défaut (généralement défini par les développeurs).

entité unique:

Vous conservez toutes les traductions pour un texte donné dans une chaîne en utilisant un moyen de distinguer les traductions particulières. XML fonctionne naturellement ici. Ici, votre modèle de base de données sera plus simple, mais vous devrez analyser chaque texte pour extraire la version nécessaire.


Ce sont les stratégies largement utilisées. Lequel fonctionnera le mieux pour vous dépendra de vos besoins et de vos scénarios d'utilisation attendus.

Espérons que ça aide. :)

+0

Merci beaucoup pour la réponse .. Je pense que je vais aller de l'avant avec des ressources (pour le texte statique) et base de données multiples d'enregistrement entraîné pour les données réelles. – Lasker

0

nous avons eu le même casse-tête et New in Town a fondamentalement donné les options. Pourquoi nous sommes allés avec l'option resx, principalement parce que dans la plupart des cas, en particulier les sites Web, tout ce qui doit changer est le contenu statique, c'est-à-dire les étiquettes, les éléments d'interface utilisateur. Si vous travaillez avec VS, une fois que vous créez une page, il existe une option pour créer les fichiers resx pour vous. Cela se trouve dans les options Générer une ressource locale dans les outils. Cela va ramasser tous les éléments qui ont des identifiants (c'est important), et générer le premier fichier resx pour vous. créer des copies de cela pour différentes langues est assez simple après cela.

changer la langue est aussi simple que de changer votre web.config. exemple

<globalization enableClientBasedCulture="true" culture="ar-EG" uiCulture="ar-EG"/> 

espoir qui aide

+0

Merci pour votre réponse aussi :) – Lasker