En este post explicare como implementar en un proyecto desde 0 la posibilidad de ofrecer una pagina en distintas lenguas.

1. Creamos un nuevo proyecto de 0, la aplicación será en MVC .Net Framework, llamare Globalización al proyecto.

CapturaPOST3

2. Añadimos un fichero de recursos, para ello :

2.1- Click derecho en la carpeta root del proyecto, click en add, y selecciona add ASP.NET folder. Selecciona App_globalResources .

CapturaPOST5

2.2- Crea un fichero de recursos (.resx) dentro de la carpeta App_globalResources. Lo voy a llamar “Resource.resx”.

CapturaPOST6

2.3- Necesitaríamos otros ficheros de recursos para guardar los datos según el lenguaje.

2.4- Añade otro fichero con los siguientes nombres para cada recurso “Resource.gu-IN.resx” , “Resource.mr-IN.resx”, “Resource.te-IN.resx”, “Resource.en-US.resx”, “Resource.hi-IN.resx”.

3. Metemos valores en la Hoja de recursos que luego recuperaremos desde el controller. El post Resource.resx quedaría así :

ImagenResource

Y el Resource.en-US.resx quedaría de esta forma :

Resourceen-US

4. Ahora creamos un modelo. Añadimos el modelo a la aplicación llamándolo UserDetails, con dos propiedades, Imagen y Nombre (ambas son string).

5. A este modelo hay que añadirle la decoracion «Display» en sus propiedades para que en la pagina se muestre según la lengua y cultura, esto es opcional, puesto que solo se vera si utilizamos el lenguaje razor para representar las cosas de la vista.

UserDetails

6. Añade una carpeta que se llame Helpers, y dentro crea una clase que se llame CultureHelper, aquí incluiremos la propiedad CulturaActual o “CurrentCulture”, y un método getCultura que devuelve un CultureInfo:

CultureHelper1
CultureHelper2

7. Añade el controlador “HomeController”, hereda de Controller y crea un ActionResult para visualizar “Index”. Añade otro método ActionResult que se encargue de cambiar la cultura. Entonces los métodos que trabajaremos ahora son “Index” y (nombre opcional) “ChangeCurrentCulture(string id)”.

HomeControllerFinal
CapturaHomeController2

8. Creamos una vista parcial que cargaremos en «_Layout.cshtml» que contendrá los links que permitirán realizar el cambio de lengua:

CapturaPartialView
Esto se renderiza con @Html.Partial([nombre_vista_parcial]), en cualquier parte del Layout.

9. Hacemos scaffolding de Create sobre el modelo Userdetails para crear la View Index

El autogenerado quedaría así : 

IndexFinal

Finalmente el layout quedaría así :

Layout1
Layout2

Y bueno, simplemente pulsando el F5 debería funcionar. Espero que sea de ayuda

Autor/a: Iván Encinas Rodríguez

Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin 

Centro: Tajamar 

Año académico: 2019-2020 

Código / recursos utilizados / Otros datos de interés: Enlace a GitHub

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.