execute method

Future<void> execute(
  1. Map<String, String> keysToTextsMap
)

Implementation

Future<void> execute(Map<String, String> keysToTextsMap) async {
  if (keysToTextsMap.isEmpty) {
    return;
  }
  final length = keysToTextsMap.length;
  stdout.writeln('⬆️ $tag ${length} key${length == 1 ? '' : 's'}');

  final project = _configManager.project;
  if (project == null) {
    throw ProjectMissing();
  }
  final baseLocale = project.baseLocale;

  //run qa //todo display QA results
  // final qaResults = [];
  // final qaResults = await _translationApi.qualityAssurance(
  //   projectId: project.id,
  //   texts: keysToTextsMap.values.toList(),
  //   locale: baseLocale,
  // );

  //run translation
  final translationResponse = await _translationApi.translateText(
    projectId: project.id,
    texts: keysToTextsMap.values.toList(),
    baseLocale: baseLocale,
    targetLocales: project.targetLocales ?? [],
  );

  int index = 0;
  for (var entry in keysToTextsMap.entries) {
    // final qaText = qaResults[index];
    final translations = translationResponse
        .map(
          (item) => LocalizedTextModel(
            locale: item.locale,
            text: item.texts[index],
          ),
        )
        .toList();

    await submitResource(
      key: entry.key,
      projectId: project.id,
      base: LocalizedTextModel(
        locale: baseLocale,
        text: entry.value,
        // qaText: qaText,
      ),
      translations: translations,
    );
    index++;
  }
}