// 指定多國語系支援程度
public static class LocalizerSettings
{
// 預設語系
public static CultureWithName NeutralCulture = new CultureWithName("English", "en-US");
// 指定多國語系支援程度。可事後再多入更多語系。
public static readonly List<CultureWithName> SupportedCulturesWithName = new List<CultureWithName>()
{
new CultureWithName("English", "en-US"),
new CultureWithName("中文","zh-TW")
};
}
// 此資料結構用於管理語系
public record CultureWithName
{
public string Name { get; set; } = default!;
public string Culture { get; set; } = default!;
public CultureWithName(string name, string culture)
{
Name = name;
Culture = culture;
}
}
public static class ThisProjectClassExtensions
{
/// <summary>
/// 設定現在語系:依 localStorage 的 culture 屬性值設定現在語系。
/// </summary>
public async static Task SetDefaultCultureAsync(this WebAssemblyHost host)
{
var localStorage = host.Services.GetRequiredService<ILocalStorageService>();
var cultureString = await localStorage.GetItemAsync<string>("culture");
CultureInfo cultureInfo = !String.IsNullOrWhiteSpace(cultureString)
? new CultureInfo(cultureString)
: new CultureInfo(LocalizerSettings.NeutralCulture.Culture);
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
}
}