toJSON method

String? toJSON(
  1. String lang, [
  2. bool isDefault = false
])

Serialize in JSON.

Implementation

String? toJSON(String lang, [bool isDefault = false]) {
  final value = translations[lang];
  if (value == null || value.isEmpty) return null;

  final args = getArgs(value);
  final hasMetadata = isDefault && (args.isNotEmpty || description != null);

  final List<String> buf = [];

  if (hasMetadata) {
    buf.add('  "$text": "$value",');
    buf.add('  "@$text": {');

    if (args.isEmpty) {
      if (description != null) {
        buf.add('    "description": "$description"');
      }
    } else {
      if (description != null) {
        buf.add('    "description": "$description",');
      }

      buf.add('    "placeholders": {');
      final List<String> group = [];
      for (final arg in args) {
        group.add('      "$arg": {"type": "String"}');
      }
      buf.add(group.join(',\n'));
      buf.add('    }');
    }

    buf.add('  }');
  } else {
    buf.add('  "$text": "$value"');
  }

  return buf.join('\n');
}