public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            if (TextFor.Metadata.MetadataKind != ModelMetadataKind.Property)
            {
                throw new InvalidOperationException(
                          $"The '{TextForHtmlAttributeName}' attribute is only valid to bind with a property.");
            }

            if (output.TagMode != TagMode.StartTagAndEndTag)
            {
                throw new InvalidOperationException(
                          $"The '{TextForHtmlAttributeName}' attribute can be only applied on elements that contains both start and end tags.");
            }

            if (!output.Content.IsEmptyOrWhiteSpace)
            {
                throw new InvalidOperationException(
                          $"You cannot used the '{TextForHtmlAttributeName}' attribute when the tag already has any real content in it.");
            }


            // get property definition
            var member = TextFor.Metadata.ContainerType.GetProperty(TextFor.Metadata.PropertyName,
                                                                    BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance);

            // get the localizer for the container type.
            var localizer = StringLocalizerFactory.Create(TextFor.Metadata.ContainerType);

            var memberText = member.GetTextForMember(TextSource);
            var realText   = localizer.TryGetLocalizedText(memberText);

            output.Content.SetContent(realText);
        }
    protected virtual void TryToLocalizeExceptionMessage(Exception exception, RemoteServiceErrorInfo errorInfo)
    {
        //if (exception is ILocalizeErrorMessage localizeErrorMessageException)
        //{
        //    using (var scope = ServiceProvider.CreateScope())
        //    {
        //        errorInfo.Message = localizeErrorMessageException.LocalizeMessage(new LocalizationContext(scope.ServiceProvider));
        //    }

        //    return;
        //}

        if (!(exception is IHasErrorCode exceptionWithErrorCode))
        {
            return;
        }

        if (exceptionWithErrorCode.Code.IsNullOrWhiteSpace() ||
            !exceptionWithErrorCode.Code.Contains(":"))
        {
            return;
        }

        var codeNamespace = exceptionWithErrorCode.Code.Split(':')[0];

        var localizationResourceType = LocalizationOptions.ErrorCodeNamespaceMappings.GetOrDefault(codeNamespace);

        if (localizationResourceType == null)
        {
            return;
        }

        var stringLocalizer = StringLocalizerFactory.Create(localizationResourceType);
        var localizedString = stringLocalizer[exceptionWithErrorCode.Code];

        if (localizedString.ResourceNotFound)
        {
            return;
        }

        var localizedValue = localizedString.Value;

        if (exception.Data != null && exception.Data.Count > 0)
        {
            foreach (var key in exception.Data.Keys)
            {
                localizedValue = localizedValue.Replace("{" + key + "}", exception.Data[key]?.ToString());
            }
        }

        errorInfo.Message = localizedValue;
    }
        }                        // ToDo: utilize a much more powerful and ubiquitous timing and profiling tool than a stopwatch
        #endregion
        #region Constructor
        /// <summary>
        /// Constructor that populates all the injected services provided by a GenericHost, along with the injected services specific to this program that are needed by this HostedService (or derivative like BackgroundService)
        /// </summary>
        /// <param name="loggerFactory"></param>
        /// <param name="hostEnvironment"></param>
        /// <param name="hostConfiguration"></param>
        /// <param name="hostLifetime"></param>
        /// <param name="hostApplicationLifetime"></param>
        public GenerateProgramHostedService(ILoggerFactory loggerFactory, IStringLocalizerFactory stringLocalizerFactory, IHostEnvironment hostEnvironment, IConfiguration hostConfiguration, IHostLifetime hostLifetime, IConfiguration hostedServiceConfiguration, IHostApplicationLifetime hostApplicationLifetime)
        {
            StringLocalizerFactory = stringLocalizerFactory ?? throw new ArgumentNullException(nameof(stringLocalizerFactory));
            ExceptionLocalizer     = StringLocalizerFactory.Create(typeof(ATAP.Services.GenerateProgram.ExceptionResources));
            DebugLocalizer         = StringLocalizerFactory.Create(typeof(ATAP.Services.GenerateProgram.DebugResources));
            UiLocalizer            = StringLocalizerFactory.Create(typeof(ATAP.Services.GenerateProgram.UIResources));
            LoggerFactory          = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
            Logger = loggerFactory.CreateLogger <GenerateProgramHostedService>();
            // Logger = (Logger<GenerateProgramHostedService>) ATAP.Utilities.Logging.LogProvider.GetLogger("GenerateProgramHostedService");
            Logger.LogDebug(DebugLocalizer["{0} {1}: Starting"], "GenerateProgramHostedService", ".ctor"); // ToDo Fody for tracing constructors, via an optional switch
            HostEnvironment            = hostEnvironment ?? throw new ArgumentNullException(nameof(hostEnvironment));
            HostConfiguration          = hostConfiguration ?? throw new ArgumentNullException(nameof(hostConfiguration));
            HostLifetime               = hostLifetime ?? throw new ArgumentNullException(nameof(hostLifetime));
            HostedServiceConfiguration = hostedServiceConfiguration ?? throw new ArgumentNullException(nameof(hostedServiceConfiguration));
            HostApplicationLifetime    = hostApplicationLifetime ?? throw new ArgumentNullException(nameof(hostApplicationLifetime));
            InternalCancellationToken  = InternalCancellationTokenSource.Token;
            Stopwatch = new Stopwatch();
            #region Create the serviceData and initialize it from the StringConstants or this service's ConfigRoot
            Logger.LogDebug(DebugLocalizer["{0} {1}: Creating the ServiceData"], "GenerateProgramHostedService", ".ctor");

            ServiceData = new GenerateProgramHostedServiceData();
            // populate the servicedata tasks list with a single tuple for development

            // The following parameters are for each invocation of a InvokeGenerateProgramAsync call
            // invoking a GenerateProgram call may override any of these values, but absent an override, these are the
            //  default values that will be used for every InvokeGenerateProgramAsync call.
            //  the default values come from the IConfiguration HostedServiceConfiguration that is DI injected at service startup
            /// ToDo: Security: ensure the paths do not go above their Base directory

            // var gInvokeGenerateCodeSignilDefault = new GInvokeGenerateCodeSignil(
            //   new GAssemblyGroupSignil(), new GGlobalSettingsSignil(), new GSolutionSignil(),
            //   artifactsDirectoryBase: hostedServiceConfiguration.GetValue<string>(hostedServiceStringConstants.ArtifactsDirectoryBaseConfigRootKey, hostedServiceStringConstants.ArtifactsDirectoryBaseDefault), // ToDo: should validate in case the hostedServiceStringConstants assembly is messed up?
            //   artifactsFileRelativePath: hostedServiceConfiguration.GetValue<string>(hostedServiceStringConstants.ArtifactsFileRelativePathConfigRootKey, hostedServiceStringConstants.ArtifactsFileRelativePathDefault),
            //   enablePersistence: hostedServiceConfiguration.GetValue<bool>(hostedServiceStringConstants.EnablePersistenceBoolConfigRootKey, bool.Parse(hostedServiceStringConstants.EnablePersistenceBoolDefault)), // ToDo: should validate in case the hostedServiceStringConstants assembly is messed up?
            //   enablePickAndSave: hostedServiceConfiguration.GetValue<bool>(hostedServiceStringConstants.EnablePickAndSaveBoolConfigRootKey, bool.Parse(hostedServiceStringConstants.EnablePickAndSaveBoolDefault)), // ToDo: should validate in case the hostedServiceStringConstants assembly is messed up?
            //   enableProgress: hostedServiceConfiguration.GetValue<bool>(hostedServiceStringConstants.EnableProgressBoolConfigRootKey, bool.Parse(hostedServiceStringConstants.EnableProgressBoolDefault)), // ToDo: should validate in case the hostedServiceStringConstants assembly is messed up?
            //   temporaryDirectoryBase: hostedServiceConfiguration.GetValue<string>(hostedServiceStringConstants.TemporaryDirectoryBaseConfigRootKey, hostedServiceStringConstants.TemporaryDirectoryBaseDefault),
            //   persistenceMessageFileRelativePath: hostedServiceConfiguration.GetValue<string>(hostedServiceStringConstants.PersistenceMessageFileRelativePathConfigRootKey, hostedServiceStringConstants.PersistenceMessageFileRelativePathDefault),
            //   pickAndSaveMessageFileRelativePath: hostedServiceConfiguration.GetValue<string>(hostedServiceStringConstants.PickAndSaveMessageFileRelativePathConfigRootKey, hostedServiceStringConstants.PickAndSaveMessageFileRelativePathDefault),
            //   dBConnectionString: hostedServiceConfiguration.GetValue<string>(hostedServiceStringConstants.DBConnectionStringConfigRootKey, hostedServiceStringConstants.DBConnectionStringDefault),
            //   ormLiteDialectProviderStringDefault: hostedServiceConfiguration.GetValue<string>(hostedServiceStringConstants.OrmLiteDialectProviderConfigRootKey, hostedServiceStringConstants.OrmLiteDialectProviderDefault)
            // );
            // // Every invocation to GenerateProgram needs an instance of an EntryPoint class
            // gInvokeGenerateCodeSignilDefault.EntryPoints = new ATAP.Utilities.GenerateProgram.EntryPoints();
            // gInvokeGenerateCodeSignilDefault.ArtifactsFilePaths = new string[1] { gInvokeGenerateCodeSignilDefault.ArtifactsDirectoryBase + gInvokeGenerateCodeSignilDefault.ArtifactsFileRelativePath };
            // gInvokeGenerateCodeSignilDefault.PersistenceFilePaths = new string[1] { gInvokeGenerateCodeSignilDefault.TemporaryDirectoryBase + gInvokeGenerateCodeSignilDefault.PersistenceMessageFileRelativePath };
            // gInvokeGenerateCodeSignilDefault.PickAndSaveFilePaths = new string[1] { gInvokeGenerateCodeSignilDefault.TemporaryDirectoryBase + gInvokeGenerateCodeSignilDefault.PickAndSaveMessageFileRelativePath };
            // // ToDo ?: setup placeholders for the ProgressReport object
            // // ToDo ?: setup placeholders for the Persistence(File)
            // // ToDo ?: setup placeholders for the PickAndSave object
            #endregion
        }
Beispiel #4
0
        protected virtual IStringLocalizer CreateLocalizer()
        {
            if (LocalizationResourceType != null)
            {
                return(StringLocalizerFactory.Create(LocalizationResourceType));
            }

            var localizer = StringLocalizerFactory.CreateDefaultOrNull();

            if (localizer == null)
            {
                throw new AbpException($"Set {nameof(LocalizationResourceType)} or define the default localization resource type (by configuring the {nameof(AbpLocalizationOptions)}.{nameof(AbpLocalizationOptions.DefaultResourceType)}) to be able to use the {nameof(L)} object!");
            }

            return(localizer);
        }
Beispiel #5
0
        private IStringLocalizer GetStringLocalizer()
        {
            string resourcesLocation = CustomResourcesLocation;

            if (string.IsNullOrWhiteSpace(resourcesLocation))
            {
                resourcesLocation = GetType().Assembly.GetName().Name;
            }

            string resourcesPath = CustomResourcesPath;

            if (string.IsNullOrWhiteSpace(resourcesPath))
            {
                resourcesPath = GetType().FullName;
            }

            return(StringLocalizerFactory.Create(resourcesPath, resourcesLocation));
        }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            if (output.TagMode != TagMode.SelfClosing)
            {
                throw new InvalidOperationException(
                          $"The '{TargetElementName}' element can only use the self closing mode.");
            }

            if (Value == null && For == null)
            {
                throw new InvalidOperationException(
                          $"Either the '{ValueHtmlAttributeName}' attribute or the '{ForHtmlAttributeName}' attribute should be specified.");
            }

            if (Value != null && For != null)
            {
                throw new InvalidOperationException(
                          $"Only one of the '{ValueHtmlAttributeName}' attribute and the '{ForHtmlAttributeName}' attribute can be specified.");
            }

            var realValue = Value ?? For.Model;

            if (!(realValue is Enum enumValue))
            {
                throw new InvalidOperationException(
                          $"Your specified value from the '{ValueHtmlAttributeName} attribute or the '{ForHtmlAttributeName}' attribute is not a valid enum value.");
            }

            // get property definition
            var member = enumValue.GetMember();

            // get the localizer for the container type.
            var localizer = StringLocalizerFactory?.Create(member.DeclaringType);

            var memberText = member.GetTextForMember(TextSource);
            var realText   = localizer.TryGetLocalizedText(memberText);

            output.TagName = null;
            output.Content.SetContent(realText);
        }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            if (output.TagMode != TagMode.SelfClosing)
            {
                throw new InvalidOperationException(
                          $"The '{TargetElementName}' element can only use the self closing mode.");
            }


            // get property definition
            var member = For.Metadata.ContainerType.GetProperty(For.Metadata.PropertyName,
                                                                BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance);

            // get the localizer for the container type.
            var localizer = StringLocalizerFactory?.Create(For.Metadata.ContainerType);

            var memberText = member.GetTextForMember(TextSource);
            var realText   = localizer.TryGetLocalizedText(memberText);

            output.TagName = null;
            output.Content.SetContent(realText);
        }
 public IStringLocalizer GetLocalizer(Type resourceType)
 {
     return(StringLocalizerFactory.Create(resourceType));
 }
 public IStringLocalizer GetLocalizer <T>()
 {
     return(StringLocalizerFactory.Create <T>());
 }
Beispiel #10
0
        /// <summary>
        /// Get override string localizer
        /// </summary>
        /// <returns></returns>
        private static IStringLocalizer GetLocalizer()
        {
            StringLocalizerFactory sl = new StringLocalizerFactory();

            return(sl.Create("Translation", "Resources"));
        }
Beispiel #11
0
 private IStringLocalizer GetStringLocalizer(string resourceName)
 {
     return(StringLocalizerFactory.Create(resourceName, typeof(Program).Assembly.FullName));
 }
Beispiel #12
0
        public HomeController() : base()
        {
            StringLocalizerFactory sl = new StringLocalizerFactory();

            _htmlLocalizer = sl.Create("Translation", "Resources");
        }