美文网首页Asp.net core mvc
ASP.NET Core 全球化和本地化时的共享资源

ASP.NET Core 全球化和本地化时的共享资源

作者: firechun | 来源:发表于2020-01-08 10:53 被阅读0次

使用共享资源时,需要创建同名的共享资源虚拟类,一定要注意的是,这个类的命名空间必须是根命名空间。

本地化资源文件目录结构
在需要全球化的项目中,我们肯定会把本地化的资源文件放在指定的目录中,例如图示的Resources目录。控制器和视图对应的资源文件只需要按照规定的方式把资源文件放到对应的目录中就可以了,ASP.NET Core本地化时会自动寻找对应的资源文件。
而共享资源文件显然是没有什么对应目录的,这个资源文件要放在资源目录的根路径下,同时创建一个同名的共享资源虚拟类,类不必有任何属性或方法。在控制器中使用IStringLocalizer<SharedResource> sharedLocalizer注入共享资源的本地化对象,在视图中则使用@inject IHtmlLocalizer<SharedResource> SharedLocalizer,可以把注入代码放到_ViewImports.cshtml文件中。
重点来了:和共享资源同名的虚拟类,也就是图示的SharedResource类,命名空间必须是项目的根命名空间。
当我们在Resources目录下创建SharedResource类时,它的命名空间默认是根命名空间.Resources,务必要记得把命名空间的.Resources删掉。否则本地化对象找不到对应的资源文件。
我的理解是,虚拟类和资源文件必须在同一个命名空间,而资源文件是没有命名空间的,或者说就是根命名空间,因此虚拟类也必须放在根命名空间。

相关文章

网友评论

    本文标题:ASP.NET Core 全球化和本地化时的共享资源

    本文链接:https://www.haomeiwen.com/subject/egijactx.html