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 :

[Best practice] Internationalisation dans librairie


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut [Best practice] Internationalisation dans librairie
    Bonsoir à tous,

    Je suis actuellement en train de développer une petite application afin de mettre en pratique différentes choses que j'ai pu lire par ci par la mais qui permettent d'améliorer le process de dev et la maintenance (injection de dépendances, design patterns...).
    Tant qu'à faire, je me suis dit que j'allais internationaliser mon appli pour tester car je dois avouer que je ne l'ai jamais fait.
    Jusque là tout fonctionne bien, j'ai bien une appli multi langues mais maintenant je m'interesse au concret, à vos expériences et façon de faire.
    Voici le contexte :
    Imaginons une appli divisée en plusieurs projets dont certains sont des projets dits "utilitaires" ou "réutilisables" comme vous préférez. Donc en gros, j'ai cherché a internationaliser des projets que je vais réutiliser dans d'autres applis. Ce sont en général des librairies de codes divers et variés.

    Ce que je voulais savoir c'est comment vous procédez pour implanter ce genre de systeme, avez vous des astuces, des trucs qui font que c'est moins galere ?

    Voici comment moi je procède :
    J'ajoute un fichier de resources nommé "maclasse.resx" pour la ressource par défaut (en anglais) et un fichier de resources nommé "maclasse.fr.resx" pour la ressource en francais.
    Ensuite dans ma librairie, par exemple sur un throw new exception(le message) je fais appel à ma ressource.
    Le fait de devoir instancier à chaque fois le resourcemanager puis d'appeler le getstring, ca me broutait un peu, je trouvais que ca manquait un peu d'automatisme, j'ai donc créé une fonction "utilitaire" qui me permet de faire ca en une seule ligne :

    La fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Public Shared Function GetResourceString(ByVal CallingObjectType As Type, ByVal Name As String) As String
            Try
                Dim rm As New Resources.ResourceManager(CallingObjectType.Assembly.GetName.Name & "." & CallingObjectType.Name, CallingObjectType.Assembly)
                Return rm.GetString(Name)
            Catch ex As Exception
                Return "Error : No language resource found"
            End Try
        End Function
    L'appel à la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Throw New Exception(Utils.GetResourceString(GetType(MaClasse), "Maclasse_MaMethode_Exception"))
    Qu'en pensez vous ? y'a-t-il meilleure solution ?
    Merci d'avance

    A bientot

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Euh... tu te compliquerais pas un peu la vie pour rien ?

    Quand tu crées un fichier resx, Visual Studio te crée automatiquement le code VB qui va avec, qui permet d'accéder facilement aux ressources. Donc si ton fichier de ressources s'appelle Toto et qu'il contient une ressource Titi, tu peux y accéder via My.Resources.Toto.Titi

    Si tu tiens à le faire à la main, mets au moins le ResourceManager en cache pour ne pas le recréer à chaque fois, sinon tu vas plomber les perfs...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Oh my god ! je vais me cacher dans un trou... J'utilise my.resources tous les jours et je suis pas foutu de m'en servir pour ca


    Merci... et no comment ^^

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/05/2013, 16h50
  2. Réponses: 1
    Dernier message: 15/02/2010, 10h39
  3. [Best Practice] Control2d dans 3d : garder les proportions du controle 2d
    Par zax-tfh dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 24/09/2009, 16h34
  4. MySQL : Best Practice : Nombre de champ dans une table
    Par Ziquet dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/05/2008, 16h18

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