大家好,我参与了一个本地化项目。我们正在使用区域,我们需要为支持的语言创建资源文件。 默认结构(Resources / Controllers / controllername.culture.resx)可以像Microsoft文档一样正常工作。 我们想知道其余区域的目录结构。我们已经找了一些文档,但我们找不到。 感谢所有人
答案 0 :(得分:5)
C#对象(而非视图)的资源文件正由它们所在的namespace
解析。它们与MVC本地化初始化期间设置的ResourcePath
相关。
假设您已将ResourcesPath
设置为“资源”
services.AddLocalization(s => s.ResourcesPath = "Resources");
你有一个HomeController
没有区域,如下所示:
namespace WebApp.Controllers
{
public class HomeController : Controller
{
...
}
}
然后将会选择文件夹Resources>Controllers>HomeController.{culture}.resx
中的资源文件。
如果区域中的控制器 ,您可能会更改为不同的命名空间,如下所示:
namespace WebApp.Admin.Controllers
{
[Area("admin")]
public class HomeController : Controller
{
...
}
}
请注意,这是管理区域的HomeController
。
在这种情况下,此特定控制器的资源文件可以存在于文件夹中:
Resources>Admin>Controllers>HomeController.{culture}.resx
OR 可以有这个命名:
Admin.Controllers.HomeController.{culture}.resx
这适用于ASP.NET Core 1.1.0。我已经用某个区域更新了AspNetCore.Identity.Localization项目。
答案 1 :(得分:0)
如果您使用的是区域,只需将controllername.culture.resx
放在Controllers
目录中(确切位于controllername.cs
的位置),不要创建“资源”。任何地方的目录。)
我建议您使用简单的resx(controllername.resx
)进行测试。如果有效,您可以使用controllername.culture.resx
答案 2 :(得分:0)
也许这是一个较晚的答案,但是我想参加,首先将主路径设置为Resource不足以进行配置。如果您有区域,则必须执行以下步骤。