| Index: localeTools.py | 
| diff --git a/localeTools.py b/localeTools.py | 
| index b6554e0aa52461a7347c843a3b251d035ec34652..14a4661a2030cb7f3ecda2000a4ec0eb7c72dc0f 100644 | 
| --- a/localeTools.py | 
| +++ b/localeTools.py | 
| @@ -300,3 +300,37 @@ def getTranslations(localeConfig, projectName, key): | 
| valid_extension = file.endswith('.json') | 
| if os.path.isfile(path) and valid_extension and not file in files: | 
| os.remove(path) | 
| + | 
| + | 
| +def check_translations(localeConfig): | 
| +    base_path = localeConfig['base_path'] | 
| +    for locale in os.listdir(base_path): | 
| +        jsonpath = os.path.join(base_path, locale, 'messages.json') | 
| + | 
| +        if not os.path.exists(jsonpath): | 
| +            continue | 
| + | 
| +        with codecs.open(jsonpath, 'rb', encoding='utf-8') as f: | 
| +            try: | 
| +                data = json.load(f) | 
| +                for key, value in data.iteritems(): | 
| +                    variables = set() | 
| +                    max_length = value.get('maxLength') | 
| +                    length = len(value['message']) | 
| +                    if (max_length is not None and | 
| +                            length > max_length or length > 160): | 
| +                        print >>sys.stderr, ( | 
| +                            '{} {} -> translation might be too long.' | 
| +                            'More then 160 chars or maxLength exceeded' | 
| +                        ).format(locale, key) | 
| + | 
| +                    for match in re.finditer(r'\$(\S+?)\$', value['message']): | 
| +                        variables.add(match.group(1)) | 
| +                    expected = set(value.get('placeholders', {}).iterkeys()) | 
| +                    if variables != expected: | 
| +                        print >>sys.stderr, ( | 
| +                            '{} {}: Variables used are {} ' | 
| +                            'expected. Variables: {}' | 
| +                        ).format(locale, key, variables, expected) | 
| +            except ValueError: | 
| +                print >>sys.stderr, locale + ', messages.json is not valid.' | 
|  |