Index: localeTools.py |
diff --git a/localeTools.py b/localeTools.py |
index b6554e0aa52461a7347c843a3b251d035ec34652..0dcbc91c6e7b0045c29dcb979545efa744b39414 100644 |
--- a/localeTools.py |
+++ b/localeTools.py |
@@ -300,3 +300,36 @@ 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) |
+ except ValueError: |
+ print >>sys.stderr, locale + ', messages.json is not valid.' |
+ |
+ 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.
|
+ 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) |