# Détecter la langue et le pays du visiteur (sans redirection)

> Présentation Le module détecte le pays du visiteur (adresse IP) et les langues de son navigateur, puis affiche un bandeau qui propose la même page dans la boutique ou la…

- Page: <https://www.datafirefly.com/documentation/language-country-geolocation-prestashop/>
- Langue: fr
- Mis à jour le: 2026-10-07
- Autres langues: [en](https://www.datafirefly.com/en/documentation/language-country-geolocation-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/language-country-geolocation-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/language-country-geolocation-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/language-country-geolocation-prestashop/index.md), [pl](https://www.datafirefly.com/pl/documentation/language-country-geolocation-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/language-country-geolocation-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/language-country-geolocation-prestashop/index.md)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

## Présentation

Le module détecte le pays du visiteur (adresse IP) et les langues de son navigateur, puis affiche un bandeau qui propose la même page dans la boutique ou la langue qui lui correspond. Il ne redirige jamais : les robots ne voient pas le bandeau et vos balises hreflang restent intactes.

Compatible PrestaShop 8.0 à 9.x, monoboutique et multiboutique. Le bandeau n'apparaît que s'il existe au moins deux destinations actives (deux langues, ou deux boutiques).

## Installation

1. Dans **Modules > Gestionnaire de modules**, cliquez sur **Installer un module** et envoyez le fichier ZIP.
2. Le module crée automatiquement une destination par couple boutique et langue actif.
3. Ouvrez la page du module via le bouton **Configurer** ou le menu **International > Suggestion langue et pays**.

En multiboutique, installez le module dans le contexte « Toutes les boutiques » et vérifiez qu'il est activé sur chaque boutique de destination. Un badge « Module non activé sur cette boutique » vous prévient dans l'onglet Destinations.

## Activer la détection du pays

Le pays est lu, dans cet ordre :

- dans l'en-tête de votre CDN (Cloudflare, CloudFront, Vercel) ;
- dans un fichier MaxMind GeoLite2 si vous en avez un (chemin réglable) ;
- dans la base intégrée, gratuite et du domaine public.

Pour installer la base intégrée, cliquez sur **Installer la base** dans le tableau de bord ou dans **Règles et détection**. Le fichier (environ 8 Mo, IPv4 et IPv6) est téléchargé dans `var/dflocalesuggest/` et lu localement : aucune IP de visiteur n'est envoyée à un tiers. Le statut affiche sa date et conseille une mise à jour au-delà de 45 jours.

Si votre hébergeur bloque les connexions sortantes, le téléchargement échoue avec un message explicite. Déposez alors un fichier .mmdb sur le serveur et indiquez son chemin dans **Règles et détection**.

## Destinations

Chaque ligne est un couple boutique et langue que le bandeau peut proposer.

- **Libellé** : remplace le nom de la boutique dans le bandeau (par exemple « USA »).
- **Pays** : codes ISO séparés par des virgules (FR, BE, CH). Vide signifie tous les pays. Une autre boutique limitée à d'autres pays n'est jamais proposée à un visiteur dont le pays est connu.
- **Langues du navigateur** : codes comme de, de-at, en-gb.
- **Ordre** : glissez les lignes pour départager deux destinations à score égal.

**Ajouter les couples manquants** crée les lignes des nouvelles boutiques ou langues sans toucher aux lignes existantes. Si le module DataFirefly Hreflang est installé, **Importer depuis DataFirefly Hreflang** reprend vos codes (es-US donne la langue es et le pays US).

## Apparence

Choisissez un thème, les quatre couleurs, l'arrondi, la taille du texte et l'effet verre dépoli. Le placement se règle séparément pour l'ordinateur (barre haute ou basse, carte à gauche ou à droite) et pour le mobile (carte flottante, barre). L'aperçu en direct, à droite, montre le résultat sur ordinateur et sur mobile avant l'enregistrement.

- **Rappel compact** : si le visiteur ignore le bandeau et continue sa navigation, les pages suivantes n'affichent qu'une pastille.
- **Délai d'affichage** : le bandeau apparaît après le chargement de la page, plus ce délai.
- **Masquer après un refus** : durée pendant laquelle un visiteur qui a cliqué sur « Rester ici » n'est plus sollicité.

## Textes

Le bandeau est rédigé dans la langue suggérée : un visiteur allemand le lit en allemand sur une boutique française. Chaque langue a ses textes, avec des variables insérables d'un clic : `{language}`, `{country}`, `{store}`, `{currency}`. Un champ vide reprend le texte intégré.

## Règles et détection

- **Quand pays et langue divergent** : le pays l'emporte (boutique qui livre le visiteur) ou la langue l'emporte.
- **Respecter les visiteurs multilingues** : aucune suggestion de langue si la langue actuelle figure parmi celles du navigateur.
- **Masquer pour les clients connectés**.
- **Pages sans bandeau** : contrôleurs exclus, panier et tunnel de commande par défaut. Le joker est accepté (module-monmodule-*).
- **Attendre la fermeture du bandeau cookies** : les principaux gestionnaires sont détectés, la liste de sélecteurs CSS est modifiable.

## Tester avant la mise en ligne

L'onglet **Simulateur** indique, pour un pays et des langues de navigateur donnés, si le bandeau s'affiche, avec son texte, son lien et le score de chaque destination. Pour voir le vrai bandeau sur la boutique, ajoutez votre IP dans **Adresses IP de test**, puis ouvrez une page avec `?dfls_country=DE&dfls_lang=de`. Le lien « Voir sur la boutique » du simulateur le fait pour vous.

## Statistiques

Le tableau de bord affiche les bandeaux affichés (une fois par visite), les clics, les refus, le taux de clic, l'activité quotidienne, et les classements par destination et par pays sur 7, 30, 90 jours ou un an. **Exporter en CSV** télécharge une ligne par jour, boutique d'origine, destination et pays. Les compteurs sont agrégés : aucune IP, aucun cookie, aucun identifiant client n'est stocké.

## Comportement côté visiteur

- Un visiteur qui clique sur la suggestion ou change lui-même de boutique ou de langue n'est plus sollicité sur la destination choisie.
- Le bandeau ne s'affiche jamais aux robots (Googlebot, Bingbot, Lighthouse) et porte `data-nosnippet`.
- Le HTML des pages reste identique pour tous : le module est compatible avec LiteSpeed Cache, Varnish et les CDN.

## Pour les développeurs

Événements DOM sur `document` : `dfls:shown`, `dfls:accept`, `dfls:dismiss`. Avec l'option activée, les événements `dfls_shown`, `dfls_accept` et `dfls_dismiss` sont poussés dans le `dataLayer` pour Google Tag Manager. Le hook PHP `actionDflocalesuggestResponse` reçoit la réponse par référence pour modifier le texte, le lien ou la destination.

## Dépannage

### Le bandeau n'apparaît pas

Vérifiez que le bandeau est actif, qu'au moins deux destinations sont valides, que la page n'est pas exclue et que vous n'avez pas déjà refusé ou accepté une suggestion dans ce navigateur (videz le stockage local du site). Le simulateur indique pourquoi une destination est écartée.

### Le pays affiché est « Inconnu » dans l'administration

C'est normal si vous testez depuis une IP locale ou privée. Utilisez le simulateur ou les paramètres de test.
