summaryrefslogtreecommitdiffstats
path: root/scripts/fix_placeholders.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/fix_placeholders.py')
-rwxr-xr-xscripts/fix_placeholders.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/scripts/fix_placeholders.py b/scripts/fix_placeholders.py
new file mode 100755
index 0000000..e940dcc
--- /dev/null
+++ b/scripts/fix_placeholders.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+
+import json
+
+from collections import OrderedDict
+from glob import glob
+
+SOURCE_LOCALE = 'src/_locales/en_US/messages.json'
+
+
+def fix_locale(locale, placeholder_keys):
+ # read in locale, preserving existing ordering
+ with open(locale, 'r') as f:
+ data = json.load(f, object_pairs_hook=OrderedDict)
+
+ # restore missing placeholders
+ for key in placeholder_keys:
+ if key in data and "placeholders" not in data[key]:
+ data[key]["placeholders"] = source_data[key]["placeholders"]
+
+ with open(locale, 'w') as f:
+ json.dump(data, f, ensure_ascii=False, indent=4)
+
+
+if __name__ == '__main__':
+ with open(SOURCE_LOCALE, 'r') as f:
+ source_data = json.load(f, object_pairs_hook=OrderedDict)
+
+ # get keys of locale messages with placeholders
+ placeholder_keys = []
+ for key in source_data:
+ if "placeholders" in source_data[key]:
+ placeholder_keys.append(key)
+
+ # fix all locales
+ for locale in glob('src/_locales/*/*.json'):
+ if locale == SOURCE_LOCALE:
+ continue
+
+ fix_locale(locale, placeholder_keys)