dev
dart 90 lines 2.26 KB
Raw
1 import 'dart:convert';
2 import 'dart:io';
3
4 import '../../print_verbose_dummy.dart';
5
6 void appendStringToArbFile(String fileName, String name, String text, {bool force = false}) {
7 final file = File(fileName);
8 final arbObj = readArbFile(file);
9
10 if (arbObj.containsKey(name) && !force) {
11 print("String $name already exists in $fileName!");
12 return;
13 }
14
15 arbObj.addAll({name: text});
16
17 final outputContent = json
18 .encode(arbObj)
19 .replaceAll('","', '",\n "')
20 .replaceAll('{"', '{\n "')
21 .replaceAll('"}', '"\n}')
22 .replaceAll('":"', '": "')
23 .replaceAll('\$ {', '\${');
24
25 file.writeAsStringSync(outputContent);
26 }
27
28 void appendStringsToArbFile(String fileName, Map<String, String> strings) {
29 final file = File(fileName);
30 final arbObj = readArbFile(file);
31
32 arbObj.addAll(strings);
33
34 final outputContent = json
35 .encode(arbObj)
36 .replaceAll('","', '",\n "')
37 .replaceAll('{"', '{\n "')
38 .replaceAll('"}', '"\n}')
39 .replaceAll('":"', '": "')
40 .replaceAll('\$ {', '\${');
41
42 file.writeAsStringSync(outputContent);
43 }
44
45 Map<String, dynamic> readArbFile(File file) {
46 final inputContent = file.readAsStringSync();
47
48 return json.decode(inputContent) as Map<String, dynamic>;
49 }
50
51 String getArbFileName(String lang) {
52 final shortLang = lang.split("-").first;
53 return "./res/values/strings_$shortLang.arb";
54 }
55
56 List<String> getMissingKeysInArbFile(String fileName, Iterable<String> langKeys) {
57 final file = File(fileName);
58 final arbObj = readArbFile(file);
59 final results = <String>[];
60
61 for (var langKey in langKeys) {
62 if (!arbObj.containsKey(langKey)) {
63 results.add(langKey);
64 }
65 }
66
67 return results;
68 }
69
70 void alphabetizeArbFile(String fileName) {
71 final file = File(fileName);
72 final arbObj = readArbFile(file);
73
74 final sortedKeys = arbObj.keys.toList()
75 ..sort((a, b) => a.toLowerCase().compareTo(b.toLowerCase()));
76 final Map<String, dynamic> sortedArbObj = {};
77 for (var key in sortedKeys) {
78 sortedArbObj[key] = arbObj[key];
79 }
80
81 final outputContent = json
82 .encode(sortedArbObj)
83 .replaceAll('","', '",\n "')
84 .replaceAll('{"', '{\n "')
85 .replaceAll('"}', '"\n}')
86 .replaceAll('":"', '": "')
87 .replaceAll('\$ {', '\${');
88
89 file.writeAsStringSync(outputContent);
90 }