Skip to content

Commit

Permalink
Add script to write strings from translations to prelude.yaml
Browse files Browse the repository at this point in the history
  • Loading branch information
Ortham committed May 21, 2024
1 parent 227d844 commit 8cde200
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,12 @@ py -m venv .venv
pip install -r requirements.txt
py extract-strings.py
```

It's also possible to overwrite the message text in `prelude.yaml` using the contents of the `translations` directory:

```
py -m venv .venv
.\venv\Scripts\activate
pip install -r requirements.txt
py import-strings.py
```
44 changes: 44 additions & 0 deletions import-strings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import math
import re
import os

import yaml

messages = {}
for f in os.scandir('translations'):
match = re.match(r'messages\.([^\.]+)\.yaml', f.name)
if match:
lang = match.group(1)
with open(f.path, encoding='utf8') as input:
messages[lang] = yaml.safe_load(input)

lines = []
with open('prelude.yaml', encoding='utf8') as input:
lines = input.readlines()

anchor = None
lang = None
for index, line in enumerate(lines):
match = re.search(r' &([^\s]+)$', line)
if match != None:
anchor = match.group(1)
lang = None
text = None
continue

match = re.search(r'- lang: ([a-zA-Z_]+)', line)
if match != None:
lang = match.group(1)
text = None
continue

match = re.search(r' text: \'(.+)\'', line)
if match != None and anchor and lang:
# Replace line with a new line for this message
message = yaml.dump(messages[lang][anchor], width=math.inf, allow_unicode=True, default_style="'")

lines[index] = re.sub(r' text: \'.+\'', f' text: {message.strip()}', line)


with open('prelude.yaml', mode='w', encoding='utf8') as output:
output.writelines(lines)

0 comments on commit 8cde200

Please sign in to comment.