.NET Framework
Globalización en ASP.NET MVC utilizando la internacionalización inteligente para ASP.NET
Buscar..
Observaciones
Inteligente internacionalización para la página ASP.NET
El beneficio de este enfoque es que no tiene que saturar los controladores y otras clases con código para buscar valores de archivos .resx. Simplemente rodee el texto entre [[[corchetes triples.]]] (El delimitador es configurable.) Un HttpModule
busca una traducción en su archivo .po para reemplazar el texto delimitado. Si se encuentra una traducción, HttpModule
sustituye a la traducción. Si no se encuentra ninguna traducción, elimina los corchetes triples y renderiza la página con el texto original sin traducir.
Los archivos .po son un formato estándar para suministrar traducciones para aplicaciones, por lo que hay una serie de aplicaciones disponibles para editarlas. Es fácil enviar un archivo .po a un usuario no técnico para que puedan agregar traducciones.
Configuración básica y configuración
- Agregue el paquete nuget I18N a su proyecto MVC.
- En web.config, agregue
i18n.LocalizingModule
a su<httpModules>
o<modules>
.
<!-- IIS 6 -->
<httpModules>
<add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
</httpModules>
<!-- IIS 7 -->
<system.webServer>
<modules>
<add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
</modules>
</system.webServer>
- Agregue una carpeta llamada "locale" a la raíz de su sitio. Cree una subcarpeta para cada cultura que desee apoyar. Por ejemplo,
/locale/fr/
. - En cada carpeta específica de cada cultura, cree un archivo de texto llamado
messages.po
. - Para propósitos de prueba, ingrese las siguientes líneas de texto en su archivo
messages.po
:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- Agregue un controlador a su proyecto que devuelva texto para traducir.
using System.Web.Mvc;
namespace I18nDemo.Controllers
{
public class DefaultController : Controller
{
public ActionResult Index()
{
// Text inside [[[triple brackets]]] must precisely match
// the msgid in your .po file.
return Content("[[[Hello, world!]]]");
}
}
}
- Ejecute su aplicación MVC y busque la ruta correspondiente a la acción de su controlador, como http: // localhost: [su número de puerto] / predeterminado .
Observe que la URL se ha cambiado para reflejar su cultura predeterminada, como
http: // localhost: [yourportnumber] / es / default . - Reemplace
/en/
en la URL con/fr/
(o la cultura que haya seleccionado). La página ahora debe mostrar la versión traducida de su texto. - Cambie la configuración de idioma de su navegador para preferir su cultura alternativa y busque
/default
nuevamente. Observe que la URL se ha cambiado para reflejar su cultura alternativa y aparece el texto traducido. - En web.config, agregue controladores para que los usuarios no puedan navegar a su carpeta de
locale
.
<!-- IIS 6 -->
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
</system.web>
<!-- IIS 7 -->
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
</handlers>
</system.webServer>