Asp.net核心区域本地化

时间:2017-01-19 07:52:52

标签: c# asp.net localization

大家好,我参与了一个本地化项目。我们正在使用区域,我们需要为支持的语言创建资源文件。 默认结构(Resources / Controllers / controllername.culture.resx)可以像Microsoft文档一样正常工作。 我们想知道其余区域的目录结构。我们已经找了一些文档,但我们找不到。 感谢所有人

3 个答案:

答案 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不足以进行配置。如果您有区域,则必须执行以下步骤。

  1. 将主目录设置为Resource(或您自己的目录)
  2. 在Resource(资源)/ Areas / Identity / Pages /这里的resx文件中创建相同的深层文件夹路径。
  3. 不要忘记本地化适用于模型层次结构,因此在创建文件夹层次结构时使用模型名称空间路径。
相关问题