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

C# Discussion :

Localisation d'une appli


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut Localisation d'une appli
    Bonjour a tous,

    J'ai créé une petite appli dont je souhaite changer la langue affichée en fonction de la langue de Windows.

    En gros:
    - si langue Windows en Français, appliquer un fichier ressources en Français que j'ai appelé Res.fr.resx
    - si langue Windows AUTRE que le Français, appliquer un fichier ressource en Anglais que l'ai appelé Res.en.resx

    Je souhaiterai appliquer cela au lancement de l'application mais je ne sais pas trop comment faire... Pourriez-vous m'aider?

    Merci

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Quelle techno ? WPF ? WinForms ? ASP.NET ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    oups j'ai oublié de préciser.

    Il s'agit d'un service windows développé avec VS2008. Je souhaite créer un logfile localisé en fonction de la langue de l'OS.

    Par exemple indiquer les info en Français si la langue de l'OS en le Français et si il s'agit d'une autre langue mettre les info en Anglais.

    Les infos dans le log sont du type "Service démarré", "Service stoppé" ect....

    J'ai déjà créé mes deux fichiers de ressource avec les deux langues que j'ai ajouté à mon projet:
    > Resource\Res.en.resx
    > Resource\Res.fr.resx

    Dans mon projet, j'ai ajouté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    using System.Globalization;
    using System.Resources;
     
     
    ResourceManager rm;   
    CultureInfo culture;
    Pour appeler le bon string à ecrire dans mon logfile en fonction de la langue, j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Library.WriteErrorLog(rm.GetString("StartServiceInfo", culture));
    Par contre ce que je ne sais pas faire, c'est:

    - récupérer la langue d'affichage de l'OS
    - en fonction de cette langue choisir le bon fichier de ressource


    Merci pour votre aide

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    Bonjour,

    J'ai testé cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    private void VerifLanguage()
            {
                culture = CultureInfo.InstalledUICulture;
                rm = new ResourceManager("MoveQCFiles.Resource.Res", typeof(Service1).Assembly);
     
                if (culture.Name == "fr-FR")
                {
                   culture = CultureInfo.CreateSpecificCulture("fr");
                }
                else
                {
                     culture = CultureInfo.CreateSpecificCulture("en");
                }
     
            }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Library.WriteErrorLog(rm.GetString("StartServiceInfo", culture));
    sans succès....

    Un idée de ce que je fais de travers?

  5. #5
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Il y a eu un grands débat côté VbNet à ce sujet pour en arriver à cette procédure :

    http://www.developpez.net/forums/d14...x/#post7633115

    Bon codage.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    Hello

    Je reviens vers vous car je n'arrive pas à m'en sortir et je ne vois pas d'ou viens mon problème.

    J'ai ajouter mes fichiers ressources comme suit:

    Nom : Capture.PNG
Affichages : 223
Taille : 9,4 Ko

    j'ai declaré mon ressourcemanager et mon cultureinfo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public static ResourceManager rm;  
    public static CultureInfo culture;
    Pour recuperer le cultureInfo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     private void VerifLanguage()
            {
     
                rm = new ResourceManager("MoveQCFiles.Resource.Res", typeof(Service1).Assembly);
                culture = CultureInfo.InstalledUICulture;
     
                if (culture.Name == "fr-FR")
                {
                    culture = CultureInfo.CreateSpecificCulture("fr");
                    Thread.CurrentThread.CurrentCulture = culture;
                    Thread.CurrentThread.CurrentUICulture = culture;
     
                }
                else
                {
                    culture = CultureInfo.CreateSpecificCulture("en");
                    Thread.CurrentThread.CurrentCulture = culture;
                    Thread.CurrentThread.CurrentUICulture = culture;
                }
     
            }
    Enfin pour traduire les messages de mon logfiles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Library.WriteErrorLog(rm.GetString("String1", culture));
    Quand mon PC est en Français, le prog va bien chercher les strings dans le fichier Resource.Res.resx, par contre dans une autre langue, cela va piocher toujours dans le même fichier et non pas le Resource.Res.en.resx

    Je pige pas comment ce qui cloche....

    Merci pour votre aide

Discussions similaires

  1. erreur d'un ResourceManager dans une appli localisable
    Par jejemimi dans le forum VB.NET
    Réponses: 0
    Dernier message: 10/05/2011, 01h56
  2. Linker une appli en C++Builder 6, sous Window
    Par toni dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/12/2004, 09h04
  3. Utilisateurs d'une appli delphi+paradox
    Par Jacques Deyrieux dans le forum Paradox
    Réponses: 2
    Dernier message: 11/12/2002, 18h41
  4. Réponses: 1
    Dernier message: 22/08/2002, 17h00
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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