mirror of https://github.com/jetkvm/kvm.git
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
import argparse
|
|
import json
|
|
from pathlib import Path
|
|
|
|
def main():
|
|
p = argparse.ArgumentParser(
|
|
description="Sort translations keys in message *.json files"
|
|
)
|
|
p.add_argument(
|
|
"--path", default="./localization/messages/", help="path to messages *.json"
|
|
)
|
|
args = p.parse_args()
|
|
|
|
messages_path = Path(args.path)
|
|
if not messages_path.is_dir():
|
|
print(f"message path is not a directory: {messages_path}")
|
|
raise SystemExit(2)
|
|
|
|
files = list(messages_path.glob("*.json"))
|
|
if len(files) == 0:
|
|
print(f"no message files (*.json) found in: {messages_path}")
|
|
raise SystemExit(3)
|
|
|
|
for f in files:
|
|
print(f"Processing {f.name} ...")
|
|
data = json.loads(f.read_text(encoding="utf-8"))
|
|
|
|
# Keep $schema first if present
|
|
schema = None
|
|
if "$schema" in data:
|
|
schema = data.pop("$schema")
|
|
|
|
sorted_items = dict(sorted(data.items()))
|
|
|
|
if schema is not None:
|
|
out = {"$schema": schema}
|
|
out.update(sorted_items)
|
|
else:
|
|
out = sorted_items
|
|
|
|
f.write_text(
|
|
json.dumps(out, ensure_ascii=False, indent=4) + "\n", encoding="utf-8"
|
|
)
|
|
|
|
print(f"Processed {len(files)} files in {messages_path}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|