localization - 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)和各种博客来执行以下操作:
- 添加 NuGet 包:Microsoft.Extensions.Localization
- 注册本地化“builder.Services.AddLocalization();”
- 添加您的 resx 文件
- 制作 IStringLocalizer (@inject IStringLocalizer Loc)
- 最后在您的剃须刀页面中使用以下内容:@Loc["Greeting"]
上面确实可行,但对于桌面开发人员来说,这感觉像是质量和“重构安全性”以及使用“魔术字符串”引用翻译的新方法的巨大退步。
我已经测试过,Blazor 页面上的“旧方式”只是:
- 添加一个 MyResource.resx
- 让它使用自定义工具“PublicResXFileCodeGenerator”来制作.designer文件
- 只需使用 MyResource.MyTranslationKey 引用翻译;
它可以工作,它是重构安全的,不需要注入或 NuGet 包......它只是工作,但尽管如此,它不是推荐的方式......我的问题是为什么不呢?缺点是什么(所有博客和文档都没有说明为什么新方法更好)
解决方案
推荐阅读
- javascript - onChange(e) 中的“e”是什么?
- unix - 使用 AWK 读取文件的 1 行后跳过 2 行
- linux - 打印没有该列第一项的列
- ruby-on-rails - Rails 5.0:添加引用现有表的自连接表
- android - 我怎么解决这个问题。(错误:找不到字段的吸气剂。)
- google-bigquery - 如何在 Google Big Query 中展平一行中的值
- python-3.x - 在python中迭代时间戳
- vb.net - WebBrowser 中的 InnerHtml
- groovy - Geb 等待元素消失
- oracle - 如何解决 Evosuite 生成的测试中的 oracle jdbc 代理类错误?