Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se presentan problemas que debes tener en cuenta al escribir aplicaciones de Windows Presentation Foundation (WPF) para el mercado global. Los elementos de programación de globalización se definen en .NET en el System.Globalization namespace.
Globalización de XAML
El lenguaje de marcado extensible de aplicaciones (XAML) se basa en XML y aprovecha la compatibilidad de globalización definida en la especificación XML. En las secciones siguientes se describen algunas características XAML que debes tener en cuenta.
Referencias personales
Una referencia de caracteres proporciona la unidad de código UTF16 del carácter Unicode determinado que representa, en decimal o hexadecimal. En el ejemplo siguiente se muestra una referencia numérica de caracteres decimales para la LETRA MAYÚSCULA COPTA HORI o "Ϩ".
Ϩ
En el ejemplo siguiente se muestra una referencia de caracteres hexadecimal. Observe que tiene una x delante del número hexadecimal.
Ϩ
Codificación
La codificación compatible con XAML es ASCII, Unicode UTF-16 y UTF-8. La instrucción de codificación está al principio del documento XAML. Si no existe ningún atributo de codificación y no hay ningún orden de bytes, el analizador tiene como valor predeterminado UTF-8. UTF-8 y UTF-16 son las codificaciones preferidas. No se admite UTF-7. En el ejemplo siguiente se muestra cómo especificar una codificación UTF-8 en un archivo XAML.
?xml encoding="UTF-8"?
Atributo de lenguaje
XAML usa xml:lang para representar el atributo de lenguaje de un elemento. Para aprovechar la CultureInfo clase , el valor del atributo de lenguaje debe ser uno de los nombres de referencia cultural predefinidos por CultureInfo. xml:lang se puede heredar en el árbol de elementos (por reglas XML, no necesariamente debido a la herencia de propiedades de dependencia) y su valor predeterminado es una cadena vacía si no se asigna explícitamente.
El atributo language es muy útil para especificar idiomas regionales. Por ejemplo, francés tiene diferentes ortografías, vocabulario y pronunciación en Francia, Quebec, Bélgica y Suiza. Además, chino, japonés y coreano comparten puntos de código en Unicode, pero las formas ideográficas son diferentes y usan fuentes totalmente diferentes.
En el siguiente ejemplo de Lenguaje de Marcado Extensible de Aplicaciones (XAML) se usa el atributo de idioma fr-CA
para especificar el francés canadiense.
<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>
Unicode
XAML admite todas las características Unicode, incluidas las suplentes. Siempre que el juego de caracteres se pueda asignar a Unicode, es compatible. Por ejemplo, GB18030 introduce algunos caracteres asignados a la extensión china, japonesa y coreana (CFK) A y B y pares suplentes, por lo que es totalmente compatible. Una aplicación WPF puede usar StringInfo para manipular cadenas sin comprender si tienen pares suplentes o si combinan caracteres.
Diseño de una interfaz de usuario internacional con XAML
En esta sección se describen las características de la interfaz de usuario (UI) que debe tener en cuenta al escribir una aplicación.
Texto internacional
WPF incluye procesamiento integrado para todos los sistemas de escritura admitidos de Microsoft .NET Framework.
Actualmente se admiten los siguientes scripts:
Árabe
Bengalí
Devanagari
Cirílico
Griego
Gujarati
Gurmukhi
Hebreo
Scripts ideográficos
Kannada
Lao
Latín
Malayalam
Mongol
Odia
Siríaco
Tamil
Telugu
Thaana
Tailandés*
Tibetano
*En esta versión se admite la visualización y edición del texto tailandés; la separación de palabras no es.
Actualmente no se admiten los siguientes scripts:
Jemer
Coreano Antiguo Hangul
Myanmar
Cingalés
Todos los motores del sistema de escritura admiten fuentes OpenType. 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. Las tablas de diseño de fuente OpenType contienen información sobre las sustituciones de glifos, el posicionamiento del glifo, la justificación y el posicionamiento de línea de base, lo que permite a las aplicaciones de procesamiento de texto mejorar el diseño de texto.
Las fuentes OpenType permiten controlar grandes conjuntos de glifos mediante la codificación Unicode. Esta codificación permite una amplia compatibilidad internacional, así como para variantes de glifos tipográficos.
La representación de texto de WPF se basa en la tecnología de subpíxeles de Microsoft ClearType que admite la independencia de la resolución. Esto mejora significativamente la legibilidad y proporciona la capacidad de admitir documentos de estilo de revista de alta calidad para todos los scripts.
Diseño internacional
WPF proporciona una manera muy cómoda de admitir diseños horizontales, bidireccionales y verticales. En el marco de presentación, la FlowDirection propiedad se puede usar para definir el diseño. Los patrones de dirección del flujo son:
LeftToRight : diseño horizontal para el latino, el este asiático, etc.
RightToLeft : bidireccional para árabe, hebreo, etc.
Desarrollo de aplicaciones localizables
Al escribir una aplicación para el consumo global, debe tener en cuenta que la aplicación debe ser localizable. En los temas siguientes se indican las cosas que se deben tener en cuenta.
Interfaz de usuario multilingüe
Interfaces de usuario multilingües (MUI) es una compatibilidad de Microsoft para cambiar las interfaces de usuario de un idioma a otro. Una aplicación WPF usa el modelo de ensamblado para admitir MUI. Una aplicación contiene ensamblados independientes del lenguaje, así como ensamblados de recursos satélite dependientes del lenguaje. El punto de entrada es un .EXE administrado en el ensamblado principal. El cargador de recursos de WPF aprovecha el gestor de recursos del Framework para admitir la búsqueda de recursos y el retroceso. Los ensamblados satélite de varios lenguajes funcionan con el mismo ensamblado principal. El ensamblado de recursos que se carga depende del CurrentUICulture del subproceso actual.
Interfaz de usuario localizable
Las aplicaciones WPF usan XAML para definir su interfaz de usuario. XAML permite a los desarrolladores especificar una jerarquía de objetos con un conjunto de propiedades y lógica. El uso principal de XAML es desarrollar aplicaciones WPF, pero se puede usar para especificar una jerarquía de cualquier objeto de Common Language Runtime (CLR). La mayoría de los desarrolladores usan XAML para especificar la interfaz de usuario de su aplicación y usar un lenguaje de programación como C# para reaccionar a la interacción del usuario.
Desde un punto de vista de recursos, una interfaz de usuario es un elemento de recurso y, por tanto, su formato de distribución final debe ser localizable para admitir idiomas internacionales. Dado que XAML no puede controlar eventos muchas aplicaciones XAML contienen bloques de código para hacerlo. Para obtener más información, consulta XAML en WPF. El código se elimina y se compila en diferentes binarios cuando un archivo XAML es tokenizado en la forma BAML de XAML. La forma BAML de archivos XAML, imágenes y otros tipos de objetos de recursos administrados se insertan en el ensamblado de recursos satélite, que se puede localizar en otros lenguajes o en el ensamblado principal cuando no se requiere la localización.
Nota:
Las aplicaciones wpF admiten todos los recursos de FrameworkCLR, incluidas las tablas de cadenas, las imágenes, etc.
Creación de aplicaciones localizables
La localización significa adaptar una interfaz de usuario a diferentes referencias culturales. Para que una aplicación wpF sea localizable, los desarrolladores deben compilar todos los recursos localizables en un ensamblado de recursos. El ensamblado de recursos se localiza en diferentes lenguajes y el código subyacente usa la API de administración de recursos para cargar. Uno de los archivos necesarios para una aplicación WPF es un archivo de proyecto (.proj). Todos los recursos que use en la aplicación deben incluirse en el archivo del proyecto. En el ejemplo siguiente de un archivo .csproj se muestra cómo hacerlo.
<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>
Para usar un recurso en su aplicación, cree una instancia de ResourceManager y cargue el recurso que desea usar. En el ejemplo siguiente se muestra cómo hacerlo.
void OnClick(object sender, RoutedEventArgs e)
{
ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
Assembly.GetExecutingAssembly());
Text1.Text = rm.GetString("Message");
}
Uso de ClickOnce con aplicaciones localizadas
ClickOnce es una nueva tecnología de implementación de Windows Forms que se enviará con Visual Studio 2005. Habilita la instalación y actualización de aplicaciones web. Cuando se localiza una aplicación que se implementó con ClickOnce, solo se puede ver en la cultura localizada. Por ejemplo, si una aplicación implementada se localiza en japonés, solo se puede ver en Microsoft Windows en japonés, no en Microsoft Windows en inglés. Esto presenta un problema porque es un escenario común para que los usuarios japoneses ejecuten una versión en inglés de Windows.
La solución a este problema es establecer el atributo de reserva de idioma neutro. Un desarrollador de aplicaciones puede quitar opcionalmente los recursos del ensamblado principal y especificar que los recursos se pueden encontrar en un ensamblado satélite correspondiente a una referencia cultural específica. Para controlar este proceso, utilice el 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: ensamblaje principal o ensamblaje satélite. En el ejemplo siguiente se muestra cómo utilizar el atributo. Para la ubicación de respaldo definitiva, el código hace que ResourceManager busque los recursos en el subdirectorio "de" del directorio del ensamblaje que se está ejecutando actualmente.
[assembly: NeutralResourcesLanguageAttribute(
"de" , UltimateResourceFallbackLocation.Satellite)]
Consulte también
.NET Desktop feedback