translateLanguages static method

Future translateLanguages(
  1. List<String> wordsToTranslate,
  2. FromToLanguageModel fromToLanguageModel, {
  3. String lastWordTranslated = "",
})

Implementation

static Future translateLanguages(
    List<String> wordsToTranslate, FromToLanguageModel fromToLanguageModel,
    {String lastWordTranslated = ""}) async {
  // set up multiple lists

  if (lastWordTranslated.isNotEmpty) {
    int endIndex = wordsToTranslate
            .indexWhere((element) => element == lastWordTranslated) +
        1;
    wordsToTranslate.removeRange(0, endIndex);
  }

  List<String> wordsAdapter = _setupWordsToTranslate(wordsToTranslate);
  List<TranslatedWordsModel> translatedWords = [];
  TranslatedWordsModel translatedWordsModel = TranslatedWordsModel(
    baseWordsString: wordsAdapter.join(" || "),
    baseWordsList: wordsAdapter,
    fromLanguage: fromToLanguageModel.baseLanguage,
  );

  // translate words ...
  for (String words in wordsAdapter) {
    for (ToLanguages toLanguage in fromToLanguageModel.toLanguages) {
      String translatedWord = await _translate(
        baseLanguage: fromToLanguageModel.baseLanguage,
        toLanguage: toLanguage.languageName,
        content: words,
      );

      translatedWordsModel.translatedWordsString = "$translatedWord || ";
      translatedWordsModel.toLanguage = toLanguage.languageName;
      translatedWordsModel.translatedWordsList = translatedWordsModel
          .translatedWordsString
          .split("||")
          .map((e) => e.trim())
          .toList();
      translatedWordsModel.translatedWordsList
          ?.removeWhere((element) => element.isEmpty);

      translatedWords.add(translatedWordsModel);
      translatedWordsModel.language = toLanguage.languageName;
      if (translatedWord.trim().replaceAll("||", "").isNotEmpty) {
        print(
            "✅ Translated ${translatedWordsModel.translatedWordsList!.length} words to ${toLanguage.languageName} successfully ...");
      }
    }
  }
  return translatedWords;
}