Globalización de WPFGlobalization for WPF

En este tema se presentan los problemas que debe tener en cuenta al escribir Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) aplicaciones para el mercado mundial.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. Los elementos de programación de globalización se definen en .NET en el espacio de nombres System.Globalization.The globalization programming elements are defined in .NET in the System.Globalization namespace.

Globalización XAMLXAML Globalization

Lenguaje XAML (XAML) se basa en XMLXML y aprovecha la compatibilidad de globalización definida en la especificación XMLXML.Extensible Application Markup Language (XAML) is based on XMLXML and takes advantage of the globalization support defined in the XMLXML specification. En las secciones siguientes se describen algunas características de XAMLXAML que debe tener en cuenta.The following sections describe some XAMLXAML features that you should be aware of.

Referencias de caracteresCharacter References

Una referencia de carácter proporciona la unidad de código UTF16 del carácter Unicode determinado que representa, en formato decimal o hexadecimal.A character reference gives the UTF16 code unit of the particular Unicode character it represents, in either decimal or hexadecimal. En el ejemplo siguiente se muestra una referencia de carácter decimal para la letra mayúscula CÓPTICA HORI o ' Ϩ ':The following example shows a decimal character reference for the COPTIC CAPITAL LETTER HORI, or 'Ϩ':

Ϩ

En el ejemplo siguiente se muestra una referencia de carácter hexadecimal.The following example shows a hexadecimal character reference. Observe que tiene una x delante del número hexadecimal.Notice that it has an x in front of the hexadecimal number.

Ϩ

CodificaciónEncoding

La codificación compatible con XAMLXAML son ASCII, Unicode UTF-16 y UTF-8.The encoding supported by XAMLXAML are ASCII, Unicode UTF-16, and UTF-8. La instrucción de codificación está al principio del documento XAMLXAML.The encoding statement is at the beginning of XAMLXAML document. Si no existe ningún atributo de codificación y no hay ningún orden de bytes, el analizador utiliza el valor predeterminado UTF-8.If no encoding attribute exists and there is no byte-order, the parser defaults to UTF-8. UTF-8 y UTF-16 son las codificaciones preferentes.UTF-8 and UTF-16 are the preferred encodings. No se admite UTF-7.UTF-7 is not supported. En el ejemplo siguiente se muestra cómo especificar una codificación UTF-8 en un archivo XAMLXAML.The following example demonstrates how to specify a UTF-8 encoding in a XAMLXAML file.

?xml encoding="UTF-8"?

Atributo de idiomaLanguage Attribute

XAMLXAML usa xml: lang para representar el atributo de idioma de un elemento.uses xml:lang to represent the language attribute of an element. Para aprovechar las ventajas de la clase CultureInfo, el valor del atributo Language debe ser uno de los nombres de referencia cultural predefinidos por CultureInfo.To take advantage of the CultureInfo class, the language attribute value needs to be one of the culture names predefined by CultureInfo. xml:lang es heredable en el árbol de elementos (mediante reglas XML, no necesariamente debido a la herencia de las propiedades de dependencia) y su valor predeterminado es una cadena vacía si no se asigna de manera explícita.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.

El atributo de idioma es muy útil para especificar dialectos.The language attribute is very useful for specifying dialects. Por ejemplo, el francés tiene una ortografía, un vocabulario y una pronunciación diferentes en Francia, Quebec, Bélgica y Suiza.For example, French has different spelling, vocabulary, and pronunciation in France, Quebec, Belgium, and Switzerland. Además, el chino, el japonés y el coreano comparten puntos de código en Unicode, pero las formas ideográficas son diferentes y usan fuentes totalmente diferentes.Also Chinese, Japanese, and Korean share code points in Unicode, but the ideographic shapes are different and they use totally different fonts.

En el siguiente ejemplo de Lenguaje XAML (Extensible Application Markup Language)Extensible Application Markup Language (XAML) se usa el atributo de lenguaje fr-CA para especificar francés canadiense.The following Lenguaje 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

XAMLXAML es compatible con todas las características Unicode, incluidos los suplentes.supports all Unicode features including surrogates. Siempre que el juego de caracteres se pueda asignar a Unicode, se admite.As long as the character set can be mapped to Unicode, it is supported. Por ejemplo, GB18030 presenta algunos caracteres que se asignan a la extensión A y B de chino, japonés y coreano (CFK) y pares suplentes, por lo tanto, es totalmente compatible.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. Una aplicación WPFWPF puede utilizar StringInfo para manipular cadenas sin comprender si tienen pares suplentes o caracteres combinables.A WPFWPF application can use StringInfo to manipulate strings without understanding whether they have surrogate pairs or combining characters.

Diseñar una interfaz de usuario internacional con XAMLDesigning an International User Interface with XAML

En esta sección se describen las características de @no__t 0 que se deben tener en cuenta al escribir una aplicación.This section describes interfaz de usuario (UI)user interface (UI) features that you should consider when writing an application.

Texto internacionalInternational Text

WPFWPF incluye el procesamiento integrado para todos los sistemas de escritura compatibles con Microsoft .NET Framework.includes built-in processing for all Microsoft .NET Framework supported writing systems.

Actualmente se admiten los siguientes scripts:The following scripts are currently supported:

  • ÁrabeArabic

  • BengalíBengali

  • DevanagariDevanagari

  • CirílicoCyrillic

  • GriegoGreek

  • GujaratiGujarati

  • GurmukhiGurmukhi

  • HebreoHebrew

  • Scripts ideográficosIdeographic scripts

  • CanarésKannada

  • LaoLao

  • LatínLatin

  • MalayalamMalayalam

  • MongolMongolian

  • OdiaOdia

  • SiríacoSyriac

  • TamulTamil

  • TeluguTelugu

  • ThaanaThaana

  • Tailandés*Thai*

  • TibetanoTibetan

* En esta versión, la visualización y edición de texto tailandés es compatible; no lo es la separación de palabras.*In this release the display and editing of Thai text is supported; word breaking is not.

Actualmente no se admiten los siguientes scripts:The following scripts are not currently supported:

  • JemerKhmer

  • Hangul coreano antiguoKorean Old Hangul

  • BirmanoMyanmar

  • CingalésSinhala

Todos los motores del sistema de escritura admiten fuentes OpenType.All the writing system engines support OpenType fonts. Las fuentes OpenType pueden incluir las tablas de diseño OpenType que permiten a los creadores de fuentes diseñar mejores fuentes tipográficas internacionales y de gama alta.OpenType fonts can include the OpenType layout tables that enable font creators to design better international and high-end typographic fonts. Las tablas de diseño de fuentes OpenType contienen información sobre las sustituciones de glifos, la posición del glifo, la justificación y la posición de línea base, lo que permite a las aplicaciones de procesamiento de texto mejorar el diseño del texto.The OpenType font layout tables contain information about glyph substitutions, glyph positioning, justification, and baseline positioning, enabling text-processing applications to improve text layout.

Las fuentes OpenType permiten el control de grandes conjuntos de glifos mediante la codificación Unicode.OpenType fonts allow the handling of large glyph sets using Unicode encoding. Esta codificación permite una amplia compatibilidad internacional, así como variantes tipográficas de los glifos.Such encoding enables broad international support as well as for typographic glyph variants.

la representación de texto WPFWPF se basa en la tecnología de subpíxeles de ClearType de Microsoft, que admite la independencia de la resolución.WPFWPF text rendering is powered by Microsoft ClearType sub-pixel technology that supports resolution independence. Esto mejora significativamente la legibilidad y permite la capacidad de admitir documentos de estilo de revista de gran calidad para todos los scripts.This significantly improves legibility and provides the ability to support high quality magazine style documents for all scripts.

Diseño internacionalInternational Layout

WPFWPF proporciona una manera muy cómoda de admitir diseños horizontales, bidireccionales y verticales.provides a very convenient way to support horizontal, bidirectional, and vertical layouts. En el marco de presentación, se puede usar la propiedad FlowDirection para definir el diseño.In presentation framework the FlowDirection property can be used to define layout. Los patrones de dirección de flujo son:The flow direction patterns are:

  • LeftToRight: diseño horizontal para latín, Asia Oriental y demás.LeftToRight - horizontal layout for Latin, East Asian and so forth.

  • RightToLeft: bidireccional para árabe, hebreo y demás.RightToLeft - bidirectional for Arabic, Hebrew and so forth.

Desarrollar aplicaciones localizablesDeveloping Localizable Applications

Al escribir una aplicación para su consumo global, debe tener en cuenta que la aplicación debe ser localizable.When you write an application for global consumption you should keep in mind that the application must be localizable. En los temas siguientes se señalan las cosas que deben tenerse en cuenta.The following topics point out things to consider.

Interfaz de usuario multilingüeMultilingual User Interface

La interfaz de usuario multilingüe (MUI) es un servicio de soporte técnico de Microsoft para cambiar ius de un idioma a otro.Multilingual User Interfaces (MUI) is a Microsoft support for switching UIs from one language to another. Una aplicación WPFWPF utiliza el modelo de ensamblado para admitir MUI.A WPFWPF application uses the assembly model to support MUI. Una aplicación contiene los ensamblados neutrales respecto al idioma, así como los ensamblados de recursos satélite dependientes del idioma.One application contains language-neutral assemblies as well as language-dependent satellite resource assemblies. El punto de entrada es un .EXE administrado en el ensamblado principal.The entry point is a managed .EXE in the main assembly. el cargador de recursos WPFWPF aprovecha el administrador de recursos de FrameworkFramework para admitir la búsqueda de recursos y la reserva.WPFWPF resource loader takes advantage of the FrameworkFramework's resource manager to support resource lookup and fallback. Varios ensamblados satélite de idioma funcionan con el mismo ensamblado principal.Multiple language satellite assemblies work with the same main assembly. El ensamblado de recursos que se carga depende de la CurrentUICulture del subproceso actual.The resource assembly that is loaded depends on the CurrentUICulture of the current thread.

Interfaz de usuario localizableLocalizable User Interface

las aplicaciones WPFWPF usan XAMLXAML para definir su @no__t 2.WPFWPF applications use XAMLXAML to define their IUUI. XAMLXAML permite a los desarrolladores especificar una jerarquía de objetos con un conjunto de propiedades y lógica.allows developers to specify a hierarchy of objects with a set of properties and logic. El uso principal de XAMLXAML es desarrollar aplicaciones de WPFWPF, pero se puede usar para especificar una jerarquía de cualquier objeto de 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 mayoría de los desarrolladores usan XAMLXAML para especificar el IUUI de su aplicación y usar un C# lenguaje de programación como para reaccionar a la interacción del usuario.Most developers use XAMLXAML to specify their application's IUUI and use a programming language such as C# to react to user interaction.

Desde el punto de vista de los recursos, un archivo XAMLXAML diseñado para describir un IUUI dependiente del idioma es un elemento de recurso y, por tanto, su formato de distribución final debe ser localizable para admitir idiomas internacionales.From a resource point of view, a XAMLXAML file designed to describe a language-dependent IUUI is a resource element and therefore its final distribution format must be localizable to support international languages. Dado que XAMLXAML no puede controlar eventos, muchas aplicaciones de XAMLXAML contienen bloques de código para hacerlo.Because XAMLXAML cannot handle events many XAMLXAML applications contain blocks of code to do this. Para obtener más información, vea información general sobre XAML (WPF).For more information, see XAML Overview (WPF). El código se quita y se compila en archivos binarios diferentes cuando un archivo XAMLXAML se acorta en el formato BAML de XAML.Code is stripped out and compiled into different binaries when a XAMLXAML file is tokenized into the BAML form of XAML. Los archivos, imágenes y otros tipos de objetos de recursos administrados con formato BAML de XAML se insertan en el ensamblado de recursos satélite, que se puede localizar a otros idiomas, o en el ensamblado principal, cuando no se requiere la localización.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.

Nota

las aplicaciones WPFWPF admiten todos los recursos FrameworkFrameworkCLR, como tablas de cadenas, imágenes, etc.WPFWPF applications support all the FrameworkFrameworkCLR resources including string tables, images, and so forth.

Compilar aplicaciones localizablesBuilding Localizable Applications

La localización significa adaptar un IUUI a diferentes referencias culturales.Localization means to adapt a IUUI to different cultures. Para convertir una aplicación WPFWPF en localizable, los desarrolladores deben compilar todos los recursos localizables en un ensamblado de recursos.To make a WPFWPF application localizable, developers need to build all the localizable resources into a resource assembly. El ensamblado de recursos se localiza en idiomas diferentes y el código subyacente usa la API de administración de recursos para cargar.The resource assembly is localized into different languages, and the code-behind uses resource management API to load. Uno de los archivos necesarios para una aplicación WPFWPF es un archivo de proyecto (. proj).One of the files required for a WPFWPF application is a project file (.proj). Todos los recursos que se utilizan en la aplicación deben incluirse en el archivo de proyecto.All resources that you use in your application should be included in the project file. En el ejemplo siguiente de un archivo .csproj se muestra cómo hacerlo.The following example from a .csproj file shows how to do this.

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

Para usar un recurso en la aplicación, cree una instancia de ResourceManager y cargue el recurso que desea usar.To use a resource in your application instantiate a ResourceManager and load the resource you want to use. En el ejemplo siguiente se muestra cómo hacerlo: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");
}

Utilizar ClickOnce con aplicaciones localizadasUsing ClickOnce with Localized Applications

ClickOnce es una nueva tecnología de implementación de Windows Forms que se incluirá con Visual Studio 2005.ClickOnce is a new Windows Forms deployment technology that will ship with Visual Studio 2005. Permite la instalación y actualización de aplicaciones web.It enables application installation and upgrading of Web applications. Cuando se localiza una aplicación que se implementó con ClickOnce, solo puede verse en la referencia cultural localizada.When an application that was deployed with ClickOnce is localized it can only be viewed on the localized culture. Por ejemplo, si una aplicación implementada se localiza en japonés, solo se puede ver en japonés @no__t no en las ventanas inglesas.For example, if a deployed application is localized to Japanese it can only be viewed on Japanese Microsoft WindowsMicrosoft Windows not on English Windows. Esto supone un problema porque se trata de un escenario común para que los usuarios japoneses ejecuten una versión en Inglés de Windows.This presents a problem because it is a common scenario for Japanese users to run an English version of Windows.

La solución a este problema es establecer el atributo neutro de reserva de idioma.The solution to this problem is setting the neutral language fallback attribute. Como alternativa, un desarrollador de aplicaciones puede quitar recursos del ensamblado principal y especificar que los recursos puedan encontrarse en un ensamblado satélite correspondiente a una referencia cultural específica.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. Para controlar este proceso, use el NeutralResourcesLanguageAttribute.To control this process use the NeutralResourcesLanguageAttribute. El constructor de la clase NeutralResourcesLanguageAttribute tiene dos firmas, una que toma un parámetro UltimateResourceFallbackLocation para especificar la ubicación donde ResourceManager debe extraer los recursos de reserva: ensamblado principal o ensamblado satélite.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. En el ejemplo siguiente se muestra cómo utilizar el atributo.The following example shows how to use the attribute. En el caso de la ubicación de reserva definitiva, el código hace que el ResourceManager busque los recursos en el subdirectorio "de" del directorio del ensamblado que se está ejecutando actualmente.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)]

Vea tambiénSee also