30 lines
1.1 KiB
C#
30 lines
1.1 KiB
C#
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!);
|
|
}
|
|
}
|