using System.Globalization;
namespace Atomx.Admin.Client.Services
{
public interface ILocalizationService
{
///
/// 获取当前文化环境
/// d
CultureInfo CurrentCulture { get; }
///
/// 当语言发生改变时触发的事件。
///
event EventHandler LanguageChanged;
///
/// 当语言发生改变时触发的事件。调用 来更改语言环境。
///
///
void SetLanguage(CultureInfo culture);
}
public class LocalizationService : ILocalizationService
{
private CultureInfo? _currentCulture;
///
/// 获取当前文化环境
///
public CultureInfo CurrentCulture => _currentCulture ?? CultureInfo.CurrentCulture;
public event EventHandler LanguageChanged = default!;
public void SetLanguage(CultureInfo culture)
{
if (!culture.Equals(CultureInfo.CurrentCulture))
{
CultureInfo.CurrentCulture = culture;
}
if (_currentCulture == null || !_currentCulture.Equals(culture))
{
_currentCulture = culture;
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
LanguageChanged?.Invoke(this, culture);
}
}
}
}