Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PETIT EXEMPLE DE LOCALISATION


Information sur la source

Description

Bonjour,

Petit exemple d'application qui vous montrera comment realiser un programme multi langue.

L'interet est donc d'affiche le texte de l'application (label, menu, bouton, ..) dans des langues differentes.

Comme vous pourrez le voir des fichier resx ont ete ajoutes au projet.
Ces fichiers ressources (resx) servent a stocker les differents string identifier par un id.

On a donc un fichier par langue.
Le contenu du fichier est divise en deux colonnes, l'id a gauche et la chaine de caracteres correspondante à droite.

Il y'a un bon exemple de localisation d'application sous Asp Net ici :
http://www.dotnet-tech.com/tutoriels/localisation/

 

Source

  • /*********************************************************************/
  • //Charge les string et les place dans la propriete text des controles
  • /*********************************************************************/
  • private void UpdateUI()
  • {
  • //Label
  • label1.Text = m_ResourceManager.GetString("label1");
  • //radio button et label choix
  • radioButton1.Text = m_ResourceManager.GetString("radioEn");
  • radioButton2.Text = m_ResourceManager.GetString("radioFr");
  • radioButton3.Text = m_ResourceManager.GetString("radioEs");
  • label2.Text = m_ResourceManager.GetString("label2");
  • //Bouton
  • button1.Text = m_ResourceManager.GetString("button1");
  • //Menu
  • menuItem.Text = m_ResourceManager.GetString("menuItem");
  • //Form
  • this.Text = m_ResourceManager.GetString("Form1");
  • //Message error
  • erro = m_ResourceManager.GetString("error");
  • }
  • //Click sur le botton
  • private void button1_Click(object sender, System.EventArgs e)
  • {
  • if(textBox1.Text == "")
  • MessageBox.Show(erro);
  • else
  • {
  • string message = String.Format(m_ResourceManager.GetString("message"), textBox1.Text);
  • MessageBox.Show(message);
  • }
  • }
  • //Selection de l'anglais
  • private void radioButton1_CheckedChanged(object sender, System.EventArgs e)
  • {
  • if(radioButton1.Checked)
  • {
  • Thread.CurrentThread.CurrentUICulture = m_EnglishCulture;
  • UpdateUI();
  • }
  • }
/*********************************************************************/
//Charge les string et les place dans la propriete text des controles
/*********************************************************************/

private void UpdateUI()
{
	//Label
	label1.Text = m_ResourceManager.GetString("label1");
			
	//radio button et label choix
	radioButton1.Text = m_ResourceManager.GetString("radioEn");
	radioButton2.Text = m_ResourceManager.GetString("radioFr");
	radioButton3.Text = m_ResourceManager.GetString("radioEs");
	label2.Text = m_ResourceManager.GetString("label2");

	//Bouton
	button1.Text = m_ResourceManager.GetString("button1");
			
	//Menu
	menuItem.Text = m_ResourceManager.GetString("menuItem");
			
	//Form
	this.Text = m_ResourceManager.GetString("Form1");

	//Message error
	erro = m_ResourceManager.GetString("error");

}


//Click sur le botton
private void button1_Click(object sender, System.EventArgs e)
{
	if(textBox1.Text == "")
		MessageBox.Show(erro);
	else
	{
		string message = String.Format(m_ResourceManager.GetString("message"), textBox1.Text);
		MessageBox.Show(message);
	}
}

//Selection de l'anglais
private void radioButton1_CheckedChanged(object sender, System.EventArgs e)
{
	if(radioButton1.Checked)
	{
		Thread.CurrentThread.CurrentUICulture = m_EnglishCulture;
		UpdateUI();
		}
}

Conclusion


Ahhh oui ..mes traductions sont assez breves surtout en espagnole!
Pas de copine espagnole sous la main en ce moment ..:-)

Bonne semaine
Christophe
Un bouillonnais
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   WinFormLocalisation
    •   bin
      •   Debug
        •   es-ES
          • WinFormLocalisation.resources.dllTélécharger ce fichier [Réservé aux membres club]3 584 octets
        •   fr-FR
          • WinFormLocalisation.resources.dllTélécharger ce fichier [Réservé aux membres club]3 584 octets
        • WinFormLocalisation.exeTélécharger ce fichier [Réservé aux membres club]28 672 octets
        • WinFormLocalisation.pdbTélécharger ce fichier [Réservé aux membres club]17 920 octets
    •   obj
      •   Debug
        •   es-ES
          • WinFormLocalisation.resources.dllTélécharger ce fichier [Réservé aux membres club]3 584 octets
        •   fr-FR
          • WinFormLocalisation.resources.dllTélécharger ce fichier [Réservé aux membres club]3 584 octets
        • temp
        • TempPE
        • WinFormLocalisation.exeTélécharger ce fichier [Réservé aux membres club]28 672 octets
        • WinFormLocalisation.ExempleLocalization.es-ES.resourcesTélécharger ce fichier [Réservé aux membres club]681 octets
        • WinFormLocalisation.ExempleLocalization.fr-FR.resourcesTélécharger ce fichier [Réservé aux membres club]725 octets
        • WinFormLocalisation.ExempleLocalization.resourcesTélécharger ce fichier [Réservé aux membres club]713 octets
        • WinFormLocalisation.Form1.resourcesTélécharger ce fichier [Réservé aux membres club]8 223 octets
        • WinFormLocalisation.pdbTélécharger ce fichier [Réservé aux membres club]17 920 octets
        • WinFormLocalisation.projdataTélécharger ce fichier [Réservé aux membres club]8 072 octets
    • App.icoTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 078 octets
    • AssemblyInfo.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 426 octets
    • ExempleLocalization.es-ES.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 373 octets
    • ExempleLocalization.fr-FR.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 417 octets
    • ExempleLocalization.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 405 octets
    • Localisation.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 702 octets
    • Localisation.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier11 363 octets
    • WinFormLocalisation.csprojTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 204 octets
    • WinFormLocalisation.csproj.userTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 803 octets
    • WinFormLocalisation.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier923 octets
    • WinFormLocalisation.suoTélécharger ce fichier [Réservé aux membres club]9 216 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de JulioDelphi le 07/11/2006 17:34:55 administrateur CS

salut, je ne connais pas (encore) le C#, il faut vraiment tout ça pour juste ... ça ??
je parle des 4 DLL, etc etc :o c'est enorme :p

signaler à un administrateur
Commentaire de jimmy69 le 07/11/2006 18:46:46

salut salut JulioDelphi,

Euh pour repondre a ta question en fait j'ai zippe tout le projet y compris le repertoire debug ou se trouve le resultat de la compilation !J'aurais tres bien pu ne mettre que les fichiers necessaires pour faire tourner l'application.

Quant au 4 dll, en fait il genere une dll par language ..
Quand tu build ton projet, il te genere aussi un repertoire portant le nom de la langue.

Maintenant est ce enorme ...je pense pas !

Les pros nous en diront surement plus a ce sujet !

Christophe
Un bouillonnais

signaler à un administrateur
Commentaire de JulioDelphi le 07/11/2006 18:49:48 administrateur CS

j'ai trouvé ça enorme comparé à un projet Delphi où j'aurais besoin de 3/4 fichiers maxi.
"une dll par langage" c'est a dire ? ya + que du C# la dedans ?

signaler à un administrateur
Commentaire de Bidou le 07/11/2006 19:00:37 administrateur CS

Il s'agit en fait de "satellite resource assemblies" qui ne sont rien d'autres que les fichiers resx que l'ont définit (fichiers de ressources). Il y en a un par language, pour des questions de simplicité.

signaler à un administrateur
Commentaire de Elektordi le 07/11/2006 22:46:36

Un fichier par language ca simplifie la disribution de l'appli et la mise à jour de nouveaux fichiers de langues facilement (pas besoin de toucher à l'exe) !

signaler à un administrateur
Commentaire de taupe4 le 08/11/2006 01:03:20

Je préfère tout de même mettre à disposion les .resx directement et les incorporer à l'application sans effort (le constructeur permet de charger des fichiers externes).

Sinon, ça aidera les débutants à utiliser la localisation fournie avec .NET :)

signaler à un administrateur
Commentaire de sebmafate le 08/11/2006 09:26:59 administrateur CS

L'avantage des DLL par rapport aux resx, c'est qu'elles sont compilées et donc plus rapide d'acces, protégées des modifications hazardeuses des utilisateurs...

signaler à un administrateur
Commentaire de taupe4 le 10/11/2006 01:18:49

Si quelqu'un tente de faire des modifications hazardeuses sur les fichiers, un utilitaire intégré à presque tous mes programmes appellé fstrestore.exe effectue une récupération (soit par internet, soit par une copie de sauvegarde) sur le fichier.

Mais bien vu pour la DLL;) Personnellement, j'essaie de modifier les resources intégrées dans l'éxécutable, mais ça fournit des résultats trop mauvais et une récupération du programme est indispensable.

signaler à un administrateur
Commentaire de jimmy69 le 10/11/2006 10:44:43

salut salut,

Merci pour l'info !

Christophe
Un bouillonnais

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

connexion à interBase [ par billou_13 ] Bonjour, J'essaie de me connecter à interBase en c# et je n'y arrive pas. Ma base de données s'appelle localisation. Pour le moment, j'ai & Problème de culture..... [ par emmanuel9 ] Bonjour à tous, En faite j'ai : // Quand on appui sur un bouton  Convert c ;  CultureInfo  regional  = new CultureInfo( problème de culture, virgule , etc..... [ par emmanuel9 ] Bonjour, Alors là ca se complique, j'ai 15,150 et je remplace la "," par la virgule de la culture en cours. donc c.Todecimal(resultat2) marche [.NET] Problème de ressources [ par cedkat ] Bonjur,Voila mon problème, Après compilation réussi, je lance l'appli, et lors du lancement d'un fenetre (qui machais tres bien jusqu'a Recherche entre 2 date (Between) [ par Jackboy ] Bonjour !J'ai 2 champs texte donc l'usager entre les dates et je veux récupérer des valeurs selon 2 date dans ma bd Access. Le champ date de URGENT_ Erreur resource [ par RM50Man ] Bonjour,J'ai une grave erreur quiu est apparu d'un coup a la compilation, alors que tout allait bien, je relance mon prjet pour la 50eme fois et il m' localisation des dll de resources multilangues [ par franckypoune ] Bonjour à tous,J'ai une DLL qui supporte 2 langues , le français et l'anglais.Visual m'a donc créée 2 dll de ressources respective Multilangage et fichier resx [ par watoubilly ] Bonjour, je suis en train de faire un appli multilangage non dynamic.C'est a dire que c'est lorsque je publi mon code que je passe en francé ou (par d Changer La culture Du OS [ par swedikiluka ] Bonjour à tout le monde,je connais un problème avec mon petit programme sur les conversions de format de DATES.Tout au long de mon développement j'uti Localisation & RichEdit [ par scoubidou944 ] Je fais des tests sur mes prog sur les saisies utilisateur.Par exemple si on tente Int32.Parse (0.5) ou Int32.Parse (0,5) on aura ou non une exception


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.