11using System ;
22using System . Collections . Generic ;
33using System . Collections . Immutable ;
4- using System . Globalization ;
54using System . IO ;
65using System . Linq ;
76using System . Threading . Tasks ;
1110
1211namespace MrMeeseeks . ResXTranslationCombinator . Translation
1312{
14- public interface IResXTranslator
13+ internal interface IResXCombinator < T > where T : ITranslator
1514 {
1615 Task Translate ( FileInfo defaultResXFile ) ;
1716 }
@@ -22,7 +21,7 @@ public enum ResXFileType
2221 ManuallyOverriden
2322 }
2423
25- internal class ResXTranslator : IResXTranslator
24+ internal class ResXCombinator < T > : IResXCombinator < T > where T : ITranslator
2625 {
2726 private readonly ITranslator _translator ;
2827 private readonly Func < FileInfo , IResXWriterFactory > _resXWriterFactoryFactory ;
@@ -31,8 +30,8 @@ internal class ResXTranslator : IResXTranslator
3130 private readonly IDataMappingFactory _dataMappingFactory ;
3231 private readonly ILogger _logger ;
3332
34- public ResXTranslator (
35- ITranslator translator ,
33+ public ResXCombinator (
34+ T translator ,
3635 Func < FileInfo , IResXWriterFactory > resXWriterFactoryFactory ,
3736 Func < ( string Name , string Value , string Comment ) , IResXNode > resXNodeFactory ,
3837 Func < string , FileInfo > fileInfoFactory ,
@@ -59,7 +58,7 @@ public async Task Translate(FileInfo defaultResXFile)
5958
6059 var orderedDefaultKeys = dataMapping . Default . Keys . ToImmutableSortedSet ( ) ;
6160
62- var supportedCultureInfos = new HashSet < CultureInfo > ( await _translator . GetSupportedCultureInfos ( ) . ConfigureAwait ( false ) ) ;
61+ var supportedCultureInfos = await _translator . GetSupportedCultureInfos ( ) . ConfigureAwait ( false ) ;
6362
6463 // Update automatics
6564 foreach ( var supportedCultureInfo in supportedCultureInfos )
@@ -87,17 +86,20 @@ public async Task Translate(FileInfo defaultResXFile)
8786 var file = _fileInfoFactory ( Path . Combine ( defaultResXFile . DirectoryName ?? "" ,
8887 $ "{ defaultResXFile . Name [ ..defaultResXFile . Name . IndexOf ( '.' ) ] } .{ supportedCultureInfo . Name } .a{ defaultResXFile . Extension } ") ) ;
8988 _logger . Notice ( file , "New translations added" ) ;
90-
91- var resXResourceWriter = placeholder . Create ( file ) ;
92- foreach ( var keyValuePair in acc . OrderBy ( kvp => kvp . Key ) )
89+
90+ if ( _translator . TranslationsShouldBeCached )
9391 {
94- var resXDataNode = _resXNodeFactory ( (
95- keyValuePair . Key ,
96- keyValuePair . Value ,
97- "Automatically Translated" ) ) ;
98- resXResourceWriter . AddResource ( resXDataNode ) ;
92+ var resXResourceWriter = placeholder . Create ( file ) ;
93+ foreach ( var keyValuePair in acc . OrderBy ( kvp => kvp . Key ) )
94+ {
95+ var resXDataNode = _resXNodeFactory ( (
96+ keyValuePair . Key ,
97+ keyValuePair . Value ,
98+ "Automatically Translated" ) ) ;
99+ resXResourceWriter . AddResource ( resXDataNode ) ;
100+ }
101+ resXResourceWriter . Generate ( ) ;
99102 }
100- resXResourceWriter . Generate ( ) ;
101103 }
102104 }
103105
0 commit comments