|
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.
|