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

Blazor 中使用 IStringLocalizer 实现多语言,核心是结合 .NET 的本地化服务 + 资源文件(.resx)+ 语言切换逻辑。它不依赖 JavaScript,完全在 C# 层完成,适合 Server、WASM 和 Hybrid 项目。
在 Program.cs(.NET 6+)中注册本地化服务:
builder.Services.AddRazorComponents().AddInteractiveServerComponents() 后,添加 AddLocalization()
AddLocalization(),并确保资源文件被正确发布(默认会自动包含)RequestLocalizationOptions 设置支持列表,例如 new[] { "zh-CN", "en-US", "ja-JP" }
资源文件必须按命名规范放置,Blazor 才能自动匹配:
Resources(推荐),在其中创建 SharedResource.resx(默认语言,如中文)SharedResource.en-US.resx;日文版:SharedResource.ja-JP.resx
Build Action 设为 Embedded Resource,Custom Tool 留空(不要设为 PublicResXFileCodeGenerator)WelcomeMessage,各语言文件里填对应翻译以 Razor 组件为例(如 Counter.razor):
PrestaShop 开源网店系统是一款针对web2.0设计的全功能、跨平台的免费开源电子商务解决方案,自08年1.0版本发布,短短两年时间,发展迅速,全球已超过四万家网店采用Prestashop进行布署。Prestashop 开源网店系统基于Smarty引擎编程设计,模块化设计,扩展性强,能轻易实现多种语言,多种货币浏览交易,支持Paypal等几乎所有的支付手段,是外贸网站建站的佳选。Prest
0
@inject IStringLocalizer<sharedresource> localizer</sharedresource>(注意泛型参数是资源类类型,不是字符串)@localizer["WelcomeMessage"] 或带参数的 @localizer["HelloName", @name]
SharedResource.cs 文件(内容仅 public class SharedResource { }),让编译器生成类型引用切换语言本质是改变当前线程/请求的 CultureInfo,并在客户端保存偏好:
ICultureService 在每次请求前设置 HttpContext.Features.Get<irequestculturefeature>().RequestCulture</irequestculturefeature>
JSInterop 存 localStorage,再在 App.razor 中用 CultureChanged 事件触发重载,或配合 NavigationManager.Refresh()
LanguageService,提供 ChangeLanguage(string culture) 方法,内部更新 CultureInfo.DefaultThreadCurrentCulture(WASM 不生效,仅作标记)+ 触发状态通知基本上就这些。关键点是资源文件命名、注入方式、以及区分 Server/WASM 的文化切换机制。不需要第三方库,.NET 原生支持很稳。
以上就是Blazor IStringLocalizer 多语言实现教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号