import 'dart:convert'; import 'dart:io'; void appendStringToArbFile(String fileName, String name, String text) { final file = File(fileName); final arbObj = readArbFile(file); if (arbObj.containsKey(name)) { print("String $name already exists in $fileName!"); return; } arbObj.addAll({name: text}); final outputContent = json .encode(arbObj) .replaceAll('","', '",\n "') .replaceAll('{"', '{\n "') .replaceAll('"}', '"\n}') .replaceAll('":"', '": "') .replaceAll('\$ {', '\${'); file.writeAsStringSync(outputContent); } void appendStringsToArbFile(String fileName, Map strings) { final file = File(fileName); final arbObj = readArbFile(file); arbObj.addAll(strings); final outputContent = json .encode(arbObj) .replaceAll('","', '",\n "') .replaceAll('{"', '{\n "') .replaceAll('"}', '"\n}') .replaceAll('":"', '": "') .replaceAll('\$ {', '\${'); file.writeAsStringSync(outputContent); } Map readArbFile(File file) { final inputContent = file.readAsStringSync(); return json.decode(inputContent) as Map; } String getArbFileName(String lang) { final shortLang = lang .split("-") .first; return "./res/values/strings_$shortLang.arb"; } List getMissingKeysInArbFile(String fileName, Iterable langKeys) { final file = File(fileName); final arbObj = readArbFile(file); final results = []; for (var langKey in langKeys) { if (!arbObj.containsKey(langKey)) { results.add(langKey); } } return results; }