Ir al contenido

Contribuir

¡Las contribuciones son bienvenidas! Lee la guía de contribución antes de abrir una pull request. También puedes proponer ideas en las discusiones o consultar el backlog del proyecto.

Se necesita Python 3.10 a 3.13. uv lo descarga si no lo tienes.

  1. Instala FFmpeg y, en Linux, PortAudio:

    Ventana de terminal
    # macOS
    brew install ffmpeg
    # Ubuntu o Debian
    sudo apt install ffmpeg libportaudio2
    # Windows
    choco install ffmpeg
  2. Clona el repositorio:

    Ventana de terminal
    git clone https://github.com/HenestrosaDev/audiotext.git
    cd audiotext
  3. Instala uv, que gestiona las dependencias y el entorno virtual.

  4. Instala las dependencias:

    Ventana de terminal
    uv sync

    uv sync instala PyTorch con soporte para CUDA, que es una descarga grande en Linux y Windows. Sin una GPU NVIDIA, instala en su lugar la versión para CPU:

    Ventana de terminal
    uv sync --no-group cuda --group cpu
  5. Ejecuta la aplicación:

    Ventana de terminal
    uv run src/app.py
Ventana de terminal
uv run pre-commit install # revisa y formatea el código antes de cada commit
uv run pytest # ejecuta las pruebas

La interfaz se traduce con gettext. Los textos están en res/locales/audiotext.pot, y las traducciones de cada idioma en res/locales/<idioma>/LC_MESSAGES/audiotext.po. Los textos que dependen de un número (p. ej. {count} file / {count} files) tienen una traducción para cada forma de plural del idioma (msgstr[0], msgstr[1]…), según la cabecera Plural-Forms de su catálogo. Un mismo texto puede aparecer dos veces, una con un contexto (msgctxt), para que se traduzca distinto en cada sitio: p. ej. Done es el estado de una transcripción, y con el contexto files, un filtro de los archivos de una carpeta.

Cuando cambien los textos del código, o después de editar un archivo .po (p. ej. con Poedit), ejecuta este script. Extrae los textos, actualiza los catálogos, los compila y lista los textos que faltan por traducir o revisar (marcados como fuzzy), que la aplicación muestra en inglés hasta entonces. Las pruebas fallan mientras haya un catálogo desactualizado.

Ventana de terminal
uv run .github/scripts/update_translations.py

Para añadir un idioma, crea su catálogo, tradúcelo, compílalo y añádelo a UI_LANGUAGES en src/utils/i18n.py:

Ventana de terminal
uv run pybabel init -i res/locales/audiotext.pot -d res/locales -D audiotext -l <código>
uv run .github/scripts/update_translations.py

Esta web está hecha con Starlight y está en el repositorio audiotext-docs. Cada idioma tiene su propia carpeta en src/content/docs (el inglés está en en).

Ventana de terminal
git clone https://github.com/HenestrosaDev/audiotext-docs.git
cd audiotext-docs
npm install
npm run dev # sirve la web en http://localhost:4321
npm run build # genera la web en dist

Cada página tiene un enlace Editar página al final que la abre en GitHub.