TranslationBatch.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.Collections.Generic;
  2. using System.Text;
  3. namespace XUnity.AutoTranslator.Plugin.Core.Batching
  4. {
  5. public class TranslationBatch
  6. {
  7. public TranslationBatch()
  8. {
  9. Trackers = new List<TranslationLineTracker>();
  10. }
  11. public List<TranslationLineTracker> Trackers { get; private set; }
  12. public int TotalLinesCount { get; set; }
  13. public void Add( TranslationJob job )
  14. {
  15. var lines = new TranslationLineTracker( job );
  16. Trackers.Add( lines );
  17. TotalLinesCount += lines.LinesCount;
  18. }
  19. public bool MatchWithTranslations( string allTranslations )
  20. {
  21. var lines = allTranslations.Split( '\n' );
  22. if( lines.Length != TotalLinesCount ) return false;
  23. int current = 0;
  24. foreach( var tracker in Trackers )
  25. {
  26. var builder = new StringBuilder( 32 );
  27. for( int i = 0 ; i < tracker.LinesCount ; i++ )
  28. {
  29. var translation = lines[ current++ ];
  30. builder.Append( translation );
  31. // ADD NEW LINE IF NEEDED
  32. if( !( i == tracker.LinesCount - 1 ) ) // if not last line
  33. {
  34. builder.Append( '\n' );
  35. }
  36. }
  37. var fullTranslation = builder.ToString();
  38. tracker.RawTranslatedText = fullTranslation;
  39. }
  40. return true;
  41. }
  42. public string GetFullTranslationKey()
  43. {
  44. var builder = new StringBuilder();
  45. for( int i = 0 ; i < Trackers.Count ; i++ )
  46. {
  47. var tracker = Trackers[ i ];
  48. builder.Append( tracker.Job.Key.GetDictionaryLookupKey() );
  49. if( !( i == Trackers.Count - 1 ) )
  50. {
  51. builder.Append( '\n' );
  52. }
  53. }
  54. return builder.ToString();
  55. }
  56. }
  57. }