Search in sources :

Example 1 with TranslationLanguageBing

use of ai.saiy.android.command.translate.provider.bing.TranslationLanguageBing in project Saiy-PS by brandall76.

the class CommandTranslateLocal method getResponse.

/**
 * Resolve the translation request and return the {@link Outcome}
 *
 * @param ctx       the application context
 * @param voiceData the array list of voice data
 * @param sl        the {@link SupportedLanguage}
 * @param cr        the {@link CommandRequest}
 * @return the created {@link Outcome}
 */
public Outcome getResponse(@NonNull final Context ctx, @NonNull final ArrayList<String> voiceData, @NonNull final SupportedLanguage sl, @NonNull final CommandRequest cr) {
    if (DEBUG) {
        MyLog.i(CLS_NAME, "voiceData: " + voiceData.size() + " : " + voiceData.toString());
    }
    outcome.setTTSLocale(cr.getTTSLocale(ctx));
    switch(SPH.getDefaultTranslationProvider(ctx)) {
        case TranslationProvider.TRANSLATION_PROVIDER_BING:
            if (DEBUG) {
                MyLog.i(CLS_NAME, "TRANSLATION_PROVIDER_BING");
            }
            final Pair<TranslationLanguageBing, String> bingPair = BingTranslate.extract(ctx, voiceData, sl);
            if (bingPair.first != null && bingPair.second != null) {
                String translationRequest = bingPair.second;
                if (ClipboardHelper.isClipboard(ctx, translationRequest)) {
                    try {
                        Thread.sleep(CLIPBOARD_DELAY);
                    } catch (final InterruptedException e) {
                        if (DEBUG) {
                            MyLog.w(CLS_NAME, "InterruptedException");
                            e.printStackTrace();
                        }
                    }
                    final Pair<Boolean, String> clipboardPair = ClipboardHelper.getClipboardContentPair(ctx, cr.getSupportedLanguage());
                    if (clipboardPair.first) {
                        translationRequest = clipboardPair.second;
                    } else {
                        outcome.setUtterance(clipboardPair.second);
                        outcome.setOutcome(Outcome.FAILURE);
                        return outcome;
                    }
                }
                if (!BingTranslate.tooLong(translationRequest)) {
                    if (DEBUG) {
                        MyLog.i(CLS_NAME, "translationRequest: " + translationRequest);
                    }
                    final Pair<Boolean, String> translationResult = BingTranslate.execute(ctx, bingPair.first, translationRequest);
                    if (translationResult.first) {
                        outcome.setUtterance(translationResult.second);
                        outcome.setOutcome(Outcome.SUCCESS);
                        entangledPair.setToastContent(translationResult.second);
                        outcome.setEntangledPair(entangledPair);
                        final Qubit qubit = new Qubit();
                        qubit.setTranslatedText(translationResult.second);
                        outcome.setQubit(qubit);
                        outcome.setTTSLocale(bingPair.first.getLocale());
                    } else {
                        outcome.setUtterance(ctx.getString(ai.saiy.android.R.string.error_translate, PersonalityHelper.getUserNameOrNot(ctx)));
                        outcome.setOutcome(Outcome.FAILURE);
                    }
                } else {
                    outcome.setUtterance(ctx.getString(ai.saiy.android.R.string.error_translate_length, PersonalityHelper.getUserNameOrNot(ctx)));
                    outcome.setOutcome(Outcome.FAILURE);
                }
            } else {
                outcome.setUtterance(ctx.getString(ai.saiy.android.R.string.error_translate_unsupported, PersonalityHelper.getUserNameOrNot(ctx)));
                outcome.setOutcome(Outcome.FAILURE);
            }
            return outcome;
        case TranslationProvider.TRANSLATION_PROVIDER_GOOGLE:
            if (DEBUG) {
                MyLog.i(CLS_NAME, "TRANSLATION_PROVIDER_GOOGLE");
            }
            final Pair<TranslationLanguageGoogle, String> googlePair = GoogleTranslate.extract(ctx, voiceData, sl);
            if (googlePair.first != null && googlePair.second != null) {
                String translationRequest = googlePair.second;
                if (ClipboardHelper.isClipboard(ctx, translationRequest)) {
                    try {
                        Thread.sleep(CLIPBOARD_DELAY);
                    } catch (final InterruptedException e) {
                        if (DEBUG) {
                            MyLog.w(CLS_NAME, "InterruptedException");
                            e.printStackTrace();
                        }
                    }
                    final Pair<Boolean, String> clipboardPair = ClipboardHelper.getClipboardContentPair(ctx, cr.getSupportedLanguage());
                    if (clipboardPair.first) {
                        translationRequest = clipboardPair.second;
                    } else {
                        outcome.setUtterance(clipboardPair.second);
                        outcome.setOutcome(Outcome.FAILURE);
                        return outcome;
                    }
                }
                if (!GoogleTranslate.tooLong(translationRequest)) {
                    if (DEBUG) {
                        MyLog.i(CLS_NAME, "translationRequest: " + translationRequest);
                    }
                    final Pair<Boolean, String> translationResult = GoogleTranslate.execute(ctx, googlePair.first, translationRequest);
                    if (translationResult.first) {
                        outcome.setUtterance(translationResult.second);
                        outcome.setOutcome(Outcome.SUCCESS);
                        entangledPair.setToastContent(translationResult.second);
                        outcome.setEntangledPair(entangledPair);
                        final Qubit qubit = new Qubit();
                        qubit.setTranslatedText(translationResult.second);
                        outcome.setQubit(qubit);
                        outcome.setTTSLocale(UtilsLocale.stringToLocale(googlePair.first.getLanguage()));
                    } else {
                        outcome.setUtterance(ctx.getString(ai.saiy.android.R.string.error_translate, PersonalityHelper.getUserNameOrNot(ctx)));
                        outcome.setOutcome(Outcome.FAILURE);
                    }
                } else {
                    outcome.setUtterance(ctx.getString(ai.saiy.android.R.string.error_translate_length, PersonalityHelper.getUserNameOrNot(ctx)));
                    outcome.setOutcome(Outcome.FAILURE);
                }
            } else {
                outcome.setUtterance(ctx.getString(ai.saiy.android.R.string.error_translate_unsupported, PersonalityHelper.getUserNameOrNot(ctx)));
                outcome.setOutcome(Outcome.FAILURE);
            }
            return outcome;
        case TranslationProvider.TRANSLATION_PROVIDER_UNKNOWN:
        default:
            if (DEBUG) {
                MyLog.i(CLS_NAME, "TRANSLATION_PROVIDER_UNKNOWN");
            }
            outcome.setUtterance(ctx.getString(ai.saiy.android.R.string.error_translate_unsupported, PersonalityHelper.getUserNameOrNot(ctx)));
            outcome.setOutcome(Outcome.FAILURE);
            return outcome;
    }
}
Also used : TranslationLanguageGoogle(ai.saiy.android.command.translate.provider.google.TranslationLanguageGoogle) Qubit(ai.saiy.android.processing.Qubit) TranslationLanguageBing(ai.saiy.android.command.translate.provider.bing.TranslationLanguageBing)

Aggregations

TranslationLanguageBing (ai.saiy.android.command.translate.provider.bing.TranslationLanguageBing)1 TranslationLanguageGoogle (ai.saiy.android.command.translate.provider.google.TranslationLanguageGoogle)1 Qubit (ai.saiy.android.processing.Qubit)1