Как выдавать данные в зависимости от локали пользователя
У меня в бд хранится текст сообщения на двух языках: messageRu и messageKz.Как мне грамотно вытягивать нужную из них в зависимости от выбранного языка пользователя? Я использую IStringLocalizer и вот мой middleWare:
public class CultureProvider : RequestCultureProvider {
public override Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext) {
if (httpContext == null)
throw new ArgumentNullException(nameof(httpContext));
string locale = httpContext.Request.Headers.FirstOrDefault(x => x.Key == "Locale").Value.FirstOrDefault();
if (string.IsNullOrEmpty(locale)) {
return Task.FromResult((ProviderCultureResult)null);
}
var requestCulture = new ProviderCultureResult(locale);
return Task.FromResult(requestCulture);
}
}
в Startap.cs :
var cultureRu = new CultureInfo("ru-RU");
var cultureKz = new CultureInfo("ru-KZ");
var localizationOptions = new RequestLocalizationOptions {
SupportedCultures = new List<CultureInfo> { cultureRu, cultureKz },
SupportedUICultures = new List<CultureInfo> { cultureRu, cultureKz },
DefaultRequestCulture = new RequestCulture(cultureRu.Name)
};
localizationOptions.AddInitialRequestCultureProvider(new CultureProvider());
app.UseRequestLocalization(localizationOptions);
Как тут сделать грамотный запрос, в зависимости от языка?:
var notifications = db.Select(x => new NotificationResponse {
State = x.State,
Message = x.Notification.MessageRu,
Created = x.Notification.Created,
Id = x.Id
}).OrderByDescending(x => x.Created);