Files
WCS/Cowain.Base/Abstractions/Localization/LocalizationResourceContributorBase.cs
2026-03-02 09:08:20 +08:00

40 lines
1.2 KiB
C#

using Cowain.Base.Models;
using Ke.Bee.Localization.Providers.Abstractions;
using Microsoft.Extensions.Options;
using System.Globalization;
using System.Text.Json;
namespace Cowain.Base.Abstractions.Localization;
public abstract class LocalizationResourceContributorBase: ILocalizationResourceContributor
{
/// <summary>
/// 插件根目录
/// </summary>
private readonly string _pluginRoot;
/// <summary>
///
/// </summary>
/// <param name="appSettings">全局配置</param>
/// <param name="pluginName">插件名称</param>
public LocalizationResourceContributorBase(IOptions<AppSettings> appSettings, string pluginName)
{
_pluginRoot = Path.Combine(appSettings.Value.PluginPath, pluginName);
}
/// <summary>
/// 获取本地化资源的默认实现
/// </summary>
/// <param name="culture"></param>
/// <returns></returns>
public virtual Dictionary<string, string>? GetResource(CultureInfo culture)
{
var resource = JsonSerializer.Deserialize<Dictionary<string, string>>(File.ReadAllBytes(
Path.Combine(_pluginRoot, "i18n", $"{culture.IetfLanguageTag}.json")
));
return resource;
}
}