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 Presentation Foundation Discussion :

Internationalisation d'une application


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier Avatar de LeonardL
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 57
    Points : 71
    Points
    71
    Par défaut Internationalisation d'une application
    Bonjour à tous,

    J'essaye de rendre une application WPF disponible dans plusieurs langages mais les solutions que je trouve sur internet me semble un peu lourde (l'article http://www.codeproject.com/KB/WPF/WPFUsingLocbaml.aspx semble être le plus pertinent). Je me demande donc s'l y a du nouveau à ce sujet avec .Net 4. Vous avez des infos ?

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    voici une solution simple

    dans le app.xaml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                      <!--! Must be in first position -->
                    <ResourceDictionary Source="Resources\Lang_En.xaml" />
    et tu cree un fichier par lanque
    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <ResourceDictionary
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:system="clr-namespace:System;assembly=mscorlib">
     
      <!-- String resource form menu -->
      <system:String x:Key="T_FILE">Fichiers</system:String>
          <system:String x:Key="T_DIVS">Divers</system:String>
          <system:String x:Key="T_QUIT">Quitter</system:String>
      <system:String x:Key="T_FUNC">Fonctions</system:String>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <ResourceDictionary
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:system="clr-namespace:System;assembly=mscorlib">
     
        <!-- String resource for MENU -->
        <system:String x:Key="T_FILE">File</system:String>
        <system:String x:Key="T_DIVS">Misc.</system:String>
        <system:String x:Key="T_QUIT">Quit</system:String>
    quand tu veux changer de langue tu remplace le premiere dictionnaire dans les mergesdictionary, par celui que tu veux (que tu met en premiere place)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            private void SetTranslation(string _Lang)
            {
                Collection<ResourceDictionary> mergedDicts = Application.Current.Resources.MergedDictionaries;
                if (_Lang == null) return;
                Application.Current.Resources.MergedDictionaries.RemoveAt(0);
                Uri uri = new Uri(_Lang, UriKind.Relative);
                ResourceDictionary dic = Application.LoadComponent(uri) as ResourceDictionary;
                Application.Current.Resources.MergedDictionaries.Insert(0, dic);
            }

    puis pour utiliser
    <MenuItem Header="{DynamicResource T_DIVS}"/>

    tu peux bien entendu mettre ce que tu veux dans les resources y compris des images
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  3. #3
    Membre régulier Avatar de LeonardL
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    Nickel, merci bien

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    j'ai fait un article sur mon blog
    peut etre un peu plus precis (avec utilisation d'un menu)

    http://www.dsw.fr/blogs/admin.php?ct...ms&blog=5&p=85
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  5. #5
    Membre régulier Avatar de LeonardL
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    Super ça servira surement à d'autres

    Par contre tu t'es planté dans le lien :p
    Celui ci est mieux : http://www.dsw.fr/blogs/index.php?p=...&c=1&tb=1&pb=1

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    oui c'est possible je devais etre en administration ehehehehehe
    merci
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  7. #7
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Hello,

    j'utilise l'article de ton blog pour l'internationalisation mais je ne comprends pas ta méthode setTranslation.

    A quoi sert de supprimer le 1er élément de la collection et ensuite de le rajouter?
    Dans mon cas quelque soit la langue sélectionné, j'ai toujours la meme langue

    voici celle que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            private void LoadCulture()
            {
                 if(string.IsNullOrEmpty(ManageLanguage.GetLanguage()))
                    ManageLanguage.SetLanguage(System.Globalization.CultureInfo.CurrentCulture.DisplayName.Split(" ".ToCharArray())[0].ToString(), System.Globalization.CultureInfo.CurrentCulture.TwoLetterISOLanguageName.ToUpper());
     
     
                    Collection<ResourceDictionary> mergedDicts = System.Windows.Application.Current.Resources.MergedDictionaries;               
                    System.Windows.Application.Current.Resources.MergedDictionaries.RemoveAt(0);
                    Uri uri = new Uri(string.Format(@".\Resources\Lang\Lang-{0}.xaml",ManageLanguage.GetLanguageCode()), UriKind.Relative);
                    ResourceDictionary dic = System.Windows.Application.LoadComponent(uri) as ResourceDictionary;
                    System.Windows.Application.Current.Resources.MergedDictionaries.Insert(0, dic);
            }
    App.xaml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Resources\Lang\Lang-EN.xaml" />
                    <ResourceDictionary Source="Resources\Lang\Lang-FR.xaml" />

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    ecoute chez moi ca marche, si tu utilise le menu langue que j'ai mis aussi
    tu verra ca fonctionne
    sinon fait moi un tit projet exemple je regarderais pourquoi ca marche pas
    ......
    plus generalement il faut mettre le dictionnaire de la langue qu'on veut en premiere position
    passe de fr, en a en, fr
    ou carement n'en laisser qu'un celui qu'on veut
    pour le cote premiere position c'est pour que ce soit plus simple, maitenant on pourrais le mettre ou on veut, mais c'est le premier dans l'ordre qui definie la langue en cours
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  9. #9
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    J'ai trouvé mon érreur.
    CA vient de mon string format.
    En fait il converti les "\" en "\\" donc aprés il comprend plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Uri uri = new Uri(string.Format(@".\Resources\Lang\Lang-{0}.xaml",ManageLanguage.GetLanguageCode()), UriKind.Relative);
    Comment on empeche cela?

    [edit]
    Apparemment c'est le débugueur qui affiche les \\ mais en réalité il n'y en a qu'une...

    Mais j'ai toujours un problème, la pripriété 'source' de mon ressource dictionnary est null ...

    [/edit]

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    Citation Envoyé par Gregory.M Voir le message

    [edit]
    Apparemment c'est le débugueur qui affiche les \\ mais en réalité il n'y en a qu'une...
    ca c'est normal car la caractere \ est caractere qui permet de signifier un caractere d'echapement en code fo mettre \\
    un peut comme le \n

    Citation Envoyé par Gregory.M Voir le message
    Mais j'ai toujours un problème, la pripriété 'source' de mon ressource dictionnary est null ...
    ca c'est par ce que tu dois t'addresser au mauvais dictionnaire (enfin je crois)
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  11. #11
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    J'ai fait un nouveau pour tester, et je n'y arrive toujours pas

    le projet est joint.
    Fichiers attachés Fichiers attachés

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    fait ca et ca regle tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="test\Dictionary1.xaml" />
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    avec une appli c'est quand meme plus simple eheheheheheh
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  13. #13
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Citation Envoyé par ikeas Voir le message
    fait ca et ca regle tout
    avec une appli c'est quand meme plus simple eheheheheheh
    ah oui effectivement

    Merci de ton aide

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    je crois que ca doit faire un probleme quand tu as deux fois le meme dico en fait
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Internationalisation d'une application
    Par Dekdek3578 dans le forum Discussions diverses
    Réponses: 0
    Dernier message: 23/03/2010, 16h32
  2. Réponses: 2
    Dernier message: 01/10/2009, 15h33
  3. Internationalisation d'une application en Java
    Par dduke dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/04/2007, 16h22
  4. [Unicode] Internationalisation d'une application
    Par Thierry Laborde dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2003, 20h15

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