ASP.NET核心剃须刀页面本地化到pagemodel中的inputmodel

时间:2018-07-08 20:34:30

标签: razor asp.net-core localization

我在ASP.NET Core解决方案中创建了一个Resources文件夹,并创建了resx文件进行翻译。我有用于模型,页面和控制器的resx文件。我想知道当pagemodel内有inputmodel时,将resx文件放在Resource s文件夹中的什么位置?

2 个答案:

答案 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