无法读取文化特定的值

时间:2019-05-15 08:44:35

标签: c# asp.net-web-api asp.net-core localization internationalization

我正在进行本地化项目,无法从资源文件中按本地读取值。

我有以下示例解决方案:

1. Web API project
2. Resources Project.
    - In resources project, I have 3 resource files de-DE, fr-FR, and en-US.

enter image description here

我正在从资源文件中读取资源密钥“名称”,我可以通过如下设置区域性值来从de-DE和en-US中获取值。

[HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
        var name = Employees.Name;
        return new string[] { name };
    }

但是,当我尝试读取fr-FR local的密钥时,它具有英语价值。 唯一的区别是,法语资源文件位于文件夹内,而其他资源文件位于项目级。

1 个答案:

答案 0 :(得分:3)

.NET资源系统主要基于约定。它希望可以在非常特定的路径中找到特定区域性的资源文件。

  • Employees.resx包含Employees容器的中性资源。
  • Employees.[culture].resx包含用于特定文化的Employees容器的资源。

如果另一个文件夹中有一个资源文件,则资源查找系统会将其视为单独的资源。 fr-FR/Employees.fr-FR.resxfr_FR.Employees容器的法语资源。

要使您的资源正确加载,您只需将它们放在同一文件夹中:

  • Employees.resx
  • Employees.de-DE.resx
  • Employees.fr-FR.resx