From 81aca67745d541e276cfa05efe57e52e9f5a5d0e Mon Sep 17 00:00:00 2001 From: Gary Wang Date: Wed, 11 Sep 2024 23:36:56 +0800 Subject: [PATCH] feat(i18n): able to finetune transliterator (#12378) --- src/Jellyfin.Extensions/StringExtensions.cs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/Jellyfin.Extensions/StringExtensions.cs b/src/Jellyfin.Extensions/StringExtensions.cs index 8cfebd594d..4b9677d9f4 100644 --- a/src/Jellyfin.Extensions/StringExtensions.cs +++ b/src/Jellyfin.Extensions/StringExtensions.cs @@ -9,8 +9,21 @@ namespace Jellyfin.Extensions /// public static partial class StringExtensions { - private static readonly Lazy _transliterator = new(() => Transliterator.GetInstance( - "Any-Latin; Latin-Ascii; Lower; NFD; [:Nonspacing Mark:] Remove; [:Punctuation:] Remove;")); + private static readonly Lazy _transliteratorId = new(() => + Environment.GetEnvironmentVariable("JELLYFIN_TRANSLITERATOR_ID") + ?? "Any-Latin; Latin-Ascii; Lower; NFD; [:Nonspacing Mark:] Remove; [:Punctuation:] Remove;"); + + private static readonly Lazy _transliterator = new(() => + { + try + { + return Transliterator.GetInstance(_transliteratorId.Value); + } + catch (ArgumentException) + { + return null; + } + }); // Matches non-conforming unicode chars // https://mnaoumov.wordpress.com/2014/06/14/stripping-invalid-characters-from-utf-16-strings/ @@ -108,7 +121,7 @@ namespace Jellyfin.Extensions /// The transliterated string. public static string Transliterated(this string text) { - return _transliterator.Value.Transliterate(text); + return (_transliterator.Value is null) ? text : _transliterator.Value.Transliterate(text); } } }