Files
Atomx/Atomx.Admin/Atomx.Admin.Client/Services/LocalizationService.cs
2025-12-07 18:31:58 +08:00

54 lines
1.6 KiB
C#

using System.Globalization;
namespace Atomx.Admin.Client.Services
{
public interface ILocalizationService
{
/// <summary>
/// 获取当前文化环境
/// </summary>d
CultureInfo CurrentCulture { get; }
/// <summary>
/// 当语言发生改变时触发的事件。
/// </summary>
event EventHandler<CultureInfo> LanguageChanged;
/// <summary>
/// 当语言发生改变时触发的事件。调用 <see cref="InteractiveStringLocalizer"/> 来更改语言环境。
/// </summary>
/// <param name="culture"></param>
void SetLanguage(CultureInfo culture);
}
public class LocalizationService : ILocalizationService
{
private CultureInfo? _currentCulture;
/// <summary>
/// 获取当前文化环境
/// </summary>
public CultureInfo CurrentCulture => _currentCulture ?? CultureInfo.CurrentCulture;
public event EventHandler<CultureInfo> 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);
}
}
}
}