chore
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user