From 90ca6aafe91b5eb29e23c640432fead3042b3b46 Mon Sep 17 00:00:00 2001 From: hishamco Date: Sun, 24 Jan 2021 01:06:50 +0300 Subject: [PATCH 1/3] Set default language if the culture not supported --- Oqtane.Server/Pages/_Host.cshtml.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Oqtane.Server/Pages/_Host.cshtml.cs b/Oqtane.Server/Pages/_Host.cshtml.cs index 662beb18..d93ead04 100644 --- a/Oqtane.Server/Pages/_Host.cshtml.cs +++ b/Oqtane.Server/Pages/_Host.cshtml.cs @@ -5,6 +5,7 @@ using Oqtane.Modules; using Oqtane.Models; using Oqtane.Themes; using System; +using System.Globalization; using System.Linq; using System.Reflection; using Microsoft.AspNetCore.Http.Extensions; @@ -45,18 +46,20 @@ namespace Oqtane.Pages // if framework is installed if (!string.IsNullOrEmpty(_configuration.GetConnectionString("DefaultConnection"))) { - Uri uri = new Uri(Request.GetDisplayUrl()); + var uri = new Uri(Request.GetDisplayUrl()); var alias = _aliases.GetAlias(uri.Authority + "/" + uri.LocalPath.Substring(1)); _state.Alias = alias; - // set default language for site - var language = _languages.GetLanguages(alias.SiteId).Where(item => item.IsDefault).FirstOrDefault(); - if (language != null) + // set default language for site if the culture is not supported + var languages = _languages.GetLanguages(alias.SiteId); + if (languages.All(l => l.Code != CultureInfo.CurrentUICulture.Name)) { + var defaultLanguage = languages.Where(l => l.IsDefault).SingleOrDefault() ?? languages.First(); + HttpContext.Response.Cookies.Append( CookieRequestCultureProvider.DefaultCookieName, CookieRequestCultureProvider.MakeCookieValue( - new RequestCulture(language.Code))); + new RequestCulture(defaultLanguage.Code))); } } } From 13e356f5109aa039e1399260134dc9633a18ef33 Mon Sep 17 00:00:00 2001 From: hishamco Date: Fri, 5 Feb 2021 21:47:50 +0300 Subject: [PATCH 2/3] Use LocalizationManager.GetDefaultCulture() --- Oqtane.Server/Pages/_Host.cshtml.cs | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/Oqtane.Server/Pages/_Host.cshtml.cs b/Oqtane.Server/Pages/_Host.cshtml.cs index d90128f9..153bb339 100644 --- a/Oqtane.Server/Pages/_Host.cshtml.cs +++ b/Oqtane.Server/Pages/_Host.cshtml.cs @@ -20,13 +20,20 @@ namespace Oqtane.Pages private IConfiguration _configuration; private readonly SiteState _state; private readonly IAliasRepository _aliases; + private readonly ILocalizationManager _localizationManager; private readonly ILanguageRepository _languages; - public HostModel(IConfiguration configuration, SiteState state, IAliasRepository aliases, ILanguageRepository languages) + public HostModel( + IConfiguration configuration, + SiteState state, + IAliasRepository aliases, + LocalizationManager localizationManager, + ILanguageRepository languages) { _configuration = configuration; _state = state; _aliases = aliases; + _localizationManager = localizationManager; _languages = languages; } @@ -56,17 +63,11 @@ namespace Oqtane.Pages { var defaultLanguage = languages.Where(l => l.IsDefault).SingleOrDefault() ?? languages.First(); - HttpContext.Response.Cookies.Append( - CookieRequestCultureProvider.DefaultCookieName, - CookieRequestCultureProvider.MakeCookieValue( - new RequestCulture(defaultLanguage.Code))); + SetLocalizationCookie(defaultLanguage.Code); } else { - HttpContext.Response.Cookies.Append( - CookieRequestCultureProvider.DefaultCookieName, - CookieRequestCultureProvider.MakeCookieValue( - new RequestCulture(_configuration.GetSection("Localization").GetValue("DefaultCulture", Constants.DefaultCulture)))); + SetLocalizationCookie(_localizationManager.GetDefaultCulture()); } } } @@ -179,5 +180,12 @@ namespace Oqtane.Pages return ""; } } + + private void SetLocalizationCookie(string culture) + { + HttpContext.Response.Cookies.Append( + CookieRequestCultureProvider.DefaultCookieName, + CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture))); + } } } From 7db1fe226dc718ede0ba234f1bb31b38abb86166 Mon Sep 17 00:00:00 2001 From: hishamco Date: Sat, 6 Feb 2021 22:40:11 +0300 Subject: [PATCH 3/3] Fix the localization manager resolution --- Oqtane.Server/Pages/_Host.cshtml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Oqtane.Server/Pages/_Host.cshtml.cs b/Oqtane.Server/Pages/_Host.cshtml.cs index 153bb339..24aa812e 100644 --- a/Oqtane.Server/Pages/_Host.cshtml.cs +++ b/Oqtane.Server/Pages/_Host.cshtml.cs @@ -27,7 +27,7 @@ namespace Oqtane.Pages IConfiguration configuration, SiteState state, IAliasRepository aliases, - LocalizationManager localizationManager, + ILocalizationManager localizationManager, ILanguageRepository languages) { _configuration = configuration;