2013-10-11 2 views
0

J'ai parcouru une grande partie du MSDN à propos de la localisation mais je me demande toujours comment je devrais organiser mes fichiers resx.Valeurs dupliquées dans les fichiers resx: quelle est la meilleure approche pour organiser les entrées de fichiers de ressources?

Je rencontre généralement des fichiers RESX ayant plusieurs clés avec la même valeur qui me semble erronée. Généralement, cela se produit lorsqu'il existe différentes clés pour chaque écran/contrôle utilisateur affichant le même texte. Dans ce cas, resx ressemblent à ceci:

ScreenXXX_ControlXXX_DisableButtonText = Disable 
ScreenYYY_ControlYYY_DisableButtonText = Disable 
... 

Certains diront que cela apporte une flexibilité en vous permettant de modifier un texte spécifique sans affecter l'autre, mais de toute évidence, le changement « Désactiver » sur tout l'écran serait une douleur. J'ai l'impression qu'il est beaucoup plus logique d'avoir une clé unique qui exprimerait le concept «Désactiver la fonctionnalité» et qui serait partagé par plusieurs contrôles. Quelque chose comme:

DisableFeatureButtonText = Disable 

Autant de questions sont:

  • Quelle est l'approche recommandée pour créer des entrées de ressources? Dois-je créer une entrée "contextuelle" (= liée à sa localisation dans l'interface utilisateur) ou "sémantique"?
  • Dans quels cas est-il normal d'avoir des valeurs dupliquées dans vos fichiers resx? Plus généralement, y a-t-il des conventions ou des lignes directrices sur ces questions?

Merci

+1

Je dois admettre que je laisse normalement .NET et Visual Studio gérer cela pour moi.D'après ce que je sais des détails sur la façon dont cela fonctionne vraiment ... vous devriez avoir un resx "par défaut", qui définit une valeur pour tout ... et seulement les changements nécessaires pour une localisation donnée devraient être listés dans la ressource localisée . Aucun doublon ne devrait être nécessaire dans un seul fichier donné, mais peut exister entre les fichiers. – Nevyn

Répondre

1

Je suis confronté à une situation très similaire à la vôtre, car j'ai plusieurs écrans et dans de nombreux cas, les états de contrôle, le texte, etc. sont dupliqués sur les écrans. A l'origine, j'allais simplement diviser les fichiers resx par écran et avoir des paires clé/valeur en double, mais quand on y pense vraiment, ils sont identiques aujourd'hui, mais cela ne veut pas dire qu'une paire clé/valeur pourrait signifier deux choses différentes dans le futur. Quoi qu'il en soit, voici ce que je ferais:

Je voudrais avoir un fichier resx commun qui contient des clés communes à tous les écrans, etc Je voudrais alors avoir des fichiers resx qui sont uniques à l'écran, mais ces resx les fichiers peuvent également contenir des clés qui sont dans le resx commun et alors vous pourriez avoir une méthode qui vérifierait si leur est une valeur dans le resx spécifique et si elle le trouve, il utilise cela, sinon, il utilise la valeur de la commune fichier resx.

Je ne pense pas vraiment qu'il y ait une convention, je nomme généralement mes clés de la même façon que je nomme mes variables.

Je pense qu'il est OK d'avoir des clés en double si, dans le futur, ces clés pourraient potentiellement signifier autre chose ou avoir besoin de valeurs différentes.

J'aime penser aux fichiers resx comme les tables de base de données. Vous pouvez placer la clé/valeur resx dans une table et avoir une longue table dénormalisée ou vous pouvez diviser la clé/valeur resx en tables plus petites. Je préfère ce dernier parce qu'il permet une meilleure évolutivité dans le futur.

1

Vous pouvez utiliser un fichier global Default.resx pour toutes vos ressources que vous utilisez sur plusieurs endroits. Ce que tu veux y mettre dépend de toi. Je ne pense pas qu'il y ait une règle générale. Mais des choses comme Save, Disable, etc. méritent certainement d'être mises là.

Questions connexes