Récemment, je me suis livré dans la localisation avec .NET. Essentiellement, j'ai appris à personnaliser une forme (en utilisant la langue et la propriété localisable), puis modifier la culture en conséquence.
Cependant, j'ai constaté que lors de la migration de mes chaînes anglaises anglo-codées dans les fichiers de ressources générés automatiquement et utilisez-la. GetString ("Key") - Eh bien, disons simplement que ce n'était pas heureux: p. P>
J'ai décidé de créer un ensemble séparé de fichiers RESX dédiés uniquement aux traductions de chaîne codées dur. Ils ont suivi la Convention / l'exigence de [NAME]. [CULTURE-CODE] .resx. J'ai fait de ces pour chaque langue pertinente; par exemple. Appstrings.de.resx strong> (pour l'allemand) et Appstrings.resx Strong> (comme base de référence invariante). p> Utiliser ces nouvelles ressources, j'ai créé une instance de ResourceManager et jeu de ressources P> My.Application.ChangeUICulture("de")
3 Réponses :
Essayez où C'est un exemple facile, vous voudrez peut-être le rendre plus lourd. p> p> strings code> est le nom des fichiers RESX de votre projet.
Cela retournera automatiquement la valeur de base lorsqu'elle n'est pas disponible pour la culture actuelle. P>
Malheureusement, les ressources «Appstrings» n'étaient pas présentes dans l'espace de noms My.Resources. Cependant, votre solution de code augmente un point intéressant (voir la question mise à jour) :).
i Une fois j'ai créé une application Web qui avait en-nous en tant que langue de repli, mais avoir d'autres autres spécifiques comme .de en fonction des paramètres du navigateur Web de l'utilisateur
essentiellement pour le faire fonctionner, je définis le XML dans Web .config p> à partir de là, j'ai utilisé la ressource statique interne du fichier .cs fourni avec votre langue par défaut, par exemple P> <%$ Resources:<ResourceFileName>, TimeSelect %>
J'ai toutefois lu que l'utilisation de l'espace de noms de ressources est coûteuse (en termes de performances aériennes). J'ai lu que c'est mieux pour créer une ressource distincte définie pour mettre en cache les chaînes, améliorant ainsi les performances. Rhapsody est sur la bonne voie avec sa réponse. C'est juste un dernier détail qui doit être résolu (voir le commentaire à cette réponse).
Vous pouvez essayer de déclarer une culture par défaut pour l'application comme ci-dessous
[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]