Partager via


Comment : localiser une application

Ce didacticiel explique comment créer une application localisée à l'aide de l'outil LocBaml.

RemarqueRemarque

L'outil LocBaml n'est pas une application prête à la production.Elle est présentée comme un exemple qui utilise quelques-unes des API de localisation et illustre comment vous pouvez écrire un outil de localisation.

Cette rubrique comprend les sections suivantes.

  • Vue d'ensemble
  • Configuration requise
  • Créer un exemple d'application
  • Créer l'assembly satellite des ressources du langage neutre
  • Générer l'outil LocBaml
  • Utiliser LocBaml pour analyser un fichier
  • Traduire le contenu localisable
  • Utiliser LocBaml pour générer un nouveau fichier .resources.dll
  • Quelques conseils pour utiliser LocBaml
  • Quoi d'autre ?
  • Rubriques connexes

Vue d'ensemble

Cette discussion vous donne une approche pas à pas de la localisation d'une application. Vous commencez par préparer votre application de sorte que le texte qui sera traduit puisse être extrait. Après avoir traduit le texte, vous fusionnerez le texte traduit dans une nouvelle copie de l'application d'origine.

Configuration requise

Au fil de cette discussion, vous utiliserez Microsoft build engine (MSBuild), qui est un compilateur qui s'exécute à partir de la ligne de commande.

Vous apprendrez également à utiliser un fichier projet. Pour les instructions d'utilisation de MSBuild et des fichiers projet, consultez Génération et déploiement d'applications WPF.

Tous les exemples dans cette discussion utilisent l'anglais américain (en-US, English-US) comme culture. Cela vous permet d'exécuter les étapes des exemples sans devoir installer une langue différente.

Créer un exemple d'application

Dans cette étape, vous aller préparer votre application pour la localisation. Dans les exemples Windows Presentation Foundation (WPF), un exemple HelloApp est fourni que sera utilisé pour les exemples de code dans cette discussion. Si vous souhaitez utiliser cet exemple, téléchargez les fichiers Extensible Application Markup Language (XAML) depuis l'Outil LocBaml, exemple.

  1. Développez votre application jusqu'au stade où vous souhaitez démarrer la localisation.

  2. Spécifiez le langage de développement dans le fichier projet afin que MSBuild génère un assembly principal et un assembly satellite (un fichier avec l'extension .resources.dll) pour contenir les ressources de langage neutres. Le fichier projet dans l'exemple HelloApp est HelloApp.csproj. Dans ce fichier, vous trouverez le langage de développement identifié comme suit :

    <UICulture>en-US</UICulture>

  3. Ajoutez des Uid à vos fichiers XAML. Les Uid sont utilisés pour effectuer le suivi des modifications apportées aux fichiers et identifier des éléments qui doivent être traduits. Pour ajouter des Uid à vos fichiers, exécutez updateuid sur votre fichier projet :

    msbuild /t:updateuid helloapp.csproj

    Pour vérifier qu'il ne vous manque aucun Uid ou que vous n'avez pas d'Uid en double, exécutez checkuid :

    msbuild /t:checkuid helloapp.csproj

    Après avoir exécuté updateuid, vos fichiers devraient contenir des Uid. Par exemple, vous devriez trouver dans le fichier Pane1.xaml de HelloApp les éléments suivants :

    <StackPanel x:Uid="StackPanel_1">

      <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>

      <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>

    </StackPanel>

Créer l'assembly satellite des ressources du langage neutre

Après avoir configuré l'application pour générer un assembly satellite des ressources du langage neutre, vous générez l'application. Cela génère l'assembly d'application principal, ainsi que l'assembly satellite des ressources du langage neutre requis par LocBaml pour la localisation. Pour générer l'application :

  1. Compilez HelloApp pour créer un dynamic-link library (DLL) :

    msbuild helloapp.csproj

  2. L'assembly d'application principal qui vient d'être créé, HelloApp.exe, est créé dans le dossier suivant :

    C:\HelloApp\Bin\Debug\

  3. L'assembly satellite des ressources du langage neutre qui vient d'être créé, HelloApp.resources.dll, est créé dans le dossier suivant :

    C:\HelloApp\Bin\Debug\en-US\

Générer l'outil LocBaml

  1. Tous les fichiers nécessaires pour générer LocBaml sont localisés dans les exemples WPF. Téléchargez les fichiers C# depuis l'Outil LocBaml, exemple.

  2. À partir de la ligne de commande, exécutez le fichier projet (locbaml.csproj) pour générer l'outil :

    msbuild locbaml.csproj

  3. Accédez au répertoire Bin\Release pour rechercher le fichier exécutable qui vient d'être créé (locbaml.exe). Exemple : C:\LocBaml\Bin\Release\locbaml.exe.

  4. Les options que vous pouvez spécifier quand vous exécutez LocBaml sont les suivantes :

    • parse ou -p: Analyse Baml, les ressources ou les fichiers DLL pour générer un fichier .csv ou .txt.

    • generate ou -g: Génère un fichier binaire localisé en utilisant un fichier traduit.

    • out ou -o [répertoirefichiers]: Nom du fichier de sortie.

    • culture ou -cul [culture]: Paramètres régionaux des assemblys de sortie.

    • translation ou -trans [translation.csv]: Fichier traduit ou localisé.

    • asmpath ou -asmpath: [répertoirefichiers]: Si votre code XAML contient des contrôles personnalisés, vous devez fournir asmpath à l'assembly de contrôle personnalisé.

    • nologo: N'affiche aucun logo ou information de copyright.

    • verbose: Affiche des informations détaillées.

    RemarqueRemarque

    Si vous avez besoin d'une liste des options lorsque vous exécutez l'outil, tapez LocBaml.exe et appuyez sur ENTRÉE.

Utiliser LocBaml pour analyser un fichier

Maintenant que vous avez créé l'outil LocBaml, vous êtes prêt à l'utiliser pour analyser HelloApp.resources.dll pour extraire le contenu de texte qui sera localisé.

  1. Copiez LocBaml.exe dans le dossier bin\debug de votre application, où l'assembly d'application principal a été créé.

  2. Pour analyser le fichier assembly satellite et stocker la sortie sous forme d'un fichier .csv, utilisez la commande suivante :

    LocBaml.exe /parse en-US/HelloApp.resources.dll /out:Hello.csv

    RemarqueRemarque

    Si le fichier d'entrée, HelloApp.resources.dll, n'est pas dans le même répertoire que LocBaml.exe, déplacez l'un des fichiers afin que les deux fichiers soient dans le même répertoire.

  3. Lorsque vous exécutez LocBaml pour analyser des fichiers, la sortie se compose de sept champs délimités par des virgules (fichiers .csv) ou des tabulations (fichiers .txt). Les éléments suivants montrent le fichier .csv analysé pour HelloApp.resources.dll :

    HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2;

    HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hello World

    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World

    Les sept champs sont :

    1. Nom BAML. Le nom de la ressource BAML par rapport à l'assembly satellite de langage source.

    2. Clé de ressource. L'identificateur de ressource localisé.

    3. Catégorie. Le type valeur. Consultez Attributs et commentaires de localisation.

    4. Lisibilité. Si la valeur peut être lue par un localisateur. Consultez Attributs et commentaires de localisation.

    5. Modifiabilité. Si la valeur peut être modifiée par un localisateur. Consultez Attributs et commentaires de localisation.

    6. Commentaires Description supplémentaire de la valeur pour aider à déterminer comment une valeur est localisée. Consultez Attributs et commentaires de localisation.

    7. Valeur La valeur du texte à traduire vers la culture désirée.

    Le tableau suivant montre comment ces champs sont mappés aux valeurs délimitées du fichier .csv :

    Nom de BAML

    Clé de ressource

    Catégorie

    Lisibilité

    Modifiabilité

    Commentaires

    Valeur

    HelloApp.g.en-US.resources:window1.baml

    Stack1:System.Windows.Controls.StackPanel.$Content

    Ignore

    FALSE

    FALSE

    #Text1;#Text2

    HelloApp.g.en-US.resources:window1.baml

    Text1:System.Windows.Controls.TextBlock.$Content

    Aucun

    TRUE

    TRUE

    Hello World

    HelloApp.g.en-US.resources:window1.baml

    Text2:System.Windows.Controls.TextBlock.$Content

    Aucun

    TRUE

    TRUE

    Goodbye World

    Vous remarquerez que toutes les valeurs pour le champ Comments ne contiennent pas de valeurs ; si un champ ne contient pas de valeur, il est vide. Vous remarquerez également que l'élément dans la première ligne n'est ni lisible ni modifiable, et a "Ignore" comme valeur pour sa Category, tout ceci indiquant que la valeur n'est pas localisable.

  4. Pour faciliter la découverte d'éléments localisables dans les fichiers analysés, en particulier dans des fichiers volumineux, vous pouvez trier ou filtrer les éléments par Catégorie, Lisibilité et Modifiabilité. Par exemple, vous pouvez éliminer par filtrage les valeurs illisibles et non modifiables.

Traduire le contenu localisable

Utilisez n'importe quel outil dont vous disposez pour traduire le contenu extrait. Une bonne méthode pour ce faire consiste à écrire les ressources dans un fichier .csv et de les consulter dans Microsoft Excel, en apportant des modifications à la traduction dans la dernière colonne (valeur).

Utiliser LocBaml pour générer un nouveau fichier .resources.dll

Le contenu identifié en analysant HelloApp.resources.dll avec LocBaml a été traduit et doit être fusionné dans l'application d'origine. Utilisez l'option generate ou -g pour générer un nouveau fichier .resources.dll.

  1. Utilisez la syntaxe suivante pour générer un nouveau fichier HelloApp.resources.dll. Marquez la culture comme en-US (/cul:en-US).

    LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US

    RemarqueRemarque

    Si le fichier d'entrée, Hello.csv, n'est pas dans le même répertoire que le fichier exécutable LocBaml.exe, déplacez l'un des fichiers afin que les deux fichiers soient dans le même répertoire.

  2. Remplacez l'ancien fichier HelloApp.resources.dll dans le répertoire C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll par votre nouveau fichier créé HelloApp.resources.dll.

  3. "Hello World" et "Goodbye World" doivent maintenant être traduits dans votre application.

  4. Pour traduire vers une culture différente, utilisez la culture de la langue vers laquelle vous traduisez. L'exemple suivant montre comment traduire en français du Canada :

    LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA

  5. Dans le même assembly que l'assembly d'application principal, créez un nouveau dossier spécifique à une culture pour recevoir le nouvel assembly satellite. Pour le français du Canada, le dossier serait fr-CA.

  6. Copiez l'assembly satellite généré dans le nouveau dossier.

  7. Pour tester le nouvel assembly satellite, vous devez modifier la culture sous laquelle votre application s'exécutera. Vous pouvez le faire de deux façons :

    • Modifiez les paramètres régionaux de votre système d'exploitation (Démarrer | Panneau de configuration | Options régionales et linguistiques).

    • Dans votre application, ajoutez le code suivant à App.xaml.cs :

      <Application
          xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
          x:Class="SDKSample.App"
          x:Uid="Application_1"
          StartupUri="Window1.xaml">
      </Application>
      
      
      Imports System.Windows ' Application
      Imports System.Globalization ' CultureInfo
      Imports System.Threading ' Thread
      
      Namespace SDKSample
          Partial Public Class App
              Inherits Application
              Public Sub New()
                  ' Change culture under which this application runs
                  Dim ci As New CultureInfo("fr-CA")
                  Thread.CurrentThread.CurrentCulture = ci
                  Thread.CurrentThread.CurrentUICulture = ci
              End Sub
          End Class
      End Namespace
      
      using System.Windows; // Application
      using System.Globalization; // CultureInfo
      using System.Threading; // Thread
      
      namespace SDKSample
      {
          public partial class App : Application
          {
              public App()
              {
                  // Change culture under which this application runs
                  CultureInfo ci = new CultureInfo("fr-CA");
                  Thread.CurrentThread.CurrentCulture = ci;
                  Thread.CurrentThread.CurrentUICulture = ci;
              }
          }
      }
      

Quelques conseils pour utiliser LocBaml

  • Tous les assemblys dépendants qui définissent des contrôles personnalisés doivent être copiés dans le répertoire local de LocBaml ou installé dans le GAC. Ceci est nécessaire parce que l'API de localisation doit avoir accès aux assemblys dépendants lorsqu'il lit le binary XAML (BAML).

  • Si l'assembly principal est signé, la DLL de ressource générée doit également être signée pour pouvoir être chargée.

  • La version de la DLL de ressource localisée doit être synchronisée avec l'assembly principal.

Quoi d'autre ?

Vous devez maintenant avoir compris les notions fondamentales d'utilisation de l'outil LocBaml. Vous devez être en mesure de créer un fichier contenant des Uid. À l'aide de l'outil LocBaml, vous devez être en mesure d'analyser un fichier pour extraire le contenu localisable, et après avoir traduit le contenu, vous devez être en mesure de générer un fichier .resources.dll qui fusionne le contenu traduit. Cette rubrique n'inclut pas tous les détails possibles, mais vous possédez maintenant les connaissances nécessaires pour utiliser LocBaml pour localiser vos applications.

Voir aussi

Concepts

Globalisation pour WPF

Vue d'ensemble de l'utilisation de la disposition automatique