WIP
This commit is contained in:
parent
54b057886c
commit
7fc1ae0650
204 changed files with 4345 additions and 134 deletions
|
|
@ -0,0 +1,10 @@
|
|||
using PlanTempus.Application.Features.Localization.Models;
|
||||
|
||||
namespace PlanTempus.Application.Features.Localization.Services;
|
||||
|
||||
public interface ILocalizationService
|
||||
{
|
||||
string Get(string key, string? culture = null);
|
||||
string CurrentCulture { get; }
|
||||
IEnumerable<SupportedCulture> GetSupportedCultures();
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
using System.Text.Json;
|
||||
using PlanTempus.Application.Features.Localization.Models;
|
||||
|
||||
namespace PlanTempus.Application.Features.Localization.Services;
|
||||
|
||||
public class JsonLocalizationService : ILocalizationService
|
||||
{
|
||||
private readonly string _translationsPath;
|
||||
|
||||
public JsonLocalizationService(IWebHostEnvironment env)
|
||||
{
|
||||
_translationsPath = Path.Combine(env.ContentRootPath, "Features", "Localization", "Translations");
|
||||
}
|
||||
|
||||
public string CurrentCulture => "da";
|
||||
|
||||
public string Get(string key, string? culture = null)
|
||||
{
|
||||
culture ??= CurrentCulture;
|
||||
var filePath = Path.Combine(_translationsPath, $"{culture}.json");
|
||||
|
||||
if (!File.Exists(filePath))
|
||||
return key;
|
||||
|
||||
var json = File.ReadAllText(filePath);
|
||||
var doc = JsonDocument.Parse(json);
|
||||
|
||||
var parts = key.Split('.');
|
||||
JsonElement current = doc.RootElement;
|
||||
|
||||
foreach (var part in parts)
|
||||
if (!current.TryGetProperty(part, out current))
|
||||
return key;
|
||||
|
||||
return current.GetString() ?? key;
|
||||
}
|
||||
|
||||
public IEnumerable<SupportedCulture> GetSupportedCultures()
|
||||
{
|
||||
return new List<SupportedCulture>
|
||||
{
|
||||
new() { Code = "da", Name = "Danish", NativeName = "Dansk" },
|
||||
new() { Code = "en", Name = "English", NativeName = "English" }
|
||||
};
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue