Search code examples
c#aspnetboilerplate

set LocalizationSourceName in domain service


I have got a class extending DomainService abstract class as below:

public class ScheduleManager : DomainService, IScheduleManager

The following line does not work:

throw new UserFriendlyException(L("ScheduleIsNotValid"));

because of: Abp.AbpException: Must set LocalizationSourceName before, in order to get LocalizationSource

Just wonder where the proper place if for setting the LocalizationSourceName, like it was set in MyCarParkControllerBase, but in Core (Domain) layer?

By the way the there are 2 usages of localization in the UserRegistrationManager class as:

Line 96 >>> throw new UserFriendlyException(L("UnknownTenantId{0}", tenantId));
Line  101 >>> throw new UserFriendlyException(L("TenantIdIsNotActive{0}", tenantId));

That are failing due to the same issue!

Cheers,


Solution

  • Just to be more clear:

    AbpServiceBase implement the propertie LocalizationSourceName:

    protected string LocalizationSourceName { get; set; }
    

    And in Core Module you can find in PreInitialize the localization configurer:

    MyProjectLocalizationConfigurer.Configure(Configuration.Localization);
    

    In the Configure method you can see the name of the Localization, this name need to be used in the constructor like @Alber Ebicoglu already showed.

    Like this:

    public AbpLoginResultTypeHelper(IAccountAppService accountAppService)
    {
        LocalizationSourceName = MyProjectConsts.LocalizationSourceName; //Localization name
        _accountAppService = accountAppService;
    }