Blazor IStringLocalizer 多语言实现教程

夏宇大大_1966

夏宇大大_1966

2025-12-13

483人浏览

原创

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 Resource,Custom Tool 留空(不要设为 PublicResXFileCodeGenerator)
  • 类名不重要,但资源键名要统一,比如 WelcomeMessage,各语言文件里填对应翻译

在组件中注入并使用 IStringLocalizer

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

java-api-doc-generator
java-api-doc-generator

分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。

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

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

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

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

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

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

2024.05.11

689

5

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

2025.12.18

644

18

ThinkPHP中间件机制与请求拦截处理实践
ThinkPHP中间件机制与请求拦截处理实践

本专题围绕 ThinkPHP 中间件体系展开,深入讲解中间件的定义、注册与执行流程。内容包括全局中间件与路由中间件的区别、请求前后处理逻辑、自定义中间件开发以及权限验证与日志处理应用。通过实际案例,帮助开发者掌握中间件在项目中的核心作用与最佳实践。

2026.03.31

438

17

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6859

3

resource是什么文件
resource是什么文件

Resource文件是一种特殊类型的文件,它通常用于存储应用程序或操作系统中的各种资源信息。它们在应用程序开发中起着关键作用,并在跨平台开发和国际化方面提供支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.12.20

320

3

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1818

5

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2884

5

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

2023.10.24

6204

49

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2023.11.24

6049

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.7万人学习