2009-01-15 8 views
36

Nous utilisons des fichiers resx pour localiser nos applications Web. Nous créons généralement des fichiers resx locaux (qui correspondent à une page spécifique) lorsqu'une seule page utilise une certaine expression, et un fichier global resx lorsque plus d'une page a besoin de la phrase.
Mais la bonne chose sur les fichiers mondiaux resx est qu'ils sont une classe, et vous pouvez appeler les phrases comme vous appelez propriétés d'une classe:Ressource globale et ressource locale dans ASP.NET

Resource.UI.iNotFound

Je pensais - pourquoi avoir des fichiers de resx locaux du tout? Pourquoi ne pas utiliser un fichier global resx pour l'ensemble de l'application, et ainsi éviter les erreurs d'exécution d'appeler des phrases inexistantes?

Je suis sûr qu'il ya une bonne réponse pour cela, je ne sais pas ce qu'il est ....

Répondre

47

je continuais à la recherche de lignes directrices, et trouvé cela dans MSDN:

Le choix entre Global et fichiers de ressources locales

Vous pouvez utiliser toute combinaison de fichiers de ressources mondiales et locales dans la Web application. Généralement, vous ajoutez ressources à un fichier de ressources global lorsque vous souhaitez partager les ressources entre les pages. Les ressources dans les fichiers de ressources globaux sont également fortement typées pour quand vous voulez accéder aux fichiers par programme. Toutefois, les fichiers de ressources globales peuvent devenir plus importants si vous stockez toutes les ressources localisées dans ces fichiers. Global fichiers de ressources peuvent également être plus difficile à gérer , si plus d'un développeur travaille sur différentes pages , mais dans un seul fichier de ressources.

Les fichiers de ressources locaux facilitent la gestion des ressources pour un même ASP.NET Page Web. Mais vous ne pouvez pas partager ressources entre les pages. En outre, vous pouvez créer beaucoup de fichiers de ressources locales , si vous avez beaucoup de pages qui doivent être localisées dans de nombreuses langues . Si les sites sont volumineux avec de nombreux dossiers et langues, les ressources locales peuvent rapidement développer le nombre d'assemblages dans le domaine d'application .

Lorsque vous apportez une modification à un fichier de ressources par défaut, local ou global, ASP.NET recompile les ressources et redémarre l'application ASP.NET. Cela peut affecter les performances globales de votre site . Si vous ajoutez des fichiers de ressource satellite , cela ne provoque pas une recompilation des ressources , mais l'application ASP.NET redémarrera.

Il semble donc que c'est vraiment à l'équipe de programmation de peser le pour et le contre de chaque méthode et de choisir ce qui est bon pour elle.

14

Joe90 - Je dois dire que, dans mon expérience, je ne peux pas accepter que la gestion beaucoup de fichiers de ressources locales dispersés dans l'ensemble de votre projet est plus facile que de gérer un fichier de ressources global. Il n'y a rien pour arrêter la répétition des mêmes traductions encore et encore et ils sont très difficiles à repérer. L'accès au fichier de ressources global est très facile à coordonner au sein d'une équipe et plusieurs utilisateurs peuvent voir en un coup d'œil si leur traduction requise a déjà été effectuée. J'ai démarré avec exactement la même politique que Lea, c'est-à-dire commencer par un fichier de ressources local, puis le déplacer vers un fichier de ressources global s'il a été référencé plus d'une fois. Cela est vite devenu une tâche fastidieuse à gérer et depuis, je suis passé à l'utilisation de fichiers de ressources globaux à chaque fois.

Il ne semble pas y avoir de directives claires de la part de Microsoft quant à la meilleure pratique, ou même, comment les deux méthodes sont mises en œuvre afin que nous puissions hasarder une estimation!

Je suis deviner la comparaison/gain est que les fichiers de ressources locales ne nécessitent qu'une recompilation du fichier, ils se rapportent, alors que la modification d'un fichier global des ressources semble exiger une recompilation de l'ensemble du site web - avec une inhérente La perte de l'état de la session etc. nécessite donc de mettre le site hors-ligne pendant la mise à jour pour être sûr.

7

J'ai une équipe de développement d'au moins 10 développeurs sur un seul produit et nous utilisons un resx global pour chaque site.

Le problème de la fusion de ce gros fichier resx ne devrait pas poser de problème à mon avis.

Si vous avez 10 développeurs qui définissent eux-mêmes la langue sur le site, comment obtenez-vous une manière uniforme de s'exprimer sur le site? Les développeurs ont souvent tendance à être bons au code et non à l'expression grammaticale. (Je suis un développeur moi-même.)

Un expert en langue devrait modifier le fichier resx et le verrouiller pour les développeurs!

+2

+1 pour le dernier commentaire. –

2

Un fichier de ressources globales est la meilleure méthode de traduction. La clé est d'utiliser une convention de nommage, comme les abréviations des noms de pages pour les premières lettres d'un nom de chaîne, afin de pouvoir localiser facilement les ressources par page Web. Essayer de réutiliser plusieurs phrases sur plusieurs pages causera plus de confusion pour les traducteurs. Vous pouvez définir des phrases réutilisables autant ou aussi peu que vous le souhaitez, comme Oui, Non, BTN_OK, BTN_Cancel, QTN_AreYouSure, etc. en utilisant un manque de convention de dénomination de page (pas d'abréviations de nom de page pour les premières lettres). La majorité de vos lignes de RESX seront spécifiques à chaque page et vous ne devriez pas essayer de réutiliser autant que possible. Changer une phrase sur l'ensemble du fichier peut être fait avec soin en quelques minutes en utilisant la recherche/remplacement de texte si nécessaire.

+1

Merci pour votre réponse. Mais je n'ai toujours pas compris _why_ qu'un fichier Global Resource est mieux que Local. –

Questions connexes