rewrite: Localisation scripts.
This commit is contained in:
70
scripts/maketestlang.py
Normal file
70
scripts/maketestlang.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import os
|
||||
import string
|
||||
import polib
|
||||
|
||||
templates = os.path.join('locales', 'templates')
|
||||
test_target = os.path.join('locales', 'ceaser', 'LC_MESSAGES')
|
||||
|
||||
|
||||
def translate_string(msgid: str) -> str:
|
||||
tokens = []
|
||||
lifted = False
|
||||
for c in msgid:
|
||||
if c in ('{', '}'):
|
||||
lifted = not lifted
|
||||
elif not lifted and c.isalpha():
|
||||
if c.isupper():
|
||||
letters = string.ascii_uppercase
|
||||
else:
|
||||
letters = string.ascii_lowercase
|
||||
index = letters.index(c)
|
||||
c = letters[(index + 1) % len(letters)]
|
||||
tokens.append(c)
|
||||
translated = ''.join(tokens)
|
||||
return translated
|
||||
|
||||
|
||||
def translate_entry(entry: polib.POEntry):
|
||||
if entry.msgctxt and ('regex' in entry.msgctxt):
|
||||
# Ignore
|
||||
...
|
||||
else:
|
||||
if entry.msgid:
|
||||
entry.msgstr = translate_string(entry.msgid)
|
||||
|
||||
|
||||
def process_pot(domain, path):
|
||||
print(f"Processing pot for {domain}")
|
||||
entries = 0
|
||||
po = polib.pofile(path, encoding="UTF-8")
|
||||
po.metadata = {
|
||||
'Project-Id-Version': '1.0',
|
||||
'Report-Msgid-Bugs-To': 'you@example.com',
|
||||
'POT-Creation-Date': '2007-10-18 14:00+0100',
|
||||
'PO-Revision-Date': '2007-10-18 14:00+0100',
|
||||
'Last-Translator': 'you <you@example.com>',
|
||||
'Language-Team': 'English <yourteam@example.com>',
|
||||
'MIME-Version': '1.0',
|
||||
'Content-Type': 'text/plain; charset=utf-8',
|
||||
'Content-Transfer-Encoding': '8bit',
|
||||
}
|
||||
for entry in po.untranslated_entries():
|
||||
entries += 1
|
||||
translate_entry(entry)
|
||||
# Now save
|
||||
targetpo = os.path.join(test_target, f"{domain}.po")
|
||||
targetmo = os.path.join(test_target, f"{domain}.mo")
|
||||
po.save(targetpo)
|
||||
po.save_as_mofile(targetmo)
|
||||
print(f"Processed {entries} from POT {domain}.")
|
||||
|
||||
|
||||
def process_all():
|
||||
for file in os.scandir(templates):
|
||||
if file.name.endswith('pot'):
|
||||
print(f"Processing pot: {file.name[:-4]}")
|
||||
process_pot(file.name[:-4], file.path)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
process_all()
|
||||
Reference in New Issue
Block a user