private static void Main(string[] args) { SobekCM_LocalizationInfo info = new SobekCM_LocalizationInfo(); info.Write_Localization_XML("test.xml"); StreamReader reader = new StreamReader("SobekCM_Localization.txt"); string line = reader.ReadLine(); line = reader.ReadLine(); Single_Class_Info current_class = null; List <Single_Class_Info> classes_to_add = new List <Single_Class_Info>(); while (line != null) { if (line.Trim().Length > 0) { string[] split = line.Split("\t".ToCharArray()); if (split.Length > 4) { string sobekcm_class = split[0]; string property_name = split[2]; string english_term = split[2]; string remarks = split[4]; if ((current_class == null) || (sobekcm_class != current_class.ClassName)) { current_class = new Single_Class_Info(sobekcm_class); classes_to_add.Add(current_class); } if (property_name.Length > 0) { Property_Info newProperty = new Property_Info(); newProperty.Name = property_name; newProperty.English_Term = english_term; newProperty.Remarks = remarks; current_class.Properties.Add(newProperty); } } } line = reader.ReadLine(); } reader.Close(); StreamWriter overallwriter = new StreamWriter("OUTPUT\\SobekCM_LocalizationInfo.cs"); overallwriter.WriteLine("using System;"); overallwriter.WriteLine("using System.IO;"); overallwriter.WriteLine("using SobekCM.Library.Configuration;"); overallwriter.WriteLine("using SobekCM.Library.Localization.Classes;"); overallwriter.WriteLine(); overallwriter.WriteLine("namespace SobekCM.Library.Localization"); overallwriter.WriteLine("{"); overallwriter.WriteLine(" public class SobekCM_LocalizationInfo"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" /// <summary> Language of this localization information </summary>"); overallwriter.WriteLine(" public Web_Language_Enum Language { get; set; }"); overallwriter.WriteLine(); overallwriter.WriteLine(" #region Private members that contain the localization strings for each class "); overallwriter.WriteLine(); foreach (Single_Class_Info thisObject in classes_to_add) { if (thisObject.ClassName.IndexOf("n/a") < 0) { overallwriter.WriteLine(" /// <summary> Localization string information for the " + thisObject.ClassName + " class </summary>"); overallwriter.WriteLine(" public " + thisObject.ClassName + "_LocalizationInfo " + thisObject.ClassName + " { get ; private set; }"); overallwriter.WriteLine(""); } } overallwriter.WriteLine(); overallwriter.WriteLine(" #endregion"); overallwriter.WriteLine(); overallwriter.WriteLine(" #region Constructor that configures all strings to the default english"); overallwriter.WriteLine(); overallwriter.WriteLine(" /// <summary> Constructor for a new instance of the SobekCM_LocalizationInfo class </summary>"); overallwriter.WriteLine(" /// <remarks> This sets all the terms for localization to the system default, before any resource file is read </remarks>"); overallwriter.WriteLine(" public SobekCM_LocalizationInfo()"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" // Set a hardwired default language for this localization initially"); overallwriter.WriteLine(" // This will be replaced by the actual value"); overallwriter.WriteLine(" Language = Web_Language_Enum.English;"); overallwriter.WriteLine(); overallwriter.WriteLine(" // Initialize all the child localization objects"); foreach (Single_Class_Info thisObject in classes_to_add) { overallwriter.WriteLine(" //Initialize the " + thisObject.ClassName + "_Localization class"); overallwriter.WriteLine(" " + thisObject.ClassName + " = new " + thisObject.ClassName + "_LocalizationInfo();"); foreach (Property_Info thisProperty in thisObject.Properties) { overallwriter.WriteLine(" " + thisObject.ClassName + ".Add_Localization_String( \"" + thisProperty.Name_To_Use_In_XML.Trim() + "\", \"" + thisProperty.English_Term.Replace("\"", "\\\"") + "\");"); } overallwriter.WriteLine(); } overallwriter.WriteLine(" }"); overallwriter.WriteLine(); overallwriter.WriteLine(" #endregion"); overallwriter.WriteLine(); overallwriter.WriteLine(" /// <summary> Write the localization XML source file from the data within this localization object </summary>"); overallwriter.WriteLine(" /// <param name=\"File\"> Filename for the resulting XML file </param>"); overallwriter.WriteLine(" /// <returns> TRUE if successful, otherise FALSE </returns>"); overallwriter.WriteLine(" public bool Write_Localization_XML(string File)"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" try"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" // Open the file and write to it"); overallwriter.WriteLine(" StreamWriter writer = new StreamWriter(File, false);"); overallwriter.WriteLine(" writer.WriteLine(\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\" ?>\");"); overallwriter.WriteLine(" writer.WriteLine(\"<localization lang=\\\"\" + Web_Language_Enum_Converter.Enum_To_Name(Language) + \"\\\">\");"); overallwriter.WriteLine(); overallwriter.WriteLine(" // Add the inforamtion for each localization object"); foreach (Single_Class_Info thisObject in classes_to_add) { overallwriter.WriteLine(" "+ thisObject.ClassName + ".Write_Localization_XML(writer);"); } overallwriter.WriteLine(); overallwriter.WriteLine(" // Close the file"); overallwriter.WriteLine(" writer.WriteLine(\"</localization>\");"); overallwriter.WriteLine(" writer.Flush();"); overallwriter.WriteLine(" writer.Close();"); overallwriter.WriteLine(); overallwriter.WriteLine(" return true;"); overallwriter.WriteLine(" }"); overallwriter.WriteLine(" catch (Exception ee)"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" return false;"); overallwriter.WriteLine(" }"); overallwriter.WriteLine(" }"); overallwriter.WriteLine(" }"); overallwriter.WriteLine("}"); overallwriter.Flush(); overallwriter.Close(); // Now, write each class foreach (Single_Class_Info thisObject in classes_to_add) { if (thisObject.ClassName.IndexOf("n/a") < 0) { StreamWriter classWriter = new StreamWriter("OUTPUT\\Classes\\" + thisObject.ClassName + "_LocalizationInfo.cs"); classWriter.WriteLine("namespace SobekCM.Library.Localization.Classes"); classWriter.WriteLine("{"); classWriter.WriteLine(" /// <summary> Localization class holds all the standard terms utilized by the " + thisObject.ClassName + " class </summary>"); classWriter.WriteLine(" public class " + thisObject.ClassName + "_LocalizationInfo : baseLocalizationInfo"); classWriter.WriteLine(" {"); classWriter.WriteLine(" /// <summary> Constructor for a new instance of the " + thisObject.ClassName + "_Localization class </summary>"); classWriter.WriteLine(" public " + thisObject.ClassName + "_LocalizationInfo()"); classWriter.WriteLine(" {"); classWriter.WriteLine(" // Set the source class name this localization file serves"); classWriter.WriteLine(" ClassName = \"" + thisObject.ClassName + "\";"); classWriter.WriteLine(" }"); classWriter.WriteLine(); classWriter.WriteLine(" /// <summary> Adds a localization string ( with key and value ) to this localization class </summary>"); classWriter.WriteLine(" /// <param name=\"Key\"> Key for the new localization string being saved </param>"); classWriter.WriteLine(" /// <param name=\"Value\"> Value for this localization string </param>"); classWriter.WriteLine(" /// <remarks> This overrides the base class's implementation </remarks>"); classWriter.WriteLine(" public override void Add_Localization_String(string Key, string Value)"); classWriter.WriteLine(" {"); classWriter.WriteLine(" // First, add to the localization string dictionary"); classWriter.WriteLine(" base.Add_Localization_String(Key, Value);"); classWriter.WriteLine(); classWriter.WriteLine(" // Assign to custom properties depending on the key"); classWriter.WriteLine(" switch (Key)"); classWriter.WriteLine(" {"); foreach (Property_Info thisProperty in thisObject.Properties) { classWriter.WriteLine(" case \"" + thisProperty.Name_To_Use_In_XML.Trim() + "\":"); classWriter.WriteLine(" " + thisProperty.Name_To_Use_For_Property + " = Value;"); classWriter.WriteLine(" break;"); classWriter.WriteLine(); } classWriter.WriteLine(" }"); classWriter.WriteLine(" }"); // Now, add each property individually foreach (Property_Info thisProperty in thisObject.Properties) { if (thisProperty.Remarks.Length > 0) { classWriter.WriteLine(" /// <remarks> " + thisProperty.Remarks + " </remarks>"); } else { classWriter.WriteLine(" /// <remarks> '" + thisProperty.English_Term + "' localization string </remarks>"); } classWriter.WriteLine(" public string " + thisProperty.Name_To_Use_For_Property + " { get; private set; }"); classWriter.WriteLine(); } classWriter.WriteLine(" }"); classWriter.WriteLine("}"); classWriter.Flush(); classWriter.Close(); } } Console.WriteLine("COMPLETE"); Console.ReadLine(); }
private static void Main(string[] args) { SobekCM_LocalizationInfo info = new SobekCM_LocalizationInfo(); info.Write_Localization_XML("test.xml"); StreamReader reader = new StreamReader("SobekCM_Localization.txt"); string line = reader.ReadLine(); line = reader.ReadLine(); Single_Class_Info current_class = null; List<Single_Class_Info> classes_to_add = new List<Single_Class_Info>(); while (line != null) { if (line.Trim().Length > 0) { string[] split = line.Split("\t".ToCharArray()); if (split.Length > 4) { string sobekcm_class = split[0]; string property_name = split[2]; string english_term = split[2]; string remarks = split[4]; if ((current_class == null) || (sobekcm_class != current_class.ClassName)) { current_class = new Single_Class_Info(sobekcm_class); classes_to_add.Add(current_class); } if (property_name.Length > 0) { Property_Info newProperty = new Property_Info(); newProperty.Name = property_name; newProperty.English_Term = english_term; newProperty.Remarks = remarks; current_class.Properties.Add(newProperty); } } } line = reader.ReadLine(); } reader.Close(); StreamWriter overallwriter = new StreamWriter("OUTPUT\\SobekCM_LocalizationInfo.cs"); overallwriter.WriteLine("using System;"); overallwriter.WriteLine("using System.IO;"); overallwriter.WriteLine("using SobekCM.Library.Configuration;"); overallwriter.WriteLine("using SobekCM.Library.Localization.Classes;"); overallwriter.WriteLine(); overallwriter.WriteLine("namespace SobekCM.Library.Localization"); overallwriter.WriteLine("{"); overallwriter.WriteLine(" public class SobekCM_LocalizationInfo"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" /// <summary> Language of this localization information </summary>"); overallwriter.WriteLine(" public Web_Language_Enum Language { get; set; }"); overallwriter.WriteLine(); overallwriter.WriteLine(" #region Private members that contain the localization strings for each class "); overallwriter.WriteLine(); foreach (Single_Class_Info thisObject in classes_to_add) { if (thisObject.ClassName.IndexOf("n/a") < 0) { overallwriter.WriteLine(" /// <summary> Localization string information for the " + thisObject.ClassName + " class </summary>"); overallwriter.WriteLine(" public " + thisObject.ClassName + "_LocalizationInfo " + thisObject.ClassName + " { get ; private set; }"); overallwriter.WriteLine(""); } } overallwriter.WriteLine(); overallwriter.WriteLine(" #endregion"); overallwriter.WriteLine(); overallwriter.WriteLine(" #region Constructor that configures all strings to the default english"); overallwriter.WriteLine(); overallwriter.WriteLine(" /// <summary> Constructor for a new instance of the SobekCM_LocalizationInfo class </summary>"); overallwriter.WriteLine(" /// <remarks> This sets all the terms for localization to the system default, before any resource file is read </remarks>"); overallwriter.WriteLine(" public SobekCM_LocalizationInfo()"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" // Set a hardwired default language for this localization initially"); overallwriter.WriteLine(" // This will be replaced by the actual value"); overallwriter.WriteLine(" Language = Web_Language_Enum.English;"); overallwriter.WriteLine(); overallwriter.WriteLine(" // Initialize all the child localization objects"); foreach (Single_Class_Info thisObject in classes_to_add) { overallwriter.WriteLine(" //Initialize the " + thisObject.ClassName + "_Localization class"); overallwriter.WriteLine(" " + thisObject.ClassName + " = new " + thisObject.ClassName + "_LocalizationInfo();"); foreach (Property_Info thisProperty in thisObject.Properties) { overallwriter.WriteLine(" " + thisObject.ClassName + ".Add_Localization_String( \"" + thisProperty.Name_To_Use_In_XML.Trim() + "\", \"" + thisProperty.English_Term.Replace("\"", "\\\"") + "\");"); } overallwriter.WriteLine(); } overallwriter.WriteLine(" }"); overallwriter.WriteLine(); overallwriter.WriteLine(" #endregion"); overallwriter.WriteLine(); overallwriter.WriteLine(" /// <summary> Write the localization XML source file from the data within this localization object </summary>"); overallwriter.WriteLine(" /// <param name=\"File\"> Filename for the resulting XML file </param>"); overallwriter.WriteLine(" /// <returns> TRUE if successful, otherise FALSE </returns>"); overallwriter.WriteLine(" public bool Write_Localization_XML(string File)"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" try"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" // Open the file and write to it"); overallwriter.WriteLine(" StreamWriter writer = new StreamWriter(File, false);"); overallwriter.WriteLine(" writer.WriteLine(\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\" ?>\");"); overallwriter.WriteLine(" writer.WriteLine(\"<localization lang=\\\"\" + Web_Language_Enum_Converter.Enum_To_Name(Language) + \"\\\">\");"); overallwriter.WriteLine(); overallwriter.WriteLine(" // Add the inforamtion for each localization object"); foreach (Single_Class_Info thisObject in classes_to_add) { overallwriter.WriteLine(" " + thisObject.ClassName + ".Write_Localization_XML(writer);"); } overallwriter.WriteLine(); overallwriter.WriteLine(" // Close the file"); overallwriter.WriteLine(" writer.WriteLine(\"</localization>\");"); overallwriter.WriteLine(" writer.Flush();"); overallwriter.WriteLine(" writer.Close();"); overallwriter.WriteLine(); overallwriter.WriteLine(" return true;"); overallwriter.WriteLine(" }"); overallwriter.WriteLine(" catch (Exception ee)"); overallwriter.WriteLine(" {"); overallwriter.WriteLine(" return false;"); overallwriter.WriteLine(" }"); overallwriter.WriteLine(" }"); overallwriter.WriteLine(" }"); overallwriter.WriteLine("}"); overallwriter.Flush(); overallwriter.Close(); // Now, write each class foreach (Single_Class_Info thisObject in classes_to_add) { if (thisObject.ClassName.IndexOf("n/a") < 0) { StreamWriter classWriter = new StreamWriter("OUTPUT\\Classes\\" + thisObject.ClassName + "_LocalizationInfo.cs"); classWriter.WriteLine("namespace SobekCM.Library.Localization.Classes"); classWriter.WriteLine("{"); classWriter.WriteLine(" /// <summary> Localization class holds all the standard terms utilized by the " + thisObject.ClassName + " class </summary>"); classWriter.WriteLine(" public class " + thisObject.ClassName + "_LocalizationInfo : baseLocalizationInfo"); classWriter.WriteLine(" {"); classWriter.WriteLine(" /// <summary> Constructor for a new instance of the " + thisObject.ClassName + "_Localization class </summary>"); classWriter.WriteLine(" public " + thisObject.ClassName + "_LocalizationInfo()"); classWriter.WriteLine(" {"); classWriter.WriteLine(" // Set the source class name this localization file serves"); classWriter.WriteLine(" ClassName = \"" + thisObject.ClassName + "\";"); classWriter.WriteLine(" }"); classWriter.WriteLine(); classWriter.WriteLine(" /// <summary> Adds a localization string ( with key and value ) to this localization class </summary>"); classWriter.WriteLine(" /// <param name=\"Key\"> Key for the new localization string being saved </param>"); classWriter.WriteLine(" /// <param name=\"Value\"> Value for this localization string </param>"); classWriter.WriteLine(" /// <remarks> This overrides the base class's implementation </remarks>"); classWriter.WriteLine(" public override void Add_Localization_String(string Key, string Value)"); classWriter.WriteLine(" {"); classWriter.WriteLine(" // First, add to the localization string dictionary"); classWriter.WriteLine(" base.Add_Localization_String(Key, Value);"); classWriter.WriteLine(); classWriter.WriteLine(" // Assign to custom properties depending on the key"); classWriter.WriteLine(" switch (Key)"); classWriter.WriteLine(" {"); foreach (Property_Info thisProperty in thisObject.Properties) { classWriter.WriteLine(" case \"" + thisProperty.Name_To_Use_In_XML.Trim() + "\":"); classWriter.WriteLine(" " + thisProperty.Name_To_Use_For_Property + " = Value;"); classWriter.WriteLine(" break;"); classWriter.WriteLine(); } classWriter.WriteLine(" }"); classWriter.WriteLine(" }"); // Now, add each property individually foreach (Property_Info thisProperty in thisObject.Properties) { if (thisProperty.Remarks.Length > 0) { classWriter.WriteLine(" /// <remarks> " + thisProperty.Remarks + " </remarks>"); } else { classWriter.WriteLine(" /// <remarks> '" + thisProperty.English_Term + "' localization string </remarks>"); } classWriter.WriteLine(" public string " + thisProperty.Name_To_Use_For_Property + " { get; private set; }"); classWriter.WriteLine(); } classWriter.WriteLine(" }"); classWriter.WriteLine("}"); classWriter.Flush(); classWriter.Close(); } } Console.WriteLine("COMPLETE"); Console.ReadLine(); }