translateBulkToSingleTarget method
Future<List<String> >
translateBulkToSingleTarget(
- List<
String> sources, - LanguageCode sourceLanguage,
- LanguageCode target
override
Translates given texts to specified language
sources
- list of text which should be translated
sourceLanguage
- the language in which sources
were given
target
- language to which sources
should be translated
Implementation
@override
Future<List<String>> translateBulkToSingleTarget(
List<String> sources,
LanguageCode sourceLanguage,
LanguageCode target,
) async {
logger.info(
'Translate bulk "$sources" from $sourceLanguage to single $target');
List<MapEntry<String, String>> parameters = [];
parameters.add(MapEntry('source_lang', sourceLanguage));
parameters.add(MapEntry('target_lang', target));
for (final source in sources) {
parameters.add(MapEntry('text', Uri.encodeComponent(source)));
}
final parametersStr =
parameters.map((x) => '${x.key}=${x.value}').join('&');
final apiResult = await _httpClient.post<_DeepLTranslation>(
path: 'v2/translate?$parametersStr',
headers: {
'Authorization': 'DeepL-Auth-Key $apiKey',
},
decoder: (response) => _decodeTranslationJson(response.body),
body: {},
);
if (!apiResult.succeeded) {
logger.warning('Translation failed');
return sources;
}
return apiResult.valueUnsafe.translations.map((x) => x.text).toList();
}