๐ŸŒ Localizzazione BuxarTranslate

File: localization.html
Scopo: Guida alla localizzazione e aggiunta di nuove lingue

๐ŸŒ Lingue dell'interfaccia supportate

๐Ÿ‡บ๐Ÿ‡ธ English en

Lingua predefinita, supporto completo

๐Ÿ‡ท๐Ÿ‡บ Russo ru

Localizzazione completa dell'interfaccia

๐Ÿ‡ฉ๐Ÿ‡ช Deutsch de

Lingua dell'interfaccia tedesca

๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol es

Lingua dell'interfaccia spagnola

๐Ÿ‡ซ๐Ÿ‡ท Franรงais fr

Lingua dell'interfaccia francese

๐Ÿ‡ฎ๐Ÿ‡น Italiano it

Lingua dell'interfaccia italiana

๐Ÿ“ Struttura della localizzazione

La localizzazione รจ organizzata secondo lo standard WebExtensions nella cartella _locales:

_locales/ โ”œโ”€โ”€ en/ โ”‚ โ””โ”€โ”€ messages.json # Traduzioni inglesi โ”œโ”€โ”€ ru/ โ”‚ โ””โ”€โ”€ messages.json # Traduzioni russe โ”œโ”€โ”€ de/ โ”‚ โ””โ”€โ”€ messages.json # Traduzioni tedesche โ”œโ”€โ”€ es/ โ”‚ โ””โ”€โ”€ messages.json # Traduzioni spagnole โ”œโ”€โ”€ it/ โ”‚ โ””โ”€โ”€ messages.json # Traduzioni italiane โ””โ”€โ”€ fr/ โ””โ”€โ”€ messages.json # Traduzioni francesi

๐Ÿ“ Formato dei file di traduzione

Ogni file messages.json contiene un oggetto con chiavi di traduzione:

{ "extensionName": { "message": "BuxarTranslate", "description": "Nome dell'estensione" }, "extensionDescription": { "message": "Translate selected text in emails with one click", "description": "Descrizione dell'estensione" }, "translateTo": { "message": "Translate to $1", "description": "Voce del menu contestuale" }, "selectTextRightClick": { "message": "Select text โ†’ Right-click โ†’ Translate", "description": "Istruzione nel popup" } }

๐Ÿ”ง Aggiunta di una nuova lingua

1. Crea una cartella per la lingua

Crea una cartella con il codice lingua nella directory _locales/

mkdir _locales/ja # per la lingua giapponese
2. Crea il file messages.json

Crea il file di traduzione nella nuova cartella

touch _locales/ja/messages.json
3. Aggiungi le traduzioni

Copia la struttura dal file inglese e traduci tutti i valori

{ "extensionName": { "message": "BuxarTranslate", "description": "Nome dell'estensione" }, "translateTo": { "message": "Traduci in $1", "description": "Voce del menu contestuale" } }
4. Aggiorna la scansione delle lingue

Aggiungi il codice lingua alla funzione scanAvailableLanguages() in popup.js

// Nel file popup.js const possibleLangs = ['en', 'ru', 'es', 'de', 'fr', 'it', 'ja', 'zh', 'ko']; // Aggiungi la tua lingua all'array possibleLangs
5. Testa la traduzione

Installa l'estensione e verifica il funzionamento della nuova lingua

๐Ÿ”„ Caricamento dinamico delle traduzioni

Il sistema carica dinamicamente le traduzioni per la lingua selezionata:

// Caricamento delle traduzioni per una lingua specifica async function loadTranslations(lang) { try { const response = await fetch(`_locales/${lang}/messages.json`); if (response.ok) { return await response.json(); } } catch (error) { console.error(`Error loading translations for ${lang}:`, error); } return null; } // Gestore della lingua const LanguageManager = { async init() { const storage = await browser.storage.local.get('userLang'); const userLang = storage.userLang || 'auto'; // Determina la lingua dell'interfaccia if (userLang === 'auto') { const uiLang = browser.i18n.getUILanguage(); this.currentLang = uiLang.split('-')[0]; } else { this.currentLang = userLang; } // Carica le traduzioni this.translations = await loadTranslations(this.currentLang) || {}; } };

๐ŸŽฏ Elementi chiave della traduzione

Chiavi obbligatorie da tradurre:

Segnaposto nelle traduzioni:

// Esempio di utilizzo dei segnaposto "translateTo": { "message": "Translate to $1", "description": "Voce del menu contestuale" } // Nel codice: const menuTitle = browser.i18n.getMessage("translateTo", [targetLangName]);

๐Ÿ” Test della localizzazione

Rilevamento automatico

Imposta userLang: "auto" per testare il rilevamento automatico della lingua

Selezione manuale

Utilizza il menu a tendina nelle impostazioni per passare da una lingua all'altra

Verifica di tutti gli elementi

Assicurati che tutti gli elementi dell'interfaccia e i messaggi siano tradotti

Test dei segnaposto

Verifica la corretta sostituzione di $1, $2, ecc. nelle traduzioni

โš ๏ธ Problemi comuni

Chiavi mancanti

Soluzione: Assicurati che tutte le chiavi della versione inglese siano presenti nella traduzione

Segnaposto errati

Soluzione: Verifica la corrispondenza del numero di $1, $2 nella traduzione e nel codice

Codifica dei file

Soluzione: Salva i file JSON con codifica UTF-8

Errori di sintassi

Soluzione: Verifica la validitร  del JSON utilizzando un validatore JSON