asp.net mvc - implementando globalizacion and localizacion
TRANSCRIPT
Globalización y Localización
• Internacionalización (i18n) – Hacer que la aplicación soporte un rango de lenguajes y locales
• Localización (L10n) – Hacer que la aplicación soporte un lenguaje/locale especifico.
• Globalización – La combinación de Internacionalización Localización
• Lenguaje – Por ejemplo Español. Su código ISO es "es"
• Locale - Por ejemplo Bolivia. No es lo mismo el español de Bolivia que de España, e.j. "es-BO" vs. "es-ES"
Globalización y Localización
1. Cultura de la aplicacion:
en indica el idioma inglés
es indica el idioma español
de indica el idioma alemán
2. Cultura específica:
en-CA indica el idioma inglés y la region de Canada
af-ZA indica el idioma africano y la region de Sud Africa
es-ES indica el idioma español y la region de España
Globalización y Localización
El navegador del usuario le especificará a nuestro servidor el lenguaje y locale del usuario.
Esto en las cabeceras del request:
Accept-Language: en-US,en;q=0.8
Globalización y Localización
Podemos habilitar el manejo de globalizaciónen el Web.config:
<system.web><globalization culture="auto"
uiCulture="auto"enableClientBasedCulture="true">
</globalization>
Manejo de recursos locales
Se puede estructurar las vistas para diferentesculturas:
/Views
/Globalization
/en-US
/Home /Index.aspx
/Shared /Navigation.aspx
/es-MX
/Home /Index.aspx
/Shared
Manejo de recursos locales
Podriamos sobreescribirController.OnActionExecuted y cambiar el pathdel controller basado en el UICulture:
• Thread.CurrentThread.CurrentUICulture
Para especificar la cultura:
Especificando la cultura por defecto, Agregamos en el archivoProperties/AssemblyInfo.cs:
System.Threading.Thread.CurrentThread.CurrentUICulture =
new System.Globalization.CultureInfo("es-ES");
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
Archivos de recursos
Los archivos de recursos sirven para tener versiones de las cadenas en diferentes idiomas
Archivos de recursos
Agregando Archivos de recursos
1. Crear un folder llamado Resources
2. Argegar un item de tipo resource file, (extension .resx) por ejemplo Cadenas.resx
3. En las propiedades del archivo, cambiarCustom Tool al valor PublicResXFileCodeGenerator, o fijar el recurso como public
Archivos de recursos
4. Agregar las variables con las cadenas que serán traducidas
5. Crear otro archivo de recursos con el mismonombre mas el nombre de otra cultura, porejemplo: Cadenas.es.resx
6. Agregar el contenido en otro idioma para lasmismas variables
Archivos de recursos
7. Usar las cadenas traducidas en lugar de texto en las vistas: @Cadenas.MiCadena
7.1. Agregar el namespace en cada vista:
@using EjemploLocalizazion.Resources
7.2. O en el namespace en el web.config:
<configuration> <system.web.webPages.razor> <pages> <namespaces> <add namespace="EjemploLoc.Resources"/> </namespaces> </pages> </system.web.webPages.razor>
Archivos de recursos
8. Agregar la etiqueta globalization al web.config dentro de system.web:
9. Podemos especificar la cultura de cadavista, Culture o UICulture:
<system.web> <globalization uiCulture="auto" culture="auto" />
@{ ViewBag.Title = "Index"; UICulture = "es-BO"; }
Localizando mensajes de error
1. Asignar ErrorMessageResourceType con el tipo que contiene los recursos
2. Asignar ErrorMessageResourceName con el nombre de la variable que contiene el mensaje de error.
public class Estudiante { [Required(ErrorMessageResourceName = "FaltaNombre", ErrorMessageResourceType = typeof(Cadenas))] public string Nombre { get; set; }
Archivos de recursos
Para un idioma diferente se tiene un archivo con mismo nombre pero la extensión incluye el idioma: Default.aspx.es.resx
Un archivo de recursos es un Xml quecontiene pares de key value
<data name="PageResource1.Titulo" xml:space="preserve"> <value>Búsqueda de items</value> </data>