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# 2.0] Visual Studio 2005 et la Localisation


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 118
    Par défaut [C# 2.0] Visual Studio 2005 et la Localisation
    Bonjour,

    Comme vous le devinez j'aimerais utiliser les options de localisation dans .NET 2.0 et VS.NET 2005. J'ai lu tous les tutos et articles et je n'ai toujours pas réponse à une question...

    Je développé quelques Forms en langue anglaise mais sans utiliser la localisation. J'ai activé la localisation sur mes Forms et sélectionné "English" et "French", ce qui me créé deux fichiers Ressources (un .en.resx et un .fr.resx).

    Lorsque je tape mes libellés en français, je me retrouve avec un beau fichier ressource que je peux éditer comme je veux. Mais avec le fichier ressource en anglais, VS.NET s'amuse à effacer mes entrées et à en créer des inutiles... En bref, ma question est : "Comment empêcher VS.NET de zigouiller mes fichiers RESX sachant que je veux les gérer moi-même!".

    Merci de votre réponse.

    Martin

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Par défaut
    La localisation s'effectue directement dans l'éditeur de Form, pas dans les fichiers resx.

    Une fois que tu as sélectionné une langue, tu remplaces tout les champs de texte, puis tu passes aux autres langues, quand tu as terminé, tu remets sur (Default).

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 118
    Par défaut
    Je suis bien d'accord avec ce concept là, mais ce n'est pas pratique... Je vais devoir demander à la traductrice de s'installer Visual Studio ???

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Par défaut
    La méthode que j'utilise personnellement est la suivante:

    A ajouter dans le fichier Program.cs:

    public static class Program
    {
    // blah blah blah..

    private static ResourceManager m_Localization;

    public static ResourceManager Localization
    {
    get
    {
    return m_Localization;
    }
    }

    // blah blah blah..

    public static void Main(String[] args)
    {
    // blah blah blah..

    m_Localization = ResourceManager.CreateFileBasedResourceManager("ApplicationStrings", Application.StartupPath + "/Resources", null);

    // blah blah blah..

    Après avoir ajouté ce code là, tu vas pouvoir accéder à tes strings localisés de la manière suivante:

    String exemple = Program.Localization.GetString("Exemple");

    Maintenant, comment générer la table des strings ?

    Tu créé un fichier texte ayant pour base le nom que tu as passé en paramètre dans la fonction CreateFileBasedResourceManager, en l'occurence ApplicationStrings, suivi d'un point puis de l'indicatif de langue.

    Exemple: "ApplicationStrings.en.txt"

    A l'intérieur, tu créé un listing correspondant à ta table sous la forme suivante:

    Exemple=Example
    BonjourMonde=Hello World !

    C'est à dire, un indice sous forme d'une chaîne de caractères, suivit du symbole =, puis de la traduction.

    L'étape suivante consiste à démarrer une console Visual Studio C++, puis d'exécuter la commande resgen ApplicationStrings.en.txt dans le bon répertoire, ceci va te donner un fichier ressource sous le nom ApplicationStrings.en.resources qui contiendra l'ensemble de la localisation anglaise.

    Tu n'as plus qu'à ajouter ces fichiers dans le répertoire de ton application (dans un sous répertoire resources comme dans mon exemple).

    Personnellement, je traduis les forms moi-même, et j'utilise cette technique pour le texte situé dans les messages d'erreurs, et tout autre objet généré dynamiquement, si tu veux traduire les forms de cette façon, il faudra juste changer les champs de texte dans tes constructeurs, ça peut être une solution pour un gros programme, pour quelque chose de léger, mieux vaut donner un listing et les rentrer ensuite à la main, ça te permettra d'ajuster les longueurs des champs de texte qui diffèrent généralement de 50% avec plusieurs langues.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 118
    Par défaut
    Merci pour toutes ces infos.

    J'ai cependant encore de la difficulté à saisir comment .NET gère le tout. Pourquoi il ne crée par de fichier en.resx et fr.resx identique avec seulement les valeurs qui change ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 48
    Par défaut
    Moi je me créé un fichier ressource pour chaque langue qui regroupe toutes les chaines.

    ex :
    - fichier lang.resx (pour langue par défaut)
    - fichier lang.en.resx (pour langue anglaise)

    Et après j'extrais les ressources en fichier texte pour les données avec excel.

    C'est le plus simple je trouve.

Discussions similaires

  1. [IDE] Visual Studio 2005 Express
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 130
    Dernier message: 23/12/2006, 15h08
  2. En attendant la relève de Visual studio 2005…
    Par farscape dans le forum MFC
    Réponses: 22
    Dernier message: 24/11/2005, 14h27
  3. Réponses: 3
    Dernier message: 18/08/2005, 19h09

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