Question

J'ai une application qui est multilingue. J'utilise les out-of-the-box .Net fonctionnalités pour cela. Chaque langue a son propre fichier dans les App_GlobalResources (voir ci-dessous iamge)

Dans le code derrière ce qui est mieux?

  1. GetGlobalResourceObject ( "LocalizedText", "ErrorOccured")
  2. Resources.LocalizedText.ErrorOccured

Le 2ème utilise moins de code et son type sûr, il retournera une erreur lors de la compilation et non le temps d'exécution.

texte alt http://img340.imageshack.us/img340/5562/langl .gif

Était-ce utile?

La solution

Ce sont les avantages de chaque approche:

Avantages de GetGlobalResourceObject (et GetLocalResourceObject):

  1. Vous pouvez spécifier une culture particulière au lieu d'utiliser le CurrentCulture.
  2. Vous pouvez utiliser une expression tardive liée (à savoir une chaîne) de décider quelle ressource à charger. Ceci est utile si vous ne pouvez pas savoir à l'avance quelle ressource vous devrez charger.
  3. Il fonctionne avec tout type de fournisseur de ressources. Par exemple, cela fonctionne non seulement avec le fournisseur basé RESX par défaut intégré, mais cela fonctionnera même contre un fournisseur de bases de données.

Avantages des types RESX fortement typés:

  1. Vous obtenez la compilation des erreurs si vous accédez à une ressource qui n'existe pas.
  2. Vous obtenez IntelliSense tout en travaillant sur le projet.

Alors, comme beaucoup « qui est le mieux » questions, la réponse est: Cela dépend! Choisissez celui qui a des avantages qui profiteront à vos scénarios particuliers le plus.

Autres conseils

Il faut donc utiliser le second, si vous savez ce à l'avance le fichier de ressources et la clé seront.

La méthode GetGlobalResourceObject() est utile si vous ne savez pas ce que le fichier de ressources ou (plus probablement) la clé sera au moment de la compilation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top