public async Task <string> GetTranslated(string sourceString, CultureInfo sourceCultureInfo, CultureInfo translateCultureInfo) { string key = TranslatedRecord.GetKey(sourceString, sourceCultureInfo, translateCultureInfo); _cacheDict.TryGetValue(key, out TranslatedRecord translateRec); return(translateRec.TranslatedString); }
public async Task SaveTranslated(TranslatedRecord translatedRecord) { using (database = new LiteDatabase(path)) { records = database.GetCollection <TranslatedRecord>("translatedRecords"); records.Insert(translatedRecord); } }
public async Task <string> GetTranslated(string sourceString, CultureInfo sourceCultureInfo, CultureInfo translateCultureInfo) { using (database = new LiteDatabase(path)) { records = database.GetCollection <TranslatedRecord>("translatedRecords"); var wantedKey = TranslatedRecord.GetKey(sourceString, sourceCultureInfo, translateCultureInfo); return(records.FindOne(x => x.Key == wantedKey).TranslatedString); } }
public async Task SaveTranslated(TranslatedRecord translatedRecord) { //Delete first element of the queue if we've hit the limit. if (_cacheDict.Count > Limit && _cacheDict.ContainsKey(translatedRecord.Key)) { var toRemove = _cacheQueue.Peek(); _cacheDict.TryRemove(toRemove.Key, out var tr); } _cacheQueue.Enqueue(translatedRecord); _cacheDict.TryAdd(translatedRecord.Key, translatedRecord); }
public async Task <string> GetTranslated(string sourceString, CultureInfo sourceCultureInfo, CultureInfo translateCultureInfo) { if (string.IsNullOrWhiteSpace(sourceString)) { return(sourceString); } if (sourceCultureInfo == translateCultureInfo) { return(sourceString); } sourceString = sourceString.Trim(); foreach (var serv in _localizationServices) { string translatedStr = await serv.TryGetTranslated(sourceString, sourceCultureInfo, translateCultureInfo); if (string.IsNullOrWhiteSpace(translatedStr)) { continue; } if (_cacheLocalizationServices.Count > 0) { //Save to cache TranslatedRecord rec = new TranslatedRecord() { SourceString = sourceString, TranslatedString = translatedStr, SourceCultureInfo = sourceCultureInfo, TranslateCultureInfo = translateCultureInfo }; foreach (var cacheServ in _cacheLocalizationServices) { await cacheServ.SaveTranslated(rec); } } return(translatedStr); } throw new Exception("Can`t find translated string in all services."); }