2009-11-15 4 views
1

Je dois créer un formulaire qui doit supporter deux langues (pour l'instant). les deux langues n'ont pas le même look et aussi la moitié de la forme n'est pas un like, mais il a encore quelque similitude entre eux. quelle est la meilleure façon de traiter ce problème dans un cas de deux langues différentes et plus? En passant, la langue du programme que j'utilise est C#.Problème de localisation

10x

Répondre

3

D'abord, configurez votre langue par défaut du projet, vous le faites dans les propriétés du projet, dans la boîte de dialogue d'information de l'Assemblée, il y a un paramètre « Langue neutre » en bas.

Définissez ceci pour être votre langue "par défaut", la langue "principale" si vous le souhaitez.

Ensuite, assurez-vous que le formulaire tel qu'il est maintenant est dans cette langue. Pour commencer à traduire et modifier le formulaire afin de respecter une langue différente, définissez d'abord la propriété "Localizable" du formulaire sur true, puis remplacez la propriété Language par votre deuxième langue (ou troisième, quatrième, etc.) .

Une fois que vous avez modifié cela, vous pouvez commencer à apporter des modifications. Assurez-vous de ne pas supprimer les éléments sur le formulaire, au lieu de les rendre invisible. La suppression est effectuée pour toutes les langues, mais l'invisible ne sera donc défini que pour la langue en cours.

Continuez à basculer entre les langues pour effectuer les réglages.

Pour tester votre programme dans une langue spécifique, exécutez ce au début de votre méthode Main:

Thread.CurrentThread.CurrentCulture = new CultureInfo("code of that other language"); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("code of that other language"); 

Par exemple, pour le tester avec la langue « norvégien, bokmål », qui est ma langue principale, le code que vous utiliseriez serait "nb-NO". Pour trouver le code que vous devez utiliser, une fois que vous avez changé la langue de votre formulaire pour la langue que vous souhaitez localiser et enregistré, un nouveau fichier sera ajouté à l'explorateur de solution avec le bon nom.

Par exemple, pour Form1, les fichiers suivants seront présents:

Form1.cs 
    Form1.designer.cs 
    Form1.nb-NO.resx  <-- here's the localized content 
    Form1.resx 

Maintenant, après avoir fait cela, il y a beaucoup d'autres choses que vous devez être au courant lors de l'application localisée, je vous suggère allez lire d'autres questions sur SO et sur le Web avec plus d'informations, comme celles-ci:

0

Je pense un fichier de ressource globale unique pour chaque langue est mieux que d'avoir un fichier de ressources pour chaque formulaire pour chaque langue.
J'ai récemment fait la globalisation d'une application winforms à l'aide du lien suivant: "Globalization of Windows Applications in 20 Minutes". Voici les étapes de la simplicité:

  1. Créez un fichier texte, par exemple "data.en-US.txt "dans la solution (. < nom de fichier> chaîne de culture <> txt) dans le format ci-dessous:

    Bonjour = Bonjour
    Bienvenue = Bienvenue

    Ce fichier" data.en-US.txt »est un fichier texte de ressources dans la langue anglaise. Créez un fichier similaire dans votre langue souhaitée dire l'allemand, de sorte que son nom sera data.de-DE.txt

    Bonjour = Halo
    Bienvenue = Willikomen

    La première colonne sont les étiquettes qui seront utilisées comme clés pour référencer le texte. Créez un fichier "data-en-US.resource" à partir des fichiers texte en utilisant la commande "resgen.exe data.en-US.txt", Procédez ainsi pour tous les fichiers de langue. Maintenant dans votre solution, vous avez 2 (ou plus, selon les langues que vous voulez soutenir)
    données. < chaîne de culture> .resource fichiers

  2. Cliquez sur tous les fichiers .resource et définissez la propriété "Build Action" sur "Content".
  3. Cliquez sur tous les fichiers .resource et définissez la propriété "Copier dans le répertoire de sortie" sur "Toujours copier/Copier si nouveau".
  4. Obtenir la chaîne localisée en utilisant le code ci-dessous dans l'une des formes:
string label = "Hello"; 
string cultureString = "de-DE" // [or "en-US"] 
string strResourcesPath = Application.StartupPath; 
CultureInfo ci = new CultureInfo(cultureString); ['cultureString' represents your desired language] 
ResourceManager rm = ResourceManager.CreateFileBasedResourceManager("data", strResourcesPath , null); ["data" is the first part of the filename] 
var answer = rm.GetString(label, ci); // here ans="Halo" as we selected de-DE