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 9d2a98a commit df5737c
Show file tree
Hide file tree
Showing 5 changed files with 270 additions and 2 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/publish_alpha.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ on:
branches:
- dev
paths-ignore:
- 'skill_naptime/version.py'
- 'test/**'
- 'examples/**'
- '.github/**'
Expand All @@ -16,6 +15,7 @@ on:
- 'MANIFEST.in'
- 'readme.md'
- 'scripts/**'
- 'translations/**'
workflow_dispatch:

jobs:
Expand Down Expand Up @@ -69,4 +69,4 @@ jobs:
- name: Publish to Test PyPI
uses: pypa/gh-action-pypi-publish@master
with:
password: ${{secrets.PYPI_TOKEN}}
password: ${{secrets.PYPI_TOKEN}}
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 scripts/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__))}/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)
54 changes: 54 additions & 0 deletions scripts/sync_translations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
"""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__))}/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
with open(f"{locale}/{lang}/{fid}", "w") as f:
f.write("\n".join(sorted(samples)))

129 changes: 129 additions & 0 deletions translations/en-us/intents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
{
"/intents/captains_log.intent": [
"Captain's log, begin recording.",
"Captain's log, initiate recording.",
"Captain's log, start a new recording.",
"Captain's log, start recording now.",
"Captain's log, record a new entry.",
"Captain's log, commence recording.",
"Captain's log, engage recording.",
"Captain's log, initiate a new entry.",
"Captain's log, begin recording named {name}.",
"Captain's log, start a recording named {name}.",
"Captain's log, record a new entry named {name}.",
"Captain's log, commence recording named {name}.",
"Captain's log, engage recording named {name}.",
"Captain's log, initiate a new entry called {name}.",
"Captain's log, begin recording as {name}.",
"Captain's log, start a recording as {name}.",
"Captain's log, record a new entry with the name {name}.",
"Captain's log, commence recording with the name {name}.",
"Captain's log, engage recording with the name {name}.",
"Captain's log, begin recording",
"Captain's log, initiate recording",
"Captain's log, start a new recording",
"Captain's log, start recording",
"Captain's log, start recording now",
"Captain's log, start recording please",
"Captain's log, start a new recording named {name}",
"Captain's log, begin recording named {name}",
"Captain's log, initiate recording named {name}",
"Captain's log, start a recording named {name}",
"Captain's log, start recording now named {name}",
"Captain's log, start recording please named {name}",
"Captain's log, begin recording {name}",
"Captain's log, initiate recording {name}",
"Captain's log, start a new recording called {name}",
"Captain's log, start a recording called {name}",
"Captain's log, start recording now as {name}",
"Captain's log, start recording please as {name}",
"Captain's log, record a new audio file named {name}",
"Captain's log, record audio as {name}",
"Captain's log, record audio now with the name {name}",
"Captain's log, start a new audio recording called {name}",
"Captain's log, begin audio recording {name}",
"Captain's log, initiate audio recording {name}",
"Captain's log, start an audio recording called {name}",
"Captain's log, start audio recording now as {name}",
"Captain's log, start audio recording please as {name}"
],
"/intents/start_recording.intent": [
"activate audio recording",
"activate audio recording as {name}",
"activate audio recording named {name}",
"activate audio recording under the title {name}",
"begin audio capture",
"begin audio capture as {name}",
"begin audio capture named {name}",
"begin audio capture titled {name}",
"begin audio recording",
"begin audio recording named {name}",
"begin audio recording {name}",
"begin recording",
"begin recording named {name}",
"begin recording session",
"begin recording {name}",
"commence audio recording titled {name}",
"commence audio recording with the name {name}",
"commence recording",
"commence recording session called {name}",
"commence recording with the name {name}",
"establish recording named {name}",
"initialize recording",
"initialize recording titled {name}",
"initiate a new recording",
"initiate an audio recording called {name}",
"initiate an audio recording named {name}",
"initiate audio recording",
"initiate audio recording named {name}",
"initiate audio recording operation named {name}",
"initiate audio recording {name}",
"initiate recording",
"initiate recording named {name}",
"initiate recording under the name {name}",
"initiate recording {name}",
"new recording",
"new recording named {name}",
"proceed with recording",
"record a new audio file",
"record a new audio file named {name}",
"record audio",
"record audio as {name}",
"record audio named {name}",
"record audio now",
"record audio now with the name {name}",
"set up a new recording named {name}",
"start a new audio recording",
"start a new audio recording called {name}",
"start a new audio recording named {name}",
"start a new recording",
"start a new recording called {name}",
"start a new recording named {name}",
"start a new recording with the title {name}",
"start a recording",
"start a recording called {name}",
"start a recording named {name}",
"start an audio recording",
"start an audio recording called {name}",
"start an audio recording named {name}",
"start audio recording now",
"start audio recording now as {name}",
"start audio recording now named {name}",
"start audio recording operation",
"start audio recording operation as {name}",
"start audio recording operation named {name}",
"start audio recording please",
"start audio recording please as {name}",
"start audio recording please named {name}",
"start recording",
"start recording immediately as {name}",
"start recording named {name",
"start recording now",
"start recording now as {name}",
"start recording now named {name}",
"start recording please",
"start recording please as {name}",
"start recording please named {name}",
"start recording right away"
]
}

0 comments on commit df5737c

Please sign in to comment.