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

  1. Agregue el paquete nuget I18N a su proyecto MVC.
  2. 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>
  1. 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/ .
  2. En cada carpeta específica de cada cultura, cree un archivo de texto llamado messages.po .
  3. 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!"
  1. 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!]]]");
        }
    }
}
  1. 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 .
  2. 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.
  3. 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.
  4. 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>


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow