我是一名有用的助手,可以为您翻译文本。
我正在构建一个支持阿尔巴尼亚语、英语和塞尔维亚语的多语言网站,但不知何故,所有从标签助手生成的链接都会重定向到塞尔维亚语。
这是我在 StartUp.cs
中的代码:
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("sq-AL"),
new CultureInfo("en-US"),
new CultureInfo("sr-Latn-RS")
};
var localizationOptions = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("sq-AL"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
var requestProvider = new RouteDataRequestCultureProvider();
localizationOptions.RequestCultureProviders.Insert(0, requestProvider);
app.UseRouter(routes =>
{
routes.MapMiddlewareRoute("{culture=sq-AL}/{*mvcRoute}", subApp =>
{
subApp.UseRequestLocalization(localizationOptions);
subApp.UseMvc(mvcRoutes =>
{
mvcRoutes.MapRoute(
name: "default",
template: "{culture=sq-AL}/{controller=Home}/{action=Index}/{id?}");
});
});
});
这是我在主导航菜单中有的一个操作链接:
<a asp-controller="Content" asp-action="About">@_localizer["nav_about"]</a>
它曾经可以正常工作,但我试图弄清楚为什么它不再起作用了,但迄今为止还没有头绪。
有趣的是,所有标签都从基于所选文化的资源文件中获取值,而链接却无论我切换到哪种文化,都会重定向到塞尔维亚文。从标记助手生成的链接如下:http://localhost:50807/sr-Latn-RS/Content/About
。
提交表单也是如此:<form asp-controller="Account" asp-action="RegisterProfile" method="post">
的结果为 http://localhost:50807/sr-Latn-RS/Account/RegisterProfile
,不管当前选择了哪种文化。
任何人有任何想法,知道它从哪里获取塞尔维亚文化吗?非常感谢您的帮助!