addText method
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());
}
}
}