execute method

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

Implementation

Future<void> execute(Map<String, String> keysToTextsMap) async {
  final length = keysToTextsMap.length;
  stdout.writeln('⬆️ Uploading ${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 _resourcesApi.createResource(
      key: entry.key,
      projectId: project.id,
      base: LocalizedTextModel(
        locale: baseLocale,
        text: entry.value,
        // qaText: qaText,
      ),
      translations: translations,
    );
    index++;
  }
}