public static void Build(ResourceDatabase db, string resourceDir, Action<string> debugOutput) { XDocument languageDefinition = XDocument.Load(Path.Combine(resourceDir, "languages/LanguageDefinition.xml")); var languageCodes = languageDefinition.Root.Elements().Select(e => e.Attribute("code").Value); foreach (LanguageTable language in db.Languages) { string databaseCode = language.LanguageName; string code = codeMap.ContainsKey(databaseCode) ? codeMap[databaseCode] : databaseCode; string filename; if (code == "en") filename = Path.Combine(resourceDir, "StringResources.resx"); else filename = Path.Combine(resourceDir, "StringResources." + code + ".resx"); if (File.Exists(filename)) { language.SaveAsResx(filename, code == "en"); } else if (language.Entries.Count > 0.5 * db.Languages[0].Entries.Count) { debugOutput("Language " + code + " is more than 50% complete but not present in resourceDir"); } if (language.Entries.Count > 0.75 * db.Languages[0].Entries.Count && !languageCodes.Contains(code)) { debugOutput("Language " + code + " is more than 75% complete but not defined in LanguageDefinition.xml"); } else if (language.Entries.Count < 0.75 * db.Languages[0].Entries.Count && languageCodes.Contains(code)) { debugOutput("Language " + code + " is less than 75% complete but defined in LanguageDefinition.xml"); } } }
public static ResourceDatabase Load(string databaseFile) { string connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databaseFile + ";"; using (var myConnection = new OleDbConnection(connection)) { myConnection.Open(); ResourceDatabase db = new ResourceDatabase(); using (OleDbCommand myOleDbCommand = new OleDbCommand("SELECT * FROM Localization", myConnection)) { using (OleDbDataReader reader = myOleDbCommand.ExecuteReader()) { string[] fieldNames = Enumerable.Range(0, reader.FieldCount).Select(i => reader.GetName(i)).ToArray(); db.Languages.Add(new LanguageTable("en")); foreach (string fieldName in fieldNames) { if (fieldName.StartsWith("lang-")) { db.Languages.Add(new LanguageTable(fieldName.Substring(5))); } } while (reader.Read()) { ResourceEntry primaryEntry = new ResourceEntry { Key = reader["ResourceName"].ToString(), Description = reader["PrimaryPurpose"].ToString(), Value = reader["PrimaryResLangValue"].ToString() }; db.Languages[0].Entries.Add(primaryEntry.Key, primaryEntry); for (int i = 1; i < db.Languages.Count; i++) { string val = reader["lang-" + db.Languages[i].LanguageName].ToString(); if (!string.IsNullOrEmpty(val)) { ResourceEntry entry = new ResourceEntry { Key = primaryEntry.Key, Description = primaryEntry.Description, Value = val }; db.Languages[i].Entries.Add(entry.Key, entry); } } } } } return(db); } }
void DownloadButtonClick(object sender, EventArgs e) { EventHandler onDownloadFinished = delegate { outputTextBox.Text += "\r\nLoading database..."; Application.DoEvents(); ResourceDatabase db = ResourceDatabase.Load("LocalizeDb_DL_Corsavy.mdb"); outputTextBox.Text += "\r\nCreating resource files..."; Application.DoEvents(); BuildResourceFiles.Build(db, Path.Combine(srcDir, "../data/resources"), text => { outputTextBox.Text += "\r\n" + text; Application.DoEvents(); }); outputTextBox.Text += "\r\nBuilding SharpDevelop..."; RunBatch(Path.Combine(srcDir, ".."), "debugbuild.bat", null); }; server.DownloadDatabase("LocalizeDb_DL_Corsavy.mdb", onDownloadFinished); //onDownloadFinished(null, null); }
public static ResourceDatabase Load(string databaseFile) { string connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databaseFile + ";"; using (var myConnection = new OleDbConnection(connection)) { myConnection.Open(); ResourceDatabase db = new ResourceDatabase(); using (OleDbCommand myOleDbCommand = new OleDbCommand("SELECT * FROM Localization", myConnection)) { using (OleDbDataReader reader = myOleDbCommand.ExecuteReader()) { string[] fieldNames = Enumerable.Range(0, reader.FieldCount).Select(i => reader.GetName(i)).ToArray(); db.Languages.Add(new LanguageTable("en")); foreach (string fieldName in fieldNames) { if (fieldName.StartsWith("lang-")) db.Languages.Add(new LanguageTable(fieldName.Substring(5))); } while (reader.Read()) { ResourceEntry primaryEntry = new ResourceEntry { Key = reader["ResourceName"].ToString(), Description = reader["PrimaryPurpose"].ToString(), Value = reader["PrimaryResLangValue"].ToString() }; db.Languages[0].Entries.Add(primaryEntry.Key, primaryEntry); for (int i = 1; i < db.Languages.Count; i++) { string val = reader["lang-" + db.Languages[i].LanguageName].ToString(); if (!string.IsNullOrEmpty(val)) { ResourceEntry entry = new ResourceEntry { Key = primaryEntry.Key, Description = primaryEntry.Description, Value = val }; db.Languages[i].Entries.Add(entry.Key, entry); } } } } } return db; } }
public static void Build(ResourceDatabase db, string resourceDir, Action <string> debugOutput) { XDocument languageDefinition = XDocument.Load(Path.Combine(resourceDir, "languages/LanguageDefinition.xml")); var languageCodes = languageDefinition.Root.Elements().Select(e => e.Attribute("code").Value); foreach (LanguageTable language in db.Languages) { string databaseCode = language.LanguageName; string code = codeMap.ContainsKey(databaseCode) ? codeMap[databaseCode] : databaseCode; string filename; if (code == "en") { filename = Path.Combine(resourceDir, "StringResources.resx"); } else { filename = Path.Combine(resourceDir, "StringResources." + code + ".resx"); } if (File.Exists(filename)) { language.SaveAsResx(filename, code == "en"); } else if (language.Entries.Count > 0.5 * db.Languages[0].Entries.Count) { debugOutput("Language " + code + " is more than 50% complete but not present in resourceDir"); } if (language.Entries.Count > 0.75 * db.Languages[0].Entries.Count && !languageCodes.Contains(code)) { debugOutput("Language " + code + " is more than 75% complete but not defined in LanguageDefinition.xml"); } else if (language.Entries.Count < 0.75 * db.Languages[0].Entries.Count && languageCodes.Contains(code)) { debugOutput("Language " + code + " is less than 75% complete but defined in LanguageDefinition.xml"); } } }