Инструмент для поиска переводимых строк в исходном коде и генерации XLIFF-файлов, которые затем можно отправлять в Crowdin или другой процесс локализации.
Сейчас проект поддерживает:
- CLI через
main.py - Windows-запуск через
app/start.cmd - Linux GUI через
app/start.sh - GitHub Actions для сборки и автоматической генерации исходных XLIFF в сторонних репозиториях
pip install -r requirements.txtДля Linux GUI дополнительно нужен GTK4 Python binding:
sudo apt install python3-gi gir1.2-gtk-4.0Запуск:
./app/start.shGUI полностью на русском языке и использует ту же логику генерации, что и CLI.
Для интерактивного запуска можно использовать:
app\start.cmdТакже в app/ лежит собранный app/_parser.exe.
python main.py -s /path/to/source -o /path/to/output -e /path/to/exclude -m messages -l ru_RU -d| Команда | Альтернатива | Описание |
|---|---|---|
--source |
-s |
Путь к исходным файлам, где искать переводимые строки |
--output |
-o |
Путь к каталогу вывода без языкового кода |
--exception |
-e |
Игнорируемые файлы или папки; параметр можно повторять |
--module |
-m |
Имя выходного XLIFF-файла без расширения |
--lang |
-l |
Исходный язык, например ru_RU |
--debug |
-d |
Печатать traceback и ошибки обработки |
Итоговый файл сохраняется по пути:
{output}/{lang}/{module}.xliff
Файл: .github/workflows/build.yml
Что делает:
- запускается на
pushиpull_requestвmain/master - выполняется на runner label
homeserver - проверяет код через
compileall - запускает
python main.py --help - собирает Linux binary через PyInstaller
- публикует artifact
parser-linux
Файл: .github/dependabot.yml
Что обновляет:
- Python-зависимости из
requirements.txt - GitHub Actions
Частота: раз в неделю.
Файлы:
.github/translation-repos.yml.github/workflows/generate-i18.ymlscripts/generate_i18_repos.py
Workflow читает список репозиториев из .github/translation-repos.yml, клонирует каждый репозиторий, находит его Crowdin-конфиг, генерирует исходные XLIFF-файлы, пушит ветку i18-generated и открывает PR в default branch.
repos:
- name: DevCraft AdminPanel
config: crowdin.yml
repository: https://github.com/DevCraftClub/mhadmin.git
source: upload/Поля:
name— произвольное имя для логовconfig— путь к Crowdin YAML внутри целевого репозиторияrepository— Git URL целевого репозиторияsource— каталог с исходным кодом, который нужно сканировать
Из Crowdin-конфига используется блок вида:
files:
- source: /upload/devcraft/locales/ru_RU/*.xliff
translation: /upload/devcraft/locales/%locale_with_underscore%/%file_name%.%file_extension%Из него вычисляется:
- каталог для
-o:upload/devcraft/locales - язык для
-l:ru_RU - модули для
-m: имена существующих*.xliffв каталогеru_RU
Поле translation не перезаписывается: workflow регенерирует только исходные XLIFF-файлы.
Для workflow generate-i18.yml нужен секрет GH_PAT.
GH_PAT = GitHub Personal Access Token, добавленный в:
Settings -> Secrets and variables -> Actions -> New repository secret
Почему нужен именно он:
GITHUB_TOKENдействует только в текущем репозитории- workflow пушит изменения и создаёт PR в других репозиториях из
.github/translation-repos.yml
Минимально нужные права для fine-grained PAT:
- доступ ко всем целевым репозиториям из
.github/translation-repos.yml Contents: Read and writePull requests: Read and writeMetadata: Read
assets/
classes.py
functions.py
pipeline.py
app/
start.cmd
start.sh
gui.py
.github/
dependabot.yml
translation-repos.yml
workflows/
build.yml
generate-i18.yml
scripts/
generate_i18_repos.py
main.py