ASP.NET MVC - implementando globalizacion and localizacion

14
Globalización y Localización Danae Aguilar Guzmán MCT, MS, MCTS, MCP [email protected]

Transcript of ASP.NET MVC - implementando globalizacion and localizacion

Page 1: ASP.NET MVC - implementando globalizacion and localizacion

Globalización y Localización

Danae Aguilar Guzmán MCT, MS, MCTS, MCP

[email protected]

Page 2: ASP.NET MVC - implementando globalizacion and localizacion

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"

Page 3: ASP.NET MVC - implementando globalizacion and localizacion

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

Page 4: ASP.NET MVC - implementando globalizacion and localizacion

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

Page 5: ASP.NET MVC - implementando globalizacion and localizacion

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>

Page 6: ASP.NET MVC - implementando globalizacion and localizacion

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

Page 7: ASP.NET MVC - implementando globalizacion and localizacion

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)]

Page 8: ASP.NET MVC - implementando globalizacion and localizacion

Archivos de recursos

Los archivos de recursos sirven para tener versiones de las cadenas en diferentes idiomas

Page 9: ASP.NET MVC - implementando globalizacion and localizacion

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

Page 10: ASP.NET MVC - implementando globalizacion and localizacion

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

Page 11: ASP.NET MVC - implementando globalizacion and localizacion

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>

Page 12: ASP.NET MVC - implementando globalizacion and localizacion

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"; }

Page 13: ASP.NET MVC - implementando globalizacion and localizacion

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; }

Page 14: ASP.NET MVC - implementando globalizacion and localizacion

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>