Resourcemanager, c'est de revenir à une même ressource, bien que CultureInfo est spécifié
Une chose très simple, et je ne peux pas le faire fonctionner. Je tiens à mondialiser ma dll donc je suis en utilisant les fichiers de ressources de + la classe ResourceManager.
J'appelle la classe resourcemanager comme ceci:
var p = new ResourceManager("Appname.Default", Assembly.GetExecutingAssembly());
Obtenir les cordes, comme ce
System.Diagnostics.Debug.WriteLine(p.GetString("greeting"));
System.Diagnostics.Debug.WriteLine(p.GetString("greeting", new CultureInfo("nl")));
System.Diagnostics.Debug.WriteLine(p.GetString("greeting", new CultureInfo("nl-NL")));
System.Diagnostics.Debug.WriteLine(p.GetString("greeting", new CultureInfo("en")));
Et il retourne 4 fois sur la même chaîne. Mes fichiers sont appelés
Default.resx
Default.en.resx
Default.nl.resx
Default.nl-NL.resx
Tous les paramètres de fichier sont les mêmes, mais comme mentionné auparavant, seule la ressource dans le fichier par Défaut est utilisé.
Que suis-je surplombant ici?
Sont la .fichier resx réellement obtenir compilé dans des assemblys satellites? Regardez dans le dossier bin\Debug et de regarder pour les sous-répertoires avec des noms fr, nl et nl-NL.
Essayez d'obtenir des traductions via
Essayez d'obtenir des traductions via
Default.ResourceManager.GetString
. Le plus probable de la ressource manager, vous êtes en train de créer ait un peu de mal paramètre(s).
OriginalL'auteur Jochen van Wylick | 2012-06-30
Vous devez vous connecter pour publier un commentaire.
Il ya quelques façons d'utiliser les fichiers de ressources, dont l'un est à l'aide de
.resx
fichiers. Ces fichiers sont localisés automatiquement, basée sur la valeur deThread.CurrentThread.CurrentUICulture
. La valeur par défaut.resx
fichier est compilé dans le montage, il est une partie de (par exemple votre exécutable principal), tandis que les ressources localisées (Default.nl-NL.resx
) compilé dans leur propre répertoire (basée sur la culture de l'identificateur denl-NL
dans ce cas) dans une assemblée, appelée<AssemblyName>.resources.dll
.Les valeurs de ces ressources est aussi facile que de
<ResourceName>.<KeyName>
, par exempleDefault.Greeting
. Pour le tester, vous changer la culture, à l'aide de:Qui sera de sortie
Au démarrage du programme, la Culture de l'INTERFACE utilisateur est réglé à la culture de l'ordinateur c'est de la course, de sorte que vous n'avez pas à spécifier la langue-vous de toujours présenter les ressources localisées. Donc,
.resx
fichiers semblent le chemin à parcourir.Lors de l'utilisation de la
ResourceManager
devar p = new ResourceManager("Appname.Default", Assembly.GetExecutingAssembly());
, vous aurez à lire.resources
fichiers. Si il n'existe pas (dans votre cas)Appname.Default.resources
fichier, lap.GetString
échouera. Donc je suppose que vous avez créé un.resources
fichier plus tôt, mais n'ont pas converti les localisée.resx
fichiers.resources
fichiers.Si vous souhaitez utiliser la classe ResourceManager pour être en mesure de spécifier la culture, vous pouvez utiliser:
pourriez vous s'il vous plaît prendre un coup d'oeil à ma question, s'il vous plaît. stackoverflow.com/questions/24070892/...
OriginalL'auteur CodeCaster