2012-04-10 8 views
7

tengo 2 archivo de recursos: Resources.resx (tiene algunas cadenas en rumano) y Resources.en-US.resx (tiene las mismas cadenas en Inglés)Cambio de lenguaje basado en archivos de recursos de ASP.NET MVC 4

Solo quiero cambiar (en una lista desplegable, un listbox, ...) archivo de recursos de witch para usar. Podría estar en _Layout.cshtml. No necesito detectar la cultura del usuario.

P: ¿Cómo puedo seleccionar un archivo de recursos de una página?

Editar: ¿Se puede hacer sin cambiar el MapRoute predeterminado?

Respuesta

6

Una forma de hacerlo es tener el menú desplegable simplemente redirigir la página a una URL específica del idioma (esto es bastante bueno, ya que puede enviar enlaces específicos del idioma) y luego en una clase base en su controlador, configure el Configuración regional de Thread.

Este blog cubre lo que estoy hablando con mayor detalle: Localization in ASP.NET MVC – 3 Days Investigation, 1 Day Job

+1

Este ejemplo tiene páginas .aspx no razor .cshtml. ¿Y se puede hacer sin cambiar el MapRoute predeterminado? – Misi

+0

Utiliza aspx pero las páginas de navajas cshtml funcionan de la misma manera, con una sintaxis ligeramente diferente (hago esto usando la maquinilla de afeitar en una aplicación muy bien). Tampoco es necesario cambiar el MapRoute predeterminado (para que las URLS que no son locales también funcionen), solo necesita agregar una ruta adicional. – kmp

+0

¿Podría usted (o alguien) escribir el código donde selecciono ** Resources.en-US.resx ** en lugar de ** Resources.resx ** de la carpeta _App_GlobalResources_? – Misi

4

Marque esta Blog. Sin cambiar el MapRoute predeterminado. página

El _Layout.cshtml:

@using Resources; 
<!DOCTYPE html> 

<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
    </head> 
    <body> 
     <div> 
      <form method="post"> 
       @TestResource.SelectLanguage 
       <select name="lang"> 
        <option></option> 
        <option value="en-GB" @(Culture == "en-GB" ? "selected=\"selected\"" : "")>English</option> 
        <option value="fr-FR" @(Culture == "fr-FR" ? "selected=\"selected\"" : "")>French</option> 
        <option value="de-DE" @(Culture == "de-DE" ? "selected=\"selected\"" : "")>German</option> 
       </select> 
       <input type="submit" value="@TestResource.Submit" /> 
      </form> 
     </div> 
     @RenderBody() 
    </body> 
</html> 

El cultivo se encuentra en el archivo _PageStart.cshtml:

@{ 
    Layout = "~/_Layout.cshtml"; 
    if(!Request["lang"].IsEmpty()){ 
     Culture = UICulture = Request["lang"]; 
    } 
} 

La última página es la página por defecto en sí:

@using Resources; 
<h1>@TestResource.Welcome</h1> 
<p><img src="images/@TestResource.FlagImage" /></p> 

http://www.mikesdotnetting.com/Article/183/Globalization-And-Localization-With-Razor-Web-Pages

Cuestiones relacionadas