准备的来说是和类型的 FullName 有关系,一般的项目名称就是程序集名称,就是根命名空间,文件名称就是类型名称,所以一般情况下资源文件的位置和类型的位置是一致的,但是如果文件和类型名称不符合,那就要按照类型的 FullName 来找,视图也是类似的,如果根命名空间不是程序集名称,也是可以配置的具体的参考文档
Controllers.HomeController => Controllers/HomeController.zh.resx/Controllers/HomeController.en.resx
Resource name Dot or path namingResources/Controllers.HomeController.fr.resx Dot
Resources/Controllers/HomeController.fr.resx Path
Resources/Views/Home/About.fr.resx
Resources/Views.Home.About.fr.resx
实际项目中的资源文件示例:
实际访问效果:https://reservation.weihanli.xyz/
默认的中文界面:
英文界面:
只是做了几个前台的示例,还有很多地方没改
More.net core 的设计真的是很灵活,很优美,基于资源文件的本地化,感觉不太方便,使用资源文件的化可能就只能使用 VS 编辑了,虽然也是纯文本的,基于 xml 但是编辑起来不如界面看着编辑舒服,如果使用 json 之类的,就比较简单明了,编辑起来也比较方便,所以想把资源文件替换成 JSON 文件
下次分享一篇基于 JSON 的 Localization Provider 的实现
Referencehttps://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