私は ASP.Net Core Web アプリケーションに取り組んでおり、アプリで使用するすべての静的文字列をローカライズする必要があります。
Controller と View の文字列を実装し、IStringLocalizerFactory
それを Startup.cs のサービスとして追加することでローカライズしました。
注釈を使用するときに、モデル検証にローカリゼーションを追加しようとしています。私の User モデルでは、
[Required(ErrorMessageResourceType = typeof(UserModelErrorMessages), ErrorMessageResourceName = "FullNameRequired")]
[MinLength(2, ErrorMessageResourceType = typeof(UserModelErrorMessages), ErrorMessageResourceName ="FullNameMinLength")]
[MaxLength(100, ErrorMessageResourceType =typeof(UserModelErrorMessages), ErrorMessageResourceName ="FullNameMaxLength")]
public string FullName { get; set; }
UserModelErrorMessage.resx ファイルに「FullNameRequired」、「FullNameMinLength」、「FullNameMaxLength」を配置しました。同じ値の UserModelErrorMessage.fr.resx ファイルもありますが、フランス語の同等のメッセージがあります。ブラウザが英語に設定されている場合、正しいエラー メッセージが表示されます。ブラウザーを切り替えてフランス語 ('fr') 言語を使用すると、ビューとコントローラーで定義した静的文字列がフランス語で表示されますが、データ検証メッセージは引き続き英語で表示されます。私は Models.User.fr.resx を試しましたが、.resource ファイルを手動で生成しても無駄でした。
Startup.cs ConfigureServices で:
services.AddMvc()
.AddViewLocalization(options=>options.ResourcesPath="Resources")
.AddDataAnnotationsLocalization();
Startup.cs で - 構成
app.UseRequestLocalization(new RequestLocalizationOptions
{
SupportedCultures = new List<CultureInfo>
{
new CultureInfo("fr"),
new CultureInfo("zh"),
new CultureInfo("tr"),
new CultureInfo("en"),
new CultureInfo("en-US"),
},
SupportedUICultures = new List<CultureInfo>
{
new CultureInfo("fr"),
new CultureInfo("zh"),
new CultureInfo("tr"),
new CultureInfo("en"),
new CultureInfo("en-US"),
}
}, new RequestCulture("en-US")
);
フランス語でデータ注釈検証メッセージを取得するには何が欠けていますか?