Vue d’ensemble de la globalisation et de la localisation WPF

Lorsque vous limitez la disponibilité de votre produit à une seule langue, vous limitez votre base de clients potentielle à une fraction de notre population mondiale de 7,5 milliards. Si vous voulez que vos applications atteignent une audience mondiale, la localisation est le meilleur moyen, et le plus rentable, pour que votre produit atteigne plus de clients.

Cette vue d’ensemble présente la globalisation et la localisation dans WINDOWS Presentation Foundation (WPF). La globalisation consiste à concevoir et à développer des applications qui s’exécutent dans plusieurs endroits. Par exemple, la globalisation prend en charge des interfaces utilisateur localisées et des données régionales pour les utilisateurs de différentes cultures. WPF fournit des fonctionnalités de conception mondialisées, notamment la disposition automatique, les assemblys satellites et les attributs localisés et les commentaires.

La localisation est la traduction des ressources d’une application dans les versions localisées pour des cultures spécifiques prises en charge par l’application. Lorsque vous localisez dans WPF, vous utilisez les API dans l’espace System.Windows.Markup.Localizer de noms. Ces API servent de base à l’outil en ligne de commande de l’exemple d’outil LocBaml. Pour plus d’informations sur la génération et l’utilisation de LocBaml, consultez Localiser une application.

Avertissement

L’outil LocBaml fonctionne uniquement avec WPF pour les projets .NET Framework, il ne fonctionne pas avec WPF pour .NET.

Bonnes pratiques pour la globalisation et la localisation dans WPF

Vous pouvez tirer le meilleur parti des fonctionnalités de globalisation et de localisation intégrées à WPF en suivant la conception de l’interface utilisateur et les conseils liés à la localisation fournis par cette section.

Bonnes pratiques pour la conception de l’interface utilisateur WPF

Lorsque vous concevez une interface utilisateur basée sur WPF, envisagez d’implémenter ces meilleures pratiques :

  • Écrire votre interface utilisateur en XAML ; évitez de créer une interface utilisateur dans le code. Lorsque vous créez votre interface utilisateur à l’aide de XAML, vous l’exposez via des API de localisation intégrées.

  • Évitez d’utiliser des positions absolues et des tailles fixes pour présenter le contenu ; utilisez à la place le dimensionnement relatif ou automatique.

    • Utilisez SizeToContent et conservez les largeurs et les hauteurs définies sur Auto.

    • Évitez d’utiliser Canvas pour disposer des interfaces utilisateur.

    • Utiliser Grid et sa fonctionnalité de partage de taille.

  • Prévoyez de l’espace supplémentaire dans les marges, car le texte localisé nécessite souvent plus d’espace. Cet espace supplémentaire permet d’accepter les caractères qui dépasseraient.

  • Activez cette option TextWrappingTextBlock pour éviter le découpage.

  • Définissez l’attribut xml:lang . Cet attribut décrit la culture d’un élément spécifique et ses éléments enfants. La valeur de cette propriété modifie le comportement de plusieurs fonctionnalités dans WPF. Par exemple, elle change le comportement de la coupure des mots, la vérification orthographique, la substitution des nombres, la mise en forme des scripts complexes et la police de substitution. Consultez Globalisation pour WPF pour plus d’informations sur la définition de la Gestion de xml:lang dans XAML.

  • Créez une police composite personnalisée pour obtenir un meilleur contrôle des polices qui sont utilisées pour les différentes langues. Par défaut, WPF utilise la police GlobalUserInterface.composite dans votre répertoire Windows\Fonts.

  • Lorsque vous créez des applications de navigation qui peuvent être localisées dans une culture qui présente du texte dans un format de droite à gauche, définissez explicitement la FlowDirection page pour vous assurer que la page n’hérite pas de l’élément FlowDirectionNavigationWindow.

  • Lorsque vous créez des applications de navigation autonomes hébergées en dehors d’un navigateur, définissez l’application StartupUri initiale sur une NavigationWindow page (par exemple, <Application StartupUri="NavigationWindow.xaml">). Cette conception vous permet de modifier la FlowDirection fenêtre et la barre de navigation. Pour plus d’informations et un exemple, consultez Globalization Homepage Sample.

Bonnes pratiques pour la localisation WPF

Lorsque vous localisez des applications WPF, envisagez d’implémenter ces meilleures pratiques :

  • Utilisez des commentaires de localisation pour fournir un contexte supplémentaire pour les localiseurs.

  • Utilisez des attributs de localisation pour contrôler la localisation au lieu d’omettre sélectivement les Uid propriétés sur les éléments. Pour plus d’informations, consultez Attributs et commentaires de localisation.

  • Utilisez msbuild -t:updateuid et -t:checkuid ajoutez et case activée Uid propriétés dans votre code XAML. Utilisez Uid des propriétés pour suivre les modifications entre le développement et la localisation. Uid les propriétés vous aident à localiser les nouvelles modifications de développement. Si vous ajoutez Uid manuellement des propriétés à une interface utilisateur, la tâche est généralement fastidieuse et moins précise.

    • Ne modifiez Uid pas les propriétés après avoir commencé la localisation.

    • N’utilisez pas les propriétés dupliquées Uid (n’oubliez pas ce conseil lorsque vous utilisez la commande copier-coller).

    • Définissez l’emplacement UltimateResourceFallback dans AssemblyInfo.* pour spécifier la langue appropriée pour la secours (par exemple). [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

      Si vous décidez d’inclure votre langue source dans l’assembly principal en omettant la <UICulture> balise dans votre fichier projet, définissez l’emplacement UltimateResourceFallback comme assembly principal au lieu du satellite (par exemple). [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]

Localiser une application WPF

Lorsque vous localisez une application WPF, vous avez plusieurs options. Par exemple, vous pouvez lier les ressources localisables dans votre application à un fichier XML, stocker du texte localisable dans des tables resx ou utiliser des fichiers XAML. Cette section décrit un flux de travail de localisation qui utilise la forme BAML de XAML, qui offre plusieurs avantages :

  • Vous pouvez localiser après la génération.

  • Vous pouvez effectuer une mise à jour vers une version plus récente du format XAML BAML avec des localisations à partir d’une version antérieure du format XAML BAML afin de pouvoir localiser en même temps que vous développez.

  • Vous pouvez valider les éléments sources et la sémantique d’origine au moment de la compilation, car la forme BAML de XAML est la forme compilée de XAML.

Processus de génération de la localisation

Lorsque vous développez une application WPF, le processus de génération pour la localisation est le suivant :

  • Le développeur crée et globalise l’application WPF. Dans le fichier projet, les jeux <UICulture>en-US</UICulture> de développeurs de sorte que lorsque l’application est compilée, un assembly principal neutre en langage est généré. Cet assembly a un fichier .resources.dll satellite qui contient toutes les ressources localisables. Si vous le souhaitez, vous pouvez conserver la langue source dans l’assembly principal, car nos API de localisation prennent en charge l’extraction à partir de l’assembly principal.

  • Lorsque le fichier est compilé dans la build, le code XAML est converti en forme BAML de XAML. Les fichiers culturellement neutres MyDialog.exe et dépendants de la culture (anglais) MyDialog.resources.dll sont remis au client anglophone.

Flux du travail de localisation

Le processus de localisation commence après la génération du fichier non localisé MyDialog.resources.dll . Les éléments et propriétés de l’interface utilisateur de votre code XAML d’origine sont extraits de la forme BAML de XAML dans des paires clé-valeur à l’aide des API sous System.Windows.Markup.Localizer. Les localiseurs utilisent les paires clé-valeur pour localiser l’application. Vous pouvez générer un nouveau fichier .resource.dll à partir des nouvelles valeurs une fois la localisation terminée.

Les clés des paires clé-valeur sont x:Uid des valeurs placées par le développeur dans le code XAML d’origine. Ces x:Uid valeurs permettent à l’API de suivre et de fusionner les modifications qui se produisent entre le développeur et le localiseur pendant la localisation. Par exemple, si le développeur modifie l’interface utilisateur une fois que le localiseur commence à localiser, vous pouvez fusionner la modification de développement avec le travail de localisation déjà terminé afin que le travail de traduction minimal soit perdu.

Le graphique suivant montre un flux de travail de localisation standard basé sur le formulaire BAML de XAML. Ce diagramme suppose que le développeur écrit l’application en anglais. Le développeur crée et globalise l’application WPF. Dans le fichier projet, les ensembles <UICulture>en-US</UICulture> de développeurs de sorte qu’à la génération, un assembly principal neutre en langage est généré avec un fichier .resources.dll satellite contenant toutes les ressources localisables. Si vous le voulez, vous pouvez conserver la langue source dans l’assembly principal, car nos API de localisation WPF prennent en charge l’extraction à partir de l’assembly principal. Après le processus de génération, le code XAML est compilé en BAML. Le fichier MyDialog.exe.resources.dll indépendant de la culture est livré aux clients anglophones.

Diagram showing the Localization workflow.

Diagram showing the Unlocalized workflow.

Exemples de localisation WPF

Cette section contient des exemples d’applications localisées pour vous aider à comprendre comment créer et localiser des applications WPF.

Exemple de boîte de dialogue Run

Les graphiques suivants montrent le résultat de l’exemple de boîte de dialogue Run.

Anglais :

Screenshot showing an English Run dialog box.

Allemand :

Screenshot showing a German Run dialog box.

Conception d’une boîte de dialogue Run globale

Cet exemple génère une boîte de dialogue Exécuter à l’aide de WPF et XAML. Cette boîte de dialogue équivaut à la boîte de dialogue Exécuter disponible à partir de l’menu Démarrer Microsoft Windows.

Voici quelques points clés pour la conception des boîtes de dialogue globales :

Disposition automatique

Dans Window1.xaml :

<Window SizeToContent="WidthAndHeight">

La propriété Window précédente redimensionne automatiquement la fenêtre en fonction de la taille du contenu. Cette propriété empêche la fenêtre de tronquer le contenu dont la taille augmente après la localisation ; elle supprime également l’espace superflu quand le contenu diminue en taille après la localisation.

<Grid x:Uid="Grid_1">

Uid les propriétés sont nécessaires pour que les API de localisation WPF fonctionnent correctement.

Elles sont utilisées par les API de localisation WPF pour suivre les modifications entre le développement et la localisation de l’interface utilisateur. Uid les propriétés vous permettent de fusionner une version plus récente de l’interface utilisateur avec une localisation plus ancienne de l’interface utilisateur. Vous ajoutez une Uid propriété en exécutant msbuild -t:updateuid RunDialog.csproj un interpréteur de commandes. Il s’agit de la méthode recommandée d’ajout Uid de propriétés, car l’ajout manuel de ces propriétés est généralement fastidieux et moins précis. Vous pouvez case activée que Uid les propriétés sont correctement définies en exécutant msbuild -t:checkuid RunDialog.csproj.

L’interface utilisateur est structurée à l’aide du Grid contrôle, qui est un contrôle utile pour tirer parti de la disposition automatique dans WPF. Notez que la boîte de dialogue est divisée en trois lignes et cinq colonnes. L’une des définitions de ligne et de colonne n’a pas de taille fixe ; par conséquent, les éléments d’interface utilisateur positionnés dans chaque cellule peuvent s’adapter pour augmenter et diminuer la taille pendant la localisation.

<Grid.ColumnDefinitions>
  <ColumnDefinition x:Uid="ColumnDefinition_1" />
  <ColumnDefinition x:Uid="ColumnDefinition_2" />

Les deux premières colonnes où l’étiquette Open : et ComboBox sont placées utilisent 10 % de la largeur totale de l’interface utilisateur.

  <ColumnDefinition x:Uid="ColumnDefinition_3" SharedSizeGroup="Buttons" />
  <ColumnDefinition x:Uid="ColumnDefinition_4" SharedSizeGroup="Buttons" />
  <ColumnDefinition x:Uid="ColumnDefinition_5" SharedSizeGroup="Buttons" />
</Grid.ColumnDefinitions>

Notez que l’exemple utilise la fonctionnalité de dimensionnement partagé de Grid. Les trois dernières colonnes tirent parti de cela en se plaçant dans le même SharedSizeGroup. Comme vous pouvez vous y attendre d’après le nom de la propriété, ceci permet aux colonnes de partager la même taille. Par conséquent, lorsque l’option « Parcourir... » obtient localisé à la chaîne plus longue « Durchsuchen... », tous les boutons augmentent en largeur au lieu d’avoir un petit bouton « OK » et un « Durchsuchen... » Bouton.

xml :lang

xml:lang="en-US"

Notez que la gestion xml :lang en XAML est placée au niveau de l’élément racine de l’interface utilisateur. Cette propriété décrit la culture d’un élément donné et de ses enfants. Cette valeur est utilisée par plusieurs fonctionnalités dans WPF et doit être modifiée de manière appropriée lors de la localisation. Cette valeur change le dictionnaire de langue utilisé pour la coupure et la vérification de l’orthographe des mots. Elle affecte également l’affichage des chiffres et la façon dont le système de police de base sélectionne la police à utiliser. Enfin, la propriété affecte la façon dont les nombres sont affichés et celle dont les textes écrits dans des écritures complexes sont mis en forme. La valeur par défaut est « en-US ».

Génération d’un assembly de ressources satellite

Dans .csproj :

Modifiez le .csproj fichier et ajoutez la balise suivante à un élément inconditionnel <PropertyGroup>:

<UICulture>en-US</UICulture>

Notez l’ajout d’une UICulture valeur. Lorsque cette valeur est définie sur une valeur valide CultureInfo telle qu’en-US, la création du projet génère un assembly satellite avec toutes les ressources localisables qu’il contient.

<Resource Include="RunIcon.JPG">

<Localizable>False</Localizable>

</Resource>

L’élément RunIcon.JPG n’a pas besoin d’être localisé, car il doit apparaître identique pour toutes les cultures. Localizable est défini pour false qu’il reste dans l’assembly principal neutre de langue au lieu de l’assembly satellite. La valeur par défaut de toutes les ressources noncompilables est Localizable définie sur true.

Localisation de la boîte de dialogue Run

Analyser.

Après avoir généré l’application, la première étape de la localisation est d’analyser les ressources localisables en dehors de l’assembly satellite. Pour les besoins de cette rubrique, utilisez l’exemple d’outil LocBaml qui se trouve dans Exemple d’outil LocBaml. Notez que LocBaml est seulement un exemple d’outil destiné à vous aider à démarrer dans la création d’un outil de localisation qui s’intègre dans votre processus de localisation. À l’aide de LocBaml, exécutez la commande suivante pour analyser : LocBaml /parse RunDialog.resources.dll /out: pour générer un fichier « RunDialog.resources.dll.CSV ».

Avertissement

L’outil LocBaml fonctionne uniquement avec WPF pour les projets .NET Framework, il ne fonctionne pas avec WPF pour .NET.

Localize

Utilisez votre éditeur CSV préféré prenant en charge Unicode pour éditer ce fichier. Filtrez toutes les entrées avec la catégorie de localisation « None ». Vous devez voir les entrées suivantes :

Clé de la ressource Catégorie de localisation Valeur
Button_1:System.Windows.Controls.Button.$Content Button OK
Button_2:System.Windows.Controls.Button.$Content Button Annuler
Button_3:System.Windows.Controls.Button.$Content Button Parcourir...
ComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$Content Texte Entrez le nom d’un programme, dossier, document ou ressource Internet, et Windows l’ouvrira pour vous.
TextBlock_2:System.Windows.Controls.TextBlock.$Content Texte Ouvrir :
Window_1:System.Windows.Window.Title Titre Exécuter

La Localisation de l’application en allemand nécessiterait les traductions suivantes :

Clé de la ressource Catégorie de localisation Valeur
Button_1:System.Windows.Controls.Button.$Content Button OK
Button_2:System.Windows.Controls.Button.$Content Button Abbrechen
Button_3:System.Windows.Controls.Button.$Content Button Durchsuchen…
ComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$Content Texte Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an.
TextBlock_2:System.Windows.Controls.TextBlock.$Content Texte Öffnen :
Window_1:System.Windows.Window.Title Titre Exécuter

Generate

La dernière étape de la localisation implique la création de l’assembly satellite nouvellement localisé. Pour ce faire, utilisez la commande LocBaml suivante :

LocBaml.exe /generate RunDialog.resources.dll /trans :RunDialog.resources.dll.CSV /out : . /cul :de-DE

Sur Windows allemand, si ce fichier resources.dll est placé dans un dossier de de-DE en regard de l’assembly principal, cette ressource se charge automatiquement au lieu de celle du dossier en-US. Si vous n’avez pas de version allemande de Windows à tester, définissez la culture sur la culture de Windows que vous utilisez (par exemple en-US), puis remplacez la DLL des ressources d’origine.

Chargement de la ressource satellite

MyDialog.exe en-US\MyDialog.resources.dll en-US\MyDialog.resources.dll
Code BAML d’origine en anglais BAML localisé
Ressources indépendantes de la langue Autres ressources en anglais Autres ressources localisées en allemand

.NET choisit automatiquement l’assembly de ressources satellites à charger en fonction des données de Thread.CurrentUICulturel’application. Cela correspond par défaut à la culture de votre système d’exploitation Windows. Si vous utilisez Windows allemand, le fichier de-DE\MyDialog.resources.dll se charge. Si vous utilisez Windows anglais, le fichier en-US\MyDialog.resources.dll se charge. Vous pouvez définir la ressource de secours finale pour votre application en spécifiant l’attribut dans le NeutralResourcesLanguage fichier AssemblyInfo de votre projet. Par exemple, si vous spécifiez :

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

ensuite, le fichier en-US\MyDialog.resources.dll est utilisé avec Windows allemand si aucun des fichiers suivants n’est disponible : de-DE\MyDialog.resources.dll ou de\MyDialog.resources.dll.

Page d’accueil de Microsoft pour l’Arabie Saoudite

Les graphiques suivants montrent une page d’accueil en anglais et en arabe. Pour obtenir l’exemple complet qui produit ces graphiques, consultez Globalization Homepage Sample.

Anglais :

Screenshot showing an English home page.

Arabe :

Screenshot showing an Arabic home page.

Conception d’une page d’accueil Microsoft globale

Cette simulation du site web de Microsoft pour l’Arabie saoudite illustre les fonctionnalités de globalisation fournies pour les langues de droite à gauche. Les langues telles que l’hébreu et l’arabe ont un ordre de lecture de droite à gauche, de sorte que la disposition de l’interface utilisateur doit souvent être disposée tout à fait différemment que dans les langues de gauche à droite telles que l’anglais. La localisation d’une langue de gauche à droite vers une langue de droite à gauche, ou l’inverse, peut se révéler difficile. WPF a été conçu pour faciliter ces localisations.

FlowDirection

Homepage.xaml :

<Page x:Uid="Page_1" x:Class="MicrosoftSaudiArabiaHomepage.Homepage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    FlowDirection="LeftToRight" 
    Localization.Comments="FlowDirection(This FlowDirection controls the actual content of the homepage)"
    xml:lang="en-US">

Notez la FlowDirection propriété sur Page. La modification de cette propriété pour RightToLeft modifier les FlowDirection éléments enfants et les Page éléments enfants afin que la disposition de cette interface utilisateur soit retournée pour devenir de droite à gauche en tant qu’utilisateur arabe attendrait. Vous pouvez remplacer le comportement d’héritage en spécifiant un élément explicite FlowDirection . La FlowDirection propriété est disponible sur n’importe quel FrameworkElement élément lié au document et a une valeur implicite de LeftToRight.

Notez que même les pinceaux de dégradé d’arrière-plan sont retournés correctement lorsque la racine FlowDirection est modifiée :

FlowDirection="LeftToRight"

Screenshot showing the gradient flow from left to right.

FlowDirection="RightToLeft"

Screenshot showing the gradient flow from right to left.

Éviter d’utiliser des dimensions fixes pour les panneaux et les contrôles

Jetez un coup d’œil à Homepage.xaml, notez qu’en dehors de la largeur fixe et de la hauteur spécifiées pour l’interface utilisateur entière en haut DockPanel, il n’y a pas d’autres dimensions fixes. N’utilisez pas de dimensions fixes pour éviter le découpage du texte localisé, qui peut être plus long que le texte source. Les panneaux et contrôles WPF sont automatiquement redimensionnés en fonction du contenu qu’ils contiennent. La plupart des contrôles ont également des dimensions minimales et maximales que vous pouvez définir pour plus de contrôle (par exemple, MinWidth="20 »). Avec Grid, vous pouvez également définir des largeurs et des hauteurs relatives à l’aide de '*' (par exemple Width="0.25*") ou utiliser sa fonctionnalité de partage de taille de cellule.

Commentaires de localisation

Dans de nombreux cas, le contenu peut être ambigu et difficile à traduire. Le développeur ou le concepteur a la possibilité de fournir un contexte supplémentaire et des commentaires aux localiseurs via des commentaires de localisation. Par exemple, le fichier Localization.Comments ci-dessous précise l’utilisation du caractère « | ».

<TextBlock 
  x:Uid="TextBlock_2" 
  DockPanel.Dock="Right" 
  Foreground="White" 
  Margin="5,0,5,0"
  Localization.Comments="$Content(This character is used as a decorative rule.)">
  |
</TextBlock>

Ce commentaire devient associé au contenu de TextBlock_1 et, dans le cas de l’outil LocBaml ( voir Localiser une application), il est visible dans la 6e colonne de la ligne TextBlock_1 dans le fichier .csv de sortie :

Clé de la ressource Catégorie Lisible Modifiable Commentaire Valeur
TextBlock_1:System.Windows.Controls.TextBlock.$Content Texte VRAI VRAI Ce caractère est utilisé comme règle de décoration. |

Les commentaires peuvent être placés sur le contenu ou la propriété de n’importe quel élément en utilisant la syntaxe suivante :

<TextBlock 
  x:Uid="TextBlock_1" 
  DockPanel.Dock="Right" 
  Foreground="White" 
  Margin="5,0,5,0"
  Localization.Comments="$Content(This is a comment on the TextBlock's content.)
     Margin(This is a comment on the TextBlock's Margin property.)">
  |
 </TextBlock>

Attributs de localisation

Souvent, le développeur ou le responsable de la localisation doit contrôler ce que les localiseurs peuvent lire et modifier. Par exemple, vous pouvez décider que le localiseur ne doit pas traduire le nom de votre entreprise ou les mentions légales. WPF fournit des attributs qui vous permettent de définir la lisibilité, la modification et la catégorie du contenu ou de la propriété d’un élément que votre outil de localisation peut utiliser pour verrouiller, masquer ou trier des éléments. Pour plus d’informations, consultez Attributes. Pour les besoins de cet exemple, l’outil LocBaml affiche uniquement les valeurs de ces attributs. Les contrôles WPF ont toutes des valeurs par défaut pour ces attributs, mais vous pouvez les remplacer. Par exemple, l’exemple suivant remplace les attributs de localisation par défaut pour TextBlock_1 et définit le contenu comme lisible mais non modifiable pour les localiseurs.

<TextBlock
x:Uid="TextBlock_1"
Localization.Attributes=
"$Content(Readable Unmodifiable)">
  Microsoft Corporation
</TextBlock>

Outre les attributs de lisibilité et de modification, WPF fournit une énumération des catégories d’interface utilisateur courantes (LocalizationCategory) qui peuvent être utilisées pour donner davantage de contexte aux localiseurs. Les catégories par défaut WPF pour les contrôles de plateforme peuvent également être remplacées en XAML :

<TextBlock x:Uid="TextBlock_2">
<TextBlock.ToolTip>
<TextBlock
x:Uid="TextBlock_3"
Localization.Attributes=
"$Content(ToolTip Readable Unmodifiable)">
Microsoft Corporation
</TextBlock>
</TextBlock.ToolTip>
Windows Vista
</TextBlock>

Les attributs de localisation par défaut que WPF fournit peuvent également être remplacés par le biais du code. Vous pouvez donc définir correctement les valeurs par défaut appropriées pour les contrôles personnalisés. Par exemple :

[Localizability(Readability = Readability.Readable, Modifiability=Modifiability.Unmodifiable, LocalizationCategory.None)]
public class CorporateLogo : TextBlock
{
    // ...
}

Les attributs par instance définis en XAML sont prioritaires sur les valeurs définies dans le code sur les contrôles personnalisés. Pour plus d’informations sur les attributs et les commentaires, consultez Attributs et commentaires de localisation.

Police de base et polices composites

Si vous spécifiez une police qui ne prend pas en charge une plage de points de code donnée, WPF revient automatiquement à une police qui utilise l’interface utilisateur globale.compositefont qui se trouve dans votre répertoire Windows\Fonts. Les polices composites fonctionnent comme n’importe quelle autre police et peuvent être utilisées explicitement en définissant les FontFamily polices d’un élément (par exemple, FontFamily="Global User Interface"). Vous pouvez spécifier votre propre police de base préférée en créant votre propre police composite, et en spécifiant la police à utiliser pour des plages de points de code et des langues spécifiques.

Pour plus d’informations sur les polices composites, consultez FontFamily.

Localisation de la page d’accueil de Microsoft

Vous pouvez suivre la même procédure que celle de l’exemple de boîte de dialogue Run pour localiser cette application. Le fichier .csv localisé pour l’arabe est disponible dans Globalization Homepage Sample.