public static String GetTranslatedString(this LanguageDictionary languageDictionary, String sectionName, String keyName, String fallbackText) { return((languageDictionary != null && languageDictionary.ContainsSection(sectionName) && languageDictionary[sectionName].ContainsKey(keyName)) ? languageDictionary[sectionName][keyName] : fallbackText); }
public LanguageDictionary LoadLanguagePack(String path) { LanguageDictionary languageDictionary = null; using (StreamReader reader = new StreamReader(path, Encoding.UTF8)) { String line = String.Empty; String currentSectionName = String.Empty; while (!reader.EndOfStream) { line = reader.ReadLine(); try { if (line.StartsWith("Language")) { languageDictionary = new LanguageDictionary(line.Substring(line.IndexOf('=') + 1).Trim()); } else if (line.StartsWith("[") && !line.Equals("[Metadata]")) { currentSectionName = line.Substring(line.IndexOf('[') + 1, line.IndexOf(']') - line.IndexOf('[') - 1); languageDictionary.AddSection(currentSectionName); } else if (line.StartsWith("$")) { languageDictionary[currentSectionName].Add(line.Substring(line.IndexOf('$') + 1, line.IndexOf('=') - line.IndexOf('$') - 1).Trim(), line.Substring(line.IndexOf('=') + 1).Trim()); } } catch (Exception ex) { throw new InvalidDataException("Invalid format on line: " + line, ex); } } } return(languageDictionary); }
public static String GetTranslatedString(this LanguageDictionary languageDictionary, String path, String fallbackText) { String[] segments = path.Trim().Split('.'); return(languageDictionary.GetTranslatedString(segments[0], segments[1], fallbackText)); }