ASP.NET core razor页面在pagemodel内部的inputmodel本地化
我在ASP.NET核心解决方案中创建了一个ASP.NET core razor页面在pagemodel内部的inputmodel本地化,razor,asp.net-core,localization,Razor,Asp.net Core,Localization,我在ASP.NET核心解决方案中创建了一个Resources文件夹,并创建了用于翻译的resx文件。我有模型、页面和控制器的resx文件。我想知道当pagemodel中有inputmodel时,在Resources文件夹中放置resx文件的位置 假设我们在pages文件夹下有一个razor页面,如下所示: Pages/MyPage.cshtml 及其模型页面: Pages/MyPage.cshtml.cs 您的资源文件夹位于“页面”文件夹旁边的项目根目录中,如下所示: 项目根 --页数 --资源
Resources
文件夹,并创建了用于翻译的resx文件。我有模型、页面和控制器的resx文件。我想知道当pagemodel中有inputmodel时,在Resource
s文件夹中放置resx文件的位置 假设我们在pages文件夹下有一个razor页面,如下所示:
Pages/MyPage.cshtml
及其模型页面:
Pages/MyPage.cshtml.cs
您的资源文件夹位于“页面”文件夹旁边的项目根目录中,如下所示:
项目根
--页数
--资源
默认情况下,MyPages输入模型为:
MyPageModel
根据startup.cs文件中的视图本地化设置对资源文件进行命名
虚线命名:
如果使用带有“后缀”选项的每视图资源文件:
然后,您必须遵循资源文件的虚线命名:
Resources/Pages.MyPage.en-US.resx//用于查看的本地化资源
Resources/Pages.MyPageModel.en-US.resx//输入模型的本地化资源
子文件夹命名
如果使用带有“子文件夹”选项的逐视图资源文件:
然后,您必须为资源文件创建类似于视图文件夹结构的文件夹结构:
Resources/Pages/MyPage.en-US.resx//用于查看的本地化资源
Resources/Pages/MyPageModel.en-US.resx//输入模型的本地化资源
还有另一种选择,即使用共享资源文件,而不是为每种语言的每个视图创建一个资源,您可以为每种语言的所有视图只创建一个资源文件,如果您对使用共享资源感兴趣,您可以访问此博客页面:这是一个老问题,现在可能不相关,但我也遇到了同样的问题,并且能够解决它,所以我将补充对我有用的东西 这其实只是一个小细节。如果我们想要页面模型的资源,我们将拥有
Resources\Pages\IndexModel.en.resx
,对于该页面模型内部的类,我们添加一个+InnerModel
,最后是Resources\Pages\IndexModel+InnerModel.en.resx
我在这里创建了一个GitHub存储库,其中包含一个工作示例->谢谢你的描述性回答,但它没有回答问题。好吧,我想我误解了这个问题,就我现在所知,你不想使用共享资源文件,对吧?是的,我想知道,是否有可能对内部类使用DataAnnotation本地化。像PageModel>InputModelPath一样,对于点命名和子文件夹命名,resx文件的路径是相同的,这是否正确?我希望子文件夹命名的路径是Resources/Pages/en-US/MyPage。resx@GuidoNeele是的,唯一的区别是使用点(.)或斜杠(/),其余的都一样。有关更多详细信息,请参见+符号,它不仅愚蠢,而且有效。谢谢
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder);