addText method

Future<void> addText(
  1. String text,
  2. String api
)

Implementation

Future<void> addText(String text, String api) async {
  final directory = Directory(_directoryPath);

  if (directory.existsSync()) {
    List<FileSystemEntity> files = directory.listSync();
    List<String> languages = files
        .map((file) => file.uri.pathSegments.last.split('.').first)
        .toList();
    final loading = CircleLoading(
      onDoneText: 'The Translation Added',
      loadingText: 'Adding the translation with GPT',
    );
    loading.start();
    Map<String, dynamic> data = await askGPT(text, languages, api);

    if (data.isNotEmpty) {
      var encoder = JsonEncoder.withIndent('  ');

      for (var entry in data.entries) {
        String key = entry.key;
        String value = entry.value;
        File newLangFile = File('$_directoryPath/$key.json');
        if (newLangFile.existsSync()) {
          try {
            String jsonString = await newLangFile.readAsString();
            Map<String, dynamic> jsonMap2 = jsonDecode(jsonString);
            jsonMap2[data['en']
                .replaceAll(" ", "_")
                .replaceAll(".", "")
                .replaceAll("'", "")
                .toLowerCase()] = value;
            String updatedJsonString = encoder.convert(jsonMap2);

            await newLangFile.writeAsString(updatedJsonString, flush: true);
          } catch (e) {
            print('Error reading or updating file for language: $key'.red());
            print('Error details: $e'.red());
          }
        } else {
          print('Language file not found for code: $key'.red());
        }
      }
      loading.stop();
      print('''
        -----------------👀 The Translation Added 👀-----------------
        -> The text translated to [${languages.join(', ')}]
        -> Original text: $text
        -> The text Key: ${data['en'].replaceAll(" ", "_").replaceAll(".", "").replaceAll("'", "").toLowerCase()}
        -----------------------------------------------------------
      '''
          .green());
    } else {
      print('Empty or invalid data received from GPT'.red());
    }
  }
}