public void Test_Language_Scan()
        {
            var languageConfig = LanguageConfigBuilder.Create()
                                 .WithSpecificDirectories(
                ScanLocations.GenerateScanDirectories(
#if NET471
                    "net471",
#else
                    "netcoreapp3.0",
#endif
                    "Application.Demo",
                    "Application.Demo.Addon",
                    "Application.Demo.MetroAddon",
                    "Application.Demo.OverlayAddon").ToArray()
                )
                                 .BuildLanguageConfig();


            var filePattern = new Regex(languageConfig.FileNamePattern, RegexOptions.Compiled);

            var groupedFiles = FileLocations.Scan(languageConfig.SpecifiedDirectories, filePattern)
                               .GroupBy(x => x.Item2.Groups["IETF"].Value)
                               .ToDictionary(group => group.Key, group => group.Select(x => x.Item1)
                                             .ToList());

            var foundFiles = FileLocations.Scan(languageConfig.SpecifiedDirectories, filePattern).Select(tuple => tuple.Item1).Select(Path.GetFileName).ToList();

            Assert.Contains("language_addon1-de-DE.xml", foundFiles);
            Assert.Contains("language_addon1-en-US.xml", foundFiles);
        }
Beispiel #2
0
        private async Task <LanguageContainer> CreateContainer(ILanguage language)
        {
            var languageConfig = LanguageConfigBuilder.Create()
                                 .WithApplicationName("Dapplo")
                                 .WithSpecificDirectories(@"LanguageTests\LanguageTestFiles")
                                 .BuildLanguageConfig();

            var result = new LanguageContainer(languageConfig, new[] { language });
            await result.ReloadAsync().ConfigureAwait(false);

            result.CorrectMissingTranslations();
            return(result);
        }
        /// <inheritdoc />
        protected override void Load(ContainerBuilder builder)
        {
            // Create a default configuration, if none exists
            builder.Register(context => LanguageConfigBuilder.Create().BuildLanguageConfig())
            .IfNotRegistered(typeof(LanguageConfig))
            .As <LanguageConfig>()
            .SingleInstance();

            builder.RegisterType <LanguageContainer>()
            .AsSelf()
            .SingleInstance();

            builder.RegisterType <LanguageService>()
            .As <IService>()
            .SingleInstance();

            base.Load(builder);
        }
Beispiel #4
0
        /// <inheritdoc />
        protected override void Load(ContainerBuilder builder)
        {
            // Specify the directories for the translations manually
            builder.Register(context => LanguageConfigBuilder.Create()
                             .WithSpecificDirectories(ScanLocations.GenerateScanDirectories(
#if NET471
                                                          "net471",
#else
                                                          "netcoreapp3.1",
#endif
                                                          "Application.Demo.Addon",
                                                          "Application.Demo.MetroAddon",
                                                          "Application.Demo.OverlayAddon").ToArray()
                                                      )
                             .BuildLanguageConfig())
            .As <LanguageConfig>()
            .SingleInstance();

            builder
            .Register(c => Language <ICoreTranslations> .Create())
            .As <ICoreTranslations>()
            .As <IErrorTranslations>()
            .As <ILanguage>()
            .SingleInstance();

            builder
            .Register(c => IniSection <IDemoConfiguration> .Create())
            .As <IDemoConfiguration>()
            .As <IIniSection>()
            .SingleInstance();

            builder
            .Register(c => Language <IDemoConfigTranslations> .Create())
            .As <IDemoConfigTranslations>()
            .As <ILanguage>()
            .SingleInstance();
            builder
            .Register(c => Language <IContextMenuTranslations> .Create())
            .As <IContextMenuTranslations>()
            .As <ILanguage>()
            .SingleInstance();

            builder
            .Register(c => Language <IMenuTranslations> .Create())
            .As <IMenuTranslations>()
            .As <ILanguage>()
            .SingleInstance();

            builder
            .Register(c => Language <IToastTranslations> .Create())
            .As <IToastTranslations>()
            .As <ILanguage>()
            .SingleInstance();

            builder
            .Register(c => Language <IValidationErrors> .Create())
            .As <IValidationErrors>()
            .As <ILanguage>()
            .SingleInstance();

            builder
            .Register(c => Language <IWizardTranslations> .Create())
            .As <IWizardTranslations>()
            .As <ILanguage>()
            .SingleInstance();

            builder.RegisterType <DemoTrayIconViewModel>()
            .As <ITrayIconViewModel>()
            .WithAttributeFiltering()
            .SingleInstance();
            builder.RegisterType <AuthenticationProvider>()
            .As <IAuthenticationProvider>()
            .SingleInstance();
            builder.RegisterType <NotifyOfStartupReady>()
            .As <IService>()
            .SingleInstance();
            builder.RegisterType <SimpleVersionProvider>()
            .As <IVersionProvider>()
            .SingleInstance();

            // All IMenuItem with the context they belong to
            builder.RegisterAssemblyTypes(ThisAssembly)
            .AssignableTo <IMenuItem>()
            .As <IMenuItem>()
            .SingleInstance();

            // All config screens
            builder.RegisterAssemblyTypes(ThisAssembly)
            .AssignableTo <IConfigScreen>()
            .As <IConfigScreen>()
            .AsSelf()
            .SingleInstance();

            // All wizard screens
            builder.RegisterAssemblyTypes(ThisAssembly)
            .AssignableTo <IWizardScreen>()
            .As <IWizardScreen>()
            .SingleInstance();

            builder.RegisterType <ConfigViewModel>()
            .AsSelf()
            .SingleInstance();

            // View models
            builder.RegisterType <WindowWithMenuViewModel>()
            .AsSelf()
            .WithAttributeFiltering()
            .SingleInstance();

            builder.RegisterType <StartupReadyToastViewModel>()
            .AsSelf()
            .SingleInstance();

            builder.RegisterType <WizardExampleViewModel>()
            .AsSelf()
            .SingleInstance();

            // Not a single instance
            builder.RegisterType <ToastExampleViewModel>()
            .AsSelf();

            builder.RegisterType <AllowAllKeyInputEventHandler>()
            .As <IKeyboardEventHandler>()
            .SingleInstance();

            base.Load(builder);
        }