generateL10n function
void
generateL10n()
根据lib/common/l10n/language.json生成国际化配置文件
Implementation
void generateL10n() {
// 读取JSON文件
String path = "lib/common/l10n";
String languageJson = "$path/language.json";
File languageFile = File(languageJson);
if (!languageFile.existsSync()) {
// ignore: avoid_print
print("$languageJson not found");
return;
}
// 解析 language.json
Map<String, dynamic> languageData =
json.decode(languageFile.readAsStringSync());
/// meta_seo.json
String metaSeoJson = "$path/meta_seo.json";
File metaSeoFile = File(metaSeoJson);
/// 解析 meta_seo.json
Map<String, dynamic> metaSeoData = {};
if (metaSeoFile.existsSync()) {
metaSeoData = json.decode(metaSeoFile.readAsStringSync());
}
// 解析JSON内容
Map<String, dynamic> jsonData = {...languageData, ...metaSeoData};
// 遍历JSON数据的每个键值对
jsonData.forEach((key, value) {
// 遍历每个键值对中的语言键值对
value.forEach((language, text) {
// 构造文件名
String fileName = '$path/app_$language.arb';
// 检查文件是否存在,如果不存在则创建新文件
File file = File(fileName);
if (!file.existsSync()) {
file.createSync();
}
// 读取language文件内容
String childJsonContent = file.readAsStringSync();
Map<String, dynamic> childJsonData = {};
if (childJsonContent.isNotEmpty) {
childJsonData = json.decode(childJsonContent);
}
childJsonData[key] = text;
file.writeAsStringSync(
const JsonEncoder.withIndent(' ').convert(childJsonData));
file.exists();
});
});
// ignore: avoid_print
print("output success");
}