Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        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);
        }