using decePubClient.Resources; using Microsoft.Extensions.Localization; using SocialPub.ClientModels.Resources; namespace collAnon.Client.Services { public sealed class CoalescingStringLocalizer { public readonly IStringLocalizer _pLocalizer; readonly IStringLocalizer _fLocalizer; readonly IStringLocalizer _eLocalizer; public CoalescingStringLocalizer( IStringLocalizer pLocalizer, IStringLocalizer fLocalizer, IStringLocalizer eLocalizer) => (_pLocalizer, _fLocalizer, _eLocalizer) = (pLocalizer, fLocalizer, eLocalizer); internal LocalizedString this[string name] { get { if (_pLocalizer[name].ResourceNotFound) if (_fLocalizer[name].ResourceNotFound) if (_eLocalizer[name].ResourceNotFound) return new(name, name, false); else return _eLocalizer[name]; else return _fLocalizer[name]; else return _pLocalizer[name]; } } internal LocalizedString this[string name, params object[] arguments] { get { if (_pLocalizer[name].ResourceNotFound) if (_fLocalizer[name].ResourceNotFound) if (_eLocalizer[name].ResourceNotFound) return new(name, name, false); else return _eLocalizer[name, arguments]; else return _fLocalizer[name, arguments]; else return _pLocalizer[name, arguments]; } } } }