diff options
| author | Gary Wang <wzc782970009@gmail.com> | 2024-03-23 10:59:59 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-22 20:59:59 -0600 |
| commit | c16135800c53873746321d0c9ea2fc36550511c1 (patch) | |
| tree | 992c75be99beb03f00ec38d0cfe80f84644ea1a6 /src/Jellyfin.Extensions/StringExtensions.cs | |
| parent | 259630554229b4dcf00b9bccb4cf26444131fe42 (diff) | |
feat(i18n): transliterate item name before sorting (#11172)
Diffstat (limited to 'src/Jellyfin.Extensions/StringExtensions.cs')
| -rw-r--r-- | src/Jellyfin.Extensions/StringExtensions.cs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/Jellyfin.Extensions/StringExtensions.cs b/src/Jellyfin.Extensions/StringExtensions.cs index 9d8afc23c..8cfebd594 100644 --- a/src/Jellyfin.Extensions/StringExtensions.cs +++ b/src/Jellyfin.Extensions/StringExtensions.cs @@ -1,5 +1,6 @@ using System; using System.Text.RegularExpressions; +using ICU4N.Text; namespace Jellyfin.Extensions { @@ -8,6 +9,9 @@ namespace Jellyfin.Extensions /// </summary> public static partial class StringExtensions { + private static readonly Lazy<Transliterator> _transliterator = new(() => Transliterator.GetInstance( + "Any-Latin; Latin-Ascii; Lower; NFD; [:Nonspacing Mark:] Remove; [:Punctuation:] Remove;")); + // Matches non-conforming unicode chars // https://mnaoumov.wordpress.com/2014/06/14/stripping-invalid-characters-from-utf-16-strings/ @@ -96,5 +100,15 @@ namespace Jellyfin.Extensions return haystack[(pos + 1)..]; } + + /// <summary> + /// Returns a transliterated string which only contain ascii characters. + /// </summary> + /// <param name="text">The string to act on.</param> + /// <returns>The transliterated string.</returns> + public static string Transliterated(this string text) + { + return _transliterator.Value.Transliterate(text); + } } } |
