2
* Created by SharpDevelop.
7
* To change this template use Tools | Options | Coding | Edit Standard Headers.
10
using System.Collections.Generic;
13
using System.Xml.Linq;
15
namespace StringResourceTool
18
/// Description of BuildResourceFiles.
20
public class BuildResourceFiles
22
// map of languages with different name in the database
23
static readonly Dictionary<string, string> codeMap = new Dictionary<string, string> {
28
public static void Build(ResourceDatabase db, string resourceDir, Action<string> debugOutput)
30
XDocument languageDefinition = XDocument.Load(Path.Combine(resourceDir, "languages/LanguageDefinition.xml"));
31
var languageCodes = languageDefinition.Root.Elements().Select(e => e.Attribute("code").Value);
33
foreach (LanguageTable language in db.Languages) {
34
string databaseCode = language.LanguageName;
35
string code = codeMap.ContainsKey(databaseCode) ? codeMap[databaseCode] : databaseCode;
39
filename = Path.Combine(resourceDir, "StringResources.resx");
41
filename = Path.Combine(resourceDir, "StringResources." + code + ".resx");
42
if (File.Exists(filename)) {
43
language.SaveAsResx(filename, code == "en");
44
} else if (language.Entries.Count > 0.5 * db.Languages[0].Entries.Count) {
45
debugOutput("Language " + code + " is more than 50% complete but not present in resourceDir");
48
if (language.Entries.Count > 0.75 * db.Languages[0].Entries.Count && !languageCodes.Contains(code)) {
49
debugOutput("Language " + code + " is more than 75% complete but not defined in LanguageDefinition.xml");
50
} else if (language.Entries.Count < 0.75 * db.Languages[0].Entries.Count && languageCodes.Contains(code)) {
51
debugOutput("Language " + code + " is less than 75% complete but defined in LanguageDefinition.xml");