translate method
Future<String>
translate(
- String source,
- LanguageCode sourceLanguage,
- LanguageCode target
override
Translates given text to specified language
source - text which should be translated
sourceLanguage - the language in which source was given
target - language to which source should be translated
Implementation
@override
Future<String> translate(
String source,
LanguageCode sourceLanguage,
LanguageCode target,
) async {
logger.info('Translate "$source" from $sourceLanguage to $target');
final apiResult = await _httpClient.post<_LibreTranslateResponse>(
path: '/translate',
headers: {
'Content-Type': 'application/json',
},
body: {
'q': source,
'source': sourceLanguage,
'target': target,
'api_key': (apiKey ?? '').isEmpty ? null : apiKey,
},
decoder: (response) => _LibreTranslateResponse.fromJson(
jsonDecode(utf8.decode(response.bodyBytes)),
),
);
if (!apiResult.succeeded) {
logger.warning('Translation failed');
return source;
}
if (apiResult.valueUnsafe.translatedText.isEmpty) {
logger.warning('Translation is empty. Source: $source; Target: $target');
return source;
}
return apiResult.valueUnsafe.translatedText;
}