public LangCulture GetCulture(string cultureName, string name) { LangCulture culture = _context.LangCultures.FirstOrDefault(c => c.Key == cultureName) ?? _context.LangCultures.Local.FirstOrDefault(c => c.Key == cultureName); if (culture == null) { culture = _context.LangCultures.Create(); culture.Key = cultureName; culture.Language = GetLanguage(name); } return(culture); }
public async Task Execute(string resource, string value) { var strings = resource.Split('|'); var res = strings[0]; var key = strings[1]; var langRes = await _dbContext .Set <LangResourceValue>() .Include(l => l.LangResource) .FirstOrDefaultAsync( c => c.LangResource.Name == res && c.LangResource.Culture.Key == Thread.CurrentThread.CurrentUICulture.IetfLanguageTag && c.Key == key); //?? new LangResourceValue //{ // Key = key, // Value = value, // LangResource = await _dbContext //.Set<LangResource>() //.FirstAsync( // lr => // lr.Culture.Key == Thread.CurrentThread.CurrentUICulture.IetfLanguageTag && // lr.Name == res) //}; if (langRes == null) { var langResource = await _dbContext .Set <LangResource>() .FirstOrDefaultAsync( lr => lr.Culture.Key == Thread.CurrentThread.CurrentUICulture.IetfLanguageTag && lr.Name == res); if (langResource == null) { var langCulture = await _dbContext .Set <LangCulture>() .FirstOrDefaultAsync(c => c.Key == Thread.CurrentThread.CurrentUICulture.IetfLanguageTag); if (langCulture == null) { var langResourceValue = await _langResourceValueQuery.Execute("languages", Thread.CurrentThread.CurrentUICulture.DisplayName.Split(' ')[0]); langCulture = new LangCulture { Key = Thread.CurrentThread.CurrentUICulture.IetfLanguageTag, Language = await _simpleQuery.Execute(new ByNameCondition <Language>(langResourceValue.Value)).FirstOrDefaultAsync() }; } langResource = new LangResource { Culture = langCulture, Name = res }; } langRes = new LangResourceValue { Key = key, Value = value, LangResource = langResource }; _dbContext.Set <LangResourceValue>().Add(langRes); } langRes.Value = value; await _dbContext .SaveChangesAsync(); }
private async Task LocalizeItem(LangCulture langCulture) { langCulture.Language.Name = await _langResourceSingleQuery.Execute(langCulture.Language.Name, Thread.CurrentThread.CurrentUICulture.IetfLanguageTag); }