【问题标题】:Pseudo-localization in Blazor WebAssemblyBlazor WebAssembly 中的伪本地化
【发布时间】:2022-06-19 21:12:31
【问题描述】:

tutorial on adding localization to Blazor WebAssembly 之后,我成功地制作了一个演示应用程序,它将向我显示英语或西班牙语。

为简单起见,我只实现了Statically set the cultureLocalization 中的部分——即,我使用如下代码直接在 Program.cs 中设置目标文化:

var culture = new CultureInfo("es-ES");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;

如上所述,这很好用。但我还想添加对pseudo-translation 的支持。

我已经有一个工具可以自动从*.resx 文件生成*.qps-ploc.resx 文件。我已确认这是在qps-ploc\MyApp.resources.dll 中生成卫星资源程序集文件,并且它包含正确的资源。

qps-ploc 资源也被复制到 publish/wwwroot/_framework/qps-ploc 文件夹中,正如使用 dotnet publish 时所期望的那样。它们在blazor.boot.json 中的satelliteResources 下列出。

但是,当指定以下内容时,它会加载默认资源而不是伪资源:

var culture = new CultureInfo("qps-ploc");

为什么,我该如何解决这个问题?

【问题讨论】:

  • 我还确认culture 不为空。
  • 我已将此报告为a bug

标签: .net localization blazor blazor-webassembly .net-6.0


【解决方案1】:

您没有提到如何引入将字符串实际转换为新语言所需的 IStringLocalizer 服务,也没有提到如何为本地化配置字符串。

您需要: @inject IStringLocalizer<...> Loc 在您希望执行翻译的每个剃须刀页面上。

您还需要为每个要翻译的字符串使用@Loc["blah blah..."]。然后在您的资源文件中,您将为每个要本地化的“blah blah ...”字符串提供一个匹配条目。

在尝试变得聪明并使用其他语言之前,您是否确实首先遵循了 Microsoft 示例的确切措辞(对于 es-CL)?

它对我来说效果很好(使用 es-CL 和其他文化),所以我怀疑你没有勾选所有必需的框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 2020-03-21
    • 2021-10-26
    • 1970-01-01
    • 2022-10-08
    • 2020-05-20
    • 2020-08-19
    • 2020-06-26
    相关资源
    最近更新 更多