我正在进行本地化项目,无法从资源文件中按本地读取值。
我有以下示例解决方案:
1. Web API project
2. Resources Project.
- In resources project, I have 3 resource files de-DE, fr-FR, and en-US.
我正在从资源文件中读取资源密钥“名称”,我可以通过如下设置区域性值来从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的密钥时,它具有英语价值。 唯一的区别是,法语资源文件位于文件夹内,而其他资源文件位于项目级。
答案 0 :(得分:3)
.NET资源系统主要基于约定。它希望可以在非常特定的路径中找到特定区域性的资源文件。
Employees.resx
包含Employees
容器的中性资源。Employees.[culture].resx
包含用于特定文化的Employees
容器的资源。如果另一个文件夹中有一个资源文件,则资源查找系统会将其视为单独的资源。 fr-FR/Employees.fr-FR.resx
是fr_FR.Employees
容器的法语资源。
要使您的资源正确加载,您只需将它们放在同一文件夹中:
Employees.resx
Employees.de-DE.resx
Employees.fr-FR.resx