// This script has one task, which is to prevent the translations from // being accidentally deleted, as we have more than 40 files for both the // arb files (source) and the dart files (the generated) // which make it harder to review the changes, some keys can be deleted // without update the generated dart files which will cause a bug/build failure // on the next time running the script after doing some changes to the translations // which make it harder to revert the changes // The script must run in the root project folder instead of the scripts folder // ignore_for_file: depend_on_referenced_packages, avoid_print import 'dart:convert'; import 'dart:io' show File, exit; import 'package:path/path.dart' as path; import 'package:yaml/yaml.dart'; // This must be updated once add or remove some translation keys // if you update existing keys, no need to update it const _expectedTranslationKeysLength = 100; Future main(List args) async { final l10nYamlText = await File('l10n.yaml').readAsString(); final l10nYaml = loadYaml(l10nYamlText); final arbDir = l10nYaml['arb-dir']; final templateArbFileName = l10nYaml['template-arb-file']; final templateArbFile = File(path.join(arbDir, templateArbFileName)); print('The file path to template arb file: ${templateArbFile.path}'); final templateArb = jsonDecode(await templateArbFile.readAsString()) as Map; print( 'The length of the current translation keys: ${templateArb.keys.length}'); final newTranslationKeysLength = templateArb.keys.length; if (newTranslationKeysLength > _expectedTranslationKeysLength) { print( "You have add a new keys, please update the '_expectedTranslationKeysLength' value", ); print('$newTranslationKeysLength > $_expectedTranslationKeysLength'); exit(1); } if (newTranslationKeysLength < _expectedTranslationKeysLength) { print( "You have removed some keys, please update the '_expectedTranslationKeysLength' value", ); print('$newTranslationKeysLength < $_expectedTranslationKeysLength'); exit(1); } if (newTranslationKeysLength != _expectedTranslationKeysLength) { print( "It's looks like you have modified the keys length without updating the `_expectedTranslationKeysLength` value", ); print('$newTranslationKeysLength != $_expectedTranslationKeysLength'); exit(1); } }