Partager via


Globalisation pour WPF

Cette rubrique présente certains problèmes dont vous devez être conscient lors de l'écriture d'applications Windows Presentation Foundation (WPF) pour le marché international. Les éléments de programmation de la globalisation sont définis dans Microsoft .NET sous System.Globalization.

Cette rubrique comprend les sections suivantes.

  • Globalisation XAML
  • Conception d'une interface utilisateur internationale avec le langage XAML
  • Développement d'applications localisables
  • Utilisation de ClickOnce avec les applications localisées
  • Rubriques connexes

Globalisation XAML

Le langage Extensible Application Markup Language (XAML) est basé sur le langage XML et bénéficie de la prise en charge de la globalisation définie dans la spécification XML. Les sections suivantes décrivent certaines fonctionnalités XAML que vous devez connaître.

Références de caractère

La référence de caractère donne le numéro du caractère Unicode qu'elle représente, sous forme décimale ou hexadécimale. L'exemple suivant présente une référence de caractère décimale.

Ϩ

Ce deuxième exemple illustre une référence de caractère hexadécimale. Notez la présence d'un x devant le nombre hexadécimal.

Ϩ

Encodage

Les encodages ASCII, Unicode UTF-16 et UTF-8 sont pris en charge par le langage XAML. L'instruction des encodage se trouve au début de chaque document XAML. Si aucun attribut d'encodage ni ordre d'octets n'existe, la valeur UTF-8 est affectée par défaut à l'analyseur. UTF-8 et UTF-16 sont les encodages par défaut. L'encodage UTF-7 n'est pas pris en charge. L'exemple suivant montre comment spécifier un encodage UTF-8 dans un fichier XAML.

?xml encoding="UTF-8"?

Attribut Language

Le langage XAML utilise xml:lang pour représenter l'attribut de langage d'un élément. Pour tirer parti de la classe CultureInfo, la valeur d'attribut de langage doit être l'un des noms de culture prédéfinis par CultureInfo. xml:lang peut être hérité dans l'arborescence d'éléments (par les règles XML, pas nécessairement à cause de l'héritage de propriétés de dépendance) et sa valeur par défaut est une chaîne vide s'il n'est pas assigné explicitement.

L'attribut de langage est très utile pour spécifier des dialectes. Par exemple, le français présente des différences orthographiques, lexicales et phonologiques en fonction de la zone géographique dans laquelle il est utilisé : en France, au Québec, en Belgique ou en Suisse. Le chinois, le japonais et le coréen partagent également des points de code Unicode, bien que ces trois langues utilisent des polices et des idéogrammes très différents.

L'exemple de langage Extensible Application Markup Language (XAML) suivant utilise l'attribut du langage fr-CA pour spécifier le français canadien.

<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>

Unicode

Le langage XAML prend en charge toutes les fonctionnalités Unicode, y compris les substituts. Tant que le jeu de caractères peut être mappé à Unicode, sa prise en charge est assurée. Par exemple, le jeu de caractère GB18030 comprend quelques caractères mappés aux extensions A et B et aux paires de substitution du chinois, du japonais et du coréen (CFK) ; par conséquent, il est totalement pris en charge. Une application WPF peut utiliser la classe StringInfo pour manipuler des chaînes sans chercher à savoir si celles-ci contiennent des paires de substitution ou des caractères de non-espacement.

Conception d'une interface utilisateur internationale avec le langage XAML

Cette section décrit des fonctionnalités d'user interface (UI) que vous devez garder à l'esprit lors de l'écriture d'une application.

Texte international

WPF inclut un traitement intégré pour tous les systèmes d'écriture pris en charge par Microsoft .NET Framework.

Les scripts suivants sont actuellement pris en charge :

  • Arabe

  • Bengali

  • Devanagari

  • Cyrillique

  • Grec

  • Gujarati

  • Gurmukhi

  • Hébreu

  • Scripts idéographiques

  • Kannada

  • Laotien

  • Latin

  • Malayalam

  • Mongol

  • Oriya

  • Syriaque

  • Tamoul

  • Télougou

  • Thâna

  • Thaï*

  • Tibétain

*Cette version prend en charge l'affichage et la modification de texte thaïlandais, mais pas la césure de mots.

Les scripts suivants ne sont actuellement pas pris en charge :

  • Khmer

  • Hangûl (ancien coréen)

  • Birman

  • Sinhala

Tous les moteurs de systèmes d'écriture prennent en charge les polices OpenType. Les polices OpenType peuvent inclure les tableaux de disposition OpenType qui permettent aux créateurs de polices de concevoir de meilleures polices typographiques internationales et haut de gamme. Les tableaux de disposition de police OpenType contiennent des informations sur les substitutions et le positionnement de glyphes, la justification et le positionnement de ligne de base, permettant aux applications de traitement de texte d'améliorer la disposition du texte.

Les polices OpenType permettent de gérer des jeux de glyphes volumineux à l'aide de l'encodage Unicode. Cet encodage est largement pris en charge au niveau international, comme les variantes de glyphes typographiques.

Le rendu de texte WPF est généré par la technologie de sous-pixel Microsoft ClearType qui prend en charge l'indépendance vis-à-vis de la résolution. La lisibilité est ainsi considérablement améliorée et les documents haute qualité de style magazine peuvent être pris en charge pour tous les scripts.

Disposition internationale

WPF offre un moyen très pratique pour prendre en charge des dispositions horizontales, bidirectionnelles et verticales. Dans l'infrastructure de présentation, la propriété FlowDirection peut être utilisée pour définir la disposition. Les modèles de sens du déroulement sont les suivants :

  • LeftToRight : disposition horizontale pour le latin, les langues d'Asie orientale, etc.

  • RightToLeft : disposition bidirectionnelle pour l'arabe, l'hébreu, etc.

Développement d'applications localisables

Lorsque vous écrivez une application destinée à être utilisée dans le monde entier, vous ne devez pas oublier que cette application doit être localisable. Les rubriques suivantes signalent certains éléments à prendre en compte.

Interface utilisateur multilingue

La prise en charge Microsoft d'interfaces utilisateur multilingues permet d'accéder à différentes langues pour les UIs. Une application WPF utilise le modèle assembly pour prendre en charge les interfaces utilisateur multilingues. Une application contient des assemblys indépendants de la langue ainsi que des assemblys de ressources satellites dépendants de la langue. Le point d'entrée est un .EXE managé dans l'assembly principal. Le chargeur de ressource WPF tire parti du gestionnaire de ressources du Framework pour prendre en charge la recherche et la substitution de ressources. Les assemblys satellites multilingues fonctionnent avec le même assembly principal. L'assembly de ressources chargé dépend de la propriété CurrentUICulture du thread actuel.

Interface utilisateur localisable

Les applications WPF utilisent XAML pour définir leur UI. XAML permet aux développeurs de spécifier une hiérarchie d'objets avec un ensemble de propriétés et une logique. Le langage XAML est principalement utilisé pour le développement d'applications WPF, mais il peut également servir à spécifier une hiérarchie d'objets common language runtime (CLR). La plupart des développeurs utilisent le langage XAML pour spécifier l'UI de leurs applications et utilisent un langage de programmation tel que C# pour réagir à l'intervention de l'utilisateur.

Du point de vue des ressources, un fichier XAML conçu pour décrire une UI dépendante de la langue est un élément de ressource et, par conséquent, son format de distribution final doit être localisable pour prendre en charge différentes langues du monde entier. Le langage XAML ne pouvant pas gérer d'événement, des blocs de code réservés à cette opération sont inclus dans de nombreuses applications XAML. Pour plus d'informations, consultez Vue d'ensemble du langage XAML (WPF). Le code est supprimé et compilé dans différents binaires lorsqu'un fichier XAML est représenté sous forme de jeton dans le formulaire BAML du XAML. Le formulaire BAML des fichiers, images et autres types d'objets de ressources managées XAML sont incorporés dans l'assembly des ressources satellites, pouvant être localisé dans d'autres langues, ou dans l'assembly principal, lorsque la localisation n'est pas requise.

RemarqueRemarque

Les applications WPF prennent en charge toutes les ressources FrameworkCLR, y compris les tables de chaînes, les images, etc.

Génération d'applications localisables

La localisation est l'adaptation d'une UI à différentes cultures. Pour qu'une application WPF soit localisable, les développeurs doivent générer toutes les ressources localisables dans un assembly de ressources. L'assembly de ressources est localisé dans différentes langues et l'API de gestion des ressources est utilisée pour le chargement du code-behind. Un fichier projet (.proj) est requis pour toute application WPF. Toutes les ressources que vous utilisez dans votre application doivent être incluses dans ce fichier projet. Cette opération est illustrée dans l'exemple suivant, à partir d'un fichier .csproj.

<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>

Pour utiliser une ressource dans votre application, créez une instance ResourceManager et chargez la ressource souhaitée. L'exemple suivant illustre la procédure à suivre pour réaliser cette opération.

        Private Sub OnClick(ByVal sender As Object, ByVal e As RoutedEventArgs)
          Dim rm As New ResourceManager("stringtable", System.Reflection.Assembly.GetExecutingAssembly())
          Text1.Text = rm.GetString("Message")
        End Sub
void OnClick(object sender, RoutedEventArgs e)
{
  ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
       Assembly.GetExecutingAssembly());
  Text1.Text = rm.GetString("Message");
}

Utilisation de ClickOnce avec les applications localisées

ClickOnce est une nouvelle technologie de déploiement Windows Forms qui sera fournie avec Microsoft Visual Studio 2005. Cette technologie permet d'installer des applications et de mettre à niveau des applications Web. Lorsqu'une application déployée avec ClickOnce est localisée, elle ne peut être affichée que pour la culture localisée. Par exemple, si une application déployée est localisée en japonais, elle ne peut être affichée que sous la version japonaise de Microsoft Windows et non pas sous sa version anglaise. Cela représente un problème car il est fréquent que des utilisateurs japonais utilisent une version anglaise de Windows.

Pour remédier à cela, l'attribut de secours de langage neutre doit être défini. Un développeur d'applications peut également supprimer des ressources de l'assembly principal pour les placer dans un assembly satellite correspondant à une culture spécifique. Pour contrôler ce processus, utilisez la classe NeutralResourcesLanguageAttribute. Le constructeur de la classe NeutralResourcesLanguageAttribute a deux signatures, dont une qui utilise un paramètre UltimateResourceFallbackLocation pour spécifier l'emplacement où ResourceManager doit extraire les ressources de secours : assembly principal ou assembly satellite. L'exemple suivant montre comment utiliser cet attribut. Pour l'emplacement de secours ultime, le code indique au ResourceManager qu'il doit rechercher les ressources dans le sous-répertoire « de » du répertoire de l'assembly en cours d'exécution.

[assembly: NeutralResourcesLanguageAttribute(
    "de" , UltimateResourceFallbackLocation.Satellite)]

Voir aussi

Concepts

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