当使用区域时,.resx(资源)文件位于 dotnet 应用程序中的何处?

问题描述 投票:0回答:1

我正在开发一个使用本地化的 dotnet 应用程序。我一直在理解我的

.resx
文件应该存放在哪里。

当前的文件结构如下所示:

 - Root
    - Views
       - Home
           - Home.cshtml
    - Resources
       - Views.Home.Home.es.resx

看起来效果很好。

但是,我正在尝试为区域中的视图添加资源文件:

 - Root
    - Areas
       - Myarea
          - Views
              - Home
                 - Home.cshtml
    - Views
       - Home
           - Home.cshtml
    - Resources
       - Views.Home.Home.es.resx

这就是我陷入困境的地方。我不知道 a) 我的 resx 文件应该放在上面结构中的什么位置以及 b) 它应该如何命名。

dotnet 中的 resx 文件似乎有点“魔法”……只要您正确命名它们并将它们放在正确的位置,应用程序就会找到它们。但是,我找不到有关在区域内使用它们的任何明确信息。

根据我尝试过的网上各种建议:

  • 将我的 resx 文件放在与我的视图相同的目录中
  • 在我的区域内创建一个
    Resources
    目录并将其放在那里
  • 复制根资源目录内我的区域中的文件目录层次结构,并将我的文件放在那里。
  • 使用不同的文件名执行上述所有操作

对于“本地化资源文件位于何处以便 dotnet 应用程序中的区域找到它们?”是否有正确/具体的答案

asp.net asp.net-mvc resx asp.net-mvc-areas
1个回答
0
投票

来自资源文件命名

  • 资源以其类的完整类型名称减去程序集名称来命名。

  • LocalizationWebsite.Web.Controllers.HomeController
    的资源将被命名为Controllers.HomeController.fr.resx

  • 假设我们将

    ResourcesPath
    设置为“资源”,与 Views/Home/About.cshtml 视图关联的资源文件可以是以下任一:

    • 资源/视图/主页/About.fr.resx

    • 资源/视图.Home.About.fr.resx

通过检查“Myarea”区域中razor页面/控制器文件的命名空间,命名空间应为:

<Your Web application assembly name>.Areas.MyArea.Controllers

因此,该区域的资源文件名应采用以下格式:

<Area Name>.Views.<Controller name/View directory>.<Action name>.<locale>.resx

文件名为:

Myarea.Views.Home.Home.es.resx

您的网络应用程序的目录和文件如下:

 - Root
    - Areas
       - Myarea
          - Views
              - Home
                 - Home.cshtml
    - Views
       - Home
           - Home.cshtml
    - Resources
       - Views.Home.Home.es.resx
       - Myarea.Views.Home.Home.es.resx
© www.soinside.com 2019 - 2024. All rights reserved.