mirror of https://github.com/fairyglade/ly.git
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from pathlib import Path
|
|
from sys import stderr
|
|
|
|
|
|
def process_lang_file(path: Path, lang_keys: list[str]) -> None:
|
|
# read key-value-pairs from lang file into dict
|
|
existing_entries = {}
|
|
with open(path, "r", encoding="UTF-8") as fh:
|
|
while line := fh.readline():
|
|
try:
|
|
key, value = line.split("=", 1)
|
|
existing_entries[key.strip()] = value.strip()
|
|
except ValueError: # line does not contain '='
|
|
continue
|
|
|
|
# re-write current lang file with entries in order of occurence in `lang_keys`
|
|
# and with empty lines for missing translations
|
|
with open(path, "w", encoding="UTF-8") as fh:
|
|
for item in lang_keys:
|
|
try:
|
|
fh.write(f"{item} = {existing_entries[item]}\n")
|
|
except KeyError: # no translation for `item` yet
|
|
fh.write("\n")
|
|
|
|
|
|
def main() -> None:
|
|
zig_lang_file = Path(__file__).parent.joinpath("../../src/config/Lang.zig").resolve()
|
|
if not zig_lang_file.exists():
|
|
print(f"ERROR: File '{zig_lang_file.as_posix()}' does not exist. Exiting.", file=stderr)
|
|
exit(1)
|
|
|
|
# read "language keys" from `zig_lang_file` into list
|
|
lang_keys = []
|
|
with open(zig_lang_file, "r", encoding="UTF-8") as fh:
|
|
while line := fh.readline():
|
|
# only process lines that are not empty or no comments
|
|
if not (line.strip() == "" or line.startswith("//")):
|
|
lang_keys.append(line.split(":")[0].strip())
|
|
|
|
lang_files = [f for f in Path.iterdir(Path(__file__).parent) if f.name.endswith(".ini") and f.is_file()]
|
|
|
|
for file in lang_files:
|
|
process_lang_file(file, lang_keys)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|