Merge pull request #6063 from sbwalker/dev
allow LanguageSwitcher to support culture and ui culture
This commit is contained in:
@@ -14,8 +14,9 @@ namespace Oqtane.Services
|
|||||||
/// Set the localization cookie
|
/// Set the localization cookie
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="culture"></param>
|
/// <param name="culture"></param>
|
||||||
|
/// <param name="uiCulture"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task SetLocalizationCookieAsync(string culture);
|
Task SetLocalizationCookieAsync(string culture, string uiCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
|
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
|
||||||
@@ -23,7 +24,7 @@ namespace Oqtane.Services
|
|||||||
{
|
{
|
||||||
public LocalizationCookieService(HttpClient http, SiteState siteState) : base(http, siteState) { }
|
public LocalizationCookieService(HttpClient http, SiteState siteState) : base(http, siteState) { }
|
||||||
|
|
||||||
public Task SetLocalizationCookieAsync(string culture)
|
public Task SetLocalizationCookieAsync(string culture, string uiCulture)
|
||||||
{
|
{
|
||||||
return Task.CompletedTask; // only used in server side rendering
|
return Task.CompletedTask; // only used in server side rendering
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
var culture = PageState.QueryString["culture"];
|
var culture = PageState.QueryString["culture"];
|
||||||
if (PageState.Site.Languages.Any(item => item.Code == culture))
|
if (PageState.Site.Languages.Any(item => item.Code == culture))
|
||||||
{
|
{
|
||||||
await LocalizationCookieService.SetLocalizationCookieAsync(culture);
|
await LocalizationCookieService.SetLocalizationCookieAsync(PageState.Site.CultureCode, culture);
|
||||||
}
|
}
|
||||||
NavigationManager.NavigateTo(NavigationManager.Uri.Replace($"?culture={culture}", ""));
|
NavigationManager.NavigateTo(NavigationManager.Uri.Replace($"?culture={culture}", ""));
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
{
|
{
|
||||||
if (culture != CultureInfo.CurrentUICulture.Name)
|
if (culture != CultureInfo.CurrentUICulture.Name)
|
||||||
{
|
{
|
||||||
var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture));
|
var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(PageState.Site.CultureCode, culture));
|
||||||
var interop = new Interop(JSRuntime);
|
var interop = new Interop(JSRuntime);
|
||||||
await interop.SetCookie(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, 360, true, "Lax");
|
await interop.SetCookie(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, 360, true, "Lax");
|
||||||
NavigationManager.NavigateTo(NavigationManager.Uri, true);
|
NavigationManager.NavigateTo(NavigationManager.Uri, true);
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Oqtane.Models;
|
|
||||||
using Oqtane.Shared;
|
using Oqtane.Shared;
|
||||||
|
|
||||||
namespace Oqtane.Infrastructure
|
namespace Oqtane.Infrastructure
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ namespace Oqtane.Migrations.Tenant
|
|||||||
{
|
{
|
||||||
var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder, ActiveDatabase);
|
var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||||
siteEntityBuilder.AddStringColumn("CultureCode", 10, true);
|
siteEntityBuilder.AddStringColumn("CultureCode", 10, true);
|
||||||
|
siteEntityBuilder.UpdateData("CultureCode", $"'{Shared.Constants.DefaultCulture}'");
|
||||||
|
|
||||||
var userEntityBuilder = new UserEntityBuilder(migrationBuilder, ActiveDatabase);
|
var userEntityBuilder = new UserEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||||
userEntityBuilder.AddStringColumn("CultureCode", 10, true);
|
userEntityBuilder.AddStringColumn("CultureCode", 10, true);
|
||||||
|
userEntityBuilder.UpdateData("CultureCode", $"'{Shared.Constants.DefaultCulture}'");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ namespace Oqtane.Services
|
|||||||
_accessor = accessor;
|
_accessor = accessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task SetLocalizationCookieAsync(string culture)
|
public Task SetLocalizationCookieAsync(string culture, string uiCulture)
|
||||||
{
|
{
|
||||||
var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture));
|
var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture, uiCulture));
|
||||||
|
|
||||||
_accessor.HttpContext.Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, new CookieOptions
|
_accessor.HttpContext.Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, new CookieOptions
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user