Blazor IStringLocalizer 多语言实现教程

月夜之吻
发布: 2025-12-13 15:13:02
原创
400人浏览过
Blazor 多语言核心是 IStringLocalizer + .resx 资源文件 + 语言切换逻辑,不依赖 JS;需在 Program.cs 注册 AddLocalization(),按规范命名资源文件(如 SharedResource.zh-CN.resx),组件中 @inject IStringLocalizer 使用,Server/WASM 切换文化方式不同但均原生支持。

blazor istringlocalizer 多语言实现教程

Blazor 中使用 IStringLocalizer 实现多语言,核心是结合 .NET 的本地化服务 + 资源文件(.resx)+ 语言切换逻辑。它不依赖 JavaScript,完全在 C# 层完成,适合 Server、WASM 和 Hybrid 项目。

配置本地化服务

Program.cs(.NET 6+)中注册本地化服务:

  • Server 项目:调用 builder.Services.AddRazorComponents().AddInteractiveServerComponents() 后,添加 AddLocalization()
  • WASM 项目:同样调用 AddLocalization(),并确保资源文件被正确发布(默认会自动包含)
  • 语言文化需通过 RequestLocalizationOptions 设置支持列表,例如 new[] { "zh-CN", "en-US", "ja-JP" }

准备资源文件(.resx)

资源文件必须按命名规范放置,Blazor 才能自动匹配:

  • 新建文件夹 Resources(推荐),在其中创建 SharedResource.resx(默认语言,如中文)
  • 对应英文版: SharedResource.en-US.resx;日文版:SharedResource.ja-JP.resx
  • 文件属性中,将 Build Action 设为 Embedded ResourceCustom Tool 留空(不要设为 PublicResXFileCodeGenerator)
  • 类名不重要,但资源键名要统一,比如 WelcomeMessage,各语言文件里填对应翻译

在组件中注入并使用 IStringLocalizer

以 Razor 组件为例(如 Counter.razor):

PrestaShop 开源网店系统
PrestaShop 开源网店系统

PrestaShop 开源网店系统是一款针对web2.0设计的全功能、跨平台的免费开源电子商务解决方案,自08年1.0版本发布,短短两年时间,发展迅速,全球已超过四万家网店采用Prestashop进行布署。Prestashop 开源网店系统基于Smarty引擎编程设计,模块化设计,扩展性强,能轻易实现多种语言,多种货币浏览交易,支持Paypal等几乎所有的支付手段,是外贸网站建站的佳选。Prest

PrestaShop 开源网店系统 0
查看详情 PrestaShop 开源网店系统
  • 顶部注入: @inject IStringLocalizer<sharedresource> localizer</sharedresource>(注意泛型参数是资源类类型,不是字符串)
  • 使用方式: @localizer["WelcomeMessage"] 或带参数的 @localizer["HelloName", @name]
  • 若资源类未显式定义(即只用 .resx),可借助一个空的 SharedResource.cs 文件(内容仅 public class SharedResource { }),让编译器生成类型引用

动态切换语言并持久化用户选择

切换语言本质是改变当前线程/请求的 CultureInfo,并在客户端保存偏好:

  • Server 渲染:通过中间件或自定义 ICultureService 在每次请求前设置 HttpContext.Features.Get<irequestculturefeature>().RequestCulture</irequestculturefeature>
  • WASM 渲染:无法改线程文化,改用 JSInterop 存 localStorage,再在 App.razor 中用 CultureChanged 事件触发重载,或配合 NavigationManager.Refresh()
  • 推荐轻量方案:封装一个 LanguageService,提供 ChangeLanguage(string culture) 方法,内部更新 CultureInfo.DefaultThreadCurrentCulture(WASM 不生效,仅作标记)+ 触发状态通知

基本上就这些。关键点是资源文件命名、注入方式、以及区分 Server/WASM 的文化切换机制。不需要第三方库,.NET 原生支持很稳。

以上就是Blazor IStringLocalizer 多语言实现教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号