Asp.net-Core

ASP.Net Core 本地化

  • December 28, 2021

ASP.Net 核心具有對本地化的新支持

在我的項目中,我只需要一種語言。對於大多數文本和註釋,我可以用我的語言指定內容,但對於來自 ASP.Net Core 本身的文本,語言是英語。

例子:

  • 密碼必須至少有一個大寫字母 (‘A’-‘Z’)。
  • 密碼必須至少有一位數字 (‘0’-‘9’)。
  • 使用者名“x@x.com”已被佔用。
  • E-post 欄位不是有效的電子郵件地址。
  • 值 ’’ 無效。

我試過手動設置文化,但語言仍然是英語。

app.UseRequestLocalization(new RequestLocalizationOptions
{
   DefaultRequestCulture = new RequestCulture("nb-NO"),
   SupportedCultures = new List<CultureInfo> { new CultureInfo("nb-NO") },
   SupportedUICultures = new List<CultureInfo> { new CultureInfo("nb-NO") }
});

如何更改 ASP.Net Core 的語言,或覆蓋其預設文本?

列出的錯誤消息在 ASP.NET Core Identity 中定義並由IdentityErrorDescriber. 到目前為止我還沒有找到翻譯的資源文件,我認為它們沒有本地化。CultureInfo在我的系統(德語語言環境)上,儘管設置正確,但它們也沒有被翻譯。

您可以配置自定義 IdentityErrorDescriber 以返回您自己的消息及其翻譯。例如, 如何更改 MVC Core ValidationSummary 的預設錯誤消息?

Configure方法中,Startup.cs您可以連接從IdentityErrorDescriberlike繼承的錯誤描述器類

services.AddIdentity<ApplicationUser, IdentityRole>()
       .AddErrorDescriber<TranslatedIdentityErrorDescriber>();

對於其他預設模型錯誤消息(如無效號碼),您可以在ModelBindingMessageProvider. 此提供程序由 ASP.NET Core MVC 使用,也可以在其中進行配置Startup.cs

services.AddMvc(
           options => 
           options.ModelBindingMessageProvider.ValueIsInvalidAccessor = s => $"My not valid text for {s}");

引用自:https://stackoverflow.com/questions/39226053