tnblog
首页
视频
资源
登录

MAUI Blazor 语言设置国际化

4729人阅读 2023/3/20 15:40 总访问:3467560 评论:0 收藏:0 手机
分类: .net后台框架

MAUI Blazor 语言设置国际化

I18nText 前言


这个软件包是在Blazor Web应用程序中本地化文本的另一种方式!

特性

  • Blazor 服务器和 WebAssembly 都受支持。
  • 在 Blazor Wasm 中,它甚至可以在静态 Web 主机上运行。(不需要 ASP.NET Core 主机)
  • 只需要纯文本编辑器 - 不需要 .resx
  • 静态类型 - IntelliSense、代码提示…
  • 它支持 Blazor 组件库。你可以创建使用Blazor I18nText本地化的库的 NuGet 包。

新建MauiLearningBlazorApp项目


选择MAUI Blazor以及7.0的框架版本


首先安装相关包Toolbelt.Blazor.I18nText


MauiProgram.cs中添加相关依赖服务。

  1. builder.Services.AddI18nText();

添加不同的语言


首先创建一个i18ntext的文件夹,并在该目录下创建三个不同语言的json语言,这里我以中文、英语、意大利语举例,分别对应的是language.cn.jsonlanguage.en.jsonlanguage.it.json

  1. {
  2. "HelloWord": "你好,世界!"
  3. }
  1. {
  2. "HelloWord": "Hello,World!en"
  3. }
  1. {
  2. "HelloWord": "Ciao, parola"
  3. }

除了json还可以通过csv的方式。举个例子:

  1. Key1,Localized text 1

本地化文本源文件的命名规则必须如下:

  1. <Text Table Name>.<Language Code>.{json|csv}


然后通过_imports.razor设置全局引用命名空间。

  1. @using Toolbelt.Blazor.I18nText
  2. @using MauiLearningBlazorApp.I18nText


然后我们修改index.razor网页,并注入I18nText设置其中的语言。
并添加三个不同的按钮进行来回切换。

  1. @page "/"
  2. @inject I18nText I18nText
  3. @code {
  4. language MyText = new language();
  5. protected override async Task OnInitializedAsync()
  6. {
  7. MyText = await I18nText.GetTextTableAsync<language>(this);
  8. }
  9. }
  10. <h1>@MyText.HelloWord</h1>
  11. Welcome to your new app.
  12. <SurveyPrompt Title="How is Blazor working for you?" />
  13. <button class="btn btn-primary" @onclick="@(async e=>await OnChangeCurrentLang("cn"))">中文</button>
  14. <button class="btn btn-primary" @onclick="@(async e=>await OnChangeCurrentLang("en"))">English</button>
  15. <button class="btn btn-primary" @onclick="@(async e=>await OnChangeCurrentLang("it"))">Italian</button>
  16. @code {
  17. private async Task OnChangeCurrentLang(string lang)
  18. {
  19. await I18nText.SetCurrentLanguageAsync(lang);
  20. }
  21. }


测试。


测试是没问题的。

除了@MyText.HelloWord这样的调用之外,我们还可以通过@MyText["HelloWord"]来实现切换语言的效果。

指定默认语言设置


MauiProgram.cs中的CreateMauiApp中,我们通过配置RequestLocalizationOptions来指定支持的语言以及默认的语言配置。
这里我设置的默认语言配置为en

  1. builder.Services.Configure<RequestLocalizationOptions>(options => {
  2. var supportedCultures = new[] { "en", "cn", "it" };
  3. options.DefaultRequestCulture = new RequestCulture("en");
  4. options.AddSupportedCultures(supportedCultures);
  5. options.AddSupportedUICultures(supportedCultures);
  6. });


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术