public Translator() { _categoryDictionary = new SortedDictionary <string, ValueDictionaryHolder>(); _twoLetterIsoLanguageName = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName; var storageDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, StorageDirectory); var languageDirectory = Path.Combine(storageDirectory, _twoLetterIsoLanguageName); if (!Directory.Exists(languageDirectory)) { return; } var files = Directory.GetFiles(languageDirectory, "*.json", SearchOption.TopDirectoryOnly); foreach (var file in files) { var category = Path.GetFileNameWithoutExtension(file); category = category?.ToLower(CultureInfo.InvariantCulture) ?? throw new InvalidOperationException("null == category"); var valueDictionary = ValueDictionaryHolder.LoadFormFile(file); _categoryDictionary.Add(category, valueDictionary); } }
public string Translate(string category, string value) { if (null == category) { return(null); } if (null == value) { return(null); } category = category.ToLower(); string translation; lock (Anchor) { if (!_categoryDictionary.TryGetValue(category, out var valueDictionaryHolder)) { valueDictionaryHolder = new ValueDictionaryHolder(); _categoryDictionary.Add(category, valueDictionaryHolder); } var valueDictionary = valueDictionaryHolder.Dictionary; if (!valueDictionary.ContainsKey(value)) { valueDictionary.Add(value, string.Empty); valueDictionaryHolder.Changed = true; } translation = valueDictionary[value]; } if (string.IsNullOrEmpty(translation)) { return(value); } return(translation); }