๐Ÿ”ง Dettagli tecnici BuxarTranslate

File: technical.html
Scopo: Informazioni tecniche su architettura, API e struttura interna

๐Ÿ“ Struttura del progetto

buxartranslate/ โ”œโ”€โ”€ manifest.json # Configurazione dell'estensione โ”œโ”€โ”€ background.js # Script di background (logica principale) โ”œโ”€โ”€ popup.html # Interfaccia popup โ”œโ”€โ”€ popup.js # Logica popup โ”œโ”€โ”€ icons/ # Icone dell'estensione โ”‚ โ”œโ”€โ”€ icon-16.png โ”‚ โ”œโ”€โ”€ icon-32.png โ”‚ โ”œโ”€โ”€ icon-48.png โ”‚ โ”œโ”€โ”€ icon-64.png โ”‚ โ””โ”€โ”€ icon-128.png โ””โ”€โ”€ _locales/ # Localizzazione โ”œโ”€โ”€ en/ โ”‚ โ””โ”€โ”€ messages.json โ”œโ”€โ”€ ru/ โ”‚ โ””โ”€โ”€ messages.json โ”œโ”€โ”€ de/ โ”‚ โ””โ”€โ”€ messages.json โ”œโ”€โ”€ es/ โ”‚ โ””โ”€โ”€ messages.json โ”œโ”€โ”€ it/ โ”‚ โ””โ”€โ”€ messages.json โ””โ”€โ”€ fr/ โ””โ”€โ”€ messages.json

๐Ÿ”‘ File chiave

manifest.json

Tipo: WebExtension per Thunderbird

Versione API: 78.0+

Permessi: storage, menus, notifications, activeTab

background.js

Scopo: Logica principale dell'estensione

Funzioni: Menu contestuale, API traduzioni, gestione finestre

popup.js

Scopo: Logica dell'interfaccia delle impostazioni

Funzioni: Gestione impostazioni, ricerca lingue, localizzazione

๐ŸŒ API e integrazioni

Google Translate API

Rilevamento lingua: https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=ld&q=...
Traduzione testo: https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=it&dt=t&q=...
// Funzione di traduzione tramite API 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

Creazione e gestione del menu contestuale

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

browser.storage

Memorizzazione impostazioni e dati

// Salvataggio impostazioni await browser.storage.local.set(settings); // Caricamento impostazioni const settings = await browser.storage.local.get(defaultSettings);

browser.notifications

Visualizzazione notifiche di sistema

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

browser.windows

Gestione finestre di traduzione

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

๐Ÿ”„ Sistema di messaggistica

Comunicazione tra i componenti dell'estensione:

// Gestore messaggi in 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") { // ... gestione richiesta impostazioni } if (request.action === "saveSettings") { // ... gestione salvataggio impostazioni } });

๐Ÿ’พ Memorizzazione dati

// Struttura dati in localStorage { // Impostazioni utente "translateTo": "it", "autoDetectLanguage": true, "windowDisplayTime": 30, "userLang": "auto", // Lingue utilizzate di recente "recentLanguages": ["it", "en", "es", "fr", "de"], // Cronologia traduzioni "lastTranslation": { "original": "Hello world", "translated": "Ciao mondo", "sourceLang": "en", "targetLang": "it", "timestamp": 1700000000000, "translator": "google" }, // ID finestra di traduzione aperta "translationWindowId": 12345 }

๐Ÿ”ง Architettura dell'estensione

Struttura componenti

Flusso dati

  1. Utente seleziona testo โ†’ menu contestuale
  2. Background script riceve testo โ†’ rileva lingua
  3. Richiesta a Google Translate API โ†’ riceve traduzione
  4. Salvataggio traduzione โ†’ mostra notifica e finestra
  5. Aggiornamento interfaccia popup con cronologia traduzioni

๐Ÿ›ก๏ธ Sicurezza

Connessioni HTTPS

Tutte le richieste all'API Google vengono eseguite tramite protocollo HTTPS sicuro

Memorizzazione locale

Impostazioni e dati utente memorizzati localmente nel browser

Permessi minimi

L'estensione richiede solo i permessi necessari per il funzionamento

Gestione errori

Sistema complesso di gestione e visualizzazione errori all'utente