Détection de Langue : Support Multilingue Dynamique

Cet article explique comment nous détectons automatiquement et servons le contenu dans la langue préférée de l'utilisateur.

Le Problème : Servir des Utilisateurs Mondiaux

Les utilisateurs viennent de différents pays et parlent différentes langues :

  • Inde : Hindi, Bengali, Tamoul, Télougou, Gujarati, Marathi, Kannada, Malayalam, Pendjabi, Urdu

  • Europe : Allemand, Français, Espagnol, Italien, Portugais, Russe

  • Asie : Japonais, Coréen, Chinois

Nous devons détecter leur préférence linguistique et servir automatiquement le contenu traduit.

Priorité de Détection

Nous vérifions plusieurs sources dans l'ordre :

1. Paramètre d'URL (?lang=hi)

2. Session (stockée après la première détection)

3. Cookie (translation_lang ou lang)

4. En-tête Accept-Language du navigateur (futur)

5. Par défaut (Anglais)

Pourquoi cet ordre ?

Paramètre d'URL en premier : Permet un changement de langue explicite

Session en second : Persiste pendant la session de navigation

Cookie en troisième : Persiste entre les sessions (30 jours)

Par défaut en dernier : Solution de repli pour les nouveaux utilisateurs

Implémentation

def get_locale():
    # 1. Vérifier le paramètre d'URL
    lang_param = request.args.get("lang")
    if lang_param in valid_langs:
        return lang_param

    # 2. Vérifier la session
    if "translation_lang" in session:
        return session["translation_lang"]

    # 3. Vérifier le cookie
    # ... (détails d'implémentation omis)

Changement de Langue

Les utilisateurs peuvent changer de langue via l'URL :

/p/Treo-N100-8-256?lang=hi

Cela déclenche :

1. Définir la session : session["translation_lang"] = "hi"

2. Définir le cookie : translation_lang=hi; Max-Age=2592000 (30 jours)

3. Rediriger : Retirer le paramètre lang de l'URL

Avantage : URLs propres après la sélection de la langue

Langues Supportées

Nous supportons 20 langues :

Langues indiennes (10) :

  • Hindi (hi)

  • Bengali (bn)

  • Tamoul (ta)

  • Télougou (te)

  • Gujarati (gu)

  • Marathi (mr)

  • Kannada (kn)

  • Malayalam (ml)

  • Pendjabi (pa)

  • Urdu (ur)

Langues européennes (7) :

  • Allemand (de)

  • Français (fr)

  • Espagnol (es)

  • Italien (it)

  • Portugais (pt)

  • Russe (ru)

Langues asiatiques (3) :

  • Japonais (ja)

  • Coréen (ko)

  • Chinois (zh)

Traduction du Contenu

Différents types de contenu utilisent différentes méthodes de traduction :

Modèles Statiques (Flask-Babel)

Navigation, boutons, étiquettes traduits via des fichiers .po :

{{ _('Add to Cart') }}  → "कार्ट में जोड़ें" (Hindi)

Contenu Dynamique (TranslationManager)

Noms de produits, fonctionnalités traduits via des tables de phrases :

"Mini PC" → "मिनी पीसी" (Hindi)

Contenu Long (DeepSeek AI)

Descriptions de produits, articles traduits via l'IA :

"Compact office computer..." → "कॉम्पैक्ट ऑफिस कंप्यूटर..." (Hindi)

Voir : Système de Traduction pour les détails

Formatage Régional

La sélection de la langue affecte également le formatage :

Format des Nombres

Anglais : 1,234.56

Européen : 1.234,56 (séparateurs inversés)

Indien : 1,23,456 (groupage en lakhs/crores)

Format des Dates

Anglais : Feb 18, 2026

Européen : 18.02.2026

Indien : 18/02/2026

Devise

Anglais : ₹1,234

Européen : €1.234

International : $1,234

Interface Utilisateur du Sélecteur de Langue

Les utilisateurs peuvent changer de langue via un menu déroulant :

Emplacement : Barre de navigation supérieure

Affichage : Icône de drapeau + nom de la langue

Comportement : Recharger la page avec ?lang=<code>

Considérations SEO

Structure d'URL

Nous utilisons une seule URL pour toutes les langues (pas de préfixes /hi/, /de/) :

Avantage : Architecture plus simple, pas de problèmes de contenu dupliqué

Compromis : Moins de valeur SEO par langue

Balises Hreflang

Nous ajoutons des liens de langue alternatifs :

<link rel="alternate" hreflang="en" href="https://www.thinvent.in/p/Treo-N100">
<link rel="alternate" hreflang="hi" href="https://www.thinvent.in/p/Treo-N100?lang=hi">
<link rel="alternate" hreflang="de" href="https://www.thinvent.in/p/Treo-N100?lang=de">

Avantage : Google sait quelle version linguistique afficher

Stratégie de Repli

Si la traduction manque pour la langue sélectionnée :

1. Essayer l'anglais : La plupart du contenu a une version anglaise

2. Afficher l'original : Mieux que rien

3. Mettre en file d'attente pour traduction : Ajouter à la file d'attente de traduction pour un traitement par lots

Performance

Mise en Cache

Les traductions sont mises en cache en mémoire :

Tables de phrases : Chargées une fois au démarrage

Traductions IA : Mises en cache dans la base de données

Avantage : Aucune surcharge de traduction par requête

Chargement Paresseux

Les traductions ne sont chargées que lorsque nécessaire :

Descriptions de produits : Chargées lors de la visualisation de la page produit

Contenu de la page de requête : Chargé lors de la visualisation de la page de requête

Avantage : Chargement initial de la page plus rapide

Références

Concepts Techniques

Bibliothèques

  • Flask-Babel - Traduction de modèles

  • Babel - Bibliothèque d'internationalisation

Articles Connexes

Résumé

La détection de langue utilise un système de priorité :

Ordre de détection :

  • ✅ Paramètre d'URL (?lang=hi)

  • ✅ Session (pendant la navigation)

  • ✅ Cookie (30 jours)

  • ✅ Par défaut (Anglais)

Supporté :

  • ✅ 20 langues (10 indiennes, 7 européennes, 3 asiatiques)

  • ✅ Formatage régional (nombres, dates, devises)

  • ✅ Balises SEO hreflang

Méthodes de traduction :

  • ✅ Flask-Babel (modèles statiques)

  • ✅ TranslationManager (noms de produits, fonctionnalités)

  • ✅ DeepSeek AI (descriptions, articles)

Performance :

  • ✅ Mise en cache en mémoire

  • ✅ Chargement paresseux

  • ✅ Mise en cache en base de données pour les traductions IA

Cela permet une détection automatique de la langue et une expérience multilingue transparente.


← Retour à l'Index de Documentation