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); }
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); }
/// <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); }