asp.net core 实现支持多语言 (2)

准备的来说是和类型的 FullName 有关系,一般的项目名称就是程序集名称,就是根命名空间,文件名称就是类型名称,所以一般情况下资源文件的位置和类型的位置是一致的,但是如果文件和类型名称不符合,那就要按照类型的 FullName 来找,视图也是类似的,如果根命名空间不是程序集名称,也是可以配置的具体的参考文档

Controllers.HomeController => Controllers/HomeController.zh.resx/Controllers/HomeController.en.resx

Resource name Dot or path naming
Resources/Controllers.HomeController.fr.resx   Dot  
Resources/Controllers/HomeController.fr.resx   Path  

Resources/Views/Home/About.fr.resx

Resources/Views.Home.About.fr.resx

实际项目中的资源文件示例:

asp.net core 实现支持多语言

实际访问效果:https://reservation.weihanli.xyz/

默认的中文界面:

asp.net core 实现支持多语言

英文界面:

asp.net core 实现支持多语言

只是做了几个前台的示例,还有很多地方没改

More

.net core 的设计真的是很灵活,很优美,基于资源文件的本地化,感觉不太方便,使用资源文件的化可能就只能使用 VS 编辑了,虽然也是纯文本的,基于 xml 但是编辑起来不如界面看着编辑舒服,如果使用 json 之类的,就比较简单明了,编辑起来也比较方便,所以想把资源文件替换成 JSON 文件

下次分享一篇基于 JSON 的 Localization Provider 的实现

Reference

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-3.1

https://github.com/dotnet/extensions/tree/master/src/Localization

https://github.com/dotnet/aspnetcore/tree/master/src/Middleware/Localization

https://stackoverflow.com/questions/2074869/globalization-vs-localization

https://github.com/WeihanLi/ActivityReservation

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzppj.html