Перейти к содержимому

Участие в проекте

Мы рады любому вкладу! Перед открытием pull request прочитайте руководство для участников. Идеи также можно предлагать в обсуждениях или смотреть бэклог проекта.

Нужен Python от 3.10 до 3.13. Если его нет, uv скачает его сам.

  1. Установите FFmpeg, а в Linux также PortAudio:

    Окно терминала
    # macOS
    brew install ffmpeg
    # Ubuntu или Debian
    sudo apt install ffmpeg libportaudio2
    # Windows
    choco install ffmpeg
  2. Клонируйте репозиторий:

    Окно терминала
    git clone https://github.com/HenestrosaDev/audiotext.git
    cd audiotext
  3. Установите uv — он управляет зависимостями и виртуальным окружением.

  4. Установите зависимости:

    Окно терминала
    uv sync

    uv sync устанавливает PyTorch с поддержкой CUDA — в Linux и Windows это большая загрузка. Без видеокарты NVIDIA вместо этого установите версию для процессора:

    Окно терминала
    uv sync --no-group cuda --group cpu
  5. Запустите приложение:

    Окно терминала
    uv run src/app.py
Окно терминала
uv run pre-commit install # проверяет и форматирует код перед каждым коммитом
uv run pytest # запускает тесты

Интерфейс переводится с помощью gettext. Тексты находятся в res/locales/audiotext.pot, а переводы для каждого языка — в res/locales/<язык>/LC_MESSAGES/audiotext.po. У текстов, зависящих от числа (например, {count} file / {count} files), есть перевод для каждой формы множественного числа языка (msgstr[0], msgstr[1]…), как задано в заголовке Plural-Forms его каталога. Один и тот же текст может встречаться дважды, один раз с контекстом (msgctxt), чтобы в каждом месте его можно было перевести по-разному: например, Done — это состояние транскрипции, а с контекстом files — фильтр файлов папки.

Когда тексты в коде меняются или после правки файла .po (например, в Poedit), запустите этот скрипт. Он извлекает тексты, обновляет каталоги, компилирует их и выводит список текстов, которые ещё нужно перевести или проверить (помечены как fuzzy); до тех пор приложение показывает их на английском. Тесты не проходят, пока какой-либо каталог устарел.

Окно терминала
uv run .github/scripts/update_translations.py

Чтобы добавить язык, создайте его каталог, переведите, скомпилируйте его и добавьте язык в UI_LANGUAGES в src/utils/i18n.py:

Окно терминала
uv run pybabel init -i res/locales/audiotext.pot -d res/locales -D audiotext -l <код>
uv run .github/scripts/update_translations.py

Этот сайт создан на Starlight и находится в репозитории audiotext-docs. У каждого языка своя папка в src/content/docs (английский — в en).

Окно терминала
git clone https://github.com/HenestrosaDev/audiotext-docs.git
cd audiotext-docs
npm install
npm run dev # запускает сайт по адресу http://localhost:4321
npm run build # собирает сайт в dist

Внизу каждой страницы есть ссылка Редактировать страницу, которая открывает её на GitHub.