Skip to content

Commit

Permalink
Feat wip: translation tool (ss220club#515)
Browse files Browse the repository at this point in the history
<!-- Пишите **НИЖЕ** заголовков и **ВЫШЕ** комментариев, иначе что то
может пойти не так. -->
<!-- Вы можете прочитать Contributing.MD, если хотите узнать больше. -->

## Что этот PR делает
Добавляет инструментарий для перевода
<!-- Вкратце опишите изменения, которые вносите. -->
<!-- Опишите **все** изменения, так как противное может сказаться на
рассмотрении этого PR'а! -->
<!-- Если вы исправляете Issue, добавьте "Fixes ss220club#1234" (где 1234 - номер
Issue) где-нибудь в описании PR'а. Это автоматически закроет Issue после
принятия PR'а. -->

## Почему это хорошо для игры

<!-- Опишите, почему, по вашему, следует добавить эти изменения в игру.
-->

## Изображения изменений
<!-- Если вы не меняли карту или спрайты, можете опустить эту секцию.
Если хотите, можете вставить видео. -->

## Тестирование
<!-- Как вы тестировали свой PR, если делали это вовсе? -->

## Changelog

:cl:
experiment: :guitar:
/:cl:

<!-- Оба :cl:'а должны быть на месте, что-бы чейнджлог работал! Вы
можете написать свой ник справа от первого :cl:, если хотите. Иначе
будет использован ваш ник на ГитХабе. -->
<!-- Вы можете использовать несколько записей с одинаковым префиксом
(Они используются только для иконки в игре) и удалить ненужные. Помните,
что чейнджлог должен быть понятен обычным игроком. -->
<!-- Если чейнджлог не влияет на игроков(например, это рефактор), вы
можете исключить всю секцию. -->
  • Loading branch information
Furrior authored and BR54FF committed Oct 23, 2023
1 parent 838b002 commit 0cdcbe0
Show file tree
Hide file tree
Showing 7 changed files with 137 additions and 0 deletions.
58 changes: 58 additions & 0 deletions .github/workflows/auto_translate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Add new translation

on:
workflow_dispatch:
push:
branches: ['translate']

jobs:
add_translation:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
name: 'Add new translation'

steps:
- name: 'Update Branch'
uses: actions/checkout@v4
with:
fetch-depth: 2

- name: Installing Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Installing deps
run: |
python -m pip install --upgrade pip
pip install -r ./tools/translator/requirements.txt
- name: Create temporary branch
run: |
git branch -f translate_tmp
git checkout translate_tmp
git reset --hard origin/master
- name: Apply existing translation
run: |
git checkout origin/translate -- ./tools/translator/ss220replace.json
./tools/translator/ss220_replacer_linux --prefix=ss220 --root=./../../ --location=./
- name: Apply PR translation
run: |
git cherry-pick -n origin/translate
- name: 'Generate Translation'
run: |
git add ./tools/translator/ss220replace.json
python ./tools/translator/converter.py
git add ./tools/translator/ss220replace.json
- name: 'Push Translation'
run: |
git config --local user.email "[email protected]"
git config --local user.name "SS220Manager"
git commit -m "Generate translation file"
git push -u -f origin/translate
35 changes: 35 additions & 0 deletions .github/workflows/translate_branch_update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Update translate branch

on:
workflow_dispatch:
push:
branches: ['master']

jobs:
add_translation:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write

steps:
- name: 'Update Branch'
uses: actions/checkout@v4

- name: Create temporary branch
run: |
git branch -f translate_tmp
git checkout translate_tmp
git reset --hard origin/master
- name: Apply existing translation
run: |
git checkout origin/translate -- ./tools/translator/ss220replace.json
./tools/translator/ss220_replacer_linux --prefix=ss220 --root=./../../ --location=./
- name: 'Push Translation'
run: |
git config --local user.email "[email protected]"
git config --local user.name "SS220Manager"
git commit -m "Generate translation file"
git push -u -f origin translate
40 changes: 40 additions & 0 deletions tools/translator/converter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import git
import json
BUILD_PATH = "./../../"


repo = git.Repo(BUILD_PATH)
tree = repo.head.commit.tree
if not tree:
print("No changes")
exit()
diff = repo.git.diff(tree)
if not diff:
print("No changes")
exit()
diff = [line for line in diff.split("\n") if line[0] in "+-" and not line.startswith("+++")]

translation = {"files": []}

lastfile = ''
lastaction = ''
for line in diff:
if line.startswith("---"):
lastfile = line[6:]
lastaction = '---'
translation["files"].append({"path": lastfile, "replaces": []})
elif line.startswith("-"):
if lastaction == "---" or lastaction == "+":
translation["files"][-1]["replaces"].append({"original": line[1:], "replace": ""})
elif lastaction == "-":
translation["files"][-1]["replaces"][-1]["original"]+=f"\n{line[1:]}"
lastaction = "-"
elif line.startswith("+"):
if lastaction == "-":
translation["files"][-1]["replaces"][-1]["replace"] = line[1:]
elif lastaction == "+":
translation["files"][-1]["replaces"][-1]["replace"] += f"\n{line[1:]}"
lastaction = "+"

with open('ss220replace.json', 'w+', encoding='utf-8') as f:
json.dump(translation, f, ensure_ascii=False, indent=2)
1 change: 1 addition & 0 deletions tools/translator/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
GitPython
Binary file added tools/translator/ss220_replacer_linux
Binary file not shown.
Binary file added tools/translator/ss220_replacer_windows.exe
Binary file not shown.
3 changes: 3 additions & 0 deletions tools/translator/ss220replace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"files": []
}

0 comments on commit 0cdcbe0

Please sign in to comment.