C # Création d’une configuration pour plusieurs langues

J’ai ajouté multi-langue en utilisant le court article ci-dessous.

Lorsque vous ajoutez par exemple la langue allemande, vous aurez les fichiers suivants: formMain.resx formMain.de-DE.resx formMain.Designer.cs formMain.cs

Dans le premier fichier, vous aurez des ressources pour le langage neutre, comme des chaînes, des images, ..

Alors maintenant, vous devez également append des ressources pour les chaînes utilisées dans le code. Ajoutez un nouveau fichier de ressources et nommez-le formMain.Ssortingngs.resx. Ensuite, je vais entrer un nom, une paire de valeurs pour chaque chaîne devant être traduite. Lorsque vous ajoutez un fichier de ressources, il est automatiquement saisi car un autre fichier portant le nom formMain.Ssortingngs.Designer.cs est automatiquement régénéré à chaque fermeture du concepteur resx.

Ajoutez une autre ressource avec le nom formMain.Ssortingngs.de-DE.resx. Ajoutez la même clé de nom de la ressource précédente et modifiez simplement la valeur avec les mots allemands correspondants. Maintenant, pour accéder aux ressources créées à partir de la source, ce sera comme ceci.

MessageBox.Show (formMain_Ssortingngs.SameSsortingngName);

Cependant, j’ai changé ma langue en thaï. Tout fonctionne bien lorsque je lance mon application sous VS.

Cependant, dès que j’ajoute un projet d’installation et l’installe sur la machine cliente, il ne change pas la langue en thaï et rest en langue par défaut.

J’ai donc ajouté les fichiers de ressources et le dll th-TH à la configuration du projet. Et j’ai toujours le même problème.

Packaging file 'Lang.Ssortingngs.resx'... Packaging file 'MultiLanguage.resources.dll'... Packaging file 'MultiLanguage.exe'... Packaging file 'Lang.Ssortingngs.th-TH.resx'... 

Comme tout fonctionne bien lors de l’exécution dans Visual Studio. Dois-je faire quelque chose pour le faire fonctionner une fois qu’il est installé? Toutes les propriétés de chacun des fichiers que j’ai conservés sont celles par défaut.

Merci beaucoup,

=========

 static void Main() { System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("th-TH"); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } 

J’ai trouvé la réponse

Cliquez sur le projet d’installation dans l’Explorateur de solutions, puis cliquez sur Ajouter \ Sortie du projet \. Dans la boîte de dialog, sélectionnez le projet pour lequel vous souhaitez inclure des assemblys de localisation (satellite), puis sélectionnez Ressources localisées.

Après l’installation dans le dossier dans lequel j’installe, j’ai le dossier th-TH qui comprend l’assemblage satellite.

Merci,

Essayez d’append ceci au démarrage de l’application (si ce n’est pas là):

 Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture; 

Voici un court article présentant certaines des options permettant de résoudre ce problème, ainsi que des options permettant de sélectionner les parameters régionaux au moment de l’exécution.


Modifier après les commentaires:

Assurez-vous que votre satellite est à la place appropriée et construit correctement. De cet article, j’ai référé:

“Lorsque le runtime .NET démarre une application, il recherche un fichier d’assembly satellite possible. Un fichier d’assembly satellite est un fichier d’assembly contenant uniquement des ressources, doté de l’extension .resources.dll au lieu de .exe ir .dll (si l’assembly principal est une bibliothèque) Les fichiers d’assemblage satellite se trouvent toujours dans un sous-répertoire spécifique à une langue du répertoire principal de l’application. Si le fichier d’application est Converter.exe, le fichier d’assemblage satellite japonais est ja \ Converter.resources.dll. ”

Il y a quelques choses que vous devriez vérifier ici. Vérifiez le nom de l’assemblage. En outre, assurez-vous qu’il est au bon endroit. Dans votre cas, il devrait être dans un sous-répertoire th-TH avec le nom approprié sous votre exécutable. Si c’est là, il devrait être trouvé et utilisé correctement.

Voici une autre bonne source d’information sur ce sujet.