translateText method

Future<String> translateText(
  1. String text, {
  2. String? sourceLanguageCode,
  3. String? targetLanguageCode,
  4. List<String>? ignoreWords,
})

Implementation

Future<String> translateText(String text,
    {String? sourceLanguageCode,
    String? targetLanguageCode,
    List<String>? ignoreWords}) async {
  final source = _getSourceLanguage(sourceLanguageCode);
  final target = _getTargetLanguage(targetLanguageCode);
  final ignore = ignoreWords ?? [];

  if (text.isEmpty) {
    throw "Input text should not be empty";
  }

  // check if text is already translated
  final result = _repository.getTranslationForText(text, source, target);
  if (result != null) {
    return result;
  }

  // translate text
  final translatedText = await _httpClient.performTextTranslationRequest(
      text, source, target, ignore);

  if (translatedText == null) {
    throw "Failed to translate text";
  }

  // store in cache
  _repository.storePlainData(translatedText, source, target);

  return translatedText;
}