mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 07:22:23 -04:00
add ability to use other path to translation json
This commit is contained in:
parent
f0be553e09
commit
1b7417595e
1 changed files with 9 additions and 6 deletions
|
@ -10,13 +10,13 @@ from fluent.syntax.ast import Message, TextElement, Identifier, Pattern, Junk
|
||||||
|
|
||||||
# extract a translated string from strings.json and insert it into ftl
|
# extract a translated string from strings.json and insert it into ftl
|
||||||
# eg:
|
# eg:
|
||||||
# $ python extract-po-string.py /path/to/templates/media-check.ftl delete-unused "Delete Unused Media" ""
|
# $ python extract-po-string.py strings.json /path/to/templates/media-check.ftl delete-unused "Delete Unused Media" ""
|
||||||
# $ python extract-po-string.py /path/to/templates/media-check.ftl delete-unused "%(a)s %(b)s" "%(a)s=$val1,%(b)s=$val2"
|
# $ python extract-po-string.py strings.json /path/to/templates/media-check.ftl delete-unused "%(a)s %(b)s" "%(a)s=$val1,%(b)s=$val2"
|
||||||
#
|
#
|
||||||
# NOTE: the English text is written into the templates folder of the repo, so must be copied
|
# NOTE: the English text is written into the templates folder of the repo, so must be copied
|
||||||
# into Anki's source tree
|
# into Anki's source tree
|
||||||
|
|
||||||
ftl_filename, key, msgid_substring, repls = sys.argv[1:]
|
json_filename, ftl_filename, key, msgid_substring, repls = sys.argv[1:]
|
||||||
|
|
||||||
# split up replacements
|
# split up replacements
|
||||||
replacements = []
|
replacements = []
|
||||||
|
@ -29,7 +29,7 @@ for repl in repls.split(","):
|
||||||
prefix = os.path.splitext(os.path.basename(ftl_filename))[0]
|
prefix = os.path.splitext(os.path.basename(ftl_filename))[0]
|
||||||
key = f"{prefix}-{key}"
|
key = f"{prefix}-{key}"
|
||||||
|
|
||||||
strings = json.load(open("strings.json", "r"))
|
strings = json.load(open(json_filename, "r"))
|
||||||
|
|
||||||
msgids = []
|
msgids = []
|
||||||
if msgid_substring in strings["en"]:
|
if msgid_substring in strings["en"]:
|
||||||
|
@ -51,18 +51,21 @@ else:
|
||||||
print(f"* {c}: {id}")
|
print(f"* {c}: {id}")
|
||||||
msgid = msgids[int(input("number to use? "))]
|
msgid = msgids[int(input("number to use? "))]
|
||||||
|
|
||||||
|
|
||||||
def transform_entry(entry):
|
def transform_entry(entry):
|
||||||
if isinstance(entry, str):
|
if isinstance(entry, str):
|
||||||
return(transform_string(entry))
|
return transform_string(entry)
|
||||||
else:
|
else:
|
||||||
return [transform_string(e) for e in entry]
|
return [transform_string(e) for e in entry]
|
||||||
|
|
||||||
|
|
||||||
def transform_string(msg):
|
def transform_string(msg):
|
||||||
for (old, new) in replacements:
|
for (old, new) in replacements:
|
||||||
msg = msg.replace(old, f"{{{new}}}")
|
msg = msg.replace(old, f"{{{new}}}")
|
||||||
# strip leading/trailing whitespace
|
# strip leading/trailing whitespace
|
||||||
return msg.strip()
|
return msg.strip()
|
||||||
|
|
||||||
|
|
||||||
to_insert = []
|
to_insert = []
|
||||||
for lang in strings.keys():
|
for lang in strings.keys():
|
||||||
entry = strings[lang].get(msgid)
|
entry = strings[lang].get(msgid)
|
||||||
|
@ -114,7 +117,7 @@ def add_simple_message(fname, key, message):
|
||||||
|
|
||||||
modified = serialize(obj, with_junk=True)
|
modified = serialize(obj, with_junk=True)
|
||||||
# escape leading dots
|
# escape leading dots
|
||||||
modified = re.sub(r"(?ms)^( +)\.", "\\1{\".\"}", modified)
|
modified = re.sub(r"(?ms)^( +)\.", '\\1{"."}', modified)
|
||||||
|
|
||||||
# ensure the resulting serialized file is valid by parsing again
|
# ensure the resulting serialized file is valid by parsing again
|
||||||
obj = parse(modified)
|
obj = parse(modified)
|
||||||
|
|
Loading…
Reference in a new issue