# 🔧 SOLUTION - Erreur "unpack requires a buffer of 4 bytes"

## ❌ Problème

Vous obtenez cette erreur lors du changement de langue :
```
unpack requires a buffer of 4 bytes
Error at /i18n/setlang/
```

## ✅ Cause

Le fichier de traduction compilé (`.mo`) est manquant ou corrompu. Django a besoin de ce fichier pour afficher les traductions.

## 🛠️ SOLUTION RAPIDE (Windows)

### Option 1 : Installer gettext et Compiler (Recommandé)

**Étape 1 : Télécharger gettext pour Windows**

Téléchargez depuis : https://mlocati.github.io/articles/gettext-iconv-windows.html

Ou utilisez ce lien direct : https://github.com/mlocati/gettext-iconv-windows/releases

Choisissez : `gettext0.21-iconv1.16-shared-64.exe` (ou la version la plus récente)

**Étape 2 : Installer gettext**

1. Exécutez l'installateur téléchargé
2. Installez dans : `C:\Program Files\gettext-iconv`
3. Cochez "Add to PATH" pendant l'installation

**Étape 3 : Vérifier l'installation**

Ouvrez un nouveau terminal (PowerShell ou CMD) :
```cmd
msgfmt --version
```

Vous devriez voir : `msgfmt (GNU gettext-tools) X.X`

**Étape 4 : Compiler les traductions**

```cmd
cd vigilus_nettoyage
python manage.py compilemessages
```

Vous devriez voir :
```
processing file django.po in vigilus_nettoyage\locale\en\LC_MESSAGES
```

**Étape 5 : Redémarrer le serveur**

```cmd
python manage.py runserver
```

✅ **Le problème est résolu !**

---

### Option 2 : Utiliser le Script Batch (Plus Simple)

J'ai créé un script qui fait tout automatiquement.

**Étape 1 : Télécharger gettext**

Téléchargez : https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe

**Étape 2 : Installer dans le dossier du projet**

1. Créez un dossier : `vigilus_nettoyage\tools\gettext\`
2. Installez gettext dedans
3. Les fichiers devraient être dans : `vigilus_nettoyage\tools\gettext\bin\`

**Étape 3 : Exécuter le script**

Double-cliquez sur : `compile_translations_windows.bat`

Le script va :
- Trouver gettext
- Compiler les traductions
- Redémarrer le serveur

✅ **C'est fait !**

---

### Option 3 : Mode Développement Sans Traductions (Temporaire)

Si vous voulez juste tester le site rapidement sans installer gettext :

**Étape 1 : Modifier settings.py**

Ouvrez : `config/settings.py`

Trouvez :
```python
USE_I18N = True
```

Changez en :
```python
USE_I18N = False  # Désactiver temporairement les traductions
```

**Étape 2 : Redémarrer le serveur**

```cmd
python manage.py runserver
```

⚠️ **Attention** : Le site sera seulement en français. Pour avoir le bilingue, utilisez l'Option 1 ou 2.

---

## 📝 Vérification

Pour vérifier que tout fonctionne :

1. Allez sur : http://localhost:8000/fr/
2. Cliquez sur le globe 🌐 dans le menu
3. Sélectionnez "English"
4. Le site devrait se recharger en anglais

Si ça marche : ✅ **Succès !**

---

## 🔍 Détails Techniques

### Pourquoi cette erreur ?

Django utilise deux types de fichiers pour les traductions :
- **`.po`** (texte) : Fichier que vous éditez avec les traductions
- **`.mo`** (binaire) : Fichier compilé que Django utilise

Le fichier `.mo` doit être créé à partir du `.po` avec la commande `compilemessages`, qui nécessite l'outil `msgfmt` (fourni par gettext).

### Structure des fichiers

```
locale/
└── en/
    └── LC_MESSAGES/
        ├── django.po   ✅ (présent - 10 KB)
        └── django.mo   ❌ (manquant - doit être créé)
```

### Commandes utiles

**Créer les traductions :**
```cmd
python manage.py makemessages -l en
```

**Compiler les traductions :**
```cmd
python manage.py compilemessages
```

**Voir les traductions via Rosetta :**
```
http://localhost:8000/fr/rosetta/
```

---

## 💡 Conseils

### Pour Développement
- Installez gettext une fois pour toutes
- Ajoutez `msgfmt` à votre PATH
- Les traductions seront automatiques

### Pour Production
- Compilez les traductions avant de déployer
- Incluez les fichiers `.mo` dans le déploiement
- Ne déployez jamais sans fichiers `.mo`

### Avec Rosetta
Rosetta peut compiler automatiquement quand vous sauvegardez, mais nécessite aussi gettext.

---

## 🆘 Toujours Bloqué ?

### Vérification 1 : gettext installé ?
```cmd
msgfmt --version
```

Si erreur : gettext n'est pas installé ou pas dans le PATH

### Vérification 2 : Fichier .mo existe ?
```cmd
dir locale\en\LC_MESSAGES\
```

Vous devez voir `django.mo` (quelques KB)

### Vérification 3 : Permissions ?
Exécutez CMD/PowerShell **en tant qu'administrateur**

---

## 📦 Alternative : gettext via Chocolatey

Si vous avez Chocolatey (gestionnaire de paquets Windows) :

```cmd
choco install gettext
```

Puis :
```cmd
python manage.py compilemessages
```

---

## ✅ Résumé

**Solution la plus simple pour Windows :**

1. Téléchargez gettext : https://mlocati.github.io/articles/gettext-iconv-windows.html
2. Installez-le (cochez "Add to PATH")
3. Ouvrez un nouveau terminal
4. `cd vigilus_nettoyage`
5. `python manage.py compilemessages`
6. `python manage.py runserver`
7. Testez le changement de langue !

---

**Besoin d'aide ? Les fichiers `.po` sont déjà prêts, il suffit juste de les compiler ! 🚀**
