IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Appli C# multi-langue


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut Appli C# multi-langue
    J'aimerais que mon appli soit multilangue (anglais/francais, quoi). Ds ttes mes Form, je fais donc :

    - Localizable = true,
    - Language English (US) : je change ts les labels etc... en Anglais
    - Language French (FR) : idem en Francais.

    Lorsque je change la langue, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread.CurrentThread.CurrentCulture = Context.FrenchCulture;
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread.CurrentThread.CurrentCulture = Context.EnglishCulture;
    FrenchCulture et EnglishCulture etant des instances CultureInfo initialisés avec les strings qui vont bien, respectivement "en-US" et "fr-FR".

    Pourtant, l'interface ne "percute" pas. Aucun changement. L'article du site propose un moyen me paraissant tres peu satisfaisant, car je dois affecter TOUS mes controles à la main. Bref, une horreur.

    Qqn a une idée? Merci d'avance ...

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par hobotalker
    Pourtant, l'interface ne "percute" pas. Aucun changement.
    Qu'attends tu comme changement ?

    La changement de culture modifie normalement :

    - la présentation des valeurs numériques (. & ,)
    - des dates
    - des affichages en devise (type currency)

    Quel est ton soucis ici ?
    Sinon, pour le multilinguisme, une solution assez simple est de mettre toutes les chaines à traduire dans un fichier (xml ou autre) voire une table et d'utiliser comme clef d'accés un hashcode calculé sur la valeur de chaine utiisé en développment (français semble-t-il dans ton cas), et écrire une classe qui "browse" le projet une fois pour toute (pour calculer les valeurs de hash dans la langue de référence), puis une autre qui charge les chaines qui-vont-bien à l'exécution.

    Ta question semble un peu trop généraliste ou c'est moi qui ne pige pas.

  3. #3
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    et avec
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut
    Désolé pour le manque de clarté.

    Normalement, VS 2005 permet d'éditer en mode Design ttes tes fenetres en 2 modes differents. Par exemple, ma Form FrmMain est editable en design en-US et en design fr-FR.

    Ainsi, je renomme ts mes labels, titres de grpbox, etc... en mode Design. Des fichiers ressources sont générés pour chaque langue supportée et il serait donc possible de signifier à l'interface sur lequel de ces fichiers ressources s'appuyer pour afficher les textes ds la langue appropriée.

    Ici, meme qd je change le CurrentCulture (ou même le CurrentUICulture), rien ne se passe, mes grpbox gardent leurs titres anglais, mes labels idem ... Faut-il réinstancier la fenetre?

    Bref, ce systeme m'affranchit de coder la classe que tu me decris. Evidemment que l'on peut faire comme ca, mais ce n'est pas le sujet. Je cherche ici a tirer profit d'un mecanisme déjà implémenté pour nous... Surtout que le gain de temps est non negligeable, au fur et a mesure des differents projets.

    J'espere avoir été assez clair cette fois ci, merci de m'avoir répondu.

  5. #5
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Où places-tu ce code ?
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  6. #6
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Dans ta Form, tu mets Localizable à true et tu mets Language à "English (United States)". Tu mets alors le Text que tu veux dans tes Labels. Tu changes la langue et tu mets "Français (France)". Tu changes tes labels et c'est bon. Tu peux même avoir des tailles ou des positions de contrôles différentes suivant la culture. Si tu veux faire cela pour tu texte mis dans ton code, il faut que tu te crée un fichier de ressources (par défaut) puis que tu te crée un fichier de ressource du même nom avec ".fr.resx" au lieu de ".resx" (pour la culture française. Tu mets la même clé que dans ton fichier de base. Tu traduits le texte et c'est bon.

Discussions similaires

  1. Appli Multi langue
    Par Piercing dans le forum EDI/Outils
    Réponses: 9
    Dernier message: 13/07/2011, 10h48
  2. [iOS 4.x] Appli Multi langue
    Par Feanorin dans le forum Objective-C
    Réponses: 1
    Dernier message: 07/01/2011, 11h49
  3. Appli MFC multi langue
    Par youda dans le forum MFC
    Réponses: 5
    Dernier message: 04/02/2008, 11h38
  4. [CR][.NET] Rapport multi-langue
    Par Harakor dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 16/02/2005, 17h06
  5. [C#] Multi langue - fichier resource.resx
    Par dacamp dans le forum ASP.NET
    Réponses: 5
    Dernier message: 03/06/2004, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo