generateTranslationKeys function

Future<void> generateTranslationKeys()

Implementation

Future<void> generateTranslationKeys() async {
  DartgenxConfig config = DartgenxConfig.load();

  String? inputFilePath;
  if (config.inputPath?.translationFile == null) {
    inputFilePath = Input(
      prompt:
      'Enter the full path to the translations file.',
    ).interact();
  } else {
    inputFilePath = config.inputPath?.translationFile ?? "";
  }

  final inputFile = File(inputFilePath);

  if (!inputFile.existsSync()) {
    ConsoleLog.error('Input file not found: $inputFilePath');
    return;
  }

  final content = await inputFile.readAsString();
  final Map<String, dynamic> data = jsonDecode(content);

  final buffer = StringBuffer();

  buffer.writeln('class TranslationKeys {');
  buffer.writeln('  TranslationKeys._();\n');

  for (final key in data.keys) {
    buffer.writeln('  static const String ${ProjectUtils.toCamelCase(key)} = "$key";');
  }

  buffer.writeln('}');

  final outputFile = File(config.outputPath?.translationKeys ?? 'lib/localization/translation_keys.dart');

  outputFile.createSync(recursive: true);

  outputFile.writeAsStringSync(buffer.toString());

  ConsoleLog.success('TranslationKeys generated at ${outputFile.path}');
}