writeCombined method
Write one combined bundle.json (all locales).
Implementation
void writeCombined(String path) {
final strings = <String, dynamic>{};
perLocale.forEach((locale, data) {
(data['strings'] as Map).forEach((sid, spec) {
final specMap = spec as Map;
if (!strings.containsKey(sid)) {
final meta = <String, dynamic>{
for (final e in specMap.entries)
if (![
'templates',
'enum_values',
'cell_hashes',
'enum_hashes',
'locale'
].contains(e.key))
e.key: e.value
};
strings[sid] = {...meta, 'cells': <String, dynamic>{}};
}
(strings[sid]['cells'] as Map)[locale] = {
'templates': specMap['templates'],
'enums': specMap['enum_values'],
};
});
});
final combined = {
'version': 1,
'source_locale': sourceLocale,
'locales': locales,
if (translation != null) 'translation': translation,
'strings': strings,
};
final f = File(path);
f.parent.createSync(recursive: true);
f.writeAsStringSync(
'${const JsonEncoder.withIndent(' ').convert(combined)}\n');
}