0

J'ai un fichier de ressources de chaîne appelé "strings.resx" dans mon projet VB.NET, défini comme une ressource incorporée. J'ai un autre fichier appelé strings.es.resx, qui contient toutes les mêmes chaînes en espagnol. Je le chargement de la ressource lors de l'exécution en utilisant le code suivant:Comment puis-je m'assurer que la version de langue appropriée d'une ressource de chaîne est chargée au moment de l'exécution?

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

J'ai défini les paramètres régionaux de langue Espanol dans Windows et le dos ouvert une session, mais je reçois toujours les ressources de chaîne anglaise chargement lorsque ci-dessus 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.

Répondre

1

Jetez un coup d'oeil à la propriété System.Threading.Thread.CurrentThread.CurrentUICulture - elle a l'habitude d'être fixée à en-US.

Si c'est le cas, essayez de le définir comme CurrentCulture.

Mise à jour

Depuis cela ne fonctionne pas, vérifiez que le dossier de sortie de votre application a un dossier es, à l'intérieur duquel 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à, dans ce cas, copiez-la et cela devrait fonctionner.

+0

CurrentUICulture est es-ES. Les ressources de formulaire sont localisées ok, c'est juste ces valeurs "littérales" que j'utilise dans le code qui semblent toujours être la culture neutre. – Robinson

+0

@Robinson - Si vous utilisez la méthode 'GetString (string)' de ResourceManager, avez-vous/pourriez-vous essayer la surcharge explicite de 'GetString (string, CultureInfo)' et transmettre la culture espagnole sans ambiguïté? Si cela ne fonctionne toujours pas, alors je suppose qu'il ne trouve pas votre fichier de ressources dans le dossier bin –

+0

Duh! Mon erreur ... Les chaînes se chargent correctement. Je fais juste autre chose par la suite (en lisant d'un fichier de paramètres anglais) qui contient la version anglaise des chaînes. Je vais marquer votre réponse correctement pour vos efforts car la raison en était ma propre stupidité: p. – Robinson

0

AVERTISSEMENT - tout cela est de la mémoire et ne peut pas être :-) précis à 100%

.NET ressources sont chargées à l'aide Thread.CurrentUICulture (sauf si vous substituez explicitement lorsque les ressources du chargement 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 configuration et peut être modifié à tout moment.

Par exemple, sur mon PC, CurrentCulture retours "en-GB" parce que c'est là où je suis, mais CurrentUICulture retours "en-US" parce que Microsoft ne fournissent qu'une version en langue anglaise de Windows.

+1

Vous ** CAN ** set Thread.CurrentUICulture - ResourceManager répond réellement à ceci et charge des ensembles de ressources pour cette culture. – mnn

Questions connexes