Comment puis-je m'assurer que la version linguistique appropriée d'une ressource de chaîne est chargée au moment de l'exécution?

StackOverflow https://stackoverflow.com/questions/4968990

Question

J'ai un fichier de ressources de chaîne appelé "strings.resx" dans mon projet VB.net, défini comme une ressource intégrée. J'ai un autre fichier appelé strings.es.resx, qui contient toutes les mêmes cordes en espagnol. Je charge la ressource lors de l'exécution en utilisant le code suivant:

MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly)

J'ai défini la langue sur Espanol sous Windows et je me suis connecté, mais je reçois toujours les ressources de chaîne anglaises lorsque ce qui précède est exécuté. Comment puis-je charger les ressources espagnoles si les paramètres régionaux de Windows sont ES? Je m'attendais à ce qu'il soit géré automatiquement.

Était-ce utile?

La solution

Jetez un œil au System.Threading.Thread.CurrentThread.CurrentUICulture Propriété - Il a l'habitude d'être fixé à En-Us.

Si c'est le cas, essayez de le définir à la même chose que CurrentCulture.

Mise à jour

Puisque cela n'a pas fonctionné, vérifiez que le dossier de sortie de votre application a un es dossier, à l'intérieur qui est une DLL appelée Strings.resources.dll. Sinon, alors, fondamentalement, le gestionnaire de ressources ne trouve pas la ressource de chaîne spécifique à la culture, car elle n'est pas là, auquel cas les copiez et cela devrait fonctionner.

Autres conseils

CLAUSE DE NON-RESPONSABILITÉ - Tout cela est de mémoire et peut ne pas être précis à 100% :-)

.NET Les ressources sont chargées en utilisant Thread.CurrentUICulture (sauf si vous le remplacez explicitement lors du chargement des ressources dans le code). Thread.CurrentUICulture est défini par le langage d'interface utilisateur utilisé dans votre installation de Windows et ne peut pas être modifié. Ce n'est pas la même chose que Thread.CurrentCulture, qui est défini dans le panneau de commande et peut être modifié à tout moment.

Par exemple, sur mon PC, CurrentCulture Retour "en-GB" Parce que c'est là que je suis, mais CurrentUICulture Retour "en-US" Parce que Microsoft ne fournit qu'une seule version en anglais de Windows.

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