OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 """Verifies that the message tags in the 2nd and subsequent JSON message files | |
7 match those specified in the first. | |
8 | |
9 This is typically run when the translations are updated before a release, to | |
10 check that nothing got missed. | |
11 """ | |
12 | |
13 import json | |
14 import sys | |
15 import string | |
16 | |
17 def CheckTranslation(filename, translation, messages): | |
18 """Check |messages| for missing Ids in |translation|, and similarly for unused | |
19 Ids. If there are missing/unused Ids then report them and return failure. | |
20 """ | |
21 message_tags = set(map(string.lower, messages.keys())) | |
22 translation_tags = set(map(string.lower, translation.keys())) | |
23 if message_tags == translation_tags: | |
24 return True | |
25 | |
26 undefined_tags = message_tags - translation_tags | |
27 if undefined_tags: | |
28 print '%s: Missing: %s' % (filename, ", ".join(undefined_tags)) | |
29 | |
30 unused_tags = translation_tags - message_tags | |
31 if unused_tags: | |
32 print '%s: Unused: %s' % (filename, ", ".join(unused_tags)) | |
33 | |
34 return False | |
35 | |
36 | |
37 def main(): | |
38 if len(sys.argv) < 3: | |
39 print 'Usage: verify-translations.py <messages> <translation-files...>' | |
40 return 1 | |
41 | |
42 en_messages = json.load(open(sys.argv[1], 'r')) | |
43 exit_code = 0 | |
44 for f in sys.argv[2:]: | |
45 translation = json.load(open(f, 'r')) | |
46 if not CheckTranslation(f, translation, en_messages): | |
47 exit_code = 1 | |
48 | |
49 return exit_code | |
50 | |
51 | |
52 if __name__ == '__main__': | |
53 sys.exit(main()) | |
OLD | NEW |