# 🌍 Guide de Traduction - Site Bilingue FR/EN

## Configuration Actuelle

Le site Vigilus Nettoyage est maintenant **bilingue** :
- 🇫🇷 **Français** (langue par défaut)
- 🇬🇧 **Anglais**

## Fonctionnement

### Pour les Visiteurs
1. Un sélecteur de langue est disponible dans le menu de navigation
2. Le choix de langue est sauvegardé dans la session
3. Les URLs sont préfixées par la langue : `/fr/...` ou `/en/...`

### Structure des URLs
- **Français** : `http://localhost:8000/fr/` (par défaut)
- **Anglais** : `http://localhost:8000/en/`
- **Auto** : `http://localhost:8000/` (détecte la langue du navigateur)

## Interface de Traduction Rosetta

### Accès à Rosetta
1. Connectez-vous à l'admin : `http://localhost:8000/fr/admin/`
2. Accédez à Rosetta : `http://localhost:8000/fr/rosetta/`
3. Sélectionnez le fichier de traduction à éditer

### Utiliser Rosetta
1. **Filtrer** : Recherchez des textes spécifiques
2. **Traduire** : Éditez les traductions dans l'interface
3. **Sauvegarder** : Cliquez sur "Save and translate next block"
4. **Compiler** : Les traductions sont automatiquement compilées

## Traductions Actuelles

### Traductions Déjà Faites ✅
Les traductions suivantes sont déjà incluses dans le fichier `/locale/en/LC_MESSAGES/django.po` :

#### Navigation
- Accueil → Home
- Services → Services
- Portfolio → Portfolio
- Certifications → Certifications
- À Propos → About Us
- Contact → Contact
- Devis Gratuit → Free Quote

#### Page d'Accueil
- Excellence en Nettoyage Professionnel → Excellence in Professional Cleaning
- Technologie Drone → Drone Technology
- Certifié ISO → ISO Certified
- Service 24/7 → 24/7 Service

#### Services
- Nettoyage de Bureaux → Office Cleaning
- Nettoyage Industriel → Industrial Cleaning
- Façades (Drones) → Facades (Drones)
- Désinfection → Disinfection

#### Formulaires
- Nom complet → Full name
- Entreprise → Company
- Téléphone → Phone
- Type de service → Service type
- Envoyer ma Demande → Send My Request

Et bien plus... (100+ chaînes traduites)

## Ajouter de Nouvelles Traductions

### Méthode 1 : Via Rosetta (Recommandé)
1. Allez sur `http://localhost:8000/fr/rosetta/`
2. Cherchez le texte à traduire
3. Ajoutez la traduction anglaise
4. Sauvegardez

### Méthode 2 : Modifier le Fichier .po Manuellement
Éditez `/locale/en/LC_MESSAGES/django.po` :

```po
msgid "Texte en français"
msgstr "English text"
```

Puis compilez :
```bash
python manage.py compilemessages
```

## Marquer du Nouveau Texte pour Traduction

### Dans les Templates
Pour les textes courts :
```django
{% load i18n %}
{% trans "Texte à traduire" %}
```

Pour les textes avec variables :
```django
{% blocktrans %}
Bienvenue {{ user_name }}
{% endblocktrans %}
```

### Dans les Models (models.py)
```python
from django.utils.translation import gettext_lazy as _

class MonModele(models.Model):
    titre = models.CharField(
        _("Titre"),
        max_length=200
    )
```

### Dans les Views (views.py)
```python
from django.utils.translation import gettext as _

message = _("Votre demande a été envoyée")
```

## Générer/Mettre à Jour les Traductions

### Quand ajouter de nouveaux textes traduits
```bash
# 1. Marquez les textes avec {% trans %} dans les templates

# 2. Générez/mettez à jour les fichiers .po
python manage.py makemessages -l en

# 3. Traduisez via Rosetta ou éditez le .po manuellement

# 4. Compilez les traductions
python manage.py compilemessages
```

## Contenus Dynamiques (Admin)

### Services, Projets, Témoignages
Pour traduire le contenu créé dans l'admin :

**Option 1 : Contenu Séparé**
- Créez des entrées séparées pour chaque langue
- Ajoutez un champ "langue" dans les models

**Option 2 : django-modeltranslation (Avancé)**
Installez et configurez django-modeltranslation pour traduire automatiquement les champs des models.

```python
# models.py
from django.db import models

class Service(models.Model):
    titre = models.CharField(max_length=200)
    description = models.TextField()
    # Ces champs seront automatiquement dupliqués :
    # titre_fr, titre_en
    # description_fr, description_en
```

## Structure des Fichiers

```
vigilus_nettoyage/
├── locale/
│   └── en/
│       └── LC_MESSAGES/
│           ├── django.po     # Fichier de traduction (éditable)
│           └── django.mo     # Fichier compilé (généré automatiquement)
│
├── config/
│   ├── settings.py          # Configuration i18n
│   └── urls.py              # URLs avec i18n_patterns
│
└── core/
    └── templates/
        └── core/
            ├── base.html    # Avec sélecteur de langue
            └── ...          # Tous les templates avec {% trans %}
```

## Commandes Utiles

### Créer un nouveau fichier de traduction (autre langue)
```bash
python manage.py makemessages -l es  # Pour l'espagnol
python manage.py makemessages -l ar  # Pour l'arabe
```

### Mettre à jour les fichiers existants
```bash
python manage.py makemessages -a  # Toutes les langues
```

### Compiler les traductions
```bash
python manage.py compilemessages
```

### Accéder à Rosetta
```bash
# Démarrez le serveur
python manage.py runserver

# Accédez à http://localhost:8000/fr/rosetta/
```

## Bonnes Pratiques

### 1. Textes Courts
✅ Bon : `{% trans "Accueil" %}`
❌ Éviter : `{% trans "Bienvenue sur notre site de nettoyage professionnel..." %}`

### 2. Textes avec Variables
```django
{% blocktrans with name=user.name %}
Bonjour {{ name }}
{% endblocktrans %}
```

### 3. Pluriels
```django
{% blocktrans count counter=list|length %}
{{ counter }} projet
{% plural %}
{{ counter }} projets
{% endblocktrans %}
```

### 4. Contexte
```python
# Dans le code Python
from django.utils.translation import pgettext

# Pour différencier "Enregistrer" (save) de "Enregistrer" (record)
pgettext("action", "Enregistrer")  # Save
pgettext("audio", "Enregistrer")   # Record
```

## Tester les Traductions

### 1. Changer la langue manuellement
- Utilisez le sélecteur dans le menu
- Ou visitez directement `/en/` ou `/fr/`

### 2. Vérifier via Rosetta
- Interface visuelle pour voir toutes les traductions
- Filtre pour trouver les traductions manquantes

### 3. Navigation du site
- Testez toutes les pages en français et anglais
- Vérifiez les formulaires et messages

## Déploiement

### Avant de déployer
```bash
# 1. Compilez les traductions
python manage.py compilemessages

# 2. Vérifiez les fichiers .mo
ls -la locale/en/LC_MESSAGES/

# 3. Committez les fichiers .po et .mo
git add locale/
git commit -m "Update translations"
```

### Sur le serveur
Les fichiers .mo sont nécessaires en production. Assurez-vous qu'ils sont déployés.

## Ressources

- **Django i18n** : https://docs.djangoproject.com/en/stable/topics/i18n/
- **Rosetta** : https://github.com/mbi/django-rosetta
- **Poedit** : https://poedit.net/ (éditeur .po visuel)

## Support

### Problèmes Courants

**Les traductions ne s'affichent pas**
1. Vérifiez que vous avez compilé : `python manage.py compilemessages`
2. Redémarrez le serveur Django
3. Videz le cache du navigateur

**Certains textes ne sont pas traduits**
1. Vérifiez que le texte est marqué avec `{% trans %}`
2. Régénérez les .po : `python manage.py makemessages -a`
3. Traduisez dans Rosetta
4. Compilez : `python manage.py compilemessages`

**Rosetta ne fonctionne pas**
1. Vérifiez que vous êtes connecté en admin
2. Vérifiez l'URL : `/fr/rosetta/` (pas `/rosetta/`)
3. Vérifiez que rosetta est dans INSTALLED_APPS

---

**Le site est maintenant 100% bilingue et prêt à servir une audience internationale ! 🌍🇫🇷🇬🇧**
