@@ -72,45 +72,48 @@ public TranslateTask(@Nullable Project project, @Nls @NotNull String title, List
7272 public void run (@ NotNull ProgressIndicator progressIndicator ) {
7373 boolean isOverwriteExistingString = PropertiesComponent .getInstance (myProject )
7474 .getBoolean (Constants .KEY_IS_OVERWRITE_EXISTING_STRING );
75-
7675 Querier <AbstractTranslator > translator = new Querier <>();
7776 GoogleTranslator googleTranslator = new GoogleTranslator ();
7877 translator .attach (googleTranslator );
7978 mWriteData .clear ();
8079
8180 for (LANG toLanguage : mLanguages ) {
81+ if (progressIndicator .isCanceled ()) break ;
82+
8283 progressIndicator .setText ("Translating in the " + toLanguage .getEnglishName () + " language..." );
8384
8485 if (isOverwriteExistingString ) {
85- translate (translator , toLanguage , null );
86+ translate (progressIndicator , translator , toLanguage , null );
8687 continue ;
8788 }
8889
8990 ApplicationManager .getApplication ().runReadAction (() -> {
9091 VirtualFile virtualFile = getVirtualFile (toLanguage );
9192
9293 if (virtualFile == null ) {
93- translate (translator , toLanguage , null );
94+ translate (progressIndicator , translator , toLanguage , null );
9495 return ;
9596 }
9697
9798 PsiFile psiFile = PsiManager .getInstance (myProject ).findFile (virtualFile );
9899 if (psiFile == null ) {
99- translate (translator , toLanguage , null );
100+ translate (progressIndicator , translator , toLanguage , null );
100101 return ;
101102 }
102103
103104 List <AndroidString > androidStrings = ParseStringXml .parse (progressIndicator , psiFile );
104- translate (translator , toLanguage , androidStrings );
105+ translate (progressIndicator , translator , toLanguage , androidStrings );
105106 });
106107 }
107108 googleTranslator .close ();
108109 writeResultData (progressIndicator );
109110 }
110111
111- private void translate (Querier <AbstractTranslator > translator , LANG toLanguage , @ Nullable List <AndroidString > list ) {
112+ private void translate (@ NotNull ProgressIndicator progressIndicator , Querier <AbstractTranslator > translator , LANG toLanguage , @ Nullable List <AndroidString > list ) {
112113 List <AndroidString > writeAndroidString = new ArrayList <>();
113114 for (AndroidString androidString : mAndroidStrings ) {
115+ if (progressIndicator .isCanceled ()) break ;
116+
114117 if (!androidString .isTranslatable ()) {
115118 continue ;
116119 }
@@ -137,13 +140,17 @@ private void translate(Querier<AbstractTranslator> translator, LANG toLanguage,
137140 }
138141
139142 private void writeResultData (ProgressIndicator progressIndicator ) {
143+ if (progressIndicator .isCanceled ()) return ;
144+
140145 if (mWriteData == null ) {
141146 translateError (new IllegalArgumentException ("No translate data." ));
142147 return ;
143148 }
144149
145150 Set <String > keySet = mWriteData .keySet ();
146151 for (String key : keySet ) {
152+ if (progressIndicator .isCanceled ()) break ;
153+
147154 File writeFile = getWriteFileForCode (key );
148155 progressIndicator .setText ("Write to " + writeFile .getParentFile ().getName () + " data..." );
149156 write (writeFile , mWriteData .get (key ));
0 commit comments