Переглянути джерело

more languages to support new whitespace handling properly

Scrublord1336 6 роки тому
батько
коміт
400808ccd1

+ 3 - 0
src/XUnity.AutoTranslator.Plugin.Core/Configuration/Settings.cs

@@ -5,6 +5,7 @@ using System.Linq;
 using System.Text;
 using XUnity.AutoTranslator.Plugin.Core.Constants;
 using XUnity.AutoTranslator.Plugin.Core.Debugging;
+using XUnity.AutoTranslator.Plugin.Core.Utilities;
 
 namespace XUnity.AutoTranslator.Plugin.Core.Configuration
 {
@@ -23,6 +24,7 @@ namespace XUnity.AutoTranslator.Plugin.Core.Configuration
       public static readonly int MaximumStaggers = 6;
       public static readonly int MaximumConsecutiveFramesTranslated = 90;
       public static readonly int MaximumConsecutiveSecondsTranslated = 60;
+      public static bool UsesWhitespaceBetweenWords = false;
 
 
       public static bool IsShutdown = false;
@@ -157,6 +159,7 @@ namespace XUnity.AutoTranslator.Plugin.Core.Configuration
          MigrationsTag = Config.Current.Preferences[ "Migrations" ][ "Tag" ].GetOrDefault( string.Empty );
 
          AutoTranslationsFilePath = Path.Combine( Config.Current.DataPath, OutputFile.Replace( "{lang}", Language ) );
+         UsesWhitespaceBetweenWords = TextHelper.RequiresWhitespaceUponLineMerging( FromLanguage );
 
          if( EnableMigrations )
          {

+ 2 - 2
src/XUnity.AutoTranslator.Plugin.Core/Extensions/StringExtensions.cs

@@ -230,8 +230,8 @@ namespace XUnity.AutoTranslator.Plugin.Core.Extensions
                   builder.Append( c );
                }
 
-               // if source language is ENGLISH; Add space, if not last line, so words are not merged
-               if( Settings.FromLanguage == Settings.EnglishLanguage && i != lastLine )
+               // do we need to add a space when merging lines?
+               if( Settings.UsesWhitespaceBetweenWords && i != lastLine ) // en, ru, ko?
                {
                   builder.Append( ' ' );
                }

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

@@ -17,11 +17,21 @@ namespace XUnity.AutoTranslator.Plugin.Core.Utilities
          { "en", ContainsStandardLatinSymbols },
       };
 
+      private static readonly HashSet<string> WhitespaceLanguages = new HashSet<string>
+      {
+         "ru", "ko", "en"
+      };
+
       public static bool IsFromLanguageSupported( string code )
       {
          return LanguageSymbolChecks.ContainsKey( code );
       }
 
+      public static bool RequiresWhitespaceUponLineMerging( string code )
+      {
+         return WhitespaceLanguages.Contains( code );
+      }
+
       public static Func<string, bool> GetSymbolCheck( string language )
       {
          if( LanguageSymbolChecks.TryGetValue( language, out Func<string, bool> check ) )