Browse Source

feat(i18n): able to finetune transliterator (#12378)

Gary Wang 8 months ago
parent
commit
81aca67745
1 changed files with 16 additions and 3 deletions
  1. 16 3
      src/Jellyfin.Extensions/StringExtensions.cs

+ 16 - 3
src/Jellyfin.Extensions/StringExtensions.cs

@@ -9,8 +9,21 @@ 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;"));
+        private static readonly Lazy<string> _transliteratorId = new(() =>
+            Environment.GetEnvironmentVariable("JELLYFIN_TRANSLITERATOR_ID")
+            ?? "Any-Latin; Latin-Ascii; Lower; NFD; [:Nonspacing Mark:] Remove; [:Punctuation:] Remove;");
+
+        private static readonly Lazy<Transliterator?> _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
         /// <returns>The transliterated string.</returns>
         public static string Transliterated(this string text)
         {
-            return _transliterator.Value.Transliterate(text);
+            return (_transliterator.Value is null) ? text : _transliterator.Value.Transliterate(text);
         }
     }
 }