1818package com .airsaid .localization .action ;
1919
2020import com .airsaid .localization .config .SettingsState ;
21- import com .airsaid .localization .model .AndroidString ;
22- import com .airsaid .localization .services .AndroidStringsService ;
21+ import com .airsaid .localization .model .AbstractValue ;
22+ import com .airsaid .localization .services .AndroidValuesService ;
2323import com .airsaid .localization .task .TranslateTask ;
2424import com .airsaid .localization .translate .lang .Lang ;
2525import com .airsaid .localization .ui .SelectLanguagesDialog ;
3434import java .util .List ;
3535
3636/**
37- * Translate strings.xml to other languages that can be used to localize your Android APP.
37+ * Translate android string value to other languages that can be used to localize your Android APP.
3838 *
3939 * @author airsaid
4040 */
4141public class TranslateAction extends AnAction implements SelectLanguagesDialog .OnClickListener {
4242
4343 private Project mProject ;
44- private PsiFile mStringsFile ;
45- private List <AndroidString > mAndroidStrings ;
46- private final AndroidStringsService mStringsService = AndroidStringsService .getInstance ();
44+ private PsiFile mValueFile ;
45+ private List <AbstractValue > mValues ;
46+ private final AndroidValuesService mValueService = AndroidValuesService .getInstance ();
4747
4848 @ Override
4949 public void actionPerformed (AnActionEvent e ) {
5050 mProject = e .getRequiredData (CommonDataKeys .PROJECT );
51- mStringsFile = e .getRequiredData (CommonDataKeys .PSI_FILE );
51+ mValueFile = e .getRequiredData (CommonDataKeys .PSI_FILE );
5252
5353 SettingsState .getInstance ().initSetting ();
5454
55- mStringsService . loadStringsByAsync ( mStringsFile , androidStrings -> {
56- if (!isTranslatable (androidStrings )) {
57- NotificationUtil .notifyInfo (mProject , "The strings.xml has no text to translate." );
55+ mValueService . loadValuesByAsync ( mValueFile , values -> {
56+ if (!isTranslatable (values )) {
57+ NotificationUtil .notifyInfo (mProject , "The " + mValueFile . getName () + " has no text to translate." );
5858 return ;
5959 }
60- mAndroidStrings = androidStrings ;
60+ mValues = values ;
6161 showSelectLanguageDialog ();
6262 });
6363 }
6464
65- // Verify that there is a text in the strings.xml file that needs to be translated.
66- private boolean isTranslatable (@ NotNull List <AndroidString > androidStrings ) {
65+ // Verify that there is a text in the value file that needs to be translated.
66+ private boolean isTranslatable (@ NotNull List <AbstractValue > values ) {
6767 boolean isTranslatable = false ;
68- for (AndroidString androidString : androidStrings ) {
68+ for (AbstractValue androidString : values ) {
6969 if (androidString .isTranslatable ()) {
7070 isTranslatable = true ;
7171 break ;
@@ -82,15 +82,15 @@ private void showSelectLanguageDialog() {
8282
8383 @ Override
8484 public void update (@ NotNull AnActionEvent e ) {
85- // The translation option is only show when strings.xml is selected
85+ // The translation option is only show when strings.xml/plurals.xml/arrays.xml is selected
8686 Project project = e .getData (CommonDataKeys .PROJECT );
87- boolean isSelectStringsFile = mStringsService . isStringsFile (e .getData (CommonDataKeys .PSI_FILE ));
88- e .getPresentation ().setEnabledAndVisible (project != null && isSelectStringsFile );
87+ boolean isSelectValueFile = mValueService . isValueFile (e .getData (CommonDataKeys .PSI_FILE ));
88+ e .getPresentation ().setEnabledAndVisible (project != null && isSelectValueFile );
8989 }
9090
9191 @ Override
9292 public void onClickListener (List <Lang > selectedLanguage ) {
93- TranslateTask translationTask = new TranslateTask (mProject , "Translating..." , selectedLanguage , mAndroidStrings , mStringsFile );
93+ TranslateTask translationTask = new TranslateTask (mProject , "Translating..." , selectedLanguage , mValues , mValueFile );
9494 translationTask .setOnTranslateListener (new TranslateTask .OnTranslateListener () {
9595 @ Override
9696 public void onTranslateSuccess () {
@@ -104,5 +104,4 @@ public void onTranslateError(Throwable e) {
104104 });
105105 translationTask .queue ();
106106 }
107-
108107}
0 commit comments