pull_locales_postprocess: deduplicate and placeholderize
This commit is contained in:
parent
50a2b5dd72
commit
bf94aa93cf
|
@ -1,2 +1,2 @@
|
||||||
ruby pull_locales.rb
|
ruby pull_locales.rb
|
||||||
python fill_locale_placeholders.py
|
python pull_locales_postprocess.py
|
||||||
|
|
|
@ -3,23 +3,34 @@ import io, os, json, re
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
with io.open('_locales/en/messages.json', 'r', encoding='utf-8') as f:
|
with io.open('_locales/en/messages.json', 'r', encoding='utf-8') as f:
|
||||||
english_placeholders = [(k, v['placeholders']) for k,v in json.load(f).items()
|
items = json.load(f).items()
|
||||||
|
english = [(k, v['message']) for k, v in items if 'message' in v]
|
||||||
|
english_placeholders = [(k, v['placeholders']) for k,v in items
|
||||||
if 'placeholders' in v]
|
if 'placeholders' in v]
|
||||||
|
|
||||||
for locale_name in os.listdir('_locales'):
|
for locale_name in os.listdir('_locales'):
|
||||||
if locale_name == 'en':
|
if locale_name == 'en':
|
||||||
continue
|
continue
|
||||||
|
if not re.match(r'^\w{2}(_\w{2,3})?$', locale_name):
|
||||||
|
print('Skipped %s: not a locale dir' % locale_name)
|
||||||
|
continue
|
||||||
loc_path = '_locales/' + locale_name + '/messages.json'
|
loc_path = '_locales/' + locale_name + '/messages.json'
|
||||||
with io.open(loc_path, 'r+', encoding='utf-8') as f:
|
with io.open(loc_path, 'r+', encoding='utf-8') as f:
|
||||||
loc = json.load(f, object_pairs_hook=OrderedDict)
|
loc = json.load(f, object_pairs_hook=OrderedDict)
|
||||||
|
|
||||||
|
deduplicated = 0
|
||||||
|
for msgId, message in english:
|
||||||
|
if msgId in loc and loc[msgId].get('message', '') == message:
|
||||||
|
del loc[msgId]
|
||||||
|
deduplicated += 1
|
||||||
|
|
||||||
changed = 0
|
changed = 0
|
||||||
for msgId, placeholder in english_placeholders:
|
for msgId, placeholder in english_placeholders:
|
||||||
if msgId in loc and cmp(placeholder, loc[msgId].get('placeholders', None)) != 0:
|
if msgId in loc and cmp(placeholder, loc[msgId].get('placeholders', None)) != 0:
|
||||||
loc[msgId]['placeholders'] = placeholder
|
loc[msgId]['placeholders'] = placeholder
|
||||||
changed += 1
|
changed += 1
|
||||||
|
|
||||||
if changed > 0:
|
if deduplicated > 0 or changed > 0:
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
json_str = json.dumps(loc, indent=1, ensure_ascii=False,
|
json_str = json.dumps(loc, indent=1, ensure_ascii=False,
|
||||||
separators=(',', ': '), encoding='utf-8')
|
separators=(',', ': '), encoding='utf-8')
|
||||||
|
@ -27,4 +38,8 @@ for locale_name in os.listdir('_locales'):
|
||||||
json_str, flags=re.MULTILINE)
|
json_str, flags=re.MULTILINE)
|
||||||
f.write(json_tabs)
|
f.write(json_tabs)
|
||||||
f.truncate()
|
f.truncate()
|
||||||
print 'Placeholders added to %s: %d' % (locale_name, changed)
|
print('%s: %d deduplicated%s' % (
|
||||||
|
locale_name,
|
||||||
|
deduplicated,
|
||||||
|
', %d placeholder(s) added' % changed if changed else ''
|
||||||
|
))
|
Loading…
Reference in New Issue
Block a user