private async Task <object> RetrieveTranslation(IProgress <string> progress, CancellationToken cancelToken) { LocalizationAppDomain appDomain = await StringsRetriever.CreateAppDomain(App.MainWindow.Document.PathToBinaries); var document = App.MainWindow.Document; foreach (var culture in __TranslationCultures) { if (!culture.IsSelected) { continue; } document.AddLanguage(culture.Culture); StringsRetriever retriever = new StringsRetriever(App.MainWindow.Document); foreach (var assembly in document.Assemblies) { string resourceFile = System.IO.Path.Combine( culture.Culture.CultureCode, System.IO.Path.GetFileNameWithoutExtension(assembly.Assembly.AssemblyFile) + ".resources.dll" ); string resourceFileFullPath = System.IO.Path.Combine(document.PathToBinaries, resourceFile); if (!System.IO.File.Exists(resourceFileFullPath)) { continue; } string progressString = StringUtils.String("Progress_RetrievingAssemblyTranslation", resourceFile); progress.Report(progressString); LoadedAssembly loadedAssembly = await Task.Run <LoadedAssembly>(() => { return(appDomain.LoadAssembly( resourceFileFullPath)); }); var progressReporter = new ProgressPercentageReporter(progress, progressString); var lines = await retriever.ExtractTranslationLines(loadedAssembly); lines = lines.Where(retriever.LinesFilter).ToList(); await document.ImportApi.ImportTranslationStrings( progressReporter, cancelToken, assembly.Assembly.AssemblyFile, document.AssembliesLanguage.CultureCode, culture.Culture.CultureCode, lines); } } await StringsRetriever.DisposeAppDomain(appDomain); return(null); }
private async void NextButton_Click(object sender, RoutedEventArgs e) { var document = App.MainWindow.Document; document.UpdateAsseblies(AvailableAssemblies); if (AddRemoveAssembliesOnly) { pp_Settings settings = new pp_Settings(); p_DocumentMenu documentPage = new p_DocumentMenu(); documentPage.DocumentPageFrame.Content = settings; App.MainWindow.AnimatedNavigate(App.MainWindow.MiddleLayerFrame, documentPage, NavigationAnimation.FadeToRight, false); } else { // Retrieve strings StringsRetriever retriever = new StringsRetriever(document); var importResultList = (List <ImportResult>) await App.MainWindow.ExecuteLongTask(retriever.RetrieveAllAssemblies); bool hasStrings = false; foreach (var result in importResultList) { if (result.New > 0) { hasStrings = true; break; } } if (hasStrings) { await App.MainWindow.ExecuteLongTask(RetrieveTranslation); document.UpdateTranslatedCultures(); } pp_ImportResult resultPage = new pp_ImportResult(); resultPage.ImportResults = importResultList; p_DocumentMenu documentPage = new p_DocumentMenu(); documentPage.DocumentPageFrame.Navigate(resultPage); App.MainWindow.AnimatedNavigate(App.MainWindow.MiddleLayerFrame, documentPage, NavigationAnimation.FadeToRight, false); App.MainWindow.LoadDocumentPage(); } }
private async void Retrieve_Cmd(object sender, ExecutedRoutedEventArgs e) { StringsRetriever retriever = new StringsRetriever(__Document); var currentFrame = App.MainWindow.MainFrame.Content; var importResultList = (List <ImportResult>) await App.MainWindow.ExecuteLongTask(retriever.RetrieveAllAssemblies); pp_ImportResult resultPage = new pp_ImportResult(); resultPage.ImportResults = importResultList; p_DocumentMenu documentPage = new p_DocumentMenu(); documentPage.DocumentPageFrame.Navigate(resultPage); App.MainWindow.AnimatedNavigate(App.MainWindow.MiddleLayerFrame, documentPage, NavigationAnimation.FadeToRight, false); }
private async Task <object> GenerateAllAssemblies(IProgress <string> progress, CancellationToken cancelToken) { var document = App.MainWindow.Document; LocalizationAppDomain appDomain = await StringsRetriever.CreateAppDomain(document.PathToBinaries); List <AssemblyGenerationResult> resultsList = new List <AssemblyGenerationResult>(); Dictionary <string, LoadedAssembly> loadedAssemblies = new Dictionary <string, LoadedAssembly>(); foreach (var cultureItem in Cultures) { if (!cultureItem.IsSelected) { continue; } foreach (var assemblyItem in Assemblies) { if (!assemblyItem.IsSelected) { continue; } string satteliteTargetFileName = System.IO.Path.GetFileName(assemblyItem.Assembly.Assembly.DefaultResourceFile); AssemblyGenerationResult result = new AssemblyGenerationResult(satteliteTargetFileName, cultureItem.Culture.CultureCode); if (cancelToken.IsCancellationRequested) { result.IsError = true; result.Log.LogLine(StringUtils.String("AssemblyResult_Cancelled"), LogSeverity.Info); result.ResultMessage = StringUtils.String("AssemblyResult_Cancelled"); continue; } try { string assemblyToLoad = System.IO.Path.Combine(document.PathToBinaries, assemblyItem.Assembly.Assembly.DefaultResourceFile); LoadedAssembly loadedAssembly; if (loadedAssemblies.ContainsKey(assemblyToLoad)) { loadedAssembly = loadedAssemblies[assemblyToLoad]; } else { loadedAssembly = await Task.Run <LoadedAssembly>(() => { return(appDomain.LoadAssembly(assemblyToLoad)); }); loadedAssemblies.Add(assemblyToLoad, loadedAssembly); } string outputDirectory = System.IO.Path.Combine(document.PathToBinaries, cultureItem.Culture.CultureCode); if (!Directory.Exists(outputDirectory)) { Directory.CreateDirectory(outputDirectory); } string satteliteTargetFullPath = System.IO.Path.Combine(outputDirectory, satteliteTargetFileName); progress.Report(StringUtils.String("GenerationAssemblyForCulture", satteliteTargetFileName, cultureItem.Culture.CultureCode)); await Task.Run(() => { List <BamlString> translatedStrings = document.ExportApi.GetTranslatedStrings( assemblyItem.Assembly.Assembly.AssemblyFile, cultureItem.Culture.CultureCode); loadedAssembly.GenerateSatteliteAssembly(cultureItem.Culture.CultureCode, translatedStrings, satteliteTargetFullPath); }); result.ResultMessage = StringUtils.String("AssemblyResult_Created"); resultsList.Add(result); } catch (Exception e) { result.IsError = true; result.Log.LogLine(e.Message, LogSeverity.Error); result.ResultMessage = StringUtils.String("AssemblyResult_Exception"); resultsList.Add(result); continue; } } } return(resultsList); }