|
|
|
@ -21,23 +21,33 @@ namespace StringResourceTool
@@ -21,23 +21,33 @@ namespace StringResourceTool
|
|
|
|
|
{ |
|
|
|
|
// map of languages with different name in the database
|
|
|
|
|
static readonly Dictionary<string, string> codeMap = new Dictionary<string, string> { |
|
|
|
|
{ "pt-br", "br" } |
|
|
|
|
{ "br", "pt-br" } |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
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 (string code in languageCodes) { |
|
|
|
|
string databaseCode = codeMap.ContainsKey(code) ? codeMap[code] : code; |
|
|
|
|
LanguageTable language = db.Languages.Find(t => t.LanguageName == databaseCode); |
|
|
|
|
if (language == null) { |
|
|
|
|
debugOutput("Could not find language " + code); |
|
|
|
|
} else { |
|
|
|
|
if (code == "en") |
|
|
|
|
language.SaveAsResx(Path.Combine(resourceDir, "StringResources.resx")); |
|
|
|
|
else |
|
|
|
|
language.SaveAsResx(Path.Combine(resourceDir, "StringResources." + code + ".resx")); |
|
|
|
|
|
|
|
|
|
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"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|