Localization framework

This commit is contained in:
nitsua
2021-04-16 22:01:47 -04:00
committed by ta264
parent 144134446d
commit d87bf5ae63
196 changed files with 3074 additions and 924 deletions

View File

@@ -16,6 +16,7 @@ namespace Readarr.Api.V1.Config
public bool ShowRelativeDates { get; set; }
public bool EnableColorImpairedMode { get; set; }
public int UILanguage { get; set; }
}
public static class UiConfigResourceMapper
@@ -33,6 +34,7 @@ namespace Readarr.Api.V1.Config
ShowRelativeDates = model.ShowRelativeDates,
EnableColorImpairedMode = model.EnableColorImpairedMode,
UILanguage = model.UILanguage,
};
}
}

View File

@@ -0,0 +1,36 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using NzbDrone.Core.Languages;
using Readarr.Http;
using Readarr.Http.REST;
namespace Readarr.Api.V1.Languages
{
[V1ApiController]
public class LanguageController : RestController<LanguageResource>
{
public override LanguageResource GetResourceById(int id)
{
var language = (Language)id;
return new LanguageResource
{
Id = (int)language,
Name = language.ToString()
};
}
[HttpGet]
public List<LanguageResource> GetAll()
{
return Language.All.Select(l => new LanguageResource
{
Id = (int)l,
Name = l.ToString()
})
.OrderBy(l => l.Name)
.ToList();
}
}
}

View File

@@ -0,0 +1,13 @@
using System.Text.Json.Serialization;
using Readarr.Http.REST;
namespace Readarr.Api.V1.Languages
{
public class LanguageResource : RestResource
{
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public new int Id { get; set; }
public string Name { get; set; }
public string NameLower => Name.ToLowerInvariant();
}
}

View File

@@ -0,0 +1,29 @@
using System.Text.Json;
using Microsoft.AspNetCore.Mvc;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Localization;
using Readarr.Http;
namespace Readarr.Api.V1.Localization
{
[V1ApiController]
public class LocalizationController : Controller
{
private readonly ILocalizationService _localizationService;
private readonly JsonSerializerOptions _serializerSettings;
public LocalizationController(ILocalizationService localizationService)
{
_localizationService = localizationService;
_serializerSettings = STJson.GetSerializerSettings();
_serializerSettings.DictionaryKeyPolicy = null;
_serializerSettings.PropertyNamingPolicy = null;
}
[HttpGet]
public string GetLocalizationDictionary()
{
return JsonSerializer.Serialize(_localizationService.GetLocalizationDictionary().ToResource(), _serializerSettings);
}
}
}

View File

@@ -0,0 +1,26 @@
using System.Collections.Generic;
using Readarr.Http.REST;
namespace Readarr.Api.V1.Localization
{
public class LocalizationResource : RestResource
{
public Dictionary<string, string> Strings { get; set; }
}
public static class LocalizationResourceMapper
{
public static LocalizationResource ToResource(this Dictionary<string, string> localization)
{
if (localization == null)
{
return null;
}
return new LocalizationResource
{
Strings = localization,
};
}
}
}