12

Estoy usando la versión más reciente del paquete AttributeRouting en Nuget para configurar mi enrutamiento para mi proyecto ASP.Net MVC. Estoy creando un sitio web que tiene dos idiomas, inglés (primario) y español (secundario). Las direcciones URL para los dos idiomas son diferentes. Por ejemplo, el sobre nosotros para inglés sería así: www.root.com/en/about-us mientras que la versión en español podría ser esta: www.root.com/es/sobre-nosotros.Problemas con el enrutamiento y la localización de atributos

Tengo una configuración de ruta Prefijo de la siguiente manera: [RoutePrefix ("es", TranslationKey = "Inicio")]

Entonces tengo un programa que creé que lee los valores de un archivo XML en el FluentTranslationProvider . El código para registrar mis rutas se ve así:

var translations = new FluentTranslationProvider(); 
     translations 
      .AddTranslations() 
      .FromFile(); 

routes.MapAttributeRoutes(
      config => 
       { 
        config.AddRoutesFromControllersOfType<BaseController>(); 
        config.AddTranslationProvider(translations); 
        config.CurrentUICultureResolver = 
         (httpContext, routeData) => 
         (string) routeData.DataTokens["cultureName"] ?? 
         Thread.CurrentThread.CurrentUICulture.Name; 
       }); 

Y parece estar funcionando porque puedo visitar mi página Routes.axd y ver lo siguiente: http://imm.io/nm7Z

Más adelante en mi página, mis programas de código que mi CurrentCulture está configurado en es-AR, pero cuando llamo a la clase URLHelper para construir una url, solo crea la versión predeterminada en inglés y no me da la versión en español. ¿Alguien puede darme una idea de por qué este podría ser el caso? No puedo por la vida de mi entender esto.

+0

favor añadir que el código para llamar UrlHelper –

+2

Además, la imagen que vincular en su puesto que no existe – Henrik

Respuesta

1

¿Ha intentado actualizar el RouteValueDictionary y pasarlo como parámetro a su url helper? Hago algo similar para alternar ssl.

He aquí algunos ejemplos de código para considerar, como una función de ayuda:

@functions { 

    public static string LanguageUrl(WebViewPage page, string actionName, string controllerName, string desiredCulture) 
    { 
    // translate action name here, if needed. 
    return page.Url.Action(actionName, controllerName, new { cultureName = desireCulture }); 
    } 
} 
Cuestiones relacionadas