我在ASP.NET Core解决方案中创建了一个Resources
文件夹,并创建了resx文件进行翻译。我有用于模型,页面和控制器的resx文件。我想知道当pagemodel内有inputmodel时,将resx文件放在Resource
s文件夹中的什么位置?
答案 0 :(得分:5)
这是一个老问题,也许现在不相关了,但是我也遇到了同样的问题,并且能够解决,所以我将添加对我有用的东西。
这实际上只是一个小细节。如果我们需要页面模型的资源,我们将有Resources\Pages\IndexModel.en.resx
,对于该页面模型内部的类,我们添加一个+InnerModel
,最后是Resources\Pages\IndexModel+InnerModel.en.resx
我在此处创建了一个带有工作示例的GitHub存储库-> https://github.com/joaofbantunes/AspNetCoreRazorPagesInnerModelLocalizationSample
答案 1 :(得分:-1)
假设我们在页面文件夹下有一个剃须刀页面,如下所示:
Pages / MyPage.cshtml
及其模型页面:
Pages / MyPage.cshtml.cs
您的资源文件夹位于Pages文件夹旁边的Project根目录中,如下所示:
项目根
-页面
-资源
MyPages输入模型默认为:
MyPageModel
根据startup.cs文件中的视图本地化设置,资源文件的命名有所不同,
点名:
如果您使用带有“后缀”选项的每个视图资源文件:
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
然后,您必须对资源文件遵循点名:
Resources / Pages.MyPage.en-US.resx //视图的本地化资源
Resources / Pages.MyPageModel.en-US.resx //输入模型的本地化资源
子文件夹命名
如果您通过“子文件夹”选项使用每个视图资源文件:
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder);
然后,您必须为资源文件创建类似于视图文件夹结构的文件夹结构:
Resources / Pages / MyPage.en-US.resx //视图的本地化资源
Resources / Pages / MyPageModel.en-US.resx //输入模型的本地化资源
还有另一种选择,它使用共享资源文件,而不是为每种语言的每个视图创建一个资源,而只能为每种语言的所有视图创建一个资源文件,如果您希望使用共享资源,则可以访问此博客。页面:http://www.ziyad.info/en/articles/10-Developing_Multicultural_Web_Application