mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-06-21 23:20:28 +01:00
Merge remote-tracking branch 'upstream/master' into localization-test
This commit is contained in:
@@ -1,14 +1,15 @@
|
||||
#nullable disable
|
||||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Json;
|
||||
using Jellyfin.Extensions;
|
||||
using Jellyfin.Extensions.Json;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Globalization;
|
||||
@@ -162,12 +163,22 @@ namespace Emby.Server.Implementations.Localization
|
||||
|
||||
/// <inheritdoc />
|
||||
public CultureDto FindLanguageInfo(string language)
|
||||
=> GetCultures()
|
||||
.FirstOrDefault(i =>
|
||||
string.Equals(i.DisplayName, language, StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(i.Name, language, StringComparison.OrdinalIgnoreCase)
|
||||
|| i.ThreeLetterISOLanguageNames.Contains(language, StringComparer.OrdinalIgnoreCase)
|
||||
|| string.Equals(i.TwoLetterISOLanguageName, language, StringComparison.OrdinalIgnoreCase));
|
||||
{
|
||||
// TODO language should ideally be a ReadOnlySpan but moq cannot mock ref structs
|
||||
for (var i = 0; i < _cultures.Count; i++)
|
||||
{
|
||||
var culture = _cultures[i];
|
||||
if (language.Equals(culture.DisplayName, StringComparison.OrdinalIgnoreCase)
|
||||
|| language.Equals(culture.Name, StringComparison.OrdinalIgnoreCase)
|
||||
|| culture.ThreeLetterISOLanguageNames.Contains(language, StringComparison.OrdinalIgnoreCase)
|
||||
|| language.Equals(culture.TwoLetterISOLanguageName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return culture;
|
||||
}
|
||||
}
|
||||
|
||||
return default;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<CountryInfo> GetCountries()
|
||||
@@ -217,7 +228,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
throw new ArgumentNullException(nameof(rating));
|
||||
}
|
||||
|
||||
if (_unratedValues.Contains(rating, StringComparer.OrdinalIgnoreCase))
|
||||
if (_unratedValues.Contains(rating.AsSpan(), StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -245,11 +256,11 @@ namespace Emby.Server.Implementations.Localization
|
||||
var index = rating.IndexOf(':', StringComparison.Ordinal);
|
||||
if (index != -1)
|
||||
{
|
||||
rating = rating.Substring(index).TrimStart(':').Trim();
|
||||
var trimmedRating = rating.AsSpan(index).TrimStart(':').Trim();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(rating))
|
||||
if (!trimmedRating.IsEmpty)
|
||||
{
|
||||
return GetRatingLevel(rating);
|
||||
return GetRatingLevel(trimmedRating.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -311,7 +322,8 @@ namespace Emby.Server.Implementations.Localization
|
||||
|
||||
return _dictionaries.GetOrAdd(
|
||||
culture,
|
||||
f => GetDictionary(Prefix, culture, DefaultCulture + ".json").GetAwaiter().GetResult());
|
||||
(key, localizationManager) => localizationManager.GetDictionary(Prefix, key, DefaultCulture + ".json").GetAwaiter().GetResult(),
|
||||
this);
|
||||
}
|
||||
|
||||
private async Task<Dictionary<string, string>> GetDictionary(string prefix, string culture, string baseFilename)
|
||||
|
||||
Reference in New Issue
Block a user