Introduce Culture model to avoid CultureInfo.DisplayName issue

This commit is contained in:
hishamco 2020-12-03 14:05:49 +03:00
parent 1b3cc2c44e
commit a37eb8a44a
5 changed files with 40 additions and 9 deletions

View File

@ -1,11 +1,13 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Oqtane.Models;
namespace Oqtane.Services
{
public interface ILocalizationService
{
Task<string> GetDefaultCulture();
Task<Culture> GetDefaultCulture();
Task<string[]> GetSupportedCultures();
Task<IEnumerable<Culture>> GetSupportedCultures();
}
}

View File

@ -1,5 +1,7 @@
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Oqtane.Models;
using Oqtane.Shared;
namespace Oqtane.Services
@ -15,8 +17,9 @@ namespace Oqtane.Services
private string Apiurl => CreateApiUrl(_siteState.Alias, "Localization");
public async Task<string> GetDefaultCulture() => await GetJsonAsync<string>($"{Apiurl}/getDefaultCulture");
public async Task<Culture> GetDefaultCulture() => await GetJsonAsync<Culture>($"{Apiurl}/getDefaultCulture");
public async Task<string[]> GetSupportedCultures() => await GetJsonAsync<string[]>($"{Apiurl}/getSupportedCultures");
public async Task<IEnumerable<Culture>> GetSupportedCultures()
=> await GetJsonAsync<IEnumerable<Culture>>($"{Apiurl}/getSupportedCultures");
}
}

View File

@ -1,6 +1,7 @@
@namespace Oqtane.Themes.Controls
@inherits ThemeControlBase
@using System.Globalization
@using Oqtane.Models
@inject ILocalizationService LocalizationService
@inject NavigationManager NavigationManager
@ -13,7 +14,7 @@
<div class="dropdown-menu" aria-labelledby="btnCultures">
@foreach (var culture in _supportedCultures)
{
<a class="dropdown-item @(_selectedCulture == culture ? "active" : String.Empty)" href="#" @onclick="@(async e => await SetCultureAsync(culture))">@CultureInfo.GetCultureInfo(culture).DisplayName</a>
<a class="dropdown-item @(_selectedCulture == culture.Name ? "active" : String.Empty)" href="#" @onclick="@(async e => await SetCultureAsync(culture.Name))">@culture.DisplayName</a>
}
</div>
</div>
@ -21,7 +22,7 @@
@code{
private string _selectedCulture;
private string[] _supportedCultures;
private IEnumerable<Culture> _supportedCultures;
protected override async Task OnParametersSetAsync()
{

View File

@ -1,6 +1,9 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Oqtane.Infrastructure;
using Oqtane.Models;
using Oqtane.Shared;
namespace Oqtane.Controllers
@ -17,10 +20,23 @@ namespace Oqtane.Controllers
// GET: api/localization/getSupportedCultures
[HttpGet("getSupportedCultures")]
public IEnumerable<string> GetSupportedCultures() => _localizationManager.GetSupportedCultures();
public IEnumerable<Culture> GetSupportedCultures()
=> _localizationManager.GetSupportedCultures().Select(c => new Culture {
Name = CultureInfo.GetCultureInfo(c).Name,
DisplayName = CultureInfo.GetCultureInfo(c).DisplayName
});
// GET api/localization/getDefaultCulture
[HttpGet("getDefaultCulture")]
public string GetDefaultCulture() => _localizationManager.GetDefaultCulture();
public Culture GetDefaultCulture()
{
var culture = _localizationManager.GetDefaultCulture();
return new Culture
{
Name = CultureInfo.GetCultureInfo(culture).Name,
DisplayName = CultureInfo.GetCultureInfo(culture).DisplayName
};
}
}
}

View File

@ -0,0 +1,9 @@
namespace Oqtane.Models
{
public class Culture
{
public string Name { get; set; }
public string DisplayName { get; set; }
}
}