This commit is contained in:
yxw
2025-12-07 18:31:58 +08:00
parent d91954e331
commit 9631e00a12
12 changed files with 60 additions and 464 deletions

View File

@@ -0,0 +1,53 @@
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);
}
}
}
}