ASP.NET核心剃刀页面本地化为pagemodel内的inputmodel

use*_*068 9 localization razor asp.net-core

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

小智 7

这是一个老问题,也许现在不相关了,但是我也遇到了同样的问题,并且能够解决,所以我将添加对我有用的东西。

这实际上只是一个小细节。如果我们需要页面模型的资源,则可以使用Resources\Pages\IndexModel.en.resx,对于该页面模型内部的类,可以添加+InnerModel,最后以Resources\Pages\IndexModel+InnerModel.en.resx

我在这里创建了一个带有工作示例的GitHub存储库-> https://github.com/joaofbantunes/AspNetCoreRazorPagesInnerModelLocalizationSample


Laz*_*iya -1

假设我们在pages文件夹下有一个razor页面,如下所示:

页面/MyPage.cshtml

及其模型页面:

页面/MyPage.cshtml.cs

您的资源文件夹位于项目根目录中 Pages 文件夹旁边,如下所示:

项目根

-- 页面

- 资源

MyPages 默认输入模型为:

我的页面模型

资源文件的命名根据您的startup.cs文件中的视图本地化设置而有所不同,

点命名:

如果您使用带有“后缀”选项的每个视图资源文件:

services.AddMvc()
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
Run Code Online (Sandbox Code Playgroud)

那么你必须遵循资源文件的点命名:

Resources/Pages.MyPage.en-US.resx // 视图的本地化资源

Resources/Pages.MyPageModel.en-US.resx // 输入模型的本地化资源

子文件夹命名

如果您使用带有“子文件夹”选项的每个视图资源文件:

services.AddMvc()
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
    .AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder);
Run Code Online (Sandbox Code Playgroud)

然后您必须为资源文件创建类似于视图文件夹结构的文件夹结构:

Resources/Pages/MyPage.en-US.resx // 视图的本地化资源

Resources/Pages/MyPageModel.en-US.resx // 输入模型的本地化资源

还有另一种选择,即使用共享资源文件,您可以为每种语言的所有视图仅创建一个资源文件,而不是为每种语言的每个视图创建一个资源,如果您有兴趣使用共享资源,您可以访问此博客页面:http ://www.ziyad.info/en/articles/10-Developing_Multiculture_Web_Application