using System; using System.Globalization; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Settings; using Volo.Abp.Timing; using Volo.Abp.MultiTenancy; using Microsoft.Extensions.Options; namespace Kurs.Platform.Localization { public class TenantLocalizationInitializer : ITransientDependency { private readonly ISettingProvider _settingProvider; private readonly ICurrentTenant _currentTenant; private readonly IOptions _clockOptions; public TenantLocalizationInitializer( ISettingProvider settingProvider, ICurrentTenant currentTenant, IOptions clockOptions) { _settingProvider = settingProvider; _currentTenant = currentTenant; _clockOptions = clockOptions; } public async Task ApplyTenantSettingsAsync() { // Dil ayarı var lang = await _settingProvider.GetOrNullAsync("Abp.Localization.DefaultLanguage") ?? "en"; try { var culture = new CultureInfo(lang); CultureInfo.DefaultThreadCurrentCulture = culture; CultureInfo.DefaultThreadCurrentUICulture = culture; } catch { CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture; } // Saat tipi (UTC / Local) var timeZoneId = await _settingProvider.GetOrNullAsync("Abp.Timing.TimeZone") ?? "UTC"; try { var tz = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); _clockOptions.Value.Kind = tz.Id.Contains("UTC", StringComparison.OrdinalIgnoreCase) ? DateTimeKind.Utc : DateTimeKind.Local; } catch { _clockOptions.Value.Kind = DateTimeKind.Utc; } } } }