首页 > 解决方案 > Blazor WASM 中的 Resx:使用 Resx 文件的旧静态方式的“问题”是什么?

问题描述

[免责声明:我是一名长期的桌面开发人员,正在慢慢学习 Web 和 Blazor,所以可能是一个菜鸟问题] 但是,

为什么,当您尝试找到在 Blazor 中进行本地化的最佳实践时,您会从官方 MS Docs ( https://docs.microsoft.com/en-us/aspnet/core/blazor/globalization-localization?view= aspnetcore-5.0&pivots=webassembly)和各种博客来执行以下操作:

  1. 添加 NuGet 包:Microsoft.Extensions.Localization
  2. 注册本地化“builder.Services.AddLocalization();”
  3. 添加您的 resx 文件
  4. 制作 IStringLocalizer (@inject IStringLocalizer Loc)
  5. 最后在您的剃须刀页面中使用以下内容:@Loc["Greeting"]

上面确实可行,但对于桌面开发人员来说,这感觉像是质量和“重构安全性”以及使用“魔术字符串”引用翻译的新方法的巨大退步。

我已经测试过,Blazor 页面上的“旧方式”只是:

  1. 添加一个 MyResource.resx
  2. 让它使用自定义工具“PublicResXFileCodeGenerator”来制作.designer文件
  3. 只需使用 MyResource.MyTranslationKey 引用翻译;

它可以工作,它是重构安全的,不需要注入或 NuGet 包......它只是工作,但尽管如此,它不是推荐的方式......我的问题是为什么不呢?缺点是什么(所有博客和文档都没有说明为什么新方法更好)

在此处输入图像描述

标签: localizationblazor-webassemblyresx

解决方案


推荐阅读