Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 # This Source Code Form is subject to the terms of the Mozilla Public | 1 # This Source Code Form is subject to the terms of the Mozilla Public |
2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
4 | 4 |
5 import re | 5 import re |
6 import os | 6 import os |
7 import sys | 7 import sys |
8 import codecs | 8 import codecs |
9 import json | 9 import json |
10 import urlparse | 10 import urlparse |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
306 base_path = localeConfig['base_path'] | 306 base_path = localeConfig['base_path'] |
307 for locale in os.listdir(base_path): | 307 for locale in os.listdir(base_path): |
308 jsonpath = os.path.join(base_path, locale, 'messages.json') | 308 jsonpath = os.path.join(base_path, locale, 'messages.json') |
309 | 309 |
310 if not os.path.exists(jsonpath): | 310 if not os.path.exists(jsonpath): |
311 continue | 311 continue |
312 | 312 |
313 with codecs.open(jsonpath, 'rb', encoding='utf-8') as f: | 313 with codecs.open(jsonpath, 'rb', encoding='utf-8') as f: |
314 try: | 314 try: |
315 data = json.load(f) | 315 data = json.load(f) |
316 for key, value in data.iteritems(): | |
317 variables = set() | |
318 max_length = value.get('maxLength') | |
319 length = len(value['message']) | |
320 if (max_length is not None and | |
321 length > max_length or length > 160): | |
322 print >>sys.stderr, ( | |
323 '{} {} -> translation might be too long.' | |
324 'More then 160 chars or maxLength exceeded' | |
325 ).format(locale, key) | |
326 | |
327 for match in re.finditer(r'\$(\S+?)\$', value['message']): | |
328 variables.add(match.group(1)) | |
329 expected = set(value.get('placeholders', {}).iterkeys()) | |
330 if variables != expected: | |
331 print >>sys.stderr, ( | |
332 '{} {}: Variables used are {} ' | |
333 'expected. Variables: {}' | |
334 ).format(locale, key, variables, expected) | |
316 except ValueError: | 335 except ValueError: |
317 print >>sys.stderr, locale + ', messages.json is not valid.' | 336 print >>sys.stderr, locale + ', messages.json is not valid.' |
318 | |
319 for key, value in data.iteritems(): | |
tlucas
2017/11/13 12:23:51
NOT LGTM, found a late error. sorry.
When a messa
erick
2017/11/20 11:41:09
Done. tox and flake8 were fine, too.
| |
320 variables = set() | |
321 max_length = value.get('maxLength') | |
322 length = len(value['message']) | |
323 if max_length is not None and length > max_length or length > 160: | |
324 print >>sys.stderr, ( | |
325 '{} {} -> translation might be too long. More then 160 ' | |
326 'chars or maxLength exceeded').format(locale, key) | |
327 | |
328 for match in re.finditer(r'\$(\S+?)\$', value['message']): | |
329 variables.add(match.group(1)) | |
330 expected = set(value.get('placeholders', {}).iterkeys()) | |
331 if variables != expected: | |
332 print >>sys.stderr, ( | |
333 '{} {}: Variables used are {} ' | |
334 'expected. Variables: {}' | |
335 ).format(locale, key, variables, expected) | |
LEFT | RIGHT |