/// <summary>
        /// Add handlebars for Cosmos.I18N
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static II18NServiceCollection AddHandlebars(this II18NServiceCollection services)
        {
            Handlebars.RegisterHelper("A", AnonymousHelperRegister.Register);
            Handlebars.RegisterHelper("T", TranslateHelperRegister.Register);

            return(services);
        }
        /// <summary>
        /// Add AbpFx Resource
        /// </summary>
        /// <param name="services"></param>
        /// <param name="virtualPath"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static II18NServiceCollection AddAbpResourceFrom(this II18NServiceCollection services, string virtualPath)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (string.IsNullOrWhiteSpace(virtualPath))
            {
                throw new ArgumentNullException(nameof(virtualPath));
            }

            var path = PathHelper.Combine(services.ExposeOptions, virtualPath, true);

            try {
                foreach (var filePath in PathHelper.GetSeveralPathList(path))
                {
                    using (var bridgeAdapter = new AbpJsonFileAdapter(filePath)) {
                        if (bridgeAdapter.Process())
                        {
                            var speaker = bridgeAdapter.Speak();
                            services.ExposeOptions.AddResource(speaker.PackageKey, TranslateResourceFactory.Create(speaker));
                        }
                    }
                }
            }
            catch (Exception exception) {
                InternalLogger.WriteLine($"Thrown exception when add json resource from {path}, message: {0}", exception.Message);
            }

            return(services);
        }
 public static void AppendOrOverride(this II18NServiceCollection services)
 {
     services.AddDependency(s => {
         s.AddSingleton <ICoreScopedLanguageTagFactory, HostedLanguageTagFactory>();
         s.AddScoped <IRequestedLanguageTagAccessor, RequestedLanguageTagAccessor>();
     });
 }
Beispiel #4
0
        internal static void AllDone(II18NServiceCollection services)
        {
            if (services is I18NServiceCollection serviceImpl)
            {
                var translationManager = serviceImpl.ExposeTranslationManager;
                var translationSetter  = translationManager as ITranslationManSetter;

                foreach (var package in serviceImpl.ExposeOptions.TranslationPackages)
                {
                    var translationPackage = package.Value;
                    translationSetter.RegisterPackage(translationPackage);
                    serviceImpl.AddDependency(s => s.AddSingleton(translationPackage));
                }

                serviceImpl.AddDependency(s => {
                    s.AddSingleton(translationManager);
                    s.AddSingleton <ITranslationManager>(translationManager);
                    s.AddSingleton <ITextProvider, TextProvider>();
                    s.AddSingleton <ILanguageServiceProvider, ConsoleLanguageServiceProvider>();
                    s.AddSingleton(provider => new TranslationProcessor(provider.GetServices <ITranslatePackage>().ToDictionary(package => package.PackageKey.GetHashCode())));
                });

                SetResolver(serviceImpl.Build());
            }
        }
Beispiel #5
0
        /// <summary>
        /// Add xml format anonymous resource from path...
        /// </summary>
        /// <param name="services"></param>
        /// <param name="path"></param>
        /// <param name="referenceToBasePath"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static II18NServiceCollection AddXmlAnonymousResourceFrom(this II18NServiceCollection services, string path = "Anonymous.*", bool referenceToBasePath = true)
        {
            if (services is null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (string.IsNullOrWhiteSpace(path))
            {
                throw new ArgumentNullException(nameof(path));
            }

            if (!path.ToLower().EndsWith(".xml"))
            {
                path += ".xml";
            }

            if (PathHelper.IsSeveralPath(path))
            {
                foreach (var file in PathHelper.GetSeveralPathList(services.ExposeOptions, path))
                {
                    AddXmlAnonymousResourceFromOnce(services, file, false);
                }

                return(services);
            }

            return(AddXmlAnonymousResourceFromOnce(services, path, referenceToBasePath));
        }
Beispiel #6
0
 private static void RegisterTranslationProviders(this II18NServiceCollection services)
 {
     services.AddDependency(s => {
         s.AddSingleton <ITextProvider, TextProvider>();
         s.AddSingleton <ILanguageServiceProvider, ConsoleLanguageServiceProvider>();
     });
 }
Beispiel #7
0
        /// <summary>
        /// Done
        /// </summary>
        /// <param name="services"></param>
        /// <typeparam name="TRegister"></typeparam>
        /// <typeparam name="TService"></typeparam>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        /// <exception cref="ArgumentException"></exception>
        public static TRegister Done <TRegister, TService>(this II18NServiceCollection services)
            where TRegister : DependencyProxyRegister <TService>
        {
            if (services is null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (services is DefaultI18NServiceCollection <TRegister, TService> serviceImpl)
            {
                var register = serviceImpl.OriginalRegister;

                if (!StaticFlag.HasInit)
                {
                    var options = services.ExposeOptions;

                    services.RegisterAllPackages(options);

                    services.RegisterTranslationProcessor();

                    services.RegisterTranslationProviders();

                    services.RegisterTranslationAccessor();
                }

                return(register);
            }

            throw new ArgumentException("Unknown type of II18NServiceCollection");
        }
        /// <summary>
        /// Done
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static IServiceCollection Done(this II18NServiceCollection services)
        {
            if (services is null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (services is StandardI18NServiceCollection serviceImpl)
            {
                var builder = serviceImpl.OriginalServices;

                if (!StaticFlag.HasInit)
                {
                    using (serviceImpl) {
                        serviceImpl.RegisterAllPackages();

                        serviceImpl.RegisterTranslationProcessor();

                        serviceImpl.RegisterTranslationProviders();

                        serviceImpl.RegisterTranslationAccessor();
                    }
                }

                return(builder);
            }

            throw new ArgumentException("Unknown type of II18NServiceCollection");
        }
Beispiel #9
0
        private static void RegisterTranslationAccessor(this II18NServiceCollection services)
        {
            var tagFactory = new DefaultLanguageTagFactory(LanguageTag.Current.ToString);

            services.AddDependency(register => register.AddSingleton <ICoreScopedLanguageTagFactory>(tagFactory));
            services.AddDependency(register => register.AddScoped <ITranslationAccessor, DefaultTranslationAccessor>());
        }
Beispiel #10
0
        /// <summary>
        /// Done
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static ContainerBuilder Done(this II18NServiceCollection services)
        {
            if (services is null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (services is AutofacServiceCollection serviceImpl)
            {
                var builder = serviceImpl.OriginalServices;

                if (!StaticFlag.HasInit)
                {
                    using (serviceImpl) {
                        var options = serviceImpl.ExposeOptions;

                        serviceImpl.RegisterAllPackages(options);

                        serviceImpl.RegisterTranslationProcessor();

                        serviceImpl.RegisterTranslationProviders();

                        serviceImpl.RegisterTranslationAccessor();

                        serviceImpl.RegisterPostBuiltAction();
                    }
                }

                return(builder);
            }

            throw new ArgumentException("Unknown type of II18NServiceCollection");
        }
Beispiel #11
0
        /// <summary>
        /// Add historical country support
        /// </summary>
        /// <param name="services"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public static II18NServiceCollection AddHistoricalSupport(this II18NServiceCollection services, IConfigurationSection config)
        {
            var models = config.GetValue <IEnumerable <HistoricalCountryModel> >("Historical");

            HistoricalCountryStarter.AppendConfiguredCountries(models);

            return(services);
        }
 public static void UpdateState(this II18NServiceCollection services)
 {
     if (services is DefaultI18NServiceCollection <MicrosoftProxyRegister, IServiceCollection> serviceImpl)
     {
         serviceImpl.AddPostRegisterAction("FlagState", s =>
         {
             StaticFlag.HasInit             = true;
             StaticFlag.ExpectedServiceName = "HostImpl";
         });
     }
 }
Beispiel #13
0
        /// <summary>
        /// Options to global
        /// </summary>
        /// <param name="services"></param>
        /// <param name="optionsAct"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static II18NServiceCollection ToGlobal(this II18NServiceCollection services, Action <I18NOptions> optionsAct)
        {
            if (services is null)
            {
                throw new ArgumentNullException(nameof(services));
            }
            if (optionsAct is null)
            {
                throw new ArgumentNullException(nameof(optionsAct));
            }

            services.AppendOptionsAction(optionsAct);

            return(services);
        }
Beispiel #14
0
        private static void RegisterAllPackages(this II18NServiceCollection services, I18NOptions options)
        {
            var translationManager = new TranslationManager();
            var translationSetter  = (ITranslationManSetter)translationManager;

            foreach (var package in options.TranslationPackages)
            {
                var translationPackage = package.Value;
                translationSetter.RegisterPackage(translationPackage);
                services.AddDependency(register => register.AddSingleton(translationPackage));
            }


            services.AddDependency(register => register.AddSingleton(translationManager));
            services.AddDependency(register => register.AddSingleton <ITranslationManager>(translationManager));
        }
Beispiel #15
0
        private static void RegisterAllPackages(this II18NServiceCollection services)
        {
            var translationManager = services.ExposeTranslationManager;
            var translationSetter  = (ITranslationManSetter)translationManager;

            foreach (var package in services.ExposeOptions.TranslationPackages)
            {
                var translationPackage = package.Value;
                translationSetter.RegisterPackage(translationPackage);
                services.AddDependency(s => s.AddSingleton(translationPackage));
            }

            services.AddDependency(s => {
                s.AddSingleton(translationManager);
                s.AddSingleton <ITranslationManager>(translationManager);
            });
        }
Beispiel #16
0
        private static II18NServiceCollection AddXmlAnonymousResourceFromOnce(II18NServiceCollection services, string path, bool referenceToBasePath)
        {
            try {
                using (var adapter = new AnonymousXmlFileAdapter(PathHelper.Combine(services.ExposeOptions, path, referenceToBasePath))) {
                    if (adapter.Process())
                    {
                        var speaker = adapter.Speak();
                        services.ExposeOptions.AddAnonymousResource(TranslateResourceFactory.Create(speaker));
                    }
                }
            }
            catch (Exception exception) {
                InternalLogger.WriteLine($"Thrown exception when add json resource from {path}, message: {0}", exception.Message);
            }

            return(services);
        }
Beispiel #17
0
        internal static void AllDone(II18NServiceCollection services)
        {
            if (!StaticFlag.HasInit && services is I18NServiceCollection serviceImpl)
            {
                using (serviceImpl) {
                    serviceImpl.RegisterAllPackages();

                    serviceImpl.RegisterTranslationProcessor();

                    serviceImpl.RegisterTranslationProviders();

                    serviceImpl.RegisterTranslationAccessor();
                }

                SetResolver(serviceImpl.Build());

                StaticFlag.HasInit             = true;
                StaticFlag.ExpectedServiceName = "ConsoleImpl";
            }
        }
        /// <summary>
        /// Add xml format resource
        /// </summary>
        /// <param name="services"></param>
        /// <param name="originContext"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static II18NServiceCollection AddXmlResource(this II18NServiceCollection services, string originContext)
        {
            if (services is null)
            {
                throw new ArgumentNullException(nameof(services));
            }
            if (string.IsNullOrWhiteSpace(originContext))
            {
                throw new ArgumentNullException(nameof(originContext));
            }
            using (var adapter = new XmlContentAdapter(originContext)) {
                if (adapter.Process())
                {
                    var speaker = adapter.Speak();
                    services.ExposeOptions.AddResource(speaker.PackageKey, TranslateResourceFactory.Create(speaker));
                }
            }

            return(services);
        }
Beispiel #19
0
        public static II18NServiceCollection AddJsonResource(this II18NServiceCollection services, string originContext)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }
            if (string.IsNullOrWhiteSpace(originContext))
            {
                throw new ArgumentNullException(nameof(originContext));
            }

            using (var adapter = new JsonContentAdapter(originContext)) {
                if (adapter.Process())
                {
                    var speaker  = adapter.Speak();
                    var language = speaker.Language;
                    services.ExposeOptions.AddResource(language, LanguageResourceFactory.Create(speaker));
                }
            }

            return(services);
        }
Beispiel #20
0
        internal static void AllDone(II18NServiceCollection services)
        {
            if (services is I18NServiceCollection serviceImpl)
            {
                var languageManager = serviceImpl.ExposeLanguageManager;
                foreach (var lang in serviceImpl.ExposeOptions.RegisteredLanguages)
                {
                    languageManager.RegisterUsedLangage(lang);
                }
                foreach (var package in serviceImpl.ExposeOptions.LanguagePackages)
                {
                    serviceImpl.AddDependency(s => s.AddSingleton(package.Value));
                }

                serviceImpl.AddDependency(s => {
                    s.AddSingleton(languageManager);
                    s.AddSingleton <ILanguageServiceProvider, ConsoleLanguageServiceProvider>();
                    s.AddSingleton(provider => new TranslationProcessor(provider.GetServices <ILanguagePackage>().ToDictionary(package => package.Language)));
                });
            }

            SetResolver(services.Build());
        }
Beispiel #21
0
        public static II18NServiceCollection AddJsonResourceFrom(this II18NServiceCollection services, string path, bool referenceToBasePath = true)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }
            if (string.IsNullOrWhiteSpace(path))
            {
                throw new ArgumentNullException(nameof(path));
            }

            if (PathHelper.IsSeveralPath(path))
            {
                foreach (var file in PathHelper.GetSeveralPathList(services.ExposeOptions, path))
                {
                    AddJsonResourceFromOnce(services, file, false);
                }

                return(services);
            }

            return(AddJsonResourceFromOnce(services, path, referenceToBasePath));
        }
Beispiel #22
0
        /// <summary>
        /// Done
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static IServiceCollection Done(this II18NServiceCollection services)
        {
            using var register = services.Done <MicrosoftProxyRegister, IServiceCollection>();

            return(register.RawServices);
        }
        /// <summary>
        /// Done
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static IServiceContext Done(this II18NServiceCollection services)
        {
            using var register = services.Done <AspectCoreProxyRegister, IServiceContext>();

            return(register.RawServices);
        }
        /// <summary>
        /// Done
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static ContainerBuilder Done(this II18NServiceCollection services)
        {
            using var register = services.Done <AutofacProxyRegister, ContainerBuilder>();

            return(register.RawServices);
        }
Beispiel #25
0
 private static void RegisterTranslationProviders(this II18NServiceCollection services)
 {
     services.AddDependency(register => register.AddSingleton <ITextProvider, TextProvider>());
     services.AddDependency(register => register.AddSingleton <ILanguageServiceProvider, AspectCoreLanguageServiceProvider>());
 }
Beispiel #26
0
 private static void RegisterTranslationProcessor(this II18NServiceCollection services)
 {
     services.AddDependency(s => s.AddSingleton <TranslationProcessor>());
 }
 /// <summary>
 /// ALl done
 /// </summary>
 /// <param name="services"></param>
 public static void AllDone(this II18NServiceCollection services)
 {
     SoloDependencyContainer.AllDone(services);
 }