Ejemplo n.º 1
0
		public CatalogEditorView (TranslationProject project, string poFile)
		{
			catalog = new Catalog (project);
			poEditorWidget = new POEditorWidget (project);
			catalog.DirtyChanged += delegate (object sender, EventArgs args) {
				IsDirty = catalog.IsDirty;
			};
		}
Ejemplo n.º 2
0
 void UpdateTranslationsAsync(ProgressMonitor monitor, TranslationProject project)
 {
     try {
         project.UpdateTranslations(monitor, false);
         Gtk.Application.Invoke((o, args) => {
             POEditorWidget.ReloadWidgets();
         });
     } catch (Exception ex) {
         monitor.ReportError(GettextCatalog.GetString("Translation update failed."), ex);
     } finally {
         monitor.Log.WriteLine();
         monitor.Log.WriteLine(GettextCatalog.GetString("---------------------- Done ----------------------"));
         monitor.Dispose();
     }
 }
Ejemplo n.º 3
0
        public static TranslationProject FromMultiSpreadsheet(string masterLanguage, Stream stream)
        {
            var tpc = new TranslationProject();

            using (var package = new OfficeOpenXml.ExcelPackage())
            {
                package.Load(stream);
                foreach (var worksheet in package.Workbook.Worksheets)
                {
                    var project = Export.FromIWorksheet(worksheet.Name, masterLanguage, new XlsXWorksheet(worksheet));
                    tpc.Projects.Add(worksheet.Name, project);
                }
            }

            return(tpc);
        }
Ejemplo n.º 4
0
        public void ToOneXLSX(TranslationProject tpc, string targetDir)
        {
            string fileName = @"\";

            foreach (var kvp in tpc.Projects)
            {
                fileName += "_" + kvp.Key;
            }
            fileName += ".xlsx";

            FileInfo newFile = new FileInfo(targetDir + fileName);

            if (newFile.Exists)
            {
                newFile.Delete();                  // ensures we create a new workbook
                newFile = new FileInfo(targetDir + fileName);
            }

            using (var package = new OfficeOpenXml.ExcelPackage(newFile))
            {
                var worksheet = package.Workbook.Worksheets.Add("Traductions");

                //write header
                int columnCount = 0;
                worksheet.Cells[0, columnCount++].Value = "";
                worksheet.Cells[0, columnCount++].Value = tpc.Projects.First().Value.MasterLanguage;

                foreach (var l in tpc.Projects.First().Value.Languages)
                {
                    worksheet.Cells[0, columnCount++].Value = l;
                }

                int rowCount = 1;
                foreach (var kvp in tpc.Projects)
                {
                    worksheet.Cells[rowCount, 0].Value = "ns:" + kvp.Key;
                    rowCount++;

                    rowCount = IO.Export.ToIWorksheet(kvp.Value, new XlsXWorksheet(worksheet), rowCount);
                }

                package.Save();
            }
        }
            void UpdateTranslationsAsync(object ob)
            {
                object[]           data    = (object[])ob;
                IProgressMonitor   monitor = (IProgressMonitor)data [0];
                TranslationProject project = (TranslationProject)data [1];

                try {
                    project.UpdateTranslations(monitor);
                    Gtk.Application.Invoke(delegate {
                        POEditorWidget.ReloadWidgets();
                    });
                } catch (Exception ex) {
                    monitor.ReportError(GettextCatalog.GetString("Translation update failed."), ex);
                } finally {
                    monitor.Log.WriteLine();
                    monitor.Log.WriteLine(GettextCatalog.GetString("---------------------- Done ----------------------"));
                    monitor.Dispose();
                }
            }
Ejemplo n.º 6
0
        public void ToIWorksheet(TranslationProject tpc, IWorksheet worksheet)
        {
            //write header
            int columnCount = 1;

            worksheet[1, columnCount++] = "";
            worksheet[1, columnCount++] = tpc.Projects.First().Value.MasterLanguage;

            foreach (var l in tpc.Projects.First().Value.Languages)
            {
                worksheet[1, columnCount++] = l;
            }

            int rowCount = 2;

            foreach (var kvp in tpc.Projects)
            {
                worksheet[rowCount, 1] = "ns:" + kvp.Key;
                rowCount++;

                rowCount = IO.Export.ToIWorksheet(kvp.Value, worksheet, rowCount);
            }
        }
			public void OnAddTranslation ()
			{
				TranslationProject project = CurrentNode.DataItem as TranslationProject;
				if (project == null)
					return;
				
				string monitorTitle = GettextCatalog.GetString ("Translator Output");
				Translator.LanguageChooserDialog chooser = new Translator.LanguageChooserDialog ();
				try {
					if (MessageService.RunCustomDialog (chooser) == (int)ResponseType.Ok) {
						string language = chooser.Language + (chooser.HasCountry ? "_" + chooser.Country : "");
					
						using (IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetOutputProgressMonitor (monitorTitle, "md-package", true, true)) {
							project.AddNewTranslation (language, monitor);
							UpdateTranslations (project);
						}
					}
					
				} finally {
					chooser.Destroy ();
					chooser.Dispose ();
				}
			}
        private void CreateNewTranslation()
        {
            var infos      = _pluginManager.GetAllGames();
            var form       = new NewProjectSettings(dockTheme, infos);
            var formResult = form.ShowDialog(this);

            if (formResult == DialogResult.Cancel)
            {
                return;
            }

            if (!CloseAllDocuments())
            {
                return;
            }

            var game       = _pluginManager.GetGame(form.SelectedGame);
            var workFolder = form.WorkFolder;
            var gameFolder = form.GameFolder;

            if (Directory.Exists(workFolder))
            {
                var files       = Directory.GetFiles(workFolder);
                var directories = Directory.GetDirectories(workFolder);

                if (files.Length + directories.Length > 0)
                {
#if DEBUG
                    PathHelper.DeleteDirectory(workFolder);
#else
                    MessageBox.Show($"La carpeta {workFolder} no está vacía. Debes elegir una carpeta vacía.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
#endif
                }
            }
            else
            {
                Directory.CreateDirectory(workFolder);
            }

            var project = new TranslationProject(game, gameFolder, workFolder);

            var workForm = new WorkingForm(dockTheme, "Nueva traducción");

            workForm.DoWork += (sender, args) =>
            {
                var worker = sender as BackgroundWorker;

                try
                {
                    project.ReadTranslationFiles(worker);
                    worker.ReportProgress(-1, "FINALIZADO");
                }
                catch (UserCancelException e)
                {
                    args.Cancel = true;
                    worker.ReportProgress(-1, "Eliminando ficheros...");
                    PathHelper.DeleteDirectory(workFolder);
                    worker.ReportProgress(-1, "Terminado");
                }
#if !DEBUG
                catch (Exception e)
                {
                    worker.ReportProgress(0, $"ERROR: {e.Message}\n{e.StackTrace}");
                }
#endif
            };

            workForm.ShowDialog(this);

            if (workForm.Cancelled)
            {
                return;
            }

            _project = project;

            _explorer.LoadTree(_project.FileContainers);

            _currentFile = null;

            _project.Save();

            Text = $"Translation Framework 2.0 - {_project.Game.Name} - {_project.WorkPath}";
            tsbExportProject.Enabled     = true;
            mniFileExport.Enabled        = true;
            tsbSearchInFiles.Enabled     = true;
            mniEditSearchInFiles.Enabled = true;

            mniBulkTextsExport.Enabled  = true;
            mniBulkTextsImport.Enabled  = true;
            mniBulkImagesExport.Enabled = true;
            mniBulkImagesImport.Enabled = true;
        }
			void UpdateTranslations (TranslationProject project, Translation translation)
			{
				if (currentUpdateTranslationOperation != null && !currentUpdateTranslationOperation.IsCompleted) 
					return;
				ProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBuildProgressMonitor ();
				currentUpdateTranslationOperation = Task.Run (() => UpdateTranslationsAsync (monitor, project, translation));
			}
			void UpdateTranslationsAsync (ProgressMonitor monitor, TranslationProject project, Translation translation)
			{
				try {
					project.UpdateTranslations (monitor, translation);
					Gtk.Application.Invoke (delegate {
						POEditorWidget.ReloadWidgets ();
					});
				} catch (Exception ex) {
					monitor.ReportError (GettextCatalog.GetString ("Translation update failed."), ex);
				} finally {
					monitor.Log.WriteLine ();
					monitor.Log.WriteLine (GettextCatalog.GetString ("---------------------- Done ----------------------"));
					monitor.Dispose ();
				}
			}
			void UpdateTranslations (TranslationProject project, Translation translation)
			{
				if (currentUpdateTranslationOperation != null && !currentUpdateTranslationOperation.IsCompleted) 
					return;
				IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBuildProgressMonitor ();
				currentUpdateTranslationOperation = monitor.AsyncOperation;
				DispatchService.BackgroundDispatch (new StatefulMessageHandler (UpdateTranslationsAsync), new object[] {monitor, project, translation});
			}