Преглед на файлове

changed ContainsJapaneseCharacters to a generic symbol check based on language.

gravydevsupreme преди 7 години
родител
ревизия
3a6354fbd1
променени са 2 файла, в които са добавени 23 реда и са изтрити 1 реда
  1. 8 1
      src/XUnity.AutoTranslator.Plugin.Core/AutoTranslationPlugin.cs
  2. 15 0
      src/XUnity.AutoTranslator.Plugin.Core/Utilities/TextHelper.cs

+ 8 - 1
src/XUnity.AutoTranslator.Plugin.Core/AutoTranslationPlugin.cs

@@ -62,6 +62,11 @@ namespace XUnity.AutoTranslator.Plugin.Core
       private HashSet<object> _ongoingOperations = new HashSet<object>();
       private HashSet<string> _startedOperationsForNonStabilizableComponents = new HashSet<string>();
 
+      /// <summary>
+      /// This function will check if there are symbols of a given language contained in a string.
+      /// </summary>
+      private Func<string, bool> _symbolCheck;
+
       private bool _isInTranslatedMode = true;
 
       public void Initialize()
@@ -72,6 +77,8 @@ namespace XUnity.AutoTranslator.Plugin.Core
 
          AutoTranslateClient.Configure();
 
+         _symbolCheck = TextHelper.GetSymbolCheck( Settings.FromLanguage );
+
          LoadTranslations();
 
          // start a thread that will periodically removed unused references
@@ -373,7 +380,7 @@ namespace XUnity.AutoTranslator.Plugin.Core
       /// </summary>
       private bool IsTranslatable( string str )
       {
-         return TextHelper.ContainsJapaneseSymbols( str ) && str.Length <= Settings.MaxCharactersPerTranslation && !_translatedTexts.Contains( str );
+         return _symbolCheck( str ) && str.Length <= Settings.MaxCharactersPerTranslation && !_translatedTexts.Contains( str );
       }
 
       public bool ShouldTranslate( object ui )

+ 15 - 0
src/XUnity.AutoTranslator.Plugin.Core/Utilities/TextHelper.cs

@@ -7,6 +7,21 @@ namespace XUnity.AutoTranslator.Plugin.Core.Utilities
 {
    public static class TextHelper
    {
+      private static readonly Dictionary<string, Func<string, bool>> LanguageSymbolChecks = new Dictionary<string, Func<string, bool>>()
+      {
+         { "ja", ContainsJapaneseSymbols },
+         { "ja-JP", ContainsJapaneseSymbols },
+      };
+
+      public static Func<string, bool> GetSymbolCheck( string language )
+      {
+         if( LanguageSymbolChecks.TryGetValue( language, out Func<string, bool> check ) )
+         {
+            return check;
+         }
+         return text => true;
+      }
+
       public static bool ContainsJapaneseSymbols( string text )
       {
          // Japenese regex: [\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]