新闻中心

Blazor IStringLocalizer 多语言实现教程

2025-12-13
浏览次数:
返回列表
Blazor 多语言核心是 IStringLocalizer + .resx 资源文件 + 语言切换逻辑,不依赖 JS;需在 Program.cs 注册 AddLocalization(),按规范命名资源文件(如 SharedResource.zh-CN.resx),组件中 @inject IStringLocalizer 使用,Server/WASM 切换文化方式不同但均原生支持。

blazor istringlocalizer 多语言实现教程

Blazor 中使用 IStringLocalizer 实现多语言,核心是结合 .NET 的本地化服务 + 资源文件(.resx)+ 语言切换逻辑。它不依赖 J*aScript,完全在 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 事件触发重载,或配合 N*igationManager.Refresh()
  • 推荐轻量方案:封装一个 LanguageService,提供 ChangeLanguage(string culture) 方法,内部更新 CultureInfo.DefaultThreadCurrentCulture(WASM 不生效,仅作标记)+ 触发状态通知

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

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


# java  # javascript  # 设为  # 如何处理  # 开源  # 网店  # red  # .net  # c#  # 本地化  # 多语言  # app  # js  # 家政行业网站优化宣传  # dnf道具流seo稻  # 苹果手机推广网站有哪些  # 菜名翻译网站建设需要  # 提供网站备案建设服务  # 网站推广软文案  # 贵阳网站推广  # 南山网站优化排名公司  # 行者网站优化费用  # 绵阳专业网络推广营销  # 两年  # 如何在  # 不需要  # 数据格式  # 操作指南 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案  拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  c++项目目录结构应该如何组织_c++工程化项目结构规范  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  J*a应用集成GitHub CLI与API认证指南  解决深度学习模型训练初期异常高损失与完美验证准确率问题  12306怎么选座位选到安静区_12306选座安静区域选择策略  必由学在线入口 必由学网页版快速登录入口  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】  Golang如何测试channel通信行为_Golang channel通信测试与分析方法  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  sublime怎么格式化代码_sublime代码美化与一键排版插件配置  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  高德地图沿途添加点失败如何解决 高德多点规划方法  css链接悬停下划线样式如何自定义_使用::after结合content和transition  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  AO3同人作品网入口 AO3搜索引擎官网永久地址  菜鸟取件码是什么怎么查 最全查询渠道汇总  c++ dfs和bfs代码 c++深度广度优先搜索算法  单12V-2&#215;6实现为RTX 5090供电750W!甚至都没敢跑分  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】  UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】  J*aScript类型检查_j*ascript代码规范  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正  德邦快递查询平台 德邦快递物流信息查询入口  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复  Surface怎么安装系统 微软Surface Pro U盘重装win11教程  Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注  TypeScript/J*aScript:高效查找数组中首个唯一ID对象  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  MongoDB聚合管道:正确匹配对象数组中_id的方法  谷歌google账号注册详细步骤 谷歌账号注册官方教程  AO3最新官网入口公告_2025AO3镜像站实时查询方法  zookeeper 都有哪些功能?  4399免费游戏网址入口 4399小游戏免费入口点开即玩  新手怎么开始学化妆 零基础化妆入门教程  HTML空白字符处理机制:渲染、DOM与编码实践  Animex动漫社网入口地址 Animex动漫社网正版在线入口  PHP中SSG-WSG API的AES加密实践:正确使用初始化向量  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】  免费抖音短视频入口_抖音网页版短视频免费通道  sublime怎么覆盖插件的默认快捷键_sublime快捷键优先级与设置 

搜索