public static AppLanguage Load(string resourceKey, Stream stream) { stream.Seek(0, SeekOrigin.Begin); var languageObject = App.Serializer.Deserialize <JObject>(stream); if (languageObject == null) { throw new InvalidDataException("Null language object."); } JToken?entries = languageObject[nameof(entries)]; if (entries == null) { throw new InvalidDataException("Missing entries."); } var entryList = new EntryList(nameof(entries)); var language = new AppLanguage( languageObject["englishName"]?.ToObject <string>() ?? "", languageObject["localName"]?.ToObject <string>() ?? "", entryList); PopulateEntryList(entries, entryList); language.SetKeys(resourceKey); return(language); }
public AppLanguage GetLanguage() { if (_languageRef.TryGetTarget(out var language)) { return(language); } language = AppLanguage.Load(Key, Stream); _languageRef.SetTarget(language); return(language); }
public Task RefreshLanguages() { return(Task.Run(() => { var languages = AppLanguage.GetEmbeddedLanguages(Application.ResourceAssembly); var languageList = languages.ToList(); //int index = 0; //Color itemColor = index++ % 2 == 0 // ? Colors.Transparent // : Color.FromArgb(25, 127, 127, 127); foreach (var pair in languageList) { var entry = new AppLanguageEntry(pair.Key, pair.Value); entry.GetLanguage(); // preload here in task _languageEntryList.Add(entry); } _languageEntryList.Sort((x, y) => x.Key.CompareTo(y.Key)); Dispatcher.Invoke(_languageEntryViewList.ResetBindings); })); }