gpt4 book ai didi

asp.net-core-2.0 - 更改 ASP.NET Core 2 Razor 页面的文化

转载 作者:行者123 更新时间:2023-12-04 10:28:58 24 4
gpt4 key购买 nike

我创建了一个带有 Razor 页面的 ASP.NET Core 2 项目,我想给访问者选择语言的机会。我遇到的第一个问题是更改 Web 应用程序 url,以便 ti 包含当前语言代码。我通过在 ConfigureServices 中添加以下代码解决了这个问题。

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeFolder("/Account/Manage");
options.Conventions.AuthorizePage("/Account/Logout");
options.Conventions.AddFolderRouteModelConvention("/", model =>
{
foreach (var selector in model.Selectors)
{
var attributeRouteModel = selector.AttributeRouteModel;
attributeRouteModel.Template = AttributeRouteModel.CombineTemplates("{language=el-GR}", attributeRouteModel.Template);
}
});
});
}
}

现在我可以使用以下 URL 访问页面:
http://domain/el-GR/MyPage

我想做的最后一件事是改变每个请求的文化。我不喜欢的最佳解决方案是将以下代码放在我的页面中:
System.Globalization.CultureInfo.CurrentCulture = new System.Globalization.CultureInfo((string)RouteData.Values["language"]);
System.Globalization.CultureInfo.CurrentUICulture = new System.Globalization.CultureInfo((string)RouteData.Values["language"]);

这并不好,因为我将不得不在我将在我的项目中创建的每个 Razor 页面中添加这些谎言。

是否有另一种方法可以为我的 Web 应用程序的所有请求设置文化?

最佳答案

引用这篇文章:https://joonasw.net/view/aspnet-core-localization-deep-dive

有几种方法,我使用RequestCultureProviders。

NuGet:Microsoft.AspNetCore.Localization

在我的 Startup.Configure 方法中。

IList<CultureInfo> sc = new List<CultureInfo>();
sc.Add(new CultureInfo("en-US"));
sc.Add(new CultureInfo("zh-TW"));

var lo = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
SupportedCultures = sc,
SupportedUICultures = sc
};
var cp = lo.RequestCultureProviders.OfType<CookieRequestCultureProvider>().First();
cp.CookieName = "UserCulture"; // Or whatever name that you like

app.UseRequestLocalization(lo);

将您的 cookie“UserCulture”设置为“c=zh-TW|uic=zh-TW”一次。

它神奇地起作用。

关于asp.net-core-2.0 - 更改 ASP.NET Core 2 Razor 页面的文化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46496974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com