Skip to content

Commit

Permalink
automations/translations
Browse files Browse the repository at this point in the history
  • Loading branch information
JarbasAl committed May 15, 2024
1 parent 689d349 commit 37728b2
Show file tree
Hide file tree
Showing 6 changed files with 283 additions and 0 deletions.
72 changes: 72 additions & 0 deletions .github/workflows/publish_alpha.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 32 additions & 0 deletions .github/workflows/sync_tx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Run script on merge to dev by gitlocalize-app

on:
workflow_dispatch:
push:
branches:
- dev

jobs:
run-script:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v2
with:
ref: dev
fetch-depth: 0 # otherwise, there would be errors pushing refs to the destination repository.
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: 3.9

- name: Run script if merged by gitlocalize-app[bot]
if: github.event_name == 'push' && github.event.head_commit.author.username == 'gitlocalize-app[bot]'
run: |
python scripts/sync_translations.py
- name: Commit to dev
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Update translations
branch: dev
53 changes: 53 additions & 0 deletions test/prepare_translations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"""this script should run every time the contents of the locale folder change
except if PR originated from @gitlocalize-app
TODO - on commit to dev
"""

import json
from os.path import dirname
import os

locale = f"{dirname(dirname(__file__))}/skill_randomness/locale"
tx = f"{dirname(dirname(__file__))}/translations"


for lang in os.listdir(locale):
intents = {}
dialogs = {}
vocs = {}
regexes = {}
for root, _, files in os.walk(f"{locale}/{lang}"):
b = root.split(f"/{lang}")[-1]

for f in files:
if b:
fid = f"{b}/{f}"
else:
fid = f
with open(f"{root}/{f}") as fi:
strings = [l.replace("{{", "{").replace("}}", "}")
for l in fi.read().split("\n") if l.strip()
and not l.startswith("#")]

if fid.endswith(".intent"):
intents[fid] = strings
elif fid.endswith(".dialog"):
dialogs[fid] = strings
elif fid.endswith(".voc"):
vocs[fid] = strings
elif fid.endswith(".rx"):
regexes[fid] = strings

os.makedirs(f"{tx}/{lang}", exist_ok=True)
if intents:
with open(f"{tx}/{lang}/intents.json", "w") as f:
json.dump(intents, f, indent=4)
if dialogs:
with open(f"{tx}/{lang}/dialogs.json", "w") as f:
json.dump(dialogs, f, indent=4)
if vocs:
with open(f"{tx}/{lang}/vocabs.json", "w") as f:
json.dump(vocs, f, indent=4)
if regexes:
with open(f"{tx}/{lang}/regexes.json", "w") as f:
json.dump(regexes, f, indent=4)
56 changes: 56 additions & 0 deletions test/sync_translations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
"""this script should run in every PR originated from @gitlocalize-app
TODO - before PR merge
"""

import json
from os.path import dirname
import os

locale = f"{dirname(dirname(__file__))}/skill_randomness/locale"
tx = f"{dirname(dirname(__file__))}/translations"


for lang in os.listdir(tx):
intents = f"{tx}/{lang}/intents.json"
dialogs = f"{tx}/{lang}/dialogs.json"
vocs = f"{tx}/{lang}/vocabs.json"
regexes = f"{tx}/{lang}/regexes.json"

if os.path.isfile(intents):
with open(intents) as f:
data = json.load(f)
for fid, samples in data.items():
if samples:
samples = [s for s in samples if s] # s may be None
with open(f"{locale}/{lang}/{fid}", "w") as f:
f.write("\n".join(sorted(samples)))

if os.path.isfile(dialogs):
with open(dialogs) as f:
data = json.load(f)
for fid, samples in data.items():
if samples:
samples = [s for s in samples if s] # s may be None
with open(f"{locale}/{lang}/{fid}", "w") as f:
f.write("\n".join(sorted(samples)))

if os.path.isfile(vocs):
with open(vocs) as f:
data = json.load(f)
for fid, samples in data.items():
if samples:
samples = [s for s in samples if s] # s may be None
with open(f"{locale}/{lang}/{fid}", "w") as f:
f.write("\n".join(sorted(samples)))

if os.path.isfile(regexes):
with open(regexes) as f:
data = json.load(f)
for fid, samples in data.items():
if samples:
samples = [s for s in samples if s] # s may be None
if not fid.startswith("/"):
fid = "/" + fid
with open(f"{locale}/{lang}{fid}", "w") as f:
f.write("\n".join(sorted(samples)))

45 changes: 45 additions & 0 deletions translations/en-us/dialogs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"/dialog/first-choice.dialog": [
"What's your first option?",
"Ok, what's the first choice?"
],
"/dialog/coin-result.dialog": [
"It landed on {result}",
"{result}"
],
"/dialog/fortune-result.dialog": [
"{answer}"
],
"/dialog/die-result.dialog": [
"You rolled a {result}",
"{result}"
],
"/dialog/over-dice-limit.dialog": [
"You have a limit of {number} dice set in your settings. I will roll {number} of dice instead."
],
"/dialog/fortune-query.dialog": [
"What is it you wish to know? I will answer yes or no.",
"I know all things...if they are yes or no questions. What is yours?"
],
"/dialog/second-choice.dialog": [
"What's your second option?",
"Ok, now what's the second choice?"
],
"/dialog/multiple-die-result.dialog": [
"Your dice are {result_string} with a total of {result_total}"
],
"/dialog/number-result.dialog": [
"{number}",
"Okay, {number}",
"I picked {number}",
"I chose {number}"
],
"/dialog/choice-result.dialog": [
"Tough choice, but let's go with {choice}!",
"Definitely {choice}."
],
"/dialog/number-range-not-specified.dialog": [
"I didn't quite understand your numbers, so I'll pick between 1 and 10.",
"I'm not sure what you said. Let's choose between 1 and 10."
]
}
25 changes: 25 additions & 0 deletions translations/en-us/intents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"/intents/fortune-teller.intent": [
"Tell me (the |a |my |)(future|fortune)"
],
"/intents/roll-single-die.intent": [
"roll a {faces} sided die",
"roll a {faces} sided dice",
"roll a dice",
"roll (a| ) die"
],
"/intents/make-a-choice.intent": [
"help me (make a choice|decide something)"
],
"/intents/pick-a-number.intent": [
"(pick|select|choose) a number between {lower} and {upper}"
],
"/intents/roll-multiple-dice.intent": [
"roll {number} d {faces}",
"roll {number} {faces} sided (dice|die)",
"roll {number} (dice|die)"
],
"/intents/flip-a-coin.intent": [
"flip a coin"
]
}

0 comments on commit 37728b2

Please sign in to comment.