sozsoft-platform/api/modules/Sozsoft.Notifications/Sozsoft.Notifications.Domain/NotificationCulture.cs

31 lines
1.1 KiB
C#
Raw Normal View History

2026-10-17 18:51:10 +00:00
using System;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Localization;
using Volo.Abp.Settings;
namespace Sozsoft.Notifications.Domain;
/// <summary>
/// Bildirim metninin (tarih, sayi, dil anahtari) uretildigi kultur. Istek disinda (worker) is
/// parcaciginin kulturu surec varsayilanidir; alicinin kendi dil tercihi platformda saklanmaz
/// (dil istekte <c>Accept-Language</c> ile gelir), bu yuzden ulasilabilen en yakin deger
/// kiracinin <c>Abp.Localization.DefaultLanguage</c> ayaridir (kiraci → global → varsayilan).
/// </summary>
public interface INotificationCulture
{
Task<IDisposable> UseAsync();
}
public class NotificationCulture(ISettingProvider settingProvider) : INotificationCulture, ITransientDependency
{
public async Task<IDisposable> UseAsync()
{
var culture = await settingProvider.GetOrNullAsync(LocalizationSettingNames.DefaultLanguage);
return culture.IsNullOrWhiteSpace() || !CultureHelper.IsValidCultureCode(culture!)
? NullDisposable.Instance
: CultureHelper.Use(culture!);
}
}