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

Mise à jour : novembre 2007

Lorsque vous limitez la disponibilité de votre produit à une seule langue, vous limitez votre clientèle potentielle à une fraction des 6,5 milliards d'individus que compte la population mondiale. Si vous souhaitez que vos applications touchent un public international, la localisation rentable de votre produit est l'une des solutions les plus intéressantes, y compris sur le plan financier.

Cette vue d'ensemble présente la globalisation et la localisation dans Windows Presentation Foundation (WPF). La globalisation consiste en la conception et le développement d'applications qui peuvent être utilisées dans plusieurs régions. Par exemple, la globalisation prend en charge les interfaces utilisateur localisées et les données régionales pour des utilisateurs appartenant à différentes cultures. WPF propose des fonctions de conception globalisées, notamment la disposition automatique, les assemblys satellites et les attributs et les commentaires localisés.

La localisation consiste en la traduction des ressources d'une application de manière à obtenir des versions localisées spécifiques à chaque culture prise en charge par l'application. Lorsque vous effectuez une localisation dans WPF, vous utilisez les API dans l'espace de noms System.Windows.Markup.Localizer. Ces API sont le moteur de l'outil de ligne de commande Outil LocBaml, exemple. Pour plus d'informations sur la génération et l'utilisation de LocBaml, consultez Comment : localiser une application.

Cette rubrique comprend les sections suivantes.

  • Meilleures pratiques pour la globalisation et la localisation dans WPF
  • Localiser une application WPF
  • Exemples de localisation WPF

Meilleures 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 les conseils présentés dans cette section concernant la localisation et la conception d'interfaces utilisateur.

Meilleures pratiques pour la conception d'interfaces utilisateur WPF

Lors de la conception d'une interface utilisateur basée sur WPF, envisagez la mise en oeuvre des meilleures pratiques suivantes :

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

  • Évitez d'utiliser des positions absolues et des tailles fixes pour mettre en forme le contenu ; utilisez plutôt un dimensionnement relatif ou automatique.

    • Utilisez SizeToContent et laissez la valeur Auto attribuée aux largeurs et hauteurs.

    • Évitez d'utiliser Canvas pour la présentation de l'interface utilisateur.

    • Utilisez Grid et sa fonction de partage de taille.

  • Prévoyez un espace supplémentaire en marges car le texte localisé nécessite souvent davantage d'espace. Cet espace supplémentaire permet d'accepter les caractères supplémentaires éventuels.

  • Activez TextWrapping dans TextBlock pour éviter que le texte ne soit tronqué.

  • 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é change le comportement de plusieurs fonctions dans WPF. Par exemple, elle modifie le comportement des césures, de la correction orthographique, du remplacement de chiffres, de mise en forme des scripts complexes et des polices de substitution. Consultez Globalisation pour Windows Presentation Foundation pour plus d'informations sur la définition du Gestion de xml:lang en XAML.

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

  • Lorsque vous créez des applications de navigation qui peuvent être localisées dans une culture qui aligne le texte de droite à gauche, définissez explicitement le FlowDirection de chaque page afin de veiller à ce que la page n'hérite pas de FlowDirection du NavigationWindow.

  • Lorsque vous créez des applications de navigation autonomes hébergées à l'extérieur d'un navigateur, affectez à l'StartupUri de votre application initiale le NavigationWindow au lieu d'une page (par exemple, <Application StartupUri="NavigationWindow.xaml">). Cette conception vous permet de modifier le FlowDirection de la fenêtre et de la barre de navigation. Pour plus d'informations et pour obtenir un exemple, consultez Page d'accueil de globalisation, exemple.

Meilleures pratiques pour la localisation WPF

Lorsque vous localisez des applications WPF, envisagez de mettre en œuvre les meilleures pratiques suivantes :

  • Utilisez des commentaires de localisation afin de fournir aux localisateurs des informations contexte supplémentaires.

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

  • Utilisez msbuild /t:updateuid et /t:checkuid pour ajouter et vérifier des propriétés Uid dans votre XAML. Utilisez les propriétés Uid pour le suivi des modifications entre les phases de développement et de localisation. Les propriétés Uid vous aident à localiser les nouveaux changements apportés pendant le développement. Si vous ajoutez manuellement des propriétés Uid à uneinterface utilisateur, cette tâche est généralement fastidieuse et peut induire des erreurs.

    • Ne modifiez pas les propriétés Uid une fois la localisation commencée.

    • N'utilisez pas de propriétés Uid en double (n'oubliez pas ce conseil lorsque vous utilisez la commande copier-coller).

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

      Si vous décidez d'inclure votre langue source dans l'assembly principal en omettant la balise <UICulture> dans votre fichier de projet, définissez l'emplacement de 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 disposez de plusieurs options. Par exemple, vous pouvez lier les ressources localisables dans votre application à un fichier XML, stocker le texte localisable dans les tables resx ou inviter votre localisateur à utiliser des fichiers XAML (Extensible Application Markup Language). Cette section décrit un workflow de localisation qui utilise BAML (Binary XAML), dont les avantages sont nombreux :

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

  • Vous pouvez mettre à jour votre version antérieure de BAML afin d'obtenir une version plus récente de BAML et de pouvoir effectuer la localisation parallèlement au développement.

  • Vous pouvez valider des éléments source d'origine et la sémantique lors de la compilation car BAML est la forme compilée de XAML.

Processus de génération de localisation

Lorsque vous développez une application WPF, le processus de génération de la localisation se déroule comme suit :

  • Le développeur crée et globalise l'application WPF. Dans le fichier du projet, le développeur définit <UICulture>en-US</UICulture> de sorte que lors de la compilation de l'application, un assembly principal indépendant de la langue soit généré. Cet assembly comporte un fichier .resources.dll satellite qui contient toutes les ressources localisables. Vous pouvez également 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 génération, le code XAML est converti en BAML. Le fichier MyDialog.exe culturellement neutre et le fichier MyDialog.resources.dll culturellement dépendant (anglais) sont diffusés aux clients anglophones.

Workflow de localisation

Le processus de localisation commence après la génération du fichier MyDialog.resources.dll non localisé. Les éléments et les propriétés de l'interface utilisateur dans votre XAML d'origine sont extraits de BAML dans des paires clé-valeur à l'aide des API sous System.Windows.Markup.Localizer. Les localisateurs 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 des x:Uids placés par le développeur dans le XAML d'origine. Ces x:Uids permettent à l'API de suivre et de fusionner les modifications qui interviennent entre le développeur et le localisateur pendant la localisation. Par exemple, si le développeur modifie l'interface utilisateur après que le localisateur a entamé la localisation, vous pouvez fusionner cette modification avec le travail de localisation réalisé à ce stade afin d'éviter au maximum de perdre le travail réalisé en traduction.

Le graphique suivant illustre un workflow de localisation typique basé sur BAML. 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 du projet, il définit <UICulture>en-US</UICulture> afin que lors de la génération, un assembly principal linguistiquement neutre soit généré avec un fichier .resources.dll satellite qui contient toutes les ressources localisables. Vous pouvez aussi conserver la langue source dans l'assembly principal car les API de localisation WPF prennent en charge l'extraction à partir de l'assembly principal. Une fois le processus de génération terminé, XAML est compilé dans BAML. Le fichier MyDialog.exe.resources.dll culturellement neutre est expédié aux clients anglophones.

Flux du travail de localisationFlux du travail non localisé

Le processus de localisation commence une fois que le fichier MyDialog.resources.dll non localisé est construit. Les propriétés et les éléments d'interface utilisateur dans votre XAML d'origine peuvent être extraits en dehors de BAML dans les paires clé-valeur utilisant les API dans l'espace de noms System.Windows.Markup.Localizer. Les localisateurs travaillent ensuite sur ces paires pour localiser l'application. Un nouveau fichier .resource.dll peut être ensuite généré à partir des nouvelles valeurs une fois la localisation terminée.

Les clés des paires clé-valeur sont des x:Uids placés par le développeur dans le XAML d'origine. Ces x:Uids permettent à l'API de suivre et de fusionner les modifications survenues entre le développeur et le localisateur pendant la localisation. Par exemple, si le développeur apporte une modification à l'interface utilisateur après que le localisateur a commencé son travail, cette modification peut être fusionnée avec le travail de localisation réalisé jusque-là afin de préserver au maximum le travail de traduction déjà effectué.

Exemples de localisation WPF

Cette section présente des exemples d'applications localisées pour vous aider à comprendre comment générer et localiser des applications WPF.

Exemple de boîte de dialogue Exécuter

Les graphiques suivants illustrent la sortie de l'exemple de boîte de dialogue Exécuter.

Anglais :

Boîte de dialogue Exécuter

Allemand :

Boîte de dialogue Exécuter Allemand

Conception d'une boîte de dialogue Exécuter globale

Cet exemple permet d'obtenir une boîte de dialogue Exécuter à l'aide de WPF et XAML. Celle-ci équivaut à la boîte de dialogue Exécuter qui est disponible dans le menu Démarrer de Microsoft Windows.

Pour l'exemple complet, consultez Boîte de dialogue Exécuter et globalisation, exemple.

Voici quelques informations importantes concernant la création de boîtes de dialogue globales :

Automatic Layout

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 lorsque le contenu diminue en taille après la localisation.

<Grid x:Uid="Grid_1">

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

Elles sont utilisées par les API de localisation WPF pour suivre les changements effectués entre les phases de développement et de localisation. Les propriétés interface utilisateur (UI). Uid vous permettent de fusionner une version plus récente de l'interface utilisateur avec une version localisée antérieure de l'interface utilisateur. Vous ajoutez une propriété Uid en exécutant msbuild /t:updateuid RunDialog.csproj dans l'interface de commande du Kit de développement logiciel Windows. Cette méthode est recommandée pour ajouter des propriétés Uid car l'exécution de cette opération manuellement implique généralement des erreurs et est plus fastidieuse. Vous pouvez vérifier que les propriétés Uid sont correctement définies en exécutant msbuild /t:checkuid RunDialog.csproj.

L'interface utilisateur est structurée à l'aide du contrôle Grid, qui est permet de tirer parti de la disposition automatique dans WPF. Notez que la boîte de dialogue est fractionnée en trois lignes et cinq colonnes. Aucune des définitions de lignes et de colonnes n'a une taille fixe ; de ce fait, la taille des éléments de l'interface utilisateur qui sont placés dans chaque cellule peut être augmentée ou réduite pendant la localisation.

Les deux premières colonnes où sont placés le libellé Open : et ComboBox utilisent 10 pour cent de la largeur totale de l'interface utilisateur.

Notez que l'exemple utilise la fonctionnalité de dimensionnement partagé de Grid. Les trois dernières colonnes en tirent parti en se plaçant dans le même SharedSizeGroup. Comme on peut l'attendre du nom de la propriété, cette dernière permet aux colonnes de partager la même taille. Par conséquent, lorsque le terme « Browse… » est traduit en allemand en une chaîne plus longue, à savoir « Durchsuchen… », la largeur de tous les boutons augmente au lieu d'avoir un bouton « OK » de petite taille à côté d'un bouton « Durchsuchen… » de taille disproportionnée.

Xml:lang

Xml:lang="en-US"

Observez le Gestion de xml:lang en XAML placé au niveau de l'élément racine de l'interface utilisateur. Cette propriété décrit la culture d'un élément donné et ses enfants. Cette valeur est utilisée par plusieurs fonctions dans WPF et doit être correctement modifiée pendant la localisation. Cette valeur change le dictionnaire de langue utilisé pour insérer un trait d'union et vérifier l'orthographe. Elle affecte également l'affichage des chiffres et la manière dont le système sélectionne la police de substitution à utiliser. Enfin, la propriété affecte l'affichage des nombres et la mise en forme des textes écrits dans les scripts complexes. La valeur par défaut est en-US.

Building a Satellite Resource Assembly

Dans .csproj :

<UICulture>en-US</UICulture>

Observez l'ajout d'une propriété UICulture. Lorsque celle-ci a une valeur CultureInfo correcte, par exemple en-US, la génération du projet produira un assembly satellite contenant toutes les ressources localisables.

<Resource Include="RunIcon.JPG">

<Localizable>False</Localizable>

</Resource>

Le fichier RunIcon.JPG ne doit pas être localisé car il doit être identique quelle que soit la culture. Localisable a la valeur False afin d'être conservé dans l'assembly principal linguistiquement neutre au lieu d'être placé dans l'assembly satellite. La valeur par défaut de la propriété Localizable de toutes les ressources non compilables est True.

Localisation de la boîte de dialogue Exécuter

Parse

Après avoir généré l'application, la première étape de sa localisation consiste à 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 Outil LocBaml, exemple. Notez que LocBaml n'est qu'un exemple d'outil destiné à vous aider à vous familiariser avec la création d'un outil de localisation adapté à votre processus de localisation. À l'aide de LocBaml, exécutez les éléments suivants à analyser : LocBaml /parse RunDialog.resources.dll /out: afin de générer un fichier "RunDialog.resources.dll.CSV".

Localize

Utilisez votre éditeur CSV favori qui prend en charge Unicode pour modifier ce fichier. Éliminez par filtrage toutes les entrées dont la catégorie de localisation est « None » (Aucun). Les entrées suivantes devraient apparaître :

Clé de ressource

Catégorie de localisation

Valeur

Button_1:System.Windows.Controls.Button.$Content

Button

OK

Button_2:System.Windows.Controls.Button.$Content

Button

Cancel

Button_3:System.Windows.Controls.Button.$Content

Button

Browse…

ComboBox_1:System.Windows.Controls.ComboBox.$Content

ComboBox

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

Text

Type the name of a program, folder, document, or Internet resource, and Windows will open it for you.

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

Text

Open:

Window_1:System.Windows.Window.Title

Title

Run

La localisation de l'application en allemand nécessiterait les traductions suivantes :

Clé de 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

Text

Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an.

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

Text

Öffnen:

Window_1:System.Windows.Window.Title

Title

Run

Generate

La dernière étape de la localisation implique la création du nouvel assembly satellite localisé. Pour ce faire, vous pouvez utiliser la commande LocBaml suivante :

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

Dans la version allemande de Windows, si ce fichier resources.dll est placé dans un dossier de-DE placé à côté de l'assembly principal, cette ressource sera automatiquement chargée au lieu de celle contenue dans le dossier en-US. Si vous n'avez pas une version allemande de Windows pour tester cette ressource, sélectionnez la culture de Windows que vous utilisez (c.-à-d. en-US) et remplacer le fichier resources.dll d'origine.

Satellite Resource Loading

MyDialog.exe

en-US\MyDialog.resources.dll

de-DE\MyDialog.resources.dll

Code

Version d'origine de BAML en anglais

Version localisée de BAML

Ressources culturellement neutres

Autres ressources en anglais

Autres ressources localisées en allemand

L'infrastructure .NET choisit automatiquement l'assembly de ressources satellite à charger en fonction du Thread.CurrentThread.CurrentUICulture de l'application. Cette valeur correspond par défaut à la culture de votre système d'exploitation Windows. Par conséquent, si vous utilisez la version allemande de Windows, le fichier de-DE\MyDialog.resources.dll est chargé. Si vous utilisez la version anglaise de Windows, c'est le fichier en-US\MyDialog.resources.dll qui sera chargé. Vous pouvez définir la ressource de base ultime de votre application en spécifiant le NeutralResourcesLanguage dans l'AssemblyInfo.* de votre projet. Par exemple, si vous spécifiez :

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

le fichier en-US\MyDialog.resources.dll sera alors utilisé avec la version allemande de Windows si les fichiers de-DE\MyDialog.resources.dll et de\MyDialog.resources.dll sont tous deux indisponibles.

Page d'accueil de Microsoft Arabie Saoudite

Les graphiques suivants affichent une page d'accueil en anglais et en arabe. Pour l'exemple complet qui produit ces graphiques, consultez Page d'accueil de globalisation, exemple.

Anglais :

Page Anglais

Arabe :

Page Arabe

Conception d'une page d'accueil Microsoft globale

Cette simulation du site Web de Microsoft Arabie Saoudite illustre les fonctions de globalisation disponibles pour les langues qui s'écrivent de droite à gauche. L'hébreu et l'arabe se lisant de droite à gauche, la disposition de l'interface utilisateur doit souvent être très différente des interfaces utilisateur affichées dans des langues qui se lisent de gauche à droite, telles que l'anglais. La localisation d'une langue se lisant de gauche à droite en une langue se lisant de droite à gauche ou vice versa peut impliquer de nombreuses difficultés. WPF a été conçu pour simplifier ce type de localisation.

FlowDirection

Homepage.xaml:

Observez la propriété FlowDirection dans la page. En remplaçant la valeur de cette propriété par "RightToLeft", vous modifiez le FlowDirection de la page et de ses éléments enfants de sorte que la disposition de cette interface utilisateur soit inversée et se lise désormais de droite à gauche, comme l'attend un utilisateur arabe. Vous pouvez remplacer le comportement d'héritage en spécifiant un FlowDirection explicite sur tout élément. La propriété FlowDirection est disponible dans tout élément lié à un document ou FrameworkElement et a pour valeur implicite LeftToRight.

Vous pouvez observer que même les pinceaux à dégradés d'arrière-plan sont correctement inversés lorsque le FlowDirection de la page racine change :

FlowDirection="LeftToRight"

Flux de gauche à droite

FlowDirection="RightToLeft"

Flux de droite à gauche

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

Si vous jetez un œil à Homepage.xaml, vous remarquerez qu'hormis la longueur et la hauteur fixes spécifiées pour l'intégralité de l'interface utilisateur dans le DockPanel supérieur, il n'existe aucune autre dimension fixe. Évitez d'utiliser des dimensions fixes afin d'éviter que le texte localisé soit tronqué qui peut être plus long que le texte source. WPF recouvre de panneaux et les contrôles redimensionneront automatiquement selon le contenu qu'ils contiennent. La plupart des contrôles ont également des dimensions minimales et maximales que vous pouvez définir pour un meilleur contrôle (c.-à-d. MinWidth = "20"). Avec Grid, vous pouvez également définir des largeurs et des hauteurs relatives en utilisant '*' (c.-à-d. Width= "0,25 *") ou utilisez sa fonction de partage de taille de cellule comme illustré dans l'exemple RunDialog. Pour cela, consultez Boîte de dialogue Exécuter et globalisation, exemple.

Commentaires de localisation

Il existe de nombreux cas où le contenu peut être ambigu et difficile à traduire. Le développeur ou le concepteur a la possibilité d'ajouter des commentaires et des informations de contexte supplémentaires à l'attention des localisateurs par le biais de commentaires de localisation. Par exemple, les commentaires de localisation ci-dessous explicitent l'utilisation du caractère |.

Ce commentaire est associé au contenu de TextBlock_1 et, dans le cas de l'outil LocBaml (consultez Comment : localiser une application), on peut le voir dans la 6ème colonne de la ligne TextBlock_1 dans le fichier de sortie .csv :

Clé de ressource

Catégorie

Lisible

Modifiable

Commentaire

Valeur

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

Text

TRUE

TRUE

Ce caractère est utilisé comme une règle décorative.

|

Des commentaires peuvent être placés sur le contenu ou la propriété de tout élément à l'aide de la syntaxe suivante :

Attributs de localisation

Le développeur ou le responsable de la localisation doit souvent contrôler les informations que les localisateurs peuvent lire et modifier. Par exemple, il peut être souhaitable que le localisateur ne puisse pas traduire le nom de votre société ou des clauses légales. WPF fournit des attributs qui vous permettent de définir la lisibilité, la modifiabilité et la catégorie du contenu ou de la propriété d'un élément, et votre outil de localisation peut les utiliser pour verrouiller, masquer ou trier des éléments. Pour plus d'informations, consultez AttributesProperty. Pour les besoins de cet exemple, l'outil LocBaml renvoie simplement les valeurs de ces attributs. Bien que WPF contrôle toutes les valeurs par défaut de ces attributs, vous pouvez toutefois les remplacer. L'exemple suivant remplace les attributs de localisation par défaut de TextBlock_1 et définit le contenu comme étant lisible mais non modifiable par les localisateurs.

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

Outre la lisibilité et la modifiabilité des attributs, WPF fournit une énumération des catégories d'interface utilisateur courantes qui peuvent être utilisées pour donner davantage de contexte aux localisateurs : Texte, Titre, Label, Button, CheckBox, ComboBox, ListBox, Menu, RadioButton, ToolTip, Hyperlink, Document, XmlData et Police. Les catégories par défaut WPF des contrôles de plateforme peuvent également être remplacées dans 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 fournis par WPF peuvent aussi être remplacés par le biais du code, afin que vous puissiez définir correctement les valeurs par défaut adéquates des contrôles personnalisés. Par exemple : 

[Localizability(Readability = Readability.Readable, Modifiability=Modifiability.Unmodifiable, LocalizationCategory.None)]

public class CorporateLogo: TextBlock

{

..

.

}

Les attributs d'instance définis dans XAML priment sur les valeurs définies dans le code des contrôles personnalisés. Pour plus d'informations sur les attributs et les commentaires, consultez Attributs et commentaires de localisation.

Polices de substitution et polices composites

Si vous spécifiez une police qui ne prend pas en charge une plage de points de code donnée, WPF en choisira automatiquement une qui prend en charge cette plage en utilisant la police Global User Interface.compositefont, disponible dans votre répertoire Windows\Fonts. Les polices composites fonctionnent comme toute autre police et peuvent être utilisées explicitement en définissant l'attribut FontFamily d'un élément (c.-à-d. FontFamily= "Global User Interface"). Vous pouvez spécifier votre propre police de substitution 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 Microsoft

Pour localiser cette application, vous pouvez suivre les mêmes étapes que celles décrites dans l'exemple la boîte de dialogue Exécuter. Le fichier .csv localisé pour l'arabe est disponible dans Page d'accueil de globalisation, exemple.