Globalisation pour WPFGlobalization for WPF

Cette rubrique présente les problèmes que vous devez connaître lors de l' Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) écriture d’applications pour le marché mondial.This topic introduces issues that you should be aware of when writing Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) applications for the global market. Les éléments de programmation de la globalisation System.Globalizationsont définis dans Microsoft .NETMicrosoft .NET dans.The globalization programming elements are defined in Microsoft .NETMicrosoft .NET in System.Globalization.

Globalisation XAMLXAML Globalization

langage XAML (eXtensible Application Markup Language)Extensible Application Markup Language (XAML)est basé sur XMLXML et tire parti de la prise en charge de la XMLXML globalisation définie dans la spécification.is based on XMLXML and takes advantage of the globalization support defined in the XMLXML specification. Les sections suivantes décrivent XAMLXAML certaines fonctionnalités que vous devez connaître.The following sections describe some XAMLXAML features that you should be aware of.

Références de caractèresCharacter References

Une référence de caractère donne l’unité de code UTF16 du UnicodeUnicode caractère particulier qu’elle représente, en notation décimale ou hexadécimale.A character reference gives the UTF16 code unit of the particular UnicodeUnicode character it represents, in either decimal or hexadecimal. L’exemple suivant montre une référence de caractère décimale pour la lettre majuscule du copte HORI, ou «Ϩ»:The following example shows a decimal character reference for the COPTIC CAPITAL LETTER HORI, or 'Ϩ':

Ϩ

L’exemple suivant montre une référence de caractère hexadécimale.The following example shows a hexadecimal character reference. Notez qu’il a un x devant le nombre hexadécimal.Notice that it has an x in front of the hexadecimal number.

Ϩ

EncodageEncoding

L’encodage pris XAMLXAML en charge par UnicodeUnicode est ASCII, UTF-16 et UTF-8.The encoding supported by XAMLXAML are ASCII, UnicodeUnicode UTF-16, and UTF-8. L’instruction Encoding se trouve au début du XAMLXAML document.The encoding statement is at the beginning of XAMLXAML document. Si aucun attribut d’encodage ni ordre d’octets n’existe, la valeur UTF-8 est affectée par défaut à l’analyseur.If no encoding attribute exists and there is no byte-order, the parser defaults to UTF-8. UTF-8 et UTF-16 sont les encodages par défaut.UTF-8 and UTF-16 are the preferred encodings. UTF-7 n’est pas pris en charge.UTF-7 is not supported. L’exemple suivant montre comment spécifier un encodage UTF-8 dans un XAMLXAML fichier.The following example demonstrates how to specify a UTF-8 encoding in a XAMLXAML file.

?xml encoding="UTF-8"?

Attribut de langueLanguage Attribute

XAMLXAMLutilise XML: lang pour représenter l’attribut de langage d’un élément.uses xml:lang to represent the language attribute of an element. Pour tirer parti de la CultureInfo classe, la valeur de l’attribut Language doit être l’un des noms de culture prédéfinis par. CultureInfoTo take advantage of the CultureInfo class, the language attribute value needs to be one of the culture names predefined by 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.xml:lang is inheritable in the element tree (by XML rules, not necessarily because of dependency property inheritance) and its default value is an empty string if it is not assigned explicitly.

L’attribut de langue est très utile pour spécifier des dialectes.The language attribute is very useful for specifying dialects. 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.For example, French has different spelling, vocabulary, and pronunciation in France, Quebec, Belgium, and Switzerland. En outre, le chinois, le japonais et le coréen UnicodeUnicodepartagent des points de code dans, mais les formes idéographiques sont différentes et utilisent des polices totalement différentes.Also Chinese, Japanese, and Korean share code points in UnicodeUnicode, but the ideographic shapes are different and they use totally different fonts.

L’exemple langage XAML (eXtensible Application Markup Language)Extensible Application Markup Language (XAML) suivant utilise l' fr-CA attribut Language pour spécifier le français canadien.The following langage XAML (eXtensible Application Markup Language)Extensible Application Markup Language (XAML) example uses the fr-CA language attribute to specify Canadian French.

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

UnicodeUnicode

XAMLXAMLprend en UnicodeUnicode charge toutes les fonctionnalités, y compris les substituts.supports all UnicodeUnicode features including surrogates. Tant que le jeu de caractères peut être mappé à UnicodeUnicode, il est pris en charge.As long as the character set can be mapped to UnicodeUnicode, it is supported. Par exemple, le jeu de caractères 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.For example, GB18030 introduces some characters that are mapped to the Chinese, Japanese, and Korean (CFK) extension A and B and surrogate pairs, therefore it is fully supported. Une WPFWPF application peut utiliser StringInfo pour manipuler des chaînes sans savoir si elles ont des paires de substitution ou des caractères d’association.A WPFWPF application can use StringInfo to manipulate strings without understanding whether they have surrogate pairs or combining characters.

Conception d’une interface utilisateur internationale avec le langage XAMLDesigning an International User Interface with XAML

Cette section décrit interface utilisateur (UI)user interface (UI) les fonctionnalités que vous devez prendre en compte lors de l’écriture d’une application.This section describes interface utilisateur (UI)user interface (UI) features that you should consider when writing an application.

Texte internationalInternational Text

WPFWPFcomprend le traitement intégré pour tous les systèmes d’écriture Microsoft .NET Framework pris en charge.includes built-in processing for all Microsoft .NET Framework supported writing systems.

Les scripts suivants sont pris en charge :The following scripts are currently supported:

  • ArabeArabic

  • BengaliBengali

  • DévanâgarîDevanagari

  • CyrilliqueCyrillic

  • GrecGreek

  • GujaratiGujarati

  • GurmukhiGurmukhi

  • HébreuHebrew

  • Scripts idéographiquesIdeographic scripts

  • KannadaKannada

  • LaoLao

  • LatinLatin

  • MalayalamMalayalam

  • MongolMongolian

  • OdiaOdia

  • SyriaqueSyriac

  • TamoulTamil

  • TélougouTelugu

  • TanaThaana

  • Thaï*Thai*

  • TibétainTibetan

*Cette version prend en charge l’affichage et la modification de texte thaïlandais, mais pas la césure de mots.*In this release the display and editing of Thai text is supported; word breaking is not.

Les scripts suivants ne sont pas pris en charge :The following scripts are not currently supported:

  • KhmerKhmer

  • Hangûl (ancien coréen)Korean Old Hangul

  • MyanmarMyanmar

  • SinhalaSinhala

Tous les moteurs de système d’écriture prennent en charge les polices OpenType.All the writing system engines support OpenType fonts. 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.OpenType fonts can include the OpenType layout tables that enable font creators to design better international and high-end typographic fonts. Les tableaux de disposition des polices OpenType contiennent des informations sur les substitutions de glyphe, le positionnement des glyphes, la justification et le positionnement de la ligne de base, ce qui permet aux applications de traitement de texte d’améliorer la disposition du texte.The OpenType font layout tables contain information about glyph substitutions, glyph positioning, justification, and baseline positioning, enabling text-processing applications to improve text layout.

Les polices OpenType permettent de gérer des jeux de glyphes volumineux à l’aide de l' UnicodeUnicode encodage.OpenType fonts allow the handling of large glyph sets using UnicodeUnicode encoding. Cet encodage est largement pris en charge au niveau international, comme les variantes de glyphes typographiques.Such encoding enables broad international support as well as for typographic glyph variants.

WPFWPFle rendu du texte est alimenté par la technologie de sous-pixel ClearType de Microsoft qui prend en charge l’indépendance de la résolution.text rendering is powered by Microsoft ClearType sub-pixel technology that supports resolution independence. 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.This significantly improves legibility and provides the ability to support high quality magazine style documents for all scripts.

Disposition internationaleInternational Layout

WPFWPF offre un moyen très pratique pour prendre en charge des dispositions horizontales, bidirectionnelles et verticales.provides a very convenient way to support horizontal, bidirectional, and vertical layouts. Dans l’infrastructure de FlowDirection présentation, la propriété peut être utilisée pour définir la disposition.In presentation framework the FlowDirection property can be used to define layout. Les modèles de sens du déroulement sont les suivants :The flow direction patterns are:

  • LeftToRight : disposition horizontale pour le latin, les langues d’Asie orientale, etc.LeftToRight - horizontal layout for Latin, East Asian and so forth.

  • RightToLeft : disposition bidirectionnelle pour l’arabe, l’hébreu, etc.RightToLeft - bidirectional for Arabic, Hebrew and so forth.

Développement d’applications localisablesDeveloping Localizable Applications

Quand vous écrivez une application destinée à être utilisée dans le monde entier, vous ne devez pas oublier que cette application doit être localisable.When you write an application for global consumption you should keep in mind that the application must be localizable. Les rubriques suivantes signalent certains éléments à prendre en compte.The following topics point out things to consider.

Interface utilisateur multilingueMultilingual User Interface

Les interfaces utilisateur multilingues (MUI) MicrosoftMicrosoft sont une prise interfaces utilisateurUIs en charge du passage d’une langue à une autre.Multilingual User Interfaces (MUI) is a MicrosoftMicrosoft support for switching interfaces utilisateurUIs from one language to another. Une WPFWPF application utilise le modèle d’assembly pour prendre en charge MUI.A WPFWPF application uses the assembly model to support MUI. Une application contient des assemblys indépendants de la langue ainsi que des assemblys de ressources satellites dépendants de la langue.One application contains language-neutral assemblies as well as language-dependent satellite resource assemblies. Le point d’entrée est un .EXE managé dans l’assembly principal.The entry point is a managed .EXE in the main assembly. WPFWPFle chargeur de ressources tire parti du FrameworkFrameworkgestionnaire de ressources de pour prendre en charge la recherche et la restauration des ressources.resource loader takes advantage of the FrameworkFramework's resource manager to support resource lookup and fallback. Les assemblys satellites multilingues fonctionnent avec le même assembly principal.Multiple language satellite assemblies work with the same main assembly. L’assembly CurrentUICulture de ressource qui est chargé dépend du du thread actuel.The resource assembly that is loaded depends on the CurrentUICulture of the current thread.

Interface utilisateur localisableLocalizable User Interface

WPFWPFles applications XAMLXAML utilisent pour définir Interface utilisateurUIleur.applications use XAMLXAML to define their Interface utilisateurUI. XAMLXAML permet aux développeurs de spécifier une hiérarchie d’objets avec un ensemble de propriétés et une logique.allows developers to specify a hierarchy of objects with a set of properties and logic. L’utilisation principale de XAMLXAML est de développer WPFWPF des applications, mais elle peut être utilisée pour spécifier une hiérarchie d’objets Common Language Runtime (CLR).The primary use of XAMLXAML is to develop WPFWPF applications but it can be used to specify a hierarchy of any common language runtime (CLR) objects. La plupart des XAMLXAML développeurs utilisent pour spécifier leur Interface utilisateurUI application et utiliser un langage de programmation C# tel que pour réagir à l’interaction de l’utilisateur.Most developers use XAMLXAML to specify their application's Interface utilisateurUI and use a programming language such as C# to react to user interaction.

Du point de vue de la ressource, XAMLXAML un fichier conçu pour décrire un dépendant Interface utilisateurUI du langage est un élément de ressource et, par conséquent, son format de distribution final doit être localisable pour prendre en charge les langues internationales.From a resource point of view, a XAMLXAML file designed to describe a language-dependent Interface utilisateurUI is a resource element and therefore its final distribution format must be localizable to support international languages. Étant XAMLXAML donné que ne peut XAMLXAML pas gérer les événements, de nombreuses applications contiennent des blocs de code pour effectuer cette opération.Because XAMLXAML cannot handle events many XAMLXAML applications contain blocks of code to do this. Pour plus d’informations, consultez vue d’ensemble du langage XAML (WPF).For more information, see XAML Overview (WPF). Le code est supprimé et compilé en différents binaires lorsqu’un XAMLXAML fichier est sous forme de jeton dans le formulaire BAML de XAML.Code is stripped out and compiled into different binaries when a XAMLXAML file is tokenized into the BAML form of XAML. Le formulaire BAML des fichiers, des images et d’autres types d’objets de ressources managées XAML est incorporé dans l’assembly des ressources satellites, pouvant être localisé dans d’autres langues, ou dans l’assembly principal, quand la localisation n’est pas nécessaire.The BAML form of XAML files, images, and other types of managed resource objects are embedded in the satellite resource assembly, which can be localized into other languages, or the main assembly when localization is not required.

Notes

WPFWPFles applications prennent en FrameworkFrameworkcharge toutes les ressources CLR, y compris les tables de chaînes, les images, etc.applications support all the FrameworkFrameworkCLR resources including string tables, images, and so forth.

Génération d’applications localisablesBuilding Localizable Applications

La localisation consiste à adapter Interface utilisateurUI une à différentes cultures.Localization means to adapt a Interface utilisateurUI to different cultures. Pour rendre une WPFWPF application localisable, les développeurs doivent générer toutes les ressources localisables dans un assembly de ressources.To make a WPFWPF application localizable, developers need to build all the localizable resources into a resource assembly. L’assembly de ressource est localisé dans différentes langues et le code-behind utilise l’API de gestion des ressources pour le chargement.The resource assembly is localized into different languages, and the code-behind uses resource management API to load. L’un des fichiers requis pour une WPFWPF application est un fichier projet (. proj).One of the files required for a WPFWPF application is a project file (.proj). Toutes les ressources que vous utilisez dans votre application doivent être comprises dans le fichier projet.All resources that you use in your application should be included in the project file. Cette opération est illustrée dans l’exemple suivant, à partir d’un fichier .csproj.The following example from a .csproj file shows how to do this.

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

Pour utiliser une ressource dans votre application, instanciez un ResourceManager et chargez la ressource que vous souhaitez utiliser.To use a resource in your application instantiate a ResourceManager and load the resource you want to use. L'exemple suivant illustre la procédure à suivre pour réaliser cette opération.The following example demonstrates how to do this.

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éesUsing ClickOnce with Localized Applications

ClickOnce est une nouvelle technologie de déploiement Windows Forms qui sera livrée avec Visual Studio 2005.ClickOnce is a new Windows Forms deployment technology that will ship with Visual Studio 2005. Cette technologie permet d’installer des applications et de mettre à niveau des applications web.It enables application installation and upgrading of Web applications. Quand une application déployée avec ClickOnce est localisée, elle ne peut être affichée que sous la culture localisée.When an application that was deployed with ClickOnce is localized it can only be viewed on the localized culture. Par exemple, si une application déployée est localisée en japonais, elle ne peut être affichée Microsoft WindowsMicrosoft Windows que sur le japonais et non sur la version anglaise de Windows.For example, if a deployed application is localized to Japanese it can only be viewed on Japanese Microsoft WindowsMicrosoft Windows not on English Windows. Cela présente un problème, car il s’agit d’un scénario courant pour les utilisateurs japonais qui exécutent une version anglaise de Windows.This presents a problem because it is a common scenario for Japanese users to run an English version of Windows.

La solution à ce problème consiste à définir l’attribut de secours de langue neutre.The solution to this problem is setting the neutral language fallback attribute. 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.An application developer can optionally remove resources from the main assembly and specify that the resources can be found in a satellite assembly corresponding to a specific culture. Pour contrôler ce processus, utilisez NeutralResourcesLanguageAttributele.To control this process use the NeutralResourcesLanguageAttribute. Le constructeur de la NeutralResourcesLanguageAttribute classe a deux signatures, une qui prend un UltimateResourceFallbackLocation paramètre pour ResourceManager spécifier l’emplacement où doit extraire les ressources de secours: assembly principal ou assembly satellite.The constructor of the NeutralResourcesLanguageAttribute class has two signatures, one that takes an UltimateResourceFallbackLocation parameter to specify the location where the ResourceManager should extract the fallback resources: main assembly or satellite assembly. L'exemple suivant montre comment utiliser l'attribut.The following example shows how to use the attribute. Pour l’emplacement de secours ultime, le code fait ResourceManager en sorte que le recherche les ressources dans le sous-répertoire «de» du répertoire de l’assembly en cours d’exécution.For the ultimate fallback location, the code causes the ResourceManager to look for the resources in the "de" subdirectory of the directory of the currently executing assembly.

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

Voir aussiSee also