.NET Core 2 Web API中的本地化

时间:2018-02-20 13:08:27

标签: asp.net-core localization .net-core asp.net-core-localization

我已跟踪this guide了解我的本地化以验证我的工作。但要么我做错了,要么就是不支持。

我有Controller

[HttpPost]
public IActionResult Post([FromBody]Customer value)
{
    if (ModelState.IsValid)
    {
        return Ok("Good job!");
    }
    return BadRequest(ModelState);
}

我注册了我的本地化:

services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
    .AddDataAnnotationsLocalization();

我的模特:

public class Customer
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
}

这是我的resx和我的目录(所有resx看起来都一样):

enter image description here

enter image description here

我想要的是让资源文件确定当属性名无效时传递的消息。

发布此帖子:

{
    "firstname":"John"
}

目前会返回:

{
    "LastName": [
        "The LastName field is required."
    ]
}

由于我为Resource模型创建了Customer,我希望结果返回:

{
    "LastName": [
        "The Surname field is required."
    ]
}

我知道我可以这样使用Display

[Display(ResourceType = typeof(Models_Customer), Name = "FirstName")]

...但我认为naming the resource-files基于模型的整个观点是为了避免它。

1 个答案:

答案 0 :(得分:0)

我有同样的问题。但是我猜想,它仅适用于像这样的resx filname:

Models.Customer。 zh-CN .resx

我像您一样尝试过,但是此文件名仅适用于文化区域信息。

贪婪

P.S .:我愿意接受Models.Customer之类的解决方案。 zh_CN .resx