diff --git a/resources/gm9/languages/es.trf b/resources/gm9/languages/es.trf index 87ed10e5..7329ba41 100644 Binary files a/resources/gm9/languages/es.trf and b/resources/gm9/languages/es.trf differ diff --git a/resources/gm9/languages/ja-KANA.trf b/resources/gm9/languages/ja-KANA.trf new file mode 100644 index 00000000..37768fd8 Binary files /dev/null and b/resources/gm9/languages/ja-KANA.trf differ diff --git a/resources/gm9/languages/ry.trf b/resources/gm9/languages/ry.trf new file mode 100644 index 00000000..9cc4dfab Binary files /dev/null and b/resources/gm9/languages/ry.trf differ diff --git a/resources/languages/de.json b/resources/languages/de.json index 1f55d4fd..b29f2452 100644 --- a/resources/languages/de.json +++ b/resources/languages/de.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "Deutsch", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%4$02lX.%3$02lX.%1$s%2$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ",", "THOUSAND_SEPARATOR": ".", diff --git a/resources/languages/en.json b/resources/languages/en.json index 61369e89..e5f51c51 100644 --- a/resources/languages/en.json +++ b/resources/languages/en.json @@ -1,3 +1,4 @@ { - "GM9_LANGUAGE": "English" + "GM9_LANGUAGE": "English", + "GM9_TRANS_VER": 1 } diff --git a/resources/languages/es.json b/resources/languages/es.json index 1e1a63b2..a9d87cf6 100644 --- a/resources/languages/es.json +++ b/resources/languages/es.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "Español", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%4$02lX/%3$02lX/%1$s%2$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ",", "THOUSAND_SEPARATOR": ".", diff --git a/resources/languages/fr.json b/resources/languages/fr.json index 86fd5c54..402204d0 100644 --- a/resources/languages/fr.json +++ b/resources/languages/fr.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "Français", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%4$02lX/%3$02lX/%1$s%2$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ",", "THOUSAND_SEPARATOR": " ", diff --git a/resources/languages/id.json b/resources/languages/id.json index 92519603..84a1d99c 100644 --- a/resources/languages/id.json +++ b/resources/languages/id.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "Bahasa Indonesia", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "(Thn-Bln-Hari) %1$s%2$02lX-%3$02lX-%4$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ".", "THOUSAND_SEPARATOR": ",", diff --git a/resources/languages/it.json b/resources/languages/it.json index 7b8f5eab..aad410dc 100644 --- a/resources/languages/it.json +++ b/resources/languages/it.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "Italiano", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%4$02lX/%3$02lX/%1$s%2$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ",", "THOUSAND_SEPARATOR": ".", diff --git a/resources/languages/ja-KANA.json b/resources/languages/ja-KANA.json index 86490f77..113ca3d5 100644 --- a/resources/languages/ja-KANA.json +++ b/resources/languages/ja-KANA.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "にほんご", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%1$s%2$02lXねん%3$02lXがつ%4$02lXにち %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ".", "THOUSAND_SEPARATOR": ",", diff --git a/resources/languages/ja.json b/resources/languages/ja.json index b4c7de0d..e1ea1a8b 100644 --- a/resources/languages/ja.json +++ b/resources/languages/ja.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "日本語", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%1$s%2$02lX年%3$02lX月%4$02lX日 %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ".", "THOUSAND_SEPARATOR": ",", diff --git a/resources/languages/nl.json b/resources/languages/nl.json index 8e646795..9788c58b 100644 --- a/resources/languages/nl.json +++ b/resources/languages/nl.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "Nederlands", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%4$02lX-%3$02lX-%1$s%2$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ",", "THOUSAND_SEPARATOR": ".", diff --git a/resources/languages/pl.json b/resources/languages/pl.json index a22a03e2..8124c34f 100644 --- a/resources/languages/pl.json +++ b/resources/languages/pl.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "Polski", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%4$02lX.%3$02lX.%1$s%2$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ",", "THOUSAND_SEPARATOR": " ", diff --git a/resources/languages/ru.json b/resources/languages/ru.json index b499adea..9ebc91ed 100644 --- a/resources/languages/ru.json +++ b/resources/languages/ru.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "Русский", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%4$02lX.%3$02lX.%1$s%2$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ",", "THOUSAND_SEPARATOR": " ", diff --git a/resources/languages/ry.json b/resources/languages/ry.json index 498415a1..15201a78 100644 --- a/resources/languages/ry.json +++ b/resources/languages/ry.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "琉球諸語(うちなーぐちー)", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%1$s%2$02lXとぅし%3$02lXちち%4$02lX日 %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ".", "THOUSAND_SEPARATOR": ",", diff --git a/resources/languages/source.json b/resources/languages/source.json index 79be425f..1c6a1fd7 100644 --- a/resources/languages/source.json +++ b/resources/languages/source.json @@ -1,5 +1,6 @@ { "GM9_LANGUAGE": "[LANGUAGE NAME]", + "GM9_TRANS_VER": 1, "DATE_TIME_FORMAT": "%1$s%2$02lX-%3$02lX-%4$02lX %5$02lX:%6$02lX", "DECIMAL_SEPARATOR": ".", "THOUSAND_SEPARATOR": ",", diff --git a/utils/transcp.py b/utils/transcp.py index 001a3994..3b4cb255 100755 --- a/utils/transcp.py +++ b/utils/transcp.py @@ -3,24 +3,23 @@ from argparse import ArgumentParser, FileType import json -# This is to be incremented every time the order changes -# New strings added to the end will not cause issues -TRANSLATION_VER = 1 - -# This is the language name key in the JSON, which is to be deleted +# Special keys LANGUAGE_NAME = "GM9_LANGUAGE" +VERSION = "GM9_TRANS_VER" parser = ArgumentParser(description="Creates the language.inl file from source.json") parser.add_argument("source", type=FileType("r"), help="source.json") parser.add_argument("inl", type=FileType("w"), help="language.inl") args = parser.parse_args() -# Load the JSON and remove the language name +# Load the JSON and handle the meta values source = json.load(args.source) +version = source[VERSION] +del source[VERSION] del source[LANGUAGE_NAME] # Create the header file -args.inl.write("#define TRANSLATION_VER %d\n\n" % TRANSLATION_VER) +args.inl.write("#define TRANSLATION_VER %d\n\n" % version) for key in source: # Escape \r, \n, and quotes val = source[key].replace("\r", "\\r").replace("\n", "\\n").replace('"', '\\"') diff --git a/utils/transriff.py b/utils/transriff.py index c7079281..5bde3176 100755 --- a/utils/transriff.py +++ b/utils/transriff.py @@ -10,7 +10,9 @@ import sys +# Special keys LANGUAGE_NAME = "GM9_LANGUAGE" +VERSION = "GM9_TRANS_VER" def ceil_to_multiple(num: int, base: int) -> int: @@ -43,7 +45,25 @@ def get_language(data: dict) -> bytes: try: return data[LANGUAGE_NAME].encode("utf-8") except KeyError as exception: - raise ValueError("invalid language data") from exception + raise ValueError("missing language name") from exception + +def get_version(data: dict) -> int: + """ + Get translation version from JSON data. + + Args: + data: JSON translation data. + + Returns: + The translation's version. + + Raises: + ValueError: If no version exists. + """ + try: + return data[VERSION] + except KeyError as exception: + raise ValueError("missing verison number") from exception def load_translations(data: dict) -> dict[str, bytearray]: @@ -59,7 +79,7 @@ def load_translations(data: dict) -> dict[str, bytearray]: return { key: bytearray(value, "utf-8") + b"\0" for key, value in data.items() - if key != LANGUAGE_NAME + if key not in (LANGUAGE_NAME, VERSION) } @@ -119,19 +139,19 @@ def strings_to_trf(mapping: dict[str, bytearray], version: int, language: str) - return trfdata -def main(source: pathlib.Path, dest: pathlib.Path, version: int) -> None: +def main(source: pathlib.Path, dest: pathlib.Path) -> None: """ Entrypoint of transriff. Args: source: JSON to convert from. dest: TRF file to write. - version: Translation version. """ data = json.loads(source.read_text()) try: language = get_language(data) + version = get_version(data) except ValueError as exception: sys.exit(f"Fatal: {exception}.") mapping = load_translations(data) @@ -157,12 +177,7 @@ def main(source: pathlib.Path, dest: pathlib.Path, version: int) -> None: type=pathlib.Path, help="TRF file to write" ) - parser.add_argument( - "version", - type=int, - help="translation version, from language.yml" - ) args = parser.parse_args() - main(args.source, args.dest, args.version) + main(args.source, args.dest)