From 8ee56d24c273700b9889c16b4c0da3269b673fbb Mon Sep 17 00:00:00 2001 From: JKlingen Date: Tue, 2 Oct 2012 20:29:32 +0000 Subject: [PATCH] language editor is able to export installer translation part now git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@2113 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4 --- .../EntriesEditorWindow.xaml.cs | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/GreenshotLanguageEditor/EntriesEditorWindow.xaml.cs b/GreenshotLanguageEditor/EntriesEditorWindow.xaml.cs index 1a4daa67a..2ec66027e 100644 --- a/GreenshotLanguageEditor/EntriesEditorWindow.xaml.cs +++ b/GreenshotLanguageEditor/EntriesEditorWindow.xaml.cs @@ -93,7 +93,6 @@ namespace GreenshotLanguageEditor { return; } - InitializeComponent(); DataContext = this; this.Activate(); @@ -174,7 +173,9 @@ namespace GreenshotLanguageEditor { CreateXML(editedFile.FilePath, targetColumn); if(editedFile.FileName.Contains("website")) { - CreateHTML(editedFile.FilePath, targetColumn); + CreateWebsitePart(editedFile.FilePath, targetColumn); + } else if(editedFile.FileName.Contains("installer")) { + CreateInstallerPart(editedFile.FilePath, targetColumn); } if(targetColumn == 1) unsavedChangesInLanguage1 = false; @@ -294,31 +295,47 @@ namespace GreenshotLanguageEditor { } } - public void CreateHTML(string savePath, int targetColumn) { + public void CreateWebsitePart(string savePath, int targetColumn) { + PopulateTemplate("template-homepage.html.part", savePath, targetColumn); + } + + public void CreateInstallerPart(string savePath, int targetColumn) { + PopulateTemplate("template-installer.iss.part", savePath, targetColumn); + } + + + void PopulateTemplate(string fileName, string savePath, int targetColumn) { LanguageFile langfile = targetColumn == 1 ? LanguageFile1 : LanguageFile2; ICollectionView view = (ICollectionView)LanguageGrid.ItemsSource; IList entries = (IList)view.SourceCollection; - string tmp; - using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("GreenshotLanguageEditor.template-homepage.html.part")) { + using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("GreenshotLanguageEditor."+fileName)) { using (StreamReader reader = new StreamReader(stream)) { tmp = reader.ReadToEnd(); - foreach(LanguageEntry e in entries) { + foreach (LanguageEntry e in entries) { string entryString = targetColumn == 1 ? e.Entry1 : e.Entry2; - tmp = tmp.Replace("${"+e.Key+"}", entryString); + tmp = tmp.Replace("${" + e.Key + "}", entryString); } + tmp = tmp.Replace("${lang}",extractIetfLanguageCode(savePath)); } } - FileInfo fi = new FileInfo(savePath.Replace("xml","html.part")); + FileInfo fi = new FileInfo(savePath.Replace(".xml", fileName.Substring(fileName.IndexOf(".")))); FileStream fs = fi.Open(FileMode.OpenOrCreate); byte[] barr = Encoding.GetEncoding("UTF-8").GetBytes(tmp); - fs.Write(barr,0, barr.Length); + fs.Write(barr, 0, barr.Length); fs.Close(); } private int compareEntryKeys(LanguageEntry a, LanguageEntry b) { return a.Key.CompareTo(b.Key); } + + // assuming that filename always ends with -LANG-REGION.EXT, extracting LANG + private string extractIetfLanguageCode(string filename) { + string[] s = filename.Split('-'); + if(s.Length > 2) return s[s.Length - 2]; + else throw new ArgumentException("Filename does not match expected pattern: "+filename); + } } public class LanguageEntry : IEditableObject, INotifyPropertyChanged {