localizeProject function

Future<void> localizeProject()

Implementation

Future<void> localizeProject() async {
  // Map<String, String> translationsKeyValue = {};

  Directory lib = Directory('lib');
  if (!lib.existsSync()) {
    ConsoleLog.error("lib directory doesn't exist");
    return;
  }

  final files = lib.listSync();

  for (var fileSystemEntity in files) {
    final file = File(fileSystemEntity.path);

    // ✅ Read first line
    final firstLineStream = file
        .openRead(0, 10)
        .transform(utf8.decoder)
        .transform(const LineSplitter());

    String? firstLine;
    await for (var line in firstLineStream) {
      firstLine = line;
      break;
    }

    if (firstLine != null && firstLine.contains('@ignore')) {
      continue;
    }

    ConsoleLog.line();
    await for (var line
        in file.openRead().transform(utf8.decoder).transform(const LineSplitter())) {
      final stringRegex = RegExp(
        r'''(?<!\w)(["'])(?:(?=(\\?))\2.)*?\1''',
      );

      final shouldIgnore =
          RegExp(r'\b(import|export)\b').hasMatch(line) || line.contains('@ignore');

      if (stringRegex.hasMatch(line) && !shouldIgnore) {
        ConsoleLog.step(line);
      }
    }
    ConsoleLog.line();
  }
}