5

私は 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")
);

フランス語でデータ注釈検証メッセージを取得するには何が欠けていますか?

4

0 に答える 0