Asp.net mvc 5 MVC路由本地化难以重定向到正确的前缀

Asp.net mvc 5 MVC路由本地化难以重定向到正确的前缀,asp.net-mvc-5,routelocalization-mvc,Asp.net Mvc 5,Routelocalization Mvc,我正在使用库在我的网站上进行翻译,在不使用默认文化(英语)时遇到了一些困难 我的网站本地化为西班牙语,当我的浏览器语言设置为英语时,所有路由都能正常工作-我得到了英语中的无前缀路由和西班牙语中的前缀/es/routes 但是,当我将浏览器的区域性设置为西班牙语时,我会在不带前缀的路径上获得翻译后的页面,但我真正想要的前缀是(以我的“关于”页面为例): 接受语言:英语 /关于 /es/sobre nosotros 接受语言:西班牙语 /es/sobre nosotros /en/about(

我正在使用库在我的网站上进行翻译,在不使用默认文化(英语)时遇到了一些困难

我的网站本地化为西班牙语,当我的浏览器语言设置为英语时,所有路由都能正常工作-我得到了英语中的无前缀路由和西班牙语中的前缀/es/routes

但是,当我将浏览器的区域性设置为西班牙语时,我会在不带前缀的路径上获得翻译后的页面,但我真正想要的前缀是(以我的“关于”页面为例):

接受语言:英语
  • /关于
  • /es/sobre nosotros
接受语言:西班牙语
  • /es/sobre nosotros
  • /en/about(或如果可能的话只是/大约)
我计划重定向到正确的前缀,但似乎不知道怎么做

var config = new Configuration()
{
    DefaultCulture = "en",
    AcceptedCultures = new HashSet<string> { "en", "es" },
    AddCultureAsRoutePrefix = true,
    AddTranslationToSimiliarUrls = true,
    AttributeRouteProcessing = AttributeRouteProcessing.AddAsNeutralRoute
};

// translations omitted

CultureSensitiveHttpModule.GetCultureFromHttpContextDelegate = Localization.DetectCultureFromBrowserUserLanguages(acceptedCultures, defaultCulture);
GlobalFilters.Filters.Add(new CultureSensitiveActionFilterAttribute());
var config=new Configuration()
{
DefaultCulture=“en”,
AcceptedCultures=新哈希集{“en”,“es”},
AddCultureAsRoutePrefix=true,
AddTranslationToSimialUrls=true,
AttributeRouteProcessing=AttributeRouteProcessing.AddAsNeutralRoute
};
//省略的翻译
CultureSensitiveHttpModule.GetCultureFromHttpContextDelegate=Localization.DetectCultureFromBrowserUserLanguages(acceptedCultures,defaultCulture);
GlobalFilters.Filters.Add(新的CultureSensitiveActionFilterAttribute());

任何帮助都将不胜感激

您需要的设置如下所示:

  • 英语本地化路由(不带前缀)
  • 西班牙语本地化路由(带前缀)
  • 没有中立路线
我认为你的英语路线实际上是中性路线(因为
attributeroutteprocessing.AddAsNeutralRoute

尝试将
addCulturesRoutePrefix
设置为
false
attributeroutteProcessing
设置为
AddAsDefaultCultureRoute
。然后调用
TranslateInitialAttributeRoutes()

这将添加不带前缀的属性路由作为本地化英文路由。文档中的一些信息:

首先,您必须决定如何处理RouteLocalization拦截的初始属性路由。可以通过Configuration.attributeroutteprocessing属性选择一些可能性

例如,如果您的属性路由为英语,则可以定义每个属性路由都应添加为英语区域性的本地化路由。因此,您可以将DefaultCulture设置为“en”,将AttributeRootProcessing设置为AddAsDefaultCultureRoute

调用
TranslateInitialAttributeRoutes
后,您可以将
AddCultureAsRoutePrefix
设置回
true
,然后开始翻译西班牙语路线