🌍 Localisation de BuxarTranslate

Fichier: localization.html
But: Guide de localisation et ajout de nouvelles langues

🌐 Langues d'Interface Supportées

🇺🇸 Anglais en

Langue par défaut, support complet

🇷🇺 Russe ru

Localisation complète de l'interface

🇩🇪 Allemand de

Langue d'interface allemande

🇪🇸 Espagnol es

Langue d'interface espagnole

🇫🇷 Français fr

Langue d'interface française

🇮🇹 Italien it

Langue d'interface italienne

📁 Structure de Localisation

La localisation est organisée selon la norme WebExtensions dans le dossier _locales:

_locales/ ├── en/ │ └── messages.json # Traductions anglaises ├── ru/ │ └── messages.json # Traductions russes ├── de/ │ └── messages.json # Traductions allemandes ├── es/ │ └── messages.json # Traductions espagnoles ├── it/ │ └── messages.json # Traductions italiennes └── fr/ └── messages.json # Traductions françaises

📝 Format des Fichiers de Traduction

Chaque fichier messages.json contient un objet avec des clés de traduction:

{ "extensionName": { "message": "BuxarTranslate", "description": "Nom de l'extension" }, "extensionDescription": { "message": "Traduire le texte sélectionné dans les emails en un clic", "description": "Description de l'extension" }, "translateTo": { "message": "Traduire en $1", "description": "Élément du menu contextuel" }, "selectTextRightClick": { "message": "Sélectionner texte → Clic droit → Traduire", "description": "Instruction dans le popup" } }

🔧 Ajouter une Nouvelle Langue

1. Créer un dossier pour la langue

Créez un dossier avec le code de langue dans le répertoire _locales/

mkdir _locales/ja # pour la langue japonaise
2. Créer le fichier messages.json

Créez un fichier de traduction dans le nouveau dossier

touch _locales/ja/messages.json
3. Ajouter les traductions

Copiez la structure du fichier anglais et traduisez toutes les valeurs

{ "extensionName": { "message": "BuxarTranslate", "description": "Nom de l'extension" }, "translateTo": { "message": "Traduire en $1", "description": "Élément du menu contextuel" } }
4. Mettre à jour le balayage des langues

Ajoutez le code de langue à la fonction scanAvailableLanguages() dans popup.js

// Dans le fichier popup.js const possibleLangs = ['en', 'ru', 'es', 'de', 'fr', 'it', 'ja', 'zh', 'ko']; // Ajoutez votre langue au tableau possibleLangs
5. Tester la traduction

Installez l'extension et testez le fonctionnement de la nouvelle langue

🔄 Chargement Dynamique des Traductions

Le système charge dynamiquement les traductions pour la langue sélectionnée:

// Chargement des traductions pour une langue spécifique 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; } // Gestionnaire de langue const LanguageManager = { async init() { const storage = await browser.storage.local.get('userLang'); const userLang = storage.userLang || 'auto'; // Déterminer la langue de l'interface if (userLang === 'auto') { const uiLang = browser.i18n.getUILanguage(); this.currentLang = uiLang.split('-')[0]; } else { this.currentLang = userLang; } // Charger les traductions this.translations = await loadTranslations(this.currentLang) || {}; } };

🎯 Éléments Clés de Traduction

Clés de traduction obligatoires:

Espaces réservés dans les traductions:

// Exemple d'utilisation des espaces réservés "translateTo": { "message": "Traduire en $1", "description": "Élément du menu contextuel" } // Dans le code: const menuTitle = browser.i18n.getMessage("translateTo", [targetLangName]);

🔍 Test de Localisation

Détection Automatique

Définissez userLang: "auto" pour tester la détection automatique de langue

Sélection Manuelle

Utilisez la liste déroulante dans les paramètres pour basculer entre les langues

Vérifier Tous les Éléments

Assurez-vous que tous les éléments d'interface et messages sont traduits

Tester les Espaces Réservés

Vérifiez le remplacement correct de $1, $2 etc. dans les traductions

⚠️ Problèmes Courants

Clés Manquantes

Solution: Assurez-vous que toutes les clés de la version anglaise sont présentes dans la traduction

Espaces Réservés Incorrects

Solution: Vérifiez la correspondance du nombre de $1, $2 dans la traduction et le code

Encodage des Fichiers

Solution: Enregistrez les fichiers JSON en encodage UTF-8

Erreurs Syntaxiques

Solution: Vérifiez la validité JSON à l'aide d'un validateur JSON