mirror of https://github.com/fairyglade/ly.git
refactored some variables + added comments
This commit is contained in:
parent
0dea19c8db
commit
b6726a76c6
|
@ -4,37 +4,46 @@ from pathlib import Path
|
|||
from sys import stderr
|
||||
|
||||
|
||||
def process_lang_file(path: str) -> None:
|
||||
values = {}
|
||||
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():
|
||||
vals = line.split("=")
|
||||
if len(vals) != 2:
|
||||
try:
|
||||
key, value = line.split("=", 1)
|
||||
existing_entries[key.strip()] = value.strip()
|
||||
except ValueError: # line does not contain '='
|
||||
continue
|
||||
|
||||
key = vals[0].strip()
|
||||
values[key] = vals[1].strip()
|
||||
|
||||
# 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_strings:
|
||||
v = values.get(item)
|
||||
if v is not None:
|
||||
fh.write(f"{item} = {v}\n")
|
||||
else:
|
||||
for item in lang_keys:
|
||||
try:
|
||||
fh.write(f"{item} = {existing_entries[item]}\n")
|
||||
except KeyError: # no translation for `item` yet
|
||||
fh.write("\n")
|
||||
|
||||
|
||||
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)
|
||||
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)
|
||||
|
||||
lang_strings = []
|
||||
with open(zig_lang_file, "r", encoding="UTF-8") as fh:
|
||||
while line := fh.readline():
|
||||
lang_strings.append(line.split(":")[0])
|
||||
# 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()]
|
||||
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.as_posix())
|
||||
for file in lang_files:
|
||||
process_lang_file(file, lang_keys)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
Loading…
Reference in New Issue