我得到了一个使用IStringLocalizer进行多语言的blazor-wasm应用程序。资源文件位于类库中。这是项目树木景观:
- blazor-wasm项目
- 多车道项目
- 资源
- 资源.resx
- resource.fr.resx
- resource.de.resx
- 资源
在每个资源文件中都有一个字符串键Test翻译成每种语言。我目前正在Program.cs:中加载我的文化(出于测试目的(
builder.Services.AddLocalization();
CultureInfo defaultCulture = new CultureInfo("de-DE");
CultureInfo.DefaultThreadCurrentCulture = defaultCulture;
CultureInfo.DefaultThreadCurrentUICulture = defaultCulture;
还增加了对多语言项目的参考。当我在这样的测试组件中注入我的字符串校准器时:
@inject IStringLocalizer<Resource> localizer
<h3>@localizer[Resource.Test]</h3>
当currentCulture设置为fr-fr或en-US时,Test密钥会被正确检索,但当设置为de-de时则不会,然后它会自动返回en-US。
我检查了很多次,除了翻译之外,资源文件完全相同,设置为公共嵌入资源,但没有加载de de,如果我添加一个新的resx文件,es es也是如此。我不知道我在这里错过了什么。。。
有什么想法吗?
我为Blazor WASM和本地化添加了一个演示应用程序,我的这篇文章解释了这个演示应用程序。它具有一个语言选择器,您可以在Blazor WASM应用程序运行时按需设置语言。
https://toreaurstad.blogspot.com/2023/07/localizing-blazor-wasm-applications.html?m=0
Github repo在这里:https://github.com/toreaurstadboss/HelloBlazorLocalization
您提到某些语言已加载,而其他语言则不显示。如果你忘记了一些设置,你能检查一下你的Program.cs吗?
如果您在此处查看:https://github.com/toreaurstadboss/HelloBlazorLocalization/blob/main/HelloBlazorLocalization/Program.cs
您可以在该代码中查看我是如何专门设置支持的语言的。此外,请仔细检查浏览器的语言设置。也许你在浏览器中设置了一个特定的德语变体,它似乎与de默认的德语代码不一致。还要特别检查.resx文件是否与其他.resx不同。
很抱歉无法进一步确定错误所在,但如果你运行我的示例演示应用程序,你可能会发现Blazor WASM应用程序中缺少什么,无法在Blazor中进行本地化。