public async Task <string?> GetTranslationAsync(LanguageCodes languageCode, TelegramTranslationKeys telegramTranslationKey, bool omitCache = false, CancellationToken token = default) { const double timeoutDays = 1; var key = string.Format(TranslationCacheKeyFormat, languageCode, telegramTranslationKey); if (memoryCache.TryGetValue <string>(key, out var result)) { return(result); } var translation = await PolicySet.ReadPolicy .ExecuteAsync(() => Context.TelegramTranslations .FirstOrDefaultAsync(x => x.Language == languageCode && x.Key == telegramTranslationKey, token)); var value = translation?.Value; if (!string.IsNullOrEmpty(value)) { memoryCache.Set(key, value, new MemoryCacheEntryOptions { SlidingExpiration = TimeSpan.FromDays(timeoutDays) }); } return(value); }
public async Task <string> ResolveAsync(TelegramTranslationKeys telegramTranslationKey, params object[] args) { var update = userContextProvider.Update; var languageCode = ResolveLanguage(update); var result = await hookrRepository.GetTranslationAsync(languageCode, telegramTranslationKey); return(FormatResult(result, telegramTranslationKey, args)); }