在 Blazor 应用程序中实现多语言支持时,可以使用 .resx 文件来存储本地化文本。但是,当对于每种语言使用多个 .resx 文件时,会导致在加载和管理大量文件方面出现困难。
为了解决这个问题,可以在每种语言的文件夹中创建一个名为“Resources.resx”的默认 .resx 文件,然后使用文件名后缀来区分其他 .resx 文件。例如,对于西班牙语,可以创建名为“Resources.es.resx”的 .resx 文件。
接下来,可以使用 IStringLocalizer
首先,在每种语言的文件夹中创建一个名为“Resources.resx”的默认 .resx 文件,例如:
Resources.resx
Resources.en.resx
Resources.es.resx
然后,创建一个名为“SharedStrings.cs”的字符串常量类,如下所示:
using Microsoft.Extensions.Localization;
namespace BlazorLocalization.Shared
{
public class SharedStrings
{
public const string WelcomeMessage = "Welcome to Blazor Localization!";
}
}
接下来,在使用 IStringLocalizer
@page "/"
@using Microsoft.Extensions.Localization
@using BlazorLocalization.Shared
@inject IStringLocalizer Localizer
@Localizer[SharedStrings.WelcomeMessage]
最后,在 Startup.cs 文件中注册本地化服务,如下所示:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
public class Startup
{
// ...
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddSingleton