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); } } } }