🔧 Detalles Técnicos de BuxarTranslate

Archivo: technical.html
Propósito: Información técnica sobre arquitectura, API y estructura interna

📁 Estructura del Proyecto

buxartranslate/ ├── manifest.json # Configuración de extensión ├── background.js # Script de fondo (lógica principal) ├── popup.html # Interfaz de popup ├── popup.js # Lógica de popup ├── icons/ # Iconos de extensión │ ├── icon-16.png │ ├── icon-32.png │ ├── icon-48.png │ ├── icon-64.png │ └── icon-128.png └── _locales/ # Localización ├── en/ │ └── messages.json ├── ru/ │ └── messages.json ├── de/ │ └── messages.json ├── es/ │ └── messages.json ├── it/ │ └── messages.json └── fr/ └── messages.json

🔑 Archivos Clave

manifest.json

Tipo: WebExtension para Thunderbird

Versión API: 78.0+

Permisos: storage, menus, notifications, activeTab

background.js

Propósito: Lógica principal de extensión

Funciones: Menú contextual, API de traducciones, gestión de ventanas

popup.js

Propósito: Lógica de interfaz de configuraciones

Funciones: Gestión de configuraciones, búsqueda de idiomas, localización

🌐 API e Integraciones

Google Translate API

Detección de idioma: https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=ld&q=...
Traducción de texto: https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=t&q=...
// Función de traducción vía API de Google async function translateWithGoogle(text, sourceLang, targetLang) { const url = `https://translate.googleapis.com/translate_a/single?client=gtx&sl=${sourceLang}&tl=${targetLang}&dt=t&q=${encodeURIComponent(text)}`; const response = await fetch(url); if (!response.ok) { throw new Error(`Google API error: ${response.status}`); } const data = await response.json(); let translatedText = ""; if (data && data[0]) { data[0].forEach(item => { if (item[0]) translatedText += item[0]; }); } return preserveLineBreaks(translatedText || text, text); }

Thunderbird WebExtension API

browser.menus

Creación y gestión de menú contextual

browser.menus.create({ id: "translate", title: menuTitle, contexts: ["selection"] });

browser.storage

Almacenamiento de configuraciones y datos

// Guardar configuraciones await browser.storage.local.set(settings); // Cargar configuraciones const settings = await browser.storage.local.get(defaultSettings);

browser.notifications

Visualización de notificaciones del sistema

browser.notifications.create({ type: "basic", iconUrl: "icon.png", title: title, message: message });

browser.windows

Gestión de ventanas de traducción

const translationWindow = await browser.windows.create({ url: url, type: 'popup', width: 550, height: 600 });

🔄 Sistema de Mensajes

Comunicación entre componentes de extensión:

// Manejador de mensajes en background.js browser.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === "getTranslation") { browser.storage.local.get("lastTranslation").then(result => { sendResponse(result); }); return true; } if (request.action === "getSettings") { // ... manejo de solicitud de configuraciones } if (request.action === "saveSettings") { // ... manejo de guardado de configuraciones } });

💾 Almacenamiento de Datos

// Estructura de datos en localStorage { // Configuraciones de usuario "translateTo": "es", "autoDetectLanguage": true, "windowDisplayTime": 30, "userLang": "auto", // Idiomas usados recientemente "recentLanguages": ["es", "en", "ru", "de", "fr"], // Historial de traducciones "lastTranslation": { "original": "Hello world", "translated": "Hola mundo", "sourceLang": "en", "targetLang": "es", "timestamp": 1700000000000, "translator": "google" }, // ID de ventana de traducción abierta "translationWindowId": 12345 }

🔧 Arquitectura de Extensión

Estructura de Componentes

Flujo de Datos

  1. Usuario selecciona texto → menú contextual
  2. Script de fondo obtiene texto → detecta idioma
  3. Solicitud a Google Translate API → obtiene traducción
  4. Guarda traducción → muestra notificación y ventana
  5. Actualiza interfaz de popup con historial de traducciones

🛡️ Seguridad

Conexiones HTTPS

Todas las solicitudes a API de Google se realizan mediante protocolo HTTPS seguro

Almacenamiento Local

Configuraciones y datos de usuario se almacenan localmente en navegador

Permisos Mínimos

Extensión solicita solo permisos necesarios para operación

Manejo de Errores

Sistema integral de manejo y visualización de errores para usuarios