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 :

[C#] Application multilangue


Sujet :

Windows Forms

  1. #21
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Moi j'ai une autre question, dans la même veine.

    Quand on compile un projet avec 2 langues (disons US & FR), il y a génération d'une dll par langue, pour contenir les ressources. Arretez-moi si je me trompe. Hors un jour je voudrais rajouter une autre langue comme le Japonais et donc il me faudra générer cette dll à partir du fichier ressource version japonaise (donc un xml avec du texte traduit). Est-il possible de générer la dll pour la langue Japonaise sans réouvrir le projet ?
    En d'autres mots, quels outils permettent de prendre un fichier "Form1.jap.resx" pour en faire une dll genre App.resources.dll ???

    Le but est de fournir un moyen à un client d'ajouter des langues à son application facilement.

  2. #22
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Citation Envoyé par Seth77
    Oui, mais si je ne veux pas rattache mes fichiers ressources a une form ...
    tu n'es pas obligé, moi j'ai 7-8 forms et 1 seul fichier resx par langue.
    Il suffit de ne pas utiliser la propriété Localizable de la form.

    Perso, je n'utilise pas les langue sur 4 lettres mais sur 2. Ca évite de faire un fichier US et un GB.

  3. #23
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par fregolo52
    tu n'es pas obligé, moi j'ai 7-8 forms et 1 seul fichier resx par langue.
    Il suffit de ne pas utiliser la propriété Localizable de la form.

    Perso, je n'utilise pas les langue sur 4 lettres mais sur 2. Ca évite de faire un fichier US et un GB.
    Ahhh

    Tu n'aurais pas un exemple parce que la je suis perdu !

  4. #24
    Membre averti

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Points : 356
    Points
    356
    Par défaut
    Tu peux définir des traductions pour l'ensemble d'un projet :

    tu crée un fichier message.resx
    puis par langue, tu crée un autre fichier auquel tu ajoute le préfix de la langue :
    message.en.resx

    il faut juste garder le même nom de fichier
    Ensuite dans chacun de ces fichiers, tu déclare une variable erreur (par exemple)
    Dans message.resx :
    erreur : erreur du système
    Dans message.en.resx :
    erreur : system error

    Ensuite pour utiliser le message tu appel message.erreur
    Et selon la localization du PC, le message s'affichera soit en français (par default), soit en anglais

    Assez clair ?

  5. #25
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par LeGars
    Tu peux définir des traductions pour l'ensemble d'un projet :

    tu crée un fichier message.resx
    puis par langue, tu crée un autre fichier auquel tu ajoute le préfix de la langue :
    message.en.resx

    il faut juste garder le même nom de fichier
    Ensuite dans chacun de ces fichiers, tu déclare une variable erreur (par exemple)
    Dans message.resx :
    erreur : erreur du système
    Dans message.en.resx :
    erreur : system error

    Ensuite pour utiliser le message tu appel message.erreur
    Et selon la localization du PC, le message s'affichera soit en français (par default), soit en anglais

    Assez clair ?
    Je vais essaye ... Merci ...

  6. #26
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Slu

    Comment je fais pour passer d'une langue a l'autre ?

  7. #27
    Membre averti

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Points : 356
    Points
    356
    Par défaut
    Avant ou après (je ne sais plus) la fonction initcomponent() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CultureInfo FrenchCulture = new CultureInfo("fr");
    CultureInfo EnglishCulture = new CultureInfo("en");
     
    System.Threading.Thread.CurrentThread.CurrentUICulture = EnglishCulture;
    // ou
    System.Threading.Thread.CurrentThread.CurrentUICulture = FrenchCulture;

  8. #28
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Ok merci...

    Donc je cree mes fichiers ressources, je peux faire le changement de langue, mais est ce que je dois , lors d'un changement de langue, reafficher tous les controles avec les nouveaux textes ?

    par exemple faire un
    button.text = message.buttonmsg;

    pour les differents controles de la form ?

  9. #29
    Membre averti

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Points : 356
    Points
    356
    Par défaut
    non, en fait t'as deux choses pour le multilingue :

    La partie messages d'erreur, ou autre (avec les fichiers messages.fr.resx, messages.de.resx...)

    La partie interface graphique.
    Pour cette dernière, il faut mettre la propriété Localization à true.
    Tu dessine ta form avec tous les composants et les labels qui vont bien dans la langue par defaut.
    Ensuite pour chaque langue à inclure, tu as la propriété "Language". La valeur par defaut est "defaut". Tu peux la changer pour n'importe quelle langue (par exemple "English". Une fois cela fait, rien ne change en apparance...
    Tu peux alors éditer tous les labels et textes dans la langue des Beatles, tu peux aussi changer la position des composants. Re-sélectionne "defaut" dans language et tous les contrôle seront alors à la langue d'origine. Tu pourra remarque qu'un nouveau fichier .resx est créé pour ta form.

  10. #30
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Ok merci , je vais essaye ...

  11. #31
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par LeGars
    non, en fait t'as deux choses pour le multilingue :

    La partie messages d'erreur, ou autre (avec les fichiers messages.fr.resx, messages.de.resx...)

    La partie interface graphique.
    Pour cette dernière, il faut mettre la propriété Localization à true.
    Tu dessine ta form avec tous les composants et les labels qui vont bien dans la langue par defaut.
    Ensuite pour chaque langue à inclure, tu as la propriété "Language". La valeur par defaut est "defaut". Tu peux la changer pour n'importe quelle langue (par exemple "English". Une fois cela fait, rien ne change en apparance...
    Tu peux alors éditer tous les labels et textes dans la langue des Beatles, tu peux aussi changer la position des composants. Re-sélectionne "defaut" dans language et tous les contrôle seront alors à la langue d'origine. Tu pourra remarque qu'un nouveau fichier .resx est créé pour ta form.

    Salut

    Donc, j'ai essaye

    Mais cela ne marche pas ..
    J'ai bien mis les form en localizable (langue par defaut le francais et j'ai rajoute l'anglais : il a bien rajoute un fichier ressource) et j'ai change les label ; j'ai mis egalement des fichiers ressources avec mes messages d'erreur...
    Quand je change la langue il reste toujours sur les memes labels et le meme message du fichier resource ...

    cf mon code

    @+
    Fichiers attachés Fichiers attachés

  12. #32
    Membre averti

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Points : 356
    Points
    356
    Par défaut
    Plusieurs points :

    1- Pour l'anglais le fichier resources c'est mymessage.en.resx et no .eng.resx

    2- Il faut différencier le fr-FR du fr de même pour en et en-US, se sont des définitions différentes : fr != fr-FR != fr-CA

    3- Le fait d'assigner une culture se fait avant le InitializeComponent()

    Je sais pas comment changer à la volée de culture.

  13. #33
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Comme dit LeGars je pense que tu t'es planté dans tes cultures : tu as défini une culture eng et une culture par défaut et dans tes radio tu appelles la culture française de France et la culture anglaise des US donc à mon avis c'est là que ça merde (ta culture par défaut pourrait très bien être du chinois!), et idem que LeGars : la culture 'anglais des US' est différente de la culture 'anglais tout court'

  14. #34
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    C bon j'ai change le "eng" en "en" ...cela marche maintenant ...

    par contre j'ai pas compris le truc de langue par defaut, si je fais mon app en francais ; c'est le francais la langue par defaut non ?

    Donc si j'ai bien compris il faut "redemarrer" mon app (en enregistrant les prefs de l'utilisateur) si je veux qu'il prenne en compte le changement de langue pour les "labels"

    Donc ci qqn sait comment faire ce changement directement, cela m'interesse !

  15. #35
    Membre averti

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Points : 356
    Points
    356
    Par défaut
    Lorsque ton application va démarrer, elle va demander au système d'exploitation qu'elle est la langue utilisée.

    Exemple :
    Dans application tu as défini les langue suivante :
    Français (par defaut)
    Anglais "en"

    Si le système renvoi :
    - "en" : l'appli utilisera toute seul sa définition en "en"
    - "en-US" : l'appli utilisera la définition en "en" car le prefix est le même
    - "de" : Comme celle ci n'est pas défini, la définition par defaut est utilisée

    Sinon si tu veux qu'un utilisateur anglais travaillant sur un pc réglé en français, puisse avoir l'application dans sa langue préférée, alors oui il faudra redemarrer l'application pour que les changements soit pris en compte (enfin je suppose)

  16. #36
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Ok merci

    Est il possible de specifier la langue par defaut ?

    parce que la finalement l'application ne sait pas vraiment la langue par defaut.....

  17. #37
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    C'est bien ce que je te disais tout à l'heure : tu as beau mettre tes libellés en français ta langue par défaut est peut-être du chinois, l'application ne connaît pas la langue par défaut.
    Il s'agit juste de pouvoir afficher les libellés si l'utilisateur demande de l'allemand par exemple alors que pour ce label tu n'as pas renseigné de traduction allemande.
    Ce qu'il faut faire (je pense) c'est créer une culture française, les cultures des langues que tu désires et en langue par défaut tu mets les mêmes libellés que pr le français.

  18. #38
    Membre averti

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Points : 356
    Points
    356
    Par défaut
    pas besoin alors de créer une locale en français si tu met par defaut tout en francais...

  19. #39
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par LaNat
    C'est bien ce que je te disais tout à l'heure : tu as beau mettre tes libellés en français ta langue par défaut est peut-être du chinois, l'application ne connaît pas la langue par défaut.
    Il s'agit juste de pouvoir afficher les libellés si l'utilisateur demande de l'allemand par exemple alors que pour ce label tu n'as pas renseigné de traduction allemande.
    Ce qu'il faut faire (je pense) c'est créer une culture française, les cultures des langues que tu désires et en langue par défaut tu mets les mêmes libellés que pr le français.

    Salut

    c'est bien ce que je pensais, Merci !

  20. #40
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Citation Envoyé par LeGars
    pas besoin alors de créer une locale en français si tu met par defaut tout en francais...
    Mais s'il a une appli où l'utilisateur peut choisir entre français et anglais par exemple, et que l'utilisateur choisit anglais mais au cas où un label n'a pas de traduction anglaise, il faut bien se rabattre sur une langue par défaut (français par exemple) donc dans ce cas les libellés par défaut seront les mêmes que les libellés français.
    D'un autre côté s'il ne crée pas de culture française il ne pourra pas faire choisir à l'utilisateur la langue française.
    Je me trompe peut-être.

Discussions similaires

  1. [WD10] Application multilangue
    Par zannoubia dans le forum WinDev
    Réponses: 1
    Dernier message: 03/04/2010, 19h47
  2. Réponses: 5
    Dernier message: 04/12/2006, 22h40
  3. [WebForms]Application multilangue avec Images
    Par steelidol dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 13/04/2006, 14h37
  4. Application multilangue
    Par xave dans le forum MFC
    Réponses: 9
    Dernier message: 24/02/2004, 13h53

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