Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

automations/translations #1

Merged
merged 1 commit into from
May 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/publish_alpha.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ on:
- 'MANIFEST.in'
- 'README.md'
- 'scripts/**'
- 'translations/**'
workflow_dispatch:

jobs:
Expand Down
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)))

16 changes: 16 additions & 0 deletions translations/en-us/dialogs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"wallpaper.changed.dialog": [
"enjoy your new wallpaper"
],
"no.more.pictures.dialog": [
"I don't have anymore pictures",
"I'm out of pictures to show you"
],
"searching.dialog": [
"Searching pictures about {query}",
"Searching for images with {query}"
],
"wallpaper.fail.dialog": [
"I don't know how to change wallpaper in this platform"
]
}
20 changes: 20 additions & 0 deletions translations/en-us/intents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"picture.about.intent": [
"(show|display|random|new) (picture|photo|image) (about|for|with) {query}",
"(show|display) me a (picture|photo|image) (about|for|with) {query}",
"(show|display) me a (random|new|other|another) (picture|photo|image) (about|for|with) {query}",
"(show|display) (random|new|other|another) (picture|photo|image) (about|for|with) {query}"
],
"picture.random.intent": [
"(show|display|random|new) (picture|photo|image)",
"(show|display) me a (picture|photo|image)",
"(show|display) me a (random|new|other|another) (picture|photo|image)",
"(show|display) (random|new|other|another) (picture|photo|image)"
],
"wallpaper.about.intent": [
"(change|random|new) (wallpaper|wall paper) (about|for|with|to) {query}"
],
"wallpaper.random.intent": [
"(change|random|new) (wallpaper|wall paper)"
]
}
Loading
Loading