콘텐츠로 이동

기여하기

기여는 언제나 환영합니다! 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는 CUDA를 지원하는 PyTorch를 설치하므로 Linux와 Windows에서는 다운로드 용량이 큽니다. NVIDIA GPU가 없다면 대신 CPU 버전을 설치하세요.

    터미널 창
    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)에는 카탈로그의 Plural-Forms 헤더에 정해진 대로 해당 언어의 복수형마다 번역(msgstr[0], msgstr[1]…)이 있습니다. 같은 텍스트가 컨텍스트(msgctxt)와 함께 한 번 더 나타날 수 있으며, 위치마다 다르게 번역할 수 있습니다. 예를 들어 Done은 받아쓰기의 상태이고, files 컨텍스트가 있는 것은 폴더 파일의 필터입니다.

코드의 텍스트가 바뀌었거나 .po 파일을 편집한 뒤에는(예: Poedit) 이 스크립트를 실행하세요. 텍스트를 추출하고 카탈로그를 업데이트해 컴파일한 다음, 아직 번역하거나 검토해야 할 텍스트(fuzzy 표시)를 보여 줍니다. 그때까지 앱은 해당 텍스트를 영어로 표시합니다. 오래된 카탈로그가 있으면 테스트가 실패합니다.

터미널 창
uv run .github/scripts/update_translations.py

언어를 추가하려면 카탈로그를 만들어 번역하고 컴파일한 다음 src/utils/i18n.py의 UI_LANGUAGES에 추가하세요.

터미널 창
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에서 해당 페이지를 여는 페이지 편집 링크가 있습니다.