using System; using System.Globalization; using System.Threading.Tasks; namespace MyAvaloniaApp.Services { /// /// 语言管理器,用于管理应用程序的语言设置 /// public class LanguageManager { private readonly IResourceService _resourceService; private CultureInfo _currentCulture; public event EventHandler? LanguageChanged; public LanguageManager(IResourceService resourceService) { _resourceService = resourceService; _currentCulture = CultureInfo.CurrentCulture; } /// /// 获取当前语言 /// public CultureInfo CurrentCulture => _currentCulture; /// /// 获取当前语言名称 /// public string CurrentLanguageName => _currentCulture.Name.StartsWith("zh") ? "中文" : "English"; /// /// 切换语言 /// /// 目标语言文化信息 public async Task SwitchLanguageAsync(CultureInfo culture) { if (_currentCulture != culture) { _currentCulture = culture; _resourceService.SetCulture(culture); // 触发语言变更事件 LanguageChanged?.Invoke(this, culture); // 这里可以添加其他语言切换逻辑,比如重新加载UI等 await OnLanguageChangedAsync(culture); } } /// /// 切换到中文 /// public async Task SwitchToChineseAsync() { await SwitchLanguageAsync(new CultureInfo("zh-CN")); } /// /// 切换到英文 /// public async Task SwitchToEnglishAsync() { await SwitchLanguageAsync(new CultureInfo("en-US")); } /// /// 切换语言(中文/英文) /// public async Task ToggleLanguageAsync() { if (_currentCulture.Name.StartsWith("zh")) { await SwitchToEnglishAsync(); } else { await SwitchToChineseAsync(); } } private async Task OnLanguageChangedAsync(CultureInfo culture) { // 这里可以添加语言切换后的处理逻辑 // 比如重新加载页面内容、更新UI等 await Task.CompletedTask; } } }