public async Task<PagedResultOutput<LanguageTextListDto>> GetLanguageTexts(GetLanguageTextsInput input) { /* Note: This method is used by SPA without paging, MPA with paging. * So, it can both usable with paging or not */ //Normalize base language name if (input.BaseLanguageName.IsNullOrEmpty()) { var defaultLanguage = await _applicationLanguageManager.GetDefaultLanguageOrNullAsync(AbpSession.TenantId); if (defaultLanguage == null) { defaultLanguage = (await _applicationLanguageManager.GetLanguagesAsync(AbpSession.TenantId)).FirstOrDefault(); if (defaultLanguage == null) { throw new ApplicationException("No language found in the application!"); } } input.BaseLanguageName = defaultLanguage.Name; } var source = LocalizationManager.GetSource(input.SourceName); var baseCulture = CultureInfo.GetCultureInfo(input.BaseLanguageName); var targetCulture = CultureInfo.GetCultureInfo(input.TargetLanguageName); var languageTexts = source .GetAllStrings() .Select(localizedString => new LanguageTextListDto { Key = localizedString.Name, BaseValue = _applicationLanguageTextManager.GetStringOrNull(AbpSession.TenantId, source.Name, baseCulture, localizedString.Name), TargetValue = _applicationLanguageTextManager.GetStringOrNull(AbpSession.TenantId, source.Name, targetCulture, localizedString.Name, false) }) .AsQueryable(); //Filters if (input.TargetValueFilter == "EMPTY") { languageTexts = languageTexts.Where(s => s.TargetValue.IsNullOrEmpty()); } if (!input.FilterText.IsNullOrEmpty()) { languageTexts = languageTexts.Where( l => (l.Key != null && l.Key.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0) || (l.BaseValue != null && l.BaseValue.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0) || (l.TargetValue != null && l.TargetValue.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0) ); } var totalCount = languageTexts.Count(); //Ordering if (!input.Sorting.IsNullOrEmpty()) { languageTexts = languageTexts.OrderBy(input.Sorting); } //Paging if (input.SkipCount > 0) { languageTexts = languageTexts.Skip(input.SkipCount); } if (input.MaxResultCount > 0) { languageTexts = languageTexts.Take(input.MaxResultCount); } return new PagedResultOutput<LanguageTextListDto>( totalCount, languageTexts.ToList() ); }
public async Task<JsonResult> GetLanguageTexts(GetLanguageTextsInput input) { //LanguageTexts已缓存 PagedResultOutput<LanguageTextListDto> tt = await _languageAppService.GetLanguageTexts(input); return Json(new { total = tt.TotalCount, rows = tt.Items }, JsonRequestBehavior.AllowGet); }