Traductor Avanzado para NVDA

Complemento profesional para NVDA que facilita la traducción de textos en múltiples idiomas utilizando diversos servicios de traducción tanto gratuitos como de pago.

Índice


Descripción

Traductor Avanzado es un complemento para el lector de pantalla NVDA que permite traducir textos de forma rápida y eficiente. Ofrece 9 módulos de traducción online para uso en tiempo real, incluyendo servicios gratuitos como Google Translate, DeepL Free y Microsoft Bing, además de 4 módulos de inteligencia artificial (OpenAI GPT, Claude, Google Gemini y DeepSeek) disponibles exclusivamente para la traducción de archivos y documentos.

El complemento está diseñado para ser accesible, modular y extensible, con una arquitectura que facilita la adición de nuevos servicios de traducción en el futuro.

¿Qué puedo hacer con Traductor Avanzado?


Características principales

Característica Descripción
9 módulos online + 4 IA Google (×4), DeepL (×3), LibreTranslate, Microsoft Bing + OpenAI, Claude, Gemini, DeepSeek
Traducción simultánea Traduce en tiempo real todo lo que NVDA verbaliza (solo módulos online)
Traducción de archivos con IA Traduce documentos completos eligiendo servicio online o IA
Capa de comandos 20 acciones rápidas accesibles con una sola tecla
Caché inteligente Almacena traducciones por aplicación para mejorar rendimiento
Claves API encriptadas Las claves se almacenan encriptadas con rotación automática
Traducción de archivos TXT, HTML, CSV, SRT, Markdown, PO/POT, DOCX
Reproductor de audio Escucha las traducciones con control de volumen y velocidad
Historial Registro completo de todas las traducciones realizadas
Actualización de idiomas Descarga automática de nuevos idiomas desde GitHub
Ayuda contextual Pulsa Ctrl+H en cualquier control para obtener ayuda
Compatible NVDA 2025.1 (32 bits) y NVDA 2026.1 (64 bits)

Requisitos


Instalación

  1. Descargar el archivo .nvda-addon desde la página de releases.
  2. Abrir el archivo descargado (doble clic o desde el menú de NVDA > Herramientas > Administrador de complementos).
  3. Confirmar la instalación y reiniciar NVDA.

También disponible en la tienda oficial de complementos de NVDA.


Módulos de traducción

Módulos gratuitos (sin clave API)

# Módulo Descripción
1 Google Translate (WEB 1) Usa el endpoint principal de Google Translate vía web
2 Google Translate (WEB 2) Endpoint alternativo con User-Agent de Android
3 Google API Free 1 API gratuita del cliente de Chrome
4 Google API Free 2 Variante alternativa de la API gratuita
5 DeepL (Free) Usa la interfaz JSON-RPC de DeepL sin necesidad de cuenta
9 Microsoft Bing (Free) API gratuita de Microsoft Bing Translator con token automático

Módulos con clave API

# Módulo Descripción
6 DeepL (API Free) API oficial de DeepL con plan gratuito (500.000 caracteres/mes)
7 DeepL (API Pro) API oficial de DeepL con plan de pago
8 LibreTranslate (API) Servicio de traducción de código abierto auto-hospedable

Módulos de Inteligencia Artificial (solo traducción de archivos)

ℹ️ Nota: Los módulos de IA están disponibles exclusivamente para la traducción de archivos y documentos a través del menú "Traducir archivo". No están disponibles para la traducción simultánea ni los atajos de teclado, ya que sus tiempos de respuesta (2-10 segundos) no son adecuados para la traducción en tiempo real.

Los resultados pueden variar en calidad según el modelo y el prompt configurado. Se recomienda verificar las traducciones importantes.

# Módulo Descripción
10 OpenAI GPT (API) Traducción usando modelos GPT de OpenAI (gpt-4o-mini por defecto)
11 Claude - Anthropic (API) Traducción usando modelos Claude de Anthropic
12 Google Gemini (API) Traducción usando modelos Gemini de Google (gemini-2.0-flash)
13 DeepSeek (API) Traducción usando modelos DeepSeek (deepseek-chat)

Nota: Los módulos marcados con * en la interfaz del complemento requieren al menos una clave API configurada para funcionar.


Uso básico

Traducir texto seleccionado

  1. Seleccionar texto en cualquier aplicación.
  2. Pulsar NVDA+Shift+Y.
  3. La traducción se verbalizará automáticamente.

Traducción simultánea

  1. Pulsar NVDA+Shift+T para activar la capa de comandos.
  2. Pulsar T para activar/desactivar la traducción simultánea.
  3. Todo lo que NVDA verbalice se traducirá automáticamente al idioma destino configurado.

Nota: La traducción simultánea solo funciona con los 9 módulos online (Google, DeepL, LibreTranslate, Microsoft Bing). Los módulos de IA no están disponibles para esta función.

Interfaz de traducción

  1. Pulsar NVDA+Shift+U para abrir la interfaz de traducción.
  2. Escribir o pegar texto en el campo de origen.
  3. Seleccionar idiomas de origen y destino.
  4. Pulsar el botón Traducir o Enter.
  5. El resultado aparece en el campo de destino.
  6. Pulsar F3 para pegar la traducción en la aplicación activa.

Capa de comandos

La capa de comandos permite ejecutar acciones del complemento con una sola tecla. Se activa pulsando NVDA+Shift+T y se desactiva automáticamente después de ejecutar cualquier acción.

Lista completa de teclas

Tecla Acción Descripción
P Configuración Abre el diálogo de configuración del complemento
U Actualizaciones Comprueba si hay actualizaciones de idiomas disponibles
O Idioma origen Muestra el idioma de origen actual
D Idioma destino Muestra el idioma de destino actual
C Cambiar módulo Cambia al siguiente módulo de traducción
A Borrar toda caché Elimina toda la caché de traducciones
X Borrar caché app Elimina la caché de la aplicación enfocada
G Toggle caché Activa o desactiva la caché de traducción
L Copiar última Copia la última traducción al portapapeles
B Traducir portapapeles Traduce el contenido del portapapeles
V Traducir verbalizado Traduce el último texto que NVDA verbalizó
T Toggle simultánea Activa o desactiva la traducción simultánea
S Traducir selección Traduce el texto seleccionado
Z Traducir navegador Traduce el texto del objeto del navegador
W Interfaz traducción Abre la interfaz completa de traducción
I Detectar idioma Detecta el idioma del texto seleccionado
J Toggle intercambio Activa o desactiva el intercambio automático de idiomas
K Intercambiar idiomas Intercambia el idioma principal con el alternativo
H Historial Muestra el historial de traducciones
F1 Lista de comandos Muestra esta lista de teclas

Nota: Todos los atajos son configurables desde el menú de NVDA > Preferencias > Gestos de entrada > Traductor Avanzado.


Interfaz de traducción

La interfaz de traducción (NVDA+Shift+U o tecla W en la capa de comandos) ofrece:

Controles y atajos

Atajo Control
Alt+1 Campo de texto origen
Alt+2 Campo de texto destino (solo lectura)
Alt+3 Selector de idioma origen
Alt+4 Selector de idioma destino
Alt+5 Contador de caracteres
F3 Pegar la traducción en la aplicación activa
Ctrl+H Ayuda contextual del control enfocado
Escape Cerrar la interfaz

Botones


Traducción de archivos

El complemento soporta la traducción de archivos completos en los siguientes formatos, todos implementados sin necesidad de librerías externas:

Formato Extensiones Descripción
Texto plano .txt Archivos de texto con codificación UTF-8 o Latin-1
HTML .html, .htm Extrae texto visible eliminando etiquetas, scripts y estilos
CSV .csv Archivos de valores separados por comas
Subtítulos SRT .srt Subtítulos con preservación de tiempos
Markdown .md Archivos Markdown
Gettext PO/POT .po, .pot Archivos de traducción gettext (traduce msgstr vacíos)
Microsoft Word .docx Extrae texto de archivos DOCX (son ZIPs con XML internamente)

¿Cómo traducir un archivo?

  1. Ir al menú de NVDA > Herramientas > Traductor Avanzado > Traducir archivo.
  2. Elegir el servicio de traducción: se muestran todos los módulos disponibles, tanto online como de IA.
  3. Elegir el idioma de origen: seleccionar el idioma del archivo o "Autodetectar".
  4. Elegir el idioma de destino: seleccionar el idioma al que se desea traducir.
  5. Seleccionar el archivo a traducir.
  6. Elegir la ubicación para guardar el archivo traducido.
  7. El complemento mostrará un diálogo de progreso con el porcentaje de traducción.

💡 Consejo: Para archivos largos o que requieran mayor calidad, usa los módulos de IA (OpenAI, Claude, Gemini, DeepSeek). Para traducciones rápidas de archivos cortos, los módulos online son más eficientes.


Reproducción de audio TTS

El complemento incluye un reproductor de audio integrado que permite escuchar las traducciones mediante síntesis de voz de Google.

Controles del reproductor

Control Descripción
Reproducir Inicia o reanuda la reproducción
Pausa Pausa la reproducción actual
Detener Detiene la reproducción y vuelve al inicio
Retroceder Retrocede N segundos (configurable)
Avanzar Avanza N segundos (configurable)
Volumen Control deslizante de 0% a 100%
Velocidad 0.50x, 0.75x, 1.0x, 1.25x, 1.50x, 1.75x, 2.0x
Espacio Alternar entre reproducir y pausar
Escape Cerrar el reproductor

El reproductor es compatible con NVDA 2025.1 (Python 3.11, 32 bits) y NVDA 2026.1 (Python 3.13, 64 bits), cargando automáticamente la versión correcta de la biblioteca wx.media.


Configuración

Accesible desde la capa de comandos (tecla P) o desde el menú de NVDA.

Pestaña General

Opción Descripción
Usar caché de traducción Almacena traducciones para evitar repetir consultas
No mostrar diálogo de resultados Copia la traducción directamente al portapapeles
Intercambio automático Si el idioma detectado coincide con el destino, intercambia automáticamente
Sonidos de la capa de comandos Reproduce sonidos al activar/desactivar la capa
Idioma de traducción Idioma de destino por defecto
Idioma alternativo Idioma secundario para intercambio rápido

Pestaña Módulos de Traducción

Pestaña Configuración de IA

Esta pestaña permite personalizar el comportamiento de los módulos de inteligencia artificial (OpenAI, Claude, Gemini, DeepSeek).

Opción Descripción
Servicio de IA Selecciona el servicio a configurar
Modelo Elige el modelo a utilizar de la lista predefinida
Obtener modelos desde la API Descarga la lista completa de modelos disponibles directamente desde el proveedor (requiere clave API configurada)
Prompt de traducción Personaliza el prompt que se envía al modelo. Usa {src} para idioma origen y {tgt} para idioma destino
Restablecer prompt por defecto Vuelve al prompt original del complemento

Cada servicio de IA guarda su propia configuración de prompt y modelo de forma independiente.


Gestión de claves API

Servicios que requieren API

Para usar DeepL API, LibreTranslate, OpenAI, Claude, Gemini o DeepSeek, necesitas obtener claves API de sus respectivos proveedores:

Servicio Dónde obtener la clave
DeepL API Free deepl.com/pro (plan gratuito, 500K caracteres/mes)
DeepL API Pro deepl.com/pro (plan de pago)
LibreTranslate Tu propia instancia o translate.nvda.es
OpenAI GPT platform.openai.com
Claude console.anthropic.com
Gemini aistudio.google.com
DeepSeek platform.deepseek.com

Rotación automática de claves

Si configuras múltiples claves para un mismo servicio, el complemento rotará automáticamente a la siguiente clave cuando una falle o se agote su cuota. Esto es especialmente útil para servicios con límites de uso gratuito.


Caché de traducciones

La caché almacena las traducciones realizadas en archivos JSON dentro del directorio de configuración de NVDA (TranslateAdvancedCache/). Cada aplicación tiene su propio archivo de caché.


Historial de traducciones

El historial almacena las últimas 500 traducciones realizadas (origen y destino). Se accede con la tecla H en la capa de comandos y permite:


Actualización de idiomas y documentación

El complemento puede descargar tanto traducciones (locale) como documentación traducida de forma independiente desde el repositorio de GitHub.

Cómo funciona

  1. Al iniciar NVDA, el complemento comprueba automáticamente si hay actualizaciones disponibles.
  2. Si las hay, el menú mostrará el número de actualizaciones pendientes (ejemplo: "Actualizar idiomas del complemento (3 disponibles)").
  3. Al comprobar manualmente (tecla U o menú), se muestra un resumen detallado con los idiomas y tipos de actualización (locale, doc).
  4. Al aceptar, se muestra un diálogo de progreso con información en tiempo real sobre cada descarga.
  5. Al finalizar, se informa del número de paquetes actualizados correctamente.

Tipos de actualización

Tipo Contenido Destino
locale Traducciones del complemento (.po) addon/locale/{idioma}/
doc Documentación traducida (readme.md) addon/doc/{idioma}/

Los paquetes de idioma se gestionan en el directorio translates/ del repositorio. Consulta translates/README.md para instrucciones sobre cómo crear y gestionar paquetes.


El complemento añade un submenú en Preferencias > Traductor Avanzado con las siguientes opciones:

Opción Descripción
Configuración de Traductor Avanzado Abre el diálogo de ajustes
Actualizar idiomas del complemento (N disponibles) Comprueba y descarga actualizaciones. Muestra el número de actualizaciones pendientes
Documentación del complemento Abre esta documentación en el navegador
Invítame a un café si te gusta mi trabajo Enlace de donación vía PayPal

Seguridad

Encriptación de claves API

Las claves API se almacenan encriptadas en el archivo apis.enc dentro del directorio de datos del complemento (TranslateAdvancedData/). La encriptación usa una clave derivada del nombre del equipo y usuario del sistema, lo que garantiza que las claves solo sean legibles en el equipo donde fueron configuradas.

Modo seguro de NVDA

Cuando NVDA se ejecuta en modo seguro (pantallas de inicio de sesión, UAC, etc.), todas las funciones del complemento se desactivan automáticamente por seguridad.

⚠️ Advertencia sobre copias portables de NVDA

Si creas una copia portable de NVDA para compartirla o distribuirla, ten en cuenta lo siguiente:

Ruta típica en la copia portable: [carpeta_portable]\userConfig\TranslateAdvancedData\

Migración desde versiones anteriores

Si actualizas desde una versión anterior del complemento, el sistema migrará automáticamente: - Las claves API del formato viejo (apis.json) al nuevo formato encriptado (apis.enc). - La caché de traducciones existente sin pérdida de datos. - La configuración guardada en config.conf de NVDA.


Compilación

Requisitos

Compilar el complemento

bash scons

Esto genera el archivo .nvda-addon en el directorio raíz del proyecto.

Generar archivo de traducciones

bash scons pot

Publicar en GitHub

Ejecutar el script publicar.bat que ofrece un menú interactivo con las opciones:

  1. Subida completa (limpiar, commit, push, tag, release automática)
  2. Solo commit y push
  3. Solo crear tag
  4. Inicializar repositorio
  5. Compilar localmente

Estructura del proyecto

TranslateAdvanced/ ├── .github/ │ └── workflows/ │ ├── build_addon.yml ← Build + Release automática │ └── submit_to_store.yml ← Generación de JSON para tienda NVDA ├── addon/ │ ├── doc/es/readme.md ← Documentación en español │ └── globalPlugins/TranslateAdvanced/ │ ├── __init__.py ← GlobalPlugin principal (20 scripts) │ ├── nucleo/ ← Módulos del núcleo │ │ ├── gestor_ajustes.py ← Configuración centralizada │ │ ├── gestor_cache.py ← Caché de traducciones │ │ ├── gestor_apis.py ← Claves API encriptadas │ │ ├── gestor_idiomas.py ← Catálogo de idiomas por servicio │ │ ├── gestor_historial.py ← Historial de traducciones │ │ └── gestor_actualizaciones.py ← Actualización de idiomas │ ├── traductores/ ← 13 módulos de traducción │ │ ├── base.py ← Clase abstracta base │ │ ├── google_web.py ← Google Translate WEB 1 │ │ ├── google_web_alt.py ← Google Translate WEB 2 │ │ ├── google_api_free.py ← Google API Free 1 │ │ ├── google_api_free_alt.py ← Google API Free 2 │ │ ├── deepl_free.py ← DeepL Free (JSON-RPC) │ │ ├── deepl_api.py ← DeepL API (Free + Pro) │ │ ├── libretranslate.py ← LibreTranslate API │ │ ├── microsoft_free.py ← Microsoft Bing Free │ │ ├── openai_api.py ← OpenAI GPT │ │ ├── claude_api.py ← Claude (Anthropic) │ │ ├── gemini_api.py ← Google Gemini │ │ └── deepseek_api.py ← DeepSeek │ ├── servicios/ ← Servicios auxiliares │ │ ├── detector_idiomas.py ← Detección de idioma │ │ ├── tts_google.py ← Text-to-Speech via Google │ │ └── intercepcion_voz.py ← Intercepción de speech de NVDA │ ├── formatos/ ← Procesadores de archivos │ │ ├── base.py ← Clase abstracta │ │ ├── formato_txt.py ← Texto plano │ │ ├── formato_html.py ← HTML │ │ ├── formato_csv.py ← CSV │ │ ├── formato_srt.py ← Subtítulos SRT │ │ ├── formato_md.py ← Markdown │ │ ├── formato_po.py ← Gettext PO/POT │ │ └── formato_docx.py ← Microsoft Word DOCX │ ├── guis/ ← Interfaces de usuario │ │ ├── dialogo_ajustes.py ← Configuración por pestañas │ │ ├── dialogo_traduccion.py ← Interfaz principal de traducción │ │ ├── dialogo_historial.py ← Historial de traducciones │ │ ├── dialogo_progreso.py ← Diálogo de progreso │ │ └── reproductor_audio.py ← Reproductor de audio TTS │ ├── utilidades/ ← Funciones auxiliares │ │ ├── red.py ← HTTP/SSL con reintentos │ │ ├── seguridad.py ← Encriptación y modo seguro │ │ ├── texto.py ← Procesamiento de texto │ │ ├── nvda_utils.py ← Utilidades de NVDA │ │ └── ayuda_contextual.py ← Sistema Ctrl+H │ └── datos/ ← Recursos │ ├── sonidos/ ← open.wav, close.wav │ └── lib/ ← wx.media (32 y 64 bits) ├── translates/ ← Paquetes de idioma │ ├── languages.json ← Registro de versiones │ └── README.md ← Instrucciones de gestión ├── buildVars.py ← Variables de compilación ├── sconstruct ← Script de compilación SCons ├── publicar.bat ← Script de publicación Windows ├── changelog.md ← Registro de cambios └── readme.md ← Este archivo


Autor

Héctor J. Benítez Corredera (xebolax@gmail.com)


Licencia

Este complemento está cubierto por la Licencia Pública General de GNU v2.


Agradecimientos

A toda la comunidad de NVDA en español e internacional por su apoyo constante, pruebas y sugerencias que han hecho posible este complemento.