在教程如何将本地化添加到Blazor WebAssembly中之后,我成功地拥有了一个演示应用程序,它将向我展示英语或西班牙语。
为了简单起见,我只实现了静态设置文化和本地化中的部分--也就是说,我使用如下代码直接在Program.cs中设置目标区域性:
var culture = new CultureInfo("es-ES");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;如前所述,这是很好的工作。但我也想增加对伪翻译的支持。
我已经有了一个工具,可以从*.qps-ploc.resx文件自动生成*.resx文件。我已经确认这是在qps-ploc\MyApp.resources.dll中生成卫星资源汇编文件,它包含正确的资源。
qps-ploc资源也按照使用publish/wwwroot/_framework/qps-ploc时的预期复制到dotnet publish文件夹中。他们被列在satelliteResources下的blazor.boot.json中。
但是,当指定以下内容时,它将加载默认资源,而不是伪资源:
var culture = new CultureInfo("qps-ploc");为什么,我该怎么解决这个问题?
发布于 2022-06-19 13:12:31
您没有提到如何引入实际将字符串转换为新语言所需的IStringLocalizer服务,也没有提到如何配置用于本地化的字符串。
您需要在希望执行翻译的每个剃须刀页面上都有:@inject IStringLocalizer<...> Loc。
您还需要对要翻译的每个字符串使用@Loc["blah blah..."]。然后,在你的资源文件中,你会有一个匹配的条目,每一个“废话.”您想要本地化的字符串。
您是否确实遵循了Microsoft示例的确切措辞(针对es-CL),然后再尝试变得聪明并使用其他语言?
它对我很好(使用es-CL和其他文化),所以我怀疑您没有勾选所有所需的框。
你在ResourceManager里查到这个了吗?您应该能够单步遍历客户端代码。
https://stackoverflow.com/questions/71376446
复制相似问题