31 votes

Ressource globale vs ressource locale dans ASP.NET

Nous utilisons des fichiers resx pour localiser nos applications web. Nous avons l'habitude de créer des fichiers resx (que la carte à une page spécifique) quand une seule page utilise une certaine expression, et un fichier resx lorsque plus d'une page a besoin de la phrase.
Mais la bonne chose à propos de global fichiers resx, c'est qu'ils sont une classe, et vous pouvez les appeler les phrases comme vous appelez les propriétés d'une classe:

De la ressource.L'INTERFACE utilisateur.iNotFound

Je pensais donc - pourquoi avez locales fichiers resx à tous? pourquoi ne pas utiliser un fichier resx pour l'ensemble de l'application, et de cette façon éviter les erreurs à l'exécution de l'appel inexistante phrases?

Je suis sûr qu'il y a une bonne réponse pour que, je ne sais pas ce que c'est....

43voto

Lea Cohen Points 2734

J'ai continué à la recherche de lignes directrices, et trouvé ça dans MSDN:

Le choix Entre Global et Local, les Fichiers de Ressources

Vous pouvez utiliser n'importe quelle combinaison de mondial et des fichiers de ressources locales dans le Web application. Généralement, on ajoute les ressources d'un fichier de ressources global si vous souhaitez partager les ressources entre les pages. Les ressources mondiales les fichiers de ressources sont également fortement typé lorsque vous souhaitez accéder aux fichiers par programmation.

Toutefois, les fichiers de ressources globaux peuvent devenus grands, si vous stockez tous ressources localisées dans les. Mondial les fichiers de ressources peut également être plus difficile à gérer, si plus d'un développeur travaille sur différents pages, mais dans un seul fichier de ressources.

Les fichiers de ressources locaux le rendre plus facile à gérer les ressources pour un seul ASP.NET La page Web. Mais vous ne pouvez pas partager les ressources entre les pages. En outre, vous pouvez créer beaucoup de locaux les fichiers de ressources, si vous avez beaucoup de pages qui doivent être localisées dans de nombreux les langues. Si les sites sont grands avec de nombreux dossiers et les langues locales les ressources peuvent développer rapidement le nombre d'assemblées dans le domaine d'application.

Lorsque vous apportez une modification à un fichier de ressources par défaut, soit locale ou globale, ASP.NET recompile les ressources et redémarre l'ASP.NET application. Cela peut affecter les performances globales de votre site. Si vous ajoutez satellite de ressources les fichiers, il ne provoque pas une la recompilation de ressources, mais le ASP.NET application redémarre.

Il semble donc que c'est vraiment à l'équipe de programmation de peser les avantages et les inconvénients de chaque méthode et de choisir ce qui est bon pour eux.

13voto

user74207 Points 151

Joe90 - je dois dire que, dans mon expérience, je ne peux pas accepter que la gestion de beaucoup de ressources locales fichiers dispersés sur l'ensemble de votre projet est plus facile que de la gestion d'une ressource mondiale de fichier. Il n'y a rien pour arrêter la répétition de la même traductions, encore et encore, et ils sont très difficiles à repérer. L'accès à la ressource Globale de fichier est très facile à coordonner au sein d'une équipe et plusieurs utilisateurs peuvent voir en un coup d'œil si la traduction a déjà été fait.

J'ai commencé avec exactement la même politique que Lea - c'est à dire commencer avec un fichier de ressources et de passer ensuite à un fichier de ressources global si il a été mentionné plus d'une fois. Cela devint bientôt des tas de soucis à gérer et depuis, j'ai déménagé à l'utilisation des fichiers de ressources de tous les temps.

Il ne semble pas y avoir de lignes directrices claires par Microsoft à ce que la meilleure pratique est, ou encore, comment les deux méthodes sont mises en œuvre de sorte que nous pouvons spéculer!

Je suis deviner la comparaison/profit est que des fichiers de ressources locales seulement besoin de recompiler le fichier qu'ils concernent, alors que la modification d'un fichier de ressources global semble avoir besoin de recompiler l'ensemble d'un site web - avec une perte inhérente de l'état de session etc. donc, nécessite de prendre le site en mode hors connexion pendant la mise à jour pour être sûr.

6voto

d00ape Points 76

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

Le problème avec la fusion de ce gros fichier resx devrait à mon avis pas être un problème.

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

Un expert linguistique doit éditer le fichier resx et le verrouiller pour les développeurs!

2voto

Michael Urvan Points 66

Un fichier de Ressources Global est la meilleure méthode pour la traduction. La clé est d'utiliser une convention de nommage, comme le nom de la page abréviations pour les premières lettres d'un nom de chaîne, de sorte que vous pouvez localiser des ressources par page web de base facilement. En essayant de réutiliser plusieurs phrases sur plusieurs pages de causer plus de confusion pour les traducteurs.

Vous pouvez définir réutilisable phrases comme autant ou aussi peu que vous le souhaitez, comme Oui, Non, BTN_OK, BTN_Cancel, QTN_AreYouSure, etc à l'aide d'un manque de page naming convention (no nom de la page abréviations pour les premières lettres). La majorité de vos lignes de RESX sera spécifique à chaque page et vous ne devriez pas se concentrer sur essayer de réutiliser autant que possible. Changer une phrase à travers l'ensemble du dossier peut être fait avec soin dans les minutes à l'aide de texte rechercher/remplacer en cas de besoin.

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