Procédure pas à pas : localisation de Windows Forms

Le système de projet Visual Studio offre une excellente prise en charge de la localisation des applications Windows Forms. Il existe deux manières de générer des fichiers de ressources à l'aide de l'environnement de développement Visual Studio :

  • Faites en sorte que le système de projet génère les fichiers de ressources pour les éléments localisables de l'interface utilisateur, tels que le texte et les images se trouvant sur le formulaire. Ces fichiers de ressources sont ensuite intégrés dans des assemblys satellites. Ces fichiers sont connus sous le nom de ressources basées sur les formulaires.

  • Ajoutez un modèle de fichier de ressources, puis modifiez le modèle avec le Concepteur XML. Avec cette méthode, vous avez la possibilité de rendre localisables des chaînes qui apparaissent dans les boîtes de dialogue et les messages d'erreur. Vous devez ensuite écrire le code nécessaire pour accéder à ces ressources. Elles sont connues sous le nom de ressources du projet.

  • En général, vous devez utiliser des ressources basées sur les formulaires pour toutes les ressources spécifiques à un formulaire dans votre application Windows Forms. Vous devez utiliser les ressources du projet pour toutes les images et chaînes d'interface utilisateur qui ne sont pas basées sur les formulaires, telles que les messages d'erreur.

Notes

Il est important d'être cohérent et d'utiliser les ressources basées sur les formulaires ou les ressources du projet pour la même propriété. De nombreuses propriétés d'images, telles que la propriété Image pour PictureBox, vous permettent de sélectionner une image des ressources du projet ou d'importer une nouvelle image comme ressource basée sur les formulaires. Si vous essayez de définir l'image par défaut à l'aide d'une ressource du projet et des versions spécifiques à une langue de l'image à l'aide de ressources basées sur les formulaires, l'image par défaut ne sera jamais affichée.

Cette rubrique Procédure pas à pas explique en détail les deux procédures dans un même projet d'application Windows.

Vous pouvez également convertir un fichier texte en un fichier de ressources. Pour plus d'informations, consultez Ressources au format de fichier texte et Resgen.exe (Resource File Generator).

Pour laisser Visual Studio générer les fichiers de ressources

  1. Créez une nouvelle application Windows appelée « WindowsApplication1 ». Pour plus d'informations, consultez Comment : créer un projet d'Application Windows Forms.

  2. Dans la fenêtre Propriétés, affectez true à la propriété Localizable du formulaire.

    La propriété Language a déjà la valeur (Default).

  3. Faites glisser un contrôle Button de l'onglet Windows Forms de la boîte à outils vers le formulaire, puis affectez Hello World à sa propriété Text.

  4. Affectez German (Germany) à la propriété Language du formulaire.

  5. Affectez Hallo Welt à la propriété Text du bouton.

  6. Affectez French (France) à la propriété Language du formulaire.

  7. Affectez Bonjour le Monde à la propriété Text du bouton. Vous pouvez, s'il y a lieu, redimensionner le bouton en fonction de la longueur de la chaîne.

  8. Enregistrez et générez la solution.

  9. Cliquez sur le bouton Afficher tous les fichiers dans l'Explorateur de solutions.

    Les fichiers de ressources apparaissent sous Form1.vb, Form1.cs ou Form1.jsl. Form1.resx est le fichier de ressources destiné à la culture par défaut, lequel sera intégré dans l'assembly principal. Form1.de-DE.resx est le fichier de ressources spécifique à la langue allemande (Allemagne). Quant à Form1.fr-FR.resx, il s'agit du fichier de ressources spécifique à la langue française (France).

    En outre, vous verrez s'afficher des fichiers nommés Form1.de.resx et Form1.fr.resx. Visual Studio crée automatiquement ces fichiers afin de contourner une limitation de Visual SourceSafe concernant l'ajout de nouveaux fichiers à un projet pendant une opération de sauvegarde. Les fichiers .resx sont vides ; ils ne contiennent pas de ressources.

  10. Appuyez sur la touche F5 ou choisissez Démarrer dans le menu Déboguer.

    Une boîte de dialogue s'affiche avec un message de bienvenue en anglais, en français ou en allemand selon la langue de l'interface utilisateur de votre système d'exploitation.

    Notes

    La langue de l'interface utilisateur utilisée dans Windows est une fonction du paramètre CurrentUICulture. Si un Pack d'interface utilisateur multilingue (MUI, Multilingual User Interface Pack) est installé avec votre version de Windows, vous pouvez modifier la langue de l'interface utilisateur dans le Panneau de configuration. Pour plus d'informations, visitez le site sur l'interface utilisateur multilingue de Windows Server 2003, Windows XP et Windows 2000 (éventuellement en anglais). Sinon, vous pouvez modifier la culture de l'interface utilisateur par programmation, comme expliqué ci-dessous.

    La procédure ci-dessous montre comment définir la culture de l'interface utilisateur afin que l'application affiche les ressources en français. Dans une application réelle, la culture de l'interface utilisateur n'est pas codée de manière irréversible de cette façon : la configuration de la culture de l'interface utilisateur dépend plutôt d'un paramètre utilisateur ou d'un paramètre d'application.

Pour configurer la culture de l'interface utilisateur afin d'afficher des ressources spécifiques

  1. Dans l'éditeur de code, ajoutez le code suivant au début du module, avant la déclaration Form1 :

    ' Visual Basic
    Imports System.Globalization
    Imports System.Threading
    
    // C#
    using System.Globalization;
    using System.Threading;
    
  2. Ajoutez le code ci-dessous. En Visual Basic, il doit être placé dans la fonction New, avant l'appel à la fonction InitializeComponent. En Visual C#, il doit être placé dans Form1, également avant l'appel à la fonction InitializeComponent.

    ' Visual Basic
    ' Sets the UI culture to French (France).
    Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-FR")
    
    // C#
    // Sets the UI culture to French (France).
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
    
  3. Enregistrez et générez la solution.

  4. Appuyez sur la touche F5 ou choisissez Démarrer dans le menu Déboguer.

    Désormais, le formulaire s'affichera toujours en français. Si vous avez précédemment redimensionné le bouton pour qu'il puisse accueillir la chaîne française, plus longue, notez que la taille du bouton est persistante dans le fichier de ressources français.

Pour ajouter manuellement des fichiers de ressources au projet et les modifier

  1. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  2. Dans la zone Modèles, sélectionnez le modèle Fichier de ressources. Dans la zone Nom, tapez le nom de fichier « WinFormStrings.resX ». Le fichier WinFormStrings.resx contiendra les ressources de secours en anglais. Ces ressources seront utilisées chaque fois que l'application ne parvient pas à trouver de ressources mieux adaptées à la culture de l'interface utilisateur.

    Le fichier est ajouté à votre projet dans l'Explorateur de solutions et s'ouvre automatiquement dans le Concepteur XML en mode Données.

  3. Dans le volet Tables de données, sélectionnez données.

  4. Dans le volet Données, cliquez sur une ligne vide, puis entrez strMessage dans la colonne nom et Hello World dans la colonne valeur.

    Il n'est pas nécessaire de spécifier le type ou le type MIME pour une chaîne, car ils sont réservés aux objets. Le spécificateur de type contient le type de données de l'objet enregistré. Quant au spécificateur de type MIME, il contient le type de base (base64) des informations binaires stockées, si l'objet est constitué de données binaires.

  5. Dans le menu Fichier, cliquez sur Enregistrer WinFormStrings.resX.

  6. Effectuez deux autres fois les étapes 1 à 5, afin de créer deux autres fichiers de ressources nommés WinFormStrings.de-DE.resx et WinFormStrings.fr-FR.resx, avec les ressources de type chaîne spécifiées dans le tableau suivant : Le fichier WinFormStrings.de-DE.resx contiendra les ressources spécifiques à l'allemand (Allemagne). Quant au fichier WinFormStrings.fr-FR.resx, il contiendra les ressources spécifiques au français (France).

    Nom du fichier de ressources

    Nom

    Valeur

    WinFormStrings.de-DE.resx

    strMessage

    Hallo Welt

    WinFormStrings.fr-FR.resx

    strMessage

    Bonjour le Monde

Pour accéder aux ressources ajoutées manuellement

  1. Dans l'éditeur de code, importez l'espace de noms System.Resources au début du module de code.

    ' Visual Basic
    Imports System.Resources
    
    // C#
    using System.Resources;
    
  2. En mode Design, double-cliquez sur le bouton pour afficher le code du gestionnaire d'événements Click correspondant, puis ajoutez le code suivant. Le constructeur ResourceManager prend deux arguments. Le premier est le nom racine des ressources, à savoir le nom du fichier de ressources sans les suffixes de culture et .resx. Le second argument est l'assembly principal.

    Dans cette procédure pas à pas, aucun espace de noms n'est déclaré. Le premier argument du constructeur ResourceManager peut donc se présenter sous la forme ProjectName.ResourceFileRootName. Dans une application réelle, toutefois, vous définissez généralement la propriété DefaultNamespace. Dans ce cas, vous devriez déclarer le gestionnaire de ressources avec le nom racine qualifié complet du fichier de ressources, y compris son espace de noms. Par exemple, si l'espace de noms par défaut est MyCompany.MyApplication.MyComponent, le premier argument du constructeur ResourceManager peut être MyCompany.MyApplication.MyComponent.WinFormStrings.

    ' Visual Basic
    ' Declare a Resource Manager instance.
    Dim LocRM As New ResourceManager("WindowsApplication1.WinFormStrings", GetType(Form1).Assembly)
    ' Assign the string for the "strMessage" key to a message box.
    MessageBox.Show(LocRM.GetString("strMessage"))
    
    // C#
    // Declare a Resource Manager instance.
    ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings",typeof(Form1).Assembly);
    // Assign the string for the "strMessage" key to a message box.
    MessageBox.Show(LocRM.GetString("strMessage"));
    

    Notes

    Par défaut, l'objet ResourceManager respecte la casse. Si vous voulez effectuer des recherches ne respectant pas la casse de sorte que "TXTWELCOME" récupère les mêmes ressources que "txtWelcome", vous pouvez affecter true à la propriété IgnoreCase du gestionnaire de ressources. Pour des raisons de performances toutefois, il est préférable de toujours spécifier la casse correcte pour les noms de ressources. L'exécution de recherches de ressources ne respectant pas la casse peut induire une baisse des performances.

  3. Générez et exécutez le formulaire. Cliquez sur le bouton.

    Le message affiche une chaîne qui est fonction de la valeur de la culture d'interface utilisateur mais, si l'application ne parvient pas à trouver une ressource pour la culture d'interface utilisateur, elle affiche une chaîne issue des ressources de secours.

Voir aussi

Tâches

Comment : définir la culture et la culture de l'interface utilisateur pour la globalisation des Windows Forms