public string Lang(string Key) { IRequestCultureFeature requestCulture = Context.Request.HttpContext.Features.Get <IRequestCultureFeature>(); string Lang = Context.Request.Cookies["Lang"]; if (string.IsNullOrEmpty(Lang)) { if (requestCulture.RequestCulture.Culture.Name == "tr-TR") { return(LangTR[Key]); } else if (requestCulture.RequestCulture.Culture.Name == "en-US") { return(LangEn[Key]); } } else { if (Lang == "TR") { return(LangTR[Key]); } else if (Lang == "EN") { return(LangEn[Key]); } } return(Key); }
public IActionResult Refresh() { bool isAjaxCall = Request.Headers["x-requested-with"] == "XMLHttpRequest"; try { IRequestCultureFeature culture = Request.HttpContext.Features.Get <IRequestCultureFeature>(); Configuration.Initialize(); Configuration.ThemeHelper.UpdateAllThemeRelatedData(databaseContext, culture); if (isAjaxCall) { return(Ok()); } else { return(Redirect(Request.Headers["Referer"].ToString())); // refreshes current page } } catch (Exception) { if (isAjaxCall) { return(StatusCode(500)); } else { return(Redirect(Request.Headers["Referer"].ToString())); // refreshes current page } } }
public IActionResult Genders() { Debug.WriteLine("==========================="); Debug.WriteLine($"Current Culture: { CultureInfo.CurrentCulture}"); Debug.WriteLine($"Current UI Culture: { CultureInfo.CurrentUICulture}"); Debug.WriteLine("==========================="); List <SelectItem> selectList = new List <SelectItem>(); Array values = Enum.GetValues(typeof(Gender)); foreach (var value in values) { selectList.Add(new SelectItem { Name = _genderLocalizer[value.ToString()], Value = (int)value }); } IRequestCultureFeature feature = HttpContext.Features.Get <IRequestCultureFeature>(); Debug.WriteLine("==========================="); Debug.WriteLine($"Culture: {feature.RequestCulture.Culture}"); Debug.WriteLine($"UI Culture: {feature.RequestCulture.UICulture}"); Debug.WriteLine($"Provider: {feature.Provider}"); return(Ok(selectList)); }
public void ApplyRule(RewriteContext rewriteContext) { // do not redirect static assets and do not redirect from a controller that is meant to set the locale // similar to how you would not restrict a guest user from login form on public site. if (rewriteContext.HttpContext.Request.Path.Value.EndsWith(".ico") || rewriteContext.HttpContext.Request.Path.Value.Contains("change-culture")) { return; } IRequestCultureFeature cultureFeature = rewriteContext.HttpContext.Features.Get <IRequestCultureFeature>(); string actualCulture = cultureFeature?.RequestCulture.Culture.Name; string requestedCulture = rewriteContext.HttpContext.GetRouteValue(_cultureRouteKey)?.ToString(); // Here you can add more rules to redirect based on maybe cookie setting, or even language options saved in database user profile if (string.IsNullOrEmpty(requestedCulture) || _cultureItems.All(x => x.Name != requestedCulture) && !string.Equals(requestedCulture, actualCulture, StringComparison.OrdinalIgnoreCase)) { rewriteContext.HttpContext.GetRouteData().Values[_cultureRouteKey] = actualCulture; HttpResponse response = rewriteContext.HttpContext.Response; response.StatusCode = StatusCodes.Status301MovedPermanently; rewriteContext.Result = RuleResult.EndResponse; // preserve query part parameters of the URL (?parameters) if there were any response.Headers[HeaderNames.Location] = _linkGenerator.GetPathByAction( rewriteContext.HttpContext, values: rewriteContext.HttpContext.GetRouteData().Values ) + rewriteContext.HttpContext.Request.QueryString; } }
public ActionResult <object> Price(bool notApi = false, decimal amount = 1) { try { IRequestCultureFeature rqf = Request.HttpContext.Features.Get <IRequestCultureFeature>(); RegionInfo regionInfo = currencyService.GetRegionaInfo(rqf); Ticker ticker = tickerService.GetTicker(regionInfo.ISOCurrencySymbol); if (notApi) { return(new TickerApi { Symbol = ticker.Symbol, PriceBtc = ticker.PriceBtc.ToString(), Price = ticker.Price.ToString("C2"), Last24Change = (ticker.Last24Change).ToString("P2") }); } return(ticker); } catch (Exception ex) { log.LogError(ex, "Failed to get price from API."); return(null); } }
public RegionInfo GetRegionaInfo(IRequestCultureFeature rqf) { // Whenever the culture has been specified in the URL, write it to a cookie. This ensures that the culture selection is // available in the REST API/Web Socket call and updates, and when the user visits the website next time. //if (!string.IsNullOrWhiteSpace(this.Request.Query["culture"])) //{ // CookieRequestCultureProvider.MakeCookieValue(rqf.RequestCulture); //} RegionInfo regionInfo = new RegionInfo("EN-US"); if (!rqf.RequestCulture.UICulture.Name.Equals("en-US") && !rqf.RequestCulture.UICulture.Name.Equals("en")) { try { string culture = rqf.RequestCulture.UICulture.Name.ToUpper(); if (CustomCultures.ContainsKey(culture)) { culture = CustomCultures[culture]; } regionInfo = new RegionInfo(culture); } catch { } } return(regionInfo); }
public async Task <IActionResult> HealthCheckAsync([FromServices] IServiceProvider serviceProvider, bool loadDependences = true) { IRequestCultureFeature rqf = Request.HttpContext.Features.Get <IRequestCultureFeature>(); System.Globalization.CultureInfo culture = rqf.RequestCulture.Culture; return(GetIActionResult( new Result <HealthCheckViewModel> { Value = new HealthCheckViewModel { CurrentCulture = culture.Name, ApiName = healthCheckOptions.ApiName, ServerDate = DateTime.Now, ServerDateUtc = DateTime.UtcNow, DatabaseStatus = GetDatabaseStatus(), LocalLogFilesStatus = CheckLocalLogFileWritePermission(), Enviroment = GetEnvironmentVariable(), Dependences = loadDependences ? await GetDependencesCheckListAsync() : new List <HealthCheckDependenceViewModel>(), Warnings = await GetWarningsAsync(), ResourcesUsage = GetProcessResourceUsage(serviceProvider) } })); }
/// <summary> /// Returns list with info about al installed themes. Data are obtained from FILESYSTEM, not DB! /// </summary> /// <param name="themeFolderPath">Path to the folder with themes.</param> /// <returns></returns> /// <exception cref="ThemeHelperException"></exception> public List <ThemeInfo> GetInstalledThemesInfo(string themeFolderPath, IRequestCultureFeature culture) { try { List <string> themeSubfolders = Directory.GetDirectories(themeFolderPath).ToList(); List <ThemeInfo> themeInfos = new List <ThemeInfo>(); foreach (string themeSubdirPath in themeSubfolders) { string _themeName = Path.GetFileName(themeSubdirPath); ThemeInfo ti = new ThemeInfo() { ThemeName = _themeName, ThemeFolder = themeFolderPath, ThemeDescription = GetThemeDescription(themeSubdirPath, culture), ThemeThumbnailUrl = GetThemeThumbnailUrl(_themeName) }; themeInfos.Add(ti); } return(themeInfos); } catch (Exception ex) { throw new ThemeHelperException(ex); } }
/// <summary> /// Returns content of desc.txt file in root of the folder with theme. /// </summary> /// <param name="pathToTheme"></param> /// <returns></returns> private string GetThemeDescription(string pathToTheme, IRequestCultureFeature culture) { try { string language = culture.RequestCulture.Culture.Name; string path = Path.Combine(pathToTheme, "desc." + language + ".txt"); string desc = string.Empty; if (File.Exists(path)) { desc = File.ReadAllText(path); } else { desc = File.ReadAllText(Path.Combine(pathToTheme, "desc.txt")); } return(desc); } catch { return(string.Empty); } }
public IActionResult PostThemeJasperJsonData(JasperJsonThemeViewModel viewModel) { bool isAjaxRequest = Request.Headers["x-requested-with"] == "XMLHttpRequest"; int selectedThemeId = viewModel.SelectedThemeId; string themeNameToBeUpdated = _dbHelper.GetAllThemes().Where(t => t.Id == selectedThemeId).Single().Name; string oldDataBackup = string.Empty; try { oldDataBackup = Configuration.WebsiteConfig.GetThemeJsonFileAsString(themeNameToBeUpdated); string newJsonData = viewModel.JasperJson; Configuration.WebsiteConfig.SaveThemeJsonFileAsString(newJsonData, themeNameToBeUpdated); IRequestCultureFeature culture = Request.HttpContext.Features.Get <IRequestCultureFeature>(); Configuration.ThemeHelper.UpdateAllThemeRelatedData(_databaseContext, culture); // apply changes TempData["Success"] = true; } catch { TempData["ErrorMessage"] = "Soubor nebylo možné aktualizovat."; // revert chages Configuration.WebsiteConfig.SaveThemeJsonFileAsString(oldDataBackup, themeNameToBeUpdated); } JasperJsonThemeViewModel model = new JasperJsonThemeViewModel(); model.JasperJson = Configuration.WebsiteConfig.GetThemeJsonFileAsString(themeNameToBeUpdated); // currently selected theme will be first in the list List <Theme> allThemes = _dbHelper.GetAllThemes(); Theme themeBeingShown = allThemes.Where(t => t.Id == selectedThemeId).Single(); allThemes.Remove(themeBeingShown); allThemes.Insert(0, themeBeingShown); // currently activated theme will be marked int currentThemeid = _dbHelper.GetCurrentThemeIdFromDb(); allThemes.Where(t => t.Id == currentThemeid).Single().Name += " " + _localizer["(active)"]; model.Themes = allThemes; ModelState.Clear(); if (isAjaxRequest) { return(PartialView("JasperJsonThemePartialView", model)); } else { return(RedirectToAction("Index")); } }
public ActionResult Index(ThemesViewModel model, IFormCollection collection) { ThemesViewModel model2 = new ThemesViewModel(); try { int itemsPerPage = 6; int currentPage = model.PageNumber; string next = collection["next"]; string prev = collection["prev"]; if (next != null) { currentPage++; } if (prev != null) { currentPage--; } IRequestCultureFeature culture = Request.HttpContext.Features.Get <IRequestCultureFeature>(); List <ThemeInfo> themeInfoList = Configuration.ThemeHelper.GetInstalledThemesInfo(culture); themeInfoList.OrderBy(o => o.ThemeName); ThemeInfo currentTheme = themeInfoList.Where(i => i.ThemeName == Configuration.GlobalWebsiteConfig.ThemeName).First(); themeInfoList.Remove(currentTheme); themeInfoList.Insert(0, currentTheme); JasperPaging <ThemeInfo> paging = new JasperPaging <ThemeInfo>(themeInfoList, currentPage, itemsPerPage); model2.SelectedThemeName = Configuration.GlobalWebsiteConfig.ThemeName; model2.ThemeFolder = Configuration.ThemeFolder; model2.PageNumber = paging.CurrentPageNumber; model2.ItemsPerPage = paging.ItemsPerPage; model2.TotalNumberOfPages = paging.NumberOfPagesNeeded; model2.ThemeInfoList = paging.GetCurrentPageItems(); } catch { TempData["ErrorMessage"] = "Při provádění pořadavku došlo k chybě"; } bool isAjaxRequest = Request.Headers["x-requested-with"] == "XMLHttpRequest"; if (isAjaxRequest) { ModelState.Clear(); return(PartialView("ThemesPartialView", model2)); } else { return(RedirectToAction("Index")); } }
public ThemesViewModel UpdatePage() { try { int itemsPerPage = 6; int currentPage = 1; IRequestCultureFeature culture = Request.HttpContext.Features.Get <IRequestCultureFeature>(); // Theme description path is based on locale e.g. (desc.cs.txt) for the Czech language List <ThemeInfo> themeInfoList = Configuration.ThemeHelper.GetInstalledThemesInfoByNameAndActive(culture); JasperPaging <ThemeInfo> paging = new JasperPaging <ThemeInfo>(themeInfoList, currentPage, itemsPerPage); ThemesViewModel model = new ThemesViewModel(); model.SelectedThemeName = Configuration.GlobalWebsiteConfig.ThemeName; model.ThemeFolder = Configuration.ThemeFolder; model.PageNumber = paging.CurrentPageNumber; model.ItemsPerPage = paging.ItemsPerPage; model.TotalNumberOfPages = paging.NumberOfPagesNeeded; model.ThemeInfoList = paging.GetCurrentPageItems(); // Not registered themes check model.NotRegisteredThemeNames = dbHelper.CheckThemeFolderAndDatabaseIntegrity(culture); model.ManuallyDeletedThemeNames = dbHelper.FindManuallyDeletedThemes(culture); return(model); } catch (ThemeNotExistsException ex) // specified theme of jasper.json property "themeName" does not exist { ThemesViewModel model = new ThemesViewModel(); model.ItemsPerPage = 3; model.ManuallyDeletedThemeNames = null; model.NotRegisteredThemeNames = null; model.PageNumber = 1; model.SelectedThemeName = "Globální soubor jasper.json uvádí jako vzhled: " + ex.MissingThemeName + " který ale ve složce " + Configuration.ThemeFolder + " neexistuje"; model.ThemeFolder = Configuration.ThemeFolder; model.ThemeInfoList = null; model.TotalNumberOfPages = default(int); return(model); } catch { ThemesViewModel model = new ThemesViewModel(); model.ItemsPerPage = 3; model.ManuallyDeletedThemeNames = null; model.NotRegisteredThemeNames = null; model.PageNumber = 1; model.SelectedThemeName = null; model.ThemeFolder = null; model.ThemeInfoList = null; model.TotalNumberOfPages = default(int); return(model); } }
private void RefreshPageModel() { SetLanguage(DdlLanguagesSelectedValue); DdlLanguagesDataSource = _languages.Select(l => new SelectListItem(l.Name, l.Code)).ToList(); IRequestCultureFeature requestCultureFeature = HttpContext.Features.Get <IRequestCultureFeature>(); RequestCulture requestCulture = requestCultureFeature.RequestCulture; LblCurrentLanguage = requestCulture.Culture.Name; }
public IActionResult CheckSerializationAndDeserializationForHttpPut([FromRoute] int id, [FromBody] HealthCheckSerializationAndDeserializationViewModel obj) { obj = obj ?? new HealthCheckSerializationAndDeserializationViewModel(); IRequestCultureFeature rqf = Request.HttpContext.Features.Get <IRequestCultureFeature>(); System.Globalization.CultureInfo culture = rqf.RequestCulture.Culture; return(Ok(new { Culture = culture.Name, FromRoute = id, FromBody = obj })); }
public Language GetCurrentLanguage() { IRequestCultureFeature requestCultureFeature = _httpContextAccessor.HttpContext.Features.Get <IRequestCultureFeature>(); var uiCultureInfo = requestCultureFeature.RequestCulture.Culture; if (uiCultureInfo != null && uiCultureInfo.Name.EndsWith("en")) { return(Language.En); } return(Language.De); }
/// <summary> /// Gets the custom key that should be used when calculating the memory cache key. /// </summary> public string CacheKey(HttpContext context) { IRequestCultureFeature cf = context.Features.Get <IRequestCultureFeature>(); if (cf == null) { throw new InvalidOperationException("No UI culture found. Did you forget to add UseRequestLocalization?"); } return(cf.RequestCulture.UICulture.TwoLetterISOLanguageName); }
// Pass the requestCultureFeature and requestCulture objects to the view // so we can get Culture/UICulture information. public IActionResult About() { IRequestCultureFeature requestCultureFeature = HttpContext.Features.Get <IRequestCultureFeature>(); RequestCulture requestCulture = requestCultureFeature.RequestCulture; ViewData["requestCultureFeature"] = requestCultureFeature; ViewData["requestCulture"] = requestCulture; ViewData["Message"] = _localizer["Your application description page."]; return(View()); }
private void TryChangeLanguage(string culture) { IRequestCultureFeature feature = HttpContext.Features.Get <IRequestCultureFeature>(); Response.Cookies.Append( CookieRequestCultureProvider.DefaultCookieName, // CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(feature.RequestCulture.UICulture.ToString())), CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)), new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }); }
public IActionResult Set(string uiCulture, string returnUrl) { IRequestCultureFeature feature = HttpContext.Features.Get <IRequestCultureFeature>(); RequestCulture request = new RequestCulture(feature.RequestCulture.Culture, new CultureInfo(uiCulture)); string cookieValue = CookieRequestCultureProvider.MakeCookieValue(request); string cookieName = CookieRequestCultureProvider.DefaultCookieName; Response.Cookies.Append(cookieName, cookieValue); return(LocalRedirect(returnUrl)); }
public ActionResult SetCulture() { IRequestCultureFeature culture = HttpContext.Features.Get <IRequestCultureFeature>(); Response.Cookies.Append( CookieRequestCultureProvider.DefaultCookieName, CookieRequestCultureProvider.MakeCookieValue( new RequestCulture(new string[] { "en-US", "fr-FR" } .Where(option => option != culture.RequestCulture.Culture.Name) .FirstOrDefault()))); return(Redirect("/")); }
public IActionResult UpdateAllThemesData() { try { IRequestCultureFeature culture = Request.HttpContext.Features.Get <IRequestCultureFeature>(); Configuration.ThemeHelper.UpdateAllThemeRelatedData(_databaseContext, culture); TempData["Success"] = true; } catch (Exception) { TempData["ErrorMessage"] = _localizer["The changes could not be completed."]; } return(RedirectToAction("Index")); }
public IActionResult UpdateAllThemesData() { try { IRequestCultureFeature culture = Request.HttpContext.Features.Get <IRequestCultureFeature>(); Configuration.ThemeHelper.UpdateAllThemeRelatedData(databaseContext, culture); TempData["Success"] = true; } catch (Exception) { TempData["ErrorMessage"] = "Změny nebylo možné provést"; } return(RedirectToAction("Index")); }
public IActionResult ReconstructAllThemesCorrespondingDatabaseTables() { try { IRequestCultureFeature culture = Request.HttpContext.Features.Get <IRequestCultureFeature>(); dbHelper.ReconstructAndClearThemeData(culture); TempData["Success"] = true; } catch { TempData["ErrorMessage"] = "Nepodařilo se synchronizovat a rekonstruovat databázi vzhledů"; } return(RedirectToAction("Index")); }
public IActionResult AddNewAddedThemesToDb() { try { IRequestCultureFeature culture = Request.HttpContext.Features.Get <IRequestCultureFeature>(); dbHelper.AddThemesFromFolderToDatabase(dbHelper.CheckThemeFolderAndDatabaseIntegrity(culture), culture); TempData["Success"] = true; } catch { TempData["ErrorMessage"] = "Nebylo možné přidat nové vzhledy do databáze"; } return(RedirectToAction("Index")); }
public IActionResult GetOpenPositions() { IRequestCultureFeature requestCulture = this.Request .HttpContext .Features .Get <IRequestCultureFeature>(); var culture = requestCulture .RequestCulture .Culture .Name; ICollection <LatestJobPositionsViewModel> positions = this.homeServices.GetTopOpenJobPositions(culture); return(new JsonResult(positions)); }
public virtual ActionResult Start() { // Redirect to localized Index IRequestCultureFeature requestCultureFeature = Request.HttpContext.Features.Get <IRequestCultureFeature>(); string action = Url.Action("Index", "Home", new { culture = requestCultureFeature.RequestCulture.Culture.Name, }); // Fallback if localized route does not exist ////if (string.IsNullOrEmpty(action)) ////{ ////} return(LocalRedirect(action)); }
public void ApplyRule(RewriteContext rewriteContext) { // TODO find why non-existing resources that would give 404 (such as missing ico) send into infinite loop if (rewriteContext.HttpContext.Request.Path.Value.EndsWith(".ico")) { return; } IRequestCultureFeature cultureFeature = rewriteContext.HttpContext.Features.Get <IRequestCultureFeature>(); string actualCulture = cultureFeature?.RequestCulture.Culture.Name; string requestedCulture = rewriteContext.HttpContext.GetRouteValue(_cultureRouteKey)?.ToString(); Console.WriteLine(rewriteContext.HttpContext.Request.Cookies[CookieRequestCultureProvider.DefaultCookieName]); Console.WriteLine(actualCulture); Console.WriteLine(requestedCulture); if ($"c={actualCulture}|uic={actualCulture}" != rewriteContext.HttpContext.Request.Cookies[CookieRequestCultureProvider.DefaultCookieName]) { rewriteContext.HttpContext.Response.Cookies.Append( CookieRequestCultureProvider.DefaultCookieName, CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(actualCulture)), new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) } ); } // TODO ensure to give precedence to cookie containing localization. Either redirect here, or changeculture model needs to be aware of more corner cases. if (string.IsNullOrEmpty(requestedCulture) || _cultureItems.All(x => x.Name != requestedCulture) && !string.Equals(requestedCulture, actualCulture, StringComparison.OrdinalIgnoreCase)) { string localizedPath = $"/{actualCulture}{rewriteContext.HttpContext.Request.Path.Value}".ToLower(); HttpResponse response = rewriteContext.HttpContext.Response; response.StatusCode = StatusCodes.Status301MovedPermanently; rewriteContext.Result = RuleResult.EndResponse; // preserve query part parameters of the URL (?parameters) if there were any response.Headers[HeaderNames.Location] = localizedPath + rewriteContext.HttpContext.Request.QueryString; } }
public IActionResult Index() { IRequestCultureFeature requestCulture = this.Request .HttpContext .Features .Get <IRequestCultureFeature>(); var culture = requestCulture .RequestCulture .Culture .Name; var model = new CareerViewModel { JobPositionViewModels = this.careerService.GetAllJobsPositions(culture), }; return(this.View(model)); }
public IActionResult Set(string uiCulture, string returnUrl) { var languages = Request.GetTypedHeaders() .AcceptLanguage ?.OrderByDescending(x => x.Quality ?? 1) // Quality defines priority from 0 to 1, where 1 is the highest. .Select(x => x.Value.ToString()) .ToArray() ?? Array.Empty <string>(); IRequestCultureFeature feature = HttpContext.Features.Get <IRequestCultureFeature>(); RequestCulture requestCulture = new RequestCulture(feature.RequestCulture.Culture, new CultureInfo(uiCulture)); string cookieValue = CookieRequestCultureProvider.MakeCookieValue(requestCulture); string cookieName = CookieRequestCultureProvider.DefaultCookieName; Response.Cookies.Append(cookieName, cookieValue); return(LocalRedirect(returnUrl)); }
public async Task <IActionResult> Index() { IRequestCultureFeature requestCulture = this.Request .HttpContext .Features .Get <IRequestCultureFeature>(); var culture = requestCulture .RequestCulture .Culture .Name; var model = new CompanyViewModel { HasAdmin = await this.homeServices.HasAdministrator(), AllSections = await this.companyService.GetAllCompanySections(culture), }; return(this.View(model)); }