From: <du...@us...> - 2007-04-04 13:25:10
|
Revision: 285 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=285&view=rev Author: dukus Date: 2007-04-04 06:25:09 -0700 (Wed, 04 Apr 2007) Log Message: ----------- language helper compatibilities fix for older format Modified Paths: -------------- trunk/plugins/mpinstaler/MPInstaler/Language dialog.cs trunk/plugins/mpinstaler/MPInstaler/MPpackageStruct.cs Modified: trunk/plugins/mpinstaler/MPInstaler/Language dialog.cs =================================================================== --- trunk/plugins/mpinstaler/MPInstaler/Language dialog.cs 2007-04-03 19:29:55 UTC (rev 284) +++ trunk/plugins/mpinstaler/MPInstaler/Language dialog.cs 2007-04-04 13:25:09 UTC (rev 285) @@ -29,25 +29,70 @@ private void LoadLanguages() { + if (File.Exists(LanguageDirectory + @"\strings_en.xml")) + { + //_availableLanguages = new Dictionary<string, CultureInfo>(); - //_availableLanguages = new Dictionary<string, CultureInfo>(); + DirectoryInfo dir = new DirectoryInfo(LanguageDirectory); + foreach (FileInfo file in dir.GetFiles("strings_*.xml")) + { + int pos = file.Name.IndexOf('_') + 1; + string cultName = file.Name.Substring(pos, file.Name.Length - file.Extension.Length - pos); - DirectoryInfo dir = new DirectoryInfo(LanguageDirectory); - foreach (FileInfo file in dir.GetFiles("strings_*.xml")) + try + { + CultureInfo cultInfo = new CultureInfo(cultName); + languageComboBox.Items.Add(cultInfo.EnglishName); + languageComboBox2.Items.Add(cultInfo.EnglishName); + } + catch (ArgumentException) + { + } + + } + } + else { - int pos = file.Name.IndexOf('_') + 1; - string cultName = file.Name.Substring(pos, file.Name.Length - file.Extension.Length - pos); + // Get system language + string strLongLanguage = CultureInfo.CurrentCulture.EnglishName; + int iTrimIndex = strLongLanguage.IndexOf(" ", 0, strLongLanguage.Length); + string strShortLanguage = strLongLanguage.Substring(0, iTrimIndex); - try + bool bExactLanguageFound = false; + if (Directory.Exists(LanguageDirectory)) { - CultureInfo cultInfo = new CultureInfo(cultName); - languageComboBox.Items.Add(cultInfo.EnglishName); - languageComboBox2.Items.Add(cultInfo.EnglishName); + string[] folders = Directory.GetDirectories(LanguageDirectory, "*.*"); + + + foreach (string folder in folders) + { + string fileName = folder.Substring(folder.LastIndexOf(@"\") + 1); + + // + // Exclude cvs folder + // + if (fileName.ToLower() != "cvs") + { + if (fileName.Length > 0) + { + fileName = fileName.Substring(0, 1).ToUpper() + fileName.Substring(1); + languageComboBox.Items.Add(fileName); + languageComboBox2.Items.Add(fileName); + + // Check language file to user region language + if (fileName.ToLower() == strLongLanguage.ToLower()) + { + languageComboBox2.Text = fileName; + bExactLanguageFound = true; + } + else if (!bExactLanguageFound && (fileName.ToLower() == strShortLanguage.ToLower())) + { + languageComboBox2.Text = fileName; + } + } + } + } } - catch (ArgumentException) - { - } - } } Modified: trunk/plugins/mpinstaler/MPInstaler/MPpackageStruct.cs =================================================================== --- trunk/plugins/mpinstaler/MPInstaler/MPpackageStruct.cs 2007-04-03 19:29:55 UTC (rev 284) +++ trunk/plugins/mpinstaler/MPInstaler/MPpackageStruct.cs 2007-04-04 13:25:09 UTC (rev 285) @@ -468,12 +468,20 @@ public string iName; public string fileName=string.Empty; public bool isLoaded=false; + public bool oldFormat = false; private Dictionary<String, String> _availableLanguages; Encoding docencoding = null ; public MPLanguageHelper() { Language = new List<LanguageString>(); - Load_Names(); + if (File.Exists(Config.GetFolder(Config.Dir.Language) + @"\strings_en.xml")) + { + Load_Names(); + } + else + { + oldFormat = true; + } } public void Load_Names() @@ -521,18 +529,74 @@ } public void Load(string lg) { - if (_availableLanguages.ContainsKey(lg)) + if (oldFormat) { - isLoaded = LoadMap(Config.GetFile(Config.Dir.Language, "strings_" + _availableLanguages[lg] + ".xml")); - fileName = Config.GetFile(Config.Dir.Language, "strings_" + _availableLanguages[lg] + ".xml"); + isLoaded = LoadMap_old(Config.GetFile(Config.Dir.Language, lg + @"\strings.xml")); + fileName = Config.GetFile(Config.Dir.Language, lg + @"\strings.xml"); } + else + { + if (_availableLanguages.ContainsKey(lg)) + { + isLoaded = LoadMap(Config.GetFile(Config.Dir.Language, "strings_" + _availableLanguages[lg] + ".xml")); + fileName = Config.GetFile(Config.Dir.Language, "strings_" + _availableLanguages[lg] + ".xml"); + } + } } public void Save() { if (isLoaded) - SaveMap(fileName); + if (oldFormat) + SaveMap_old(fileName); + else + SaveMap(fileName); } - + + public bool SaveMap_old(string strFileName) + { + if (strFileName == null) return false; + if (strFileName == String.Empty) return false; + try + { + this.Language.Sort(new LanguageStringComparer()); + XmlTextWriter writer = null; + writer = new XmlTextWriter(strFileName, docencoding); + writer.Formatting = Formatting.Indented; + + writer.WriteStartDocument(); + writer.WriteStartElement("strings"); + + + if (!String.IsNullOrEmpty(this.iChars)) + writer.WriteElementString("characters", this.iChars.Trim()); + + + foreach (LanguageString ls in this.Language) + { + writer.WriteStartElement("string"); + + if (!String.IsNullOrEmpty(ls.prefix)) + writer.WriteAttributeString("Prefix", ls.prefix); + if (!String.IsNullOrEmpty(ls.sufix)) + writer.WriteAttributeString("Suffix", ls.sufix); + writer.WriteElementString("id", ls.dwCode); + writer.WriteElementString("value", ls.mapSting); + writer.WriteEndElement(); + + } + writer.WriteEndElement(); + + writer.WriteEndDocument(); + writer.Close(); + } + catch (Exception ex) + { + MessageBox.Show("Language writer error : " + ex.Message); + return false; + } + return true; + } + public bool SaveMap(string strFileName) { if (strFileName == null) return false; @@ -576,6 +640,62 @@ } return true; } + + public bool LoadMap_old(string strFileName) + { + { + // bool isPrefixEnabled = true; + this.iChars = string.Empty; + this.Language.Clear(); + if (strFileName == null) return false; + if (strFileName == String.Empty) return false; + try + { + XmlDocument doc = new XmlDocument(); + XmlTextReader reader = new XmlTextReader(strFileName); + docencoding = reader.Encoding; + doc.Load(reader); + if (doc.DocumentElement == null) return false; + string strRoot = doc.DocumentElement.Name; + if (strRoot != "strings") return false; + XmlNode nodeChars = doc.DocumentElement.SelectSingleNode("/strings/characters"); + + if (nodeChars != null) + { + iChars = nodeChars.InnerText; + + } + XmlNodeList list = doc.DocumentElement.SelectNodes("/strings/string"); + foreach (XmlNode node in list) + { + //StringBuilder builder = new StringBuilder(); + LanguageString ls = new LanguageString(); + ls.dwCode = node.SelectSingleNode("id").InnerText; + + XmlAttribute prefix = node.Attributes["Prefix"]; + if (prefix != null) + ls.prefix = prefix.Value; + else ls.prefix = String.Empty; + ls.mapSting = node.SelectSingleNode("value").InnerText; + XmlAttribute suffix = node.Attributes["Suffix"]; + if (suffix != null) + ls.sufix = suffix.Value; + else + ls.sufix = String.Empty; + this.Language.Add(ls); + } + reader.Close(); + return true; + } + catch (Exception ex) + { + MessageBox.Show("Language reader error : " + ex.Message); + return false; + } + } + + } + public bool LoadMap(string strFileName) { // bool isPrefixEnabled = true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |