updateJson function

Future<void> updateJson(
  1. String lang,
  2. Map<String, String> keys,
  3. String sourceLang
)

Updates translation file for a specific language

Implementation

Future<void> updateJson(
    String lang,
    Map<String, String> keys,
    String sourceLang,
    ) async {
  final outputPath = 'assets/translations/$lang.json';
  final oldJson = loadJson(outputPath);
  final newJson = <String, String>{};

  print('🌐 Translating to [$lang]...');

  for (final entry in keys.entries) {
    if (oldJson.containsKey(entry.key)) {
      newJson[entry.key] = oldJson[entry.key]; // keep existing
    } else {
      try {
        final translation = await translator.translate(
          entry.value,
          from: sourceLang,
          to: lang,
        );
        newJson[entry.key] = translation.text;
        print('   ${entry.key} => ${translation.text}');
      } catch (_) {
        newJson[entry.key] = entry.key; // fallback if translation fails
      }
    }
  }

  final jsonContent = JsonEncoder.withIndent('  ').convert(newJson);
  writeFileSafely(outputPath, jsonContent);

  print('✅ $lang.json updated');
}