Partager via


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 souhaitez que vos applications atteignent un public mondial, la localisation rentable de votre produit est l’un des meilleurs moyens et les plus économiques d’atteindre plus de clients.

Cette vue d’ensemble présente la globalisation et la localisation dans WINDOWS Presentation Foundation (WPF). La mondialisation est la conception et le développement d’applications qui s’exécutent à plusieurs emplacements. Par exemple, la mondialisation prend en charge les interfaces utilisateur localisées et les données régionales pour les utilisateurs dans 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’application en versions localisées pour les cultures spécifiques prises en charge par l’application. Lorsque vous localisez dans WPF, vous utilisez les API de l'espace de noms System.Windows.Markup.Localizer. Ces API alimentent l’outil en ligne de commande LocBaml Tool Sample . 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.

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 la conception de l’interface utilisateur et les conseils liés à la localisation fournis par cette section.

Meilleures 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 mettre en place du contenu ; utilisez plutôt le dimensionnement relatif ou automatique.

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

    • Évitez d’utiliser Canvas pour organiser les interfaces utilisateur.

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

  • Fournissez un espace supplémentaire dans les marges, car le texte localisé nécessite souvent davantage d’espace. L’espace supplémentaire permet d'accueillir les caractères en saillie possibles.

  • Activez TextWrapping sur TextBlock pour éviter la coupure.

  • Définissez l’attribut xml:lang . Cet attribut décrit la culture d’un élément spécifique et de ses éléments enfants. La valeur de cette propriété modifie le comportement de plusieurs fonctionnalités dans WPF. Par exemple, il modifie le comportement des traits d’union, de la vérification orthographique, de substitution des nombres, du façonnage des scripts complexes, et du basculement de police. Pour plus d’informations sur la définition de la gestion xml :lang en XAML, consultez Globalisation pour WPF.

  • Créez une police composite personnalisée pour obtenir un meilleur contrôle des polices utilisées pour 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 FlowDirection de chaque page pour vous assurer que la page n’hérite pas de FlowDirection de NavigationWindow.

  • Lorsque vous créez des applications de navigation autonomes hébergées en dehors d’un navigateur, définissez l’application StartupUri initiale sur un 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 un exemple, consultez l’exemple de page d’accueil de la globalisation.

Meilleures 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 de localisation et commentaires .

  • Utilisez msbuild -t:updateuid et -t:checkuid pour ajouter et vérifier les propriétés Uid dans votre code XAML. Utilisez les propriétés Uid 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 le 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 construction.

  • 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 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, le développeur définit <UICulture>en-US</UICulture> de sorte qu'un assembly principal neutre en langue soit généré lorsque l'application est compilée. 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 compilation, le code XAML est converti en forme BAML du XAML. Les fichiers culturellement neutres MyDialog.exe et dépendants de la culture (anglais) MyDialog.resources.dll sont remis au client anglophone.

Flux de 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 une nouvelle .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 classique basé sur la forme 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, le développeur configure <UICulture>en-US</UICulture> de sorte qu'à la génération, un assembly principal neutre vis-à-vis de la langue est généré avec un satellite .resources.dll contenant toutes les ressources localisables. Vous pouvez également conserver la langue source dans l’assembly principal, car les 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é dans BAML. Les MyDialog.exe.resources.dll culturellement neutres sont expédiés au client anglophone.

Diagramme montrant le flux de travail de localisation.

Diagramme montrant le flux de travail non localisé.

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 Exécuter

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

Anglais:

Capture d’écran montrant une boîte de dialogue Exécuter en anglais.

Allemand:

Capture d’écran montrant une boîte de dialogue du programme 'Exécuter' en version allemande.

Conception d’une boîte de dialogue Exécution 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 dans le menu Démarrer de Microsoft Windows.

Voici quelques points forts pour créer 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 couper le contenu qui augmente de taille après la localisation ; il supprime également l’espace inutile lorsque le contenu diminue de la 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 la commande msbuild -t:updateuid RunDialog.csproj dans 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 vérifier que les Uid propriétés sont correctement définies en exécutant msbuild -t:checkuid RunDialog.csproj.

L'interface est structurée en utilisant le contrôle Grid, qui est particulièrement utile pour tirer parti de la mise en page 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 cet avantage en se positionnant dans le même SharedSizeGroup. Comme on l’attendrait du nom de la propriété, cela permet aux colonnes de partager la même taille. Par conséquent, lorsque l'option « Parcourir... » est localisée sous la forme plus longue « Durchsuchen... », tous les boutons s'élargissent au lieu d'avoir un petit bouton « OK » et un bouton « Durchsuchen... » disproportionné.

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 modifie le dictionnaire de langue utilisé pour les traits d’union et les mots de vérification orthographique. Il affecte également l'affichage des chiffres et la façon dont le système de substitution de polices sélectionne quelle police utiliser. Enfin, la propriété affecte la façon dont les nombres sont affichés et la façon dont les textes écrits dans des scripts complexes sont mis en forme. La valeur par défaut est «en-US».

Création 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 que 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 sur false afin qu'il reste dans l'assemblage principal neutre de langue au lieu de l'assemblage satellite. La valeur par défaut de toutes les ressources noncompilables est Localizable définie sur true.

Localisation de la boîte de dialogue Exécuter

analyser

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

Avertissement

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

Localiser

Utilisez votre éditeur CSV favori qui prend en charge Unicode pour modifier ce fichier. Filtrez toutes les entrées avec une catégorie de localisation « None ». Les entrées suivantes doivent s’afficher :

Clé de ressource Catégorie de localisation Valeur
Button_1 :System.Windows.Controls.Button.$Content Bouton Ok
Bouton_2:System.Windows.Controls.Bouton.$Content Bouton Annuler
Bouton_3 :System.Windows.Controls.Button.$Content Bouton Parcourir...
ComboBox_1 :System.Windows.Controls.ComboBox.$Content ComboBox
TextBlock_1 :System.Windows.Controls.TextBlock.$Content Texto Tapez le nom d’un programme, d’un dossier, d’un document ou d’une ressource Internet, et Windows l’ouvre pour vous.
TextBlock_2 :System.Windows.Controls.TextBlock.$Content Texto Ouvrir:
Window_1 :System.Windows.Window.Title Titre Courir

La localisation de l’application en allemand nécessite les traductions suivantes :

Clé de ressource Catégorie de localisation Valeur
Button_1 :System.Windows.Controls.Button.$Content Bouton Ok
Bouton_2:System.Windows.Controls.Bouton.$Content Bouton Abbrechen
Bouton_3 :System.Windows.Controls.Button.$Content Bouton Durchsuchen...
ComboBox_1 :System.Windows.Controls.ComboBox.$Content ComboBox
TextBlock_1 :System.Windows.Controls.TextBlock.$Content Texto Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an.
TextBlock_2 :System.Windows.Controls.TextBlock.$Content Texto Öffnen :
Window_1 :System.Windows.Window.Title Titre Courir

Générer

La dernière étape de 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 cette resources.dll est placée dans un dossier 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 des ressources satellites

MyDialog.exe en-US\MyDialog.resources.dll de-DE\MyDialog.resources.dll
Code BAML original en anglais BAML localisé
Ressources culturellement neutres 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 en 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 Microsoft Arabie saoudite

Les graphiques suivants montrent une page d’accueil anglaise et arabe. Pour obtenir l’exemple complet qui produit ces graphiques, consultez l’exemple de page d’accueil globalization.

Anglais:

Capture d’écran montrant une page d’accueil anglaise.

Arabe:

Capture d’écran montrant une page d’accueil arabe.

Conception d’une page d’accueil Microsoft globale

Cette maquette du site web Microsoft Arabie saoudite illustre les fonctionnalités de globalisation fournies pour les langues RightToLeft. 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 à une langue de droite à gauche ou vice versa peut être très 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é en RightToLeft va modifier les FlowDirection et les Page de manière que la disposition de cette interface utilisateur soit retournée de gauche à droite à l'inverse pour devenir de droite à gauche, comme s'y attendrait un utilisateur arabe. Vous pouvez remplacer le comportement d’héritage en spécifiant explicitement FlowDirection sur n’importe quel élément. 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 les pinceaux de dégradé d'arrière-plan sont même inversés correctement lorsque la racine FlowDirection est modifiée.

FlowDirection="LeftToRight »

Capture d’écran montrant le flux de dégradé de gauche à droite.

FlowDirection="RightToLeft »

Capture d’écran montrant le flux de dégradé de droite à gauche.

É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. Évitez d’utiliser des dimensions fixes pour empêcher le découpage de 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

Il existe de nombreux cas où le contenu peut être ambigu et difficile à traduire. Le développeur ou le concepteur a la possibilité de fournir un contexte et des commentaires supplémentaires aux localiseurs par le biais de 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 de sortie .csv :

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

Les commentaires peuvent être placés sur le contenu ou la propriété d’un élément à l’aide de 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 gestionnaire de localisation a besoin de contrôler ce que les localiseurs peuvent lire et modifier. Par exemple, vous ne souhaiterez peut-être pas que le localisateur traduise le nom de votre entreprise ou de votre formulation juridique. 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. Dans le cadre de cet exemple, l’outil LocBaml génère simplement 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 de localisation et Commentaires.

Polices de secours 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 préférence de secours de police en créant votre propre police composite et en spécifiant la police à utiliser pour des plages et des langages de points de code spécifiques.

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

Localisation de la page d’accueil Microsoft

Vous pouvez suivre les mêmes étapes que l’exemple de boîte de dialogue Exécuter pour localiser cette application. Le fichier .csv localisé pour l’arabe est disponible dans l’exemple de page d’accueil globalization.