我正在使用RouteLocalization.Mvc库在我的网站上进行翻译,并且在不使用默认文化时遇到一些困难(英语)。
当我的浏览器的语言设置为英语时,我的网站已本地化为西班牙语并且所有路由都正常工作 - 我获得了英语中没有前缀的路由,并且按照预期使用西班牙语作为前缀/ es /路由。
但是,当我将浏览器的文化设置为西班牙语时,我会在未加前缀的路由上获取翻译页面,但我真正想要的前缀是(以我的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());
任何帮助将不胜感激!!!
答案 0 :(得分:1)
您需要的设置如下:
我认为你的英文路线实际上是中性路线(因为AttributeRouteProcessing.AddAsNeutralRoute
)。
尝试将AddCultureAsRoutePrefix
设为false
,将AttributeRouteProcessing
设为AddAsDefaultCultureRoute
。然后拨打TranslateInitialAttributeRoutes()
。
这会将没有前缀的属性路由添加为本地化英语路由。文档中的一些信息:
首先,您必须决定如何处理由RouteLocalization截获的初始属性路由。可以通过Configuration.AttributeRouteProcessing属性选择一些可能性。
如果您的属性路线例如英语是默认的,您可以定义每个属性路线应该作为英语文化的本地化路线添加。因此,您可以将DefaultCulture设置为&#34; en&#34;和AttributeRouteProcessing到AddAsDefaultCultureRoute。
致电TranslateInitialAttributeRoutes
后,您可以将AddCultureAsRoutePrefix
设置回true
,然后开始翻译西班牙语路线。