language-redirect-fr.png

Introduction

Lorsqu’un visiteur arrive sur la racine d’un site multilingue (par exemple https://www.monsite.com/), il est préférable de lui présenter immédiatement la version linguistique la plus adaptée.

Dans un projet Umbraco, cette logique peut être implémentée proprement grâce à un middleware ASP.NET Core qui détecte la langue préférée de l’utilisateur et le redirige automatiquement vers la bonne section du site.

Les objectifs

Notre middleware doit :

  • Intercepter uniquement les requêtes vers la racine du site (/)

  • Ignorer les fichiers statiques

  • Ignorer les routes Umbraco et les API

  • Déterminer la langue préférée du visiteur

  • Rediriger vers l'URL correspondant à cette langue

Exemples :

  • //fr

  • //en

  • //nl

Priorité de détection de la langue

Le middleware utilise trois niveaux de décision.

1. Cookie utilisateur

Si l'utilisateur a déjà choisi une langue lors d'une précédente visite, celle-ci est stockée dans un cookie nommé language.

Cette préférence est utilisée en priorité.

2. En-tête Accept-Language

Si aucun cookie n'est présent, le middleware analyse l'en-tête HTTP Accept-Language envoyé par le navigateur.

Exemple :

Accept-Language: fr-BE,fr;q=0.9,en;q=0.8

Le middleware recherche alors la meilleure correspondance parmi les langues configurées dans Umbraco.

3. Langue par défaut

Si aucune correspondance n'est trouvée, la langue par défaut définie dans Umbraco est utilisée.

Pourquoi utiliser un middleware ?

Cette approche présente plusieurs avantages :

  • Meilleure expérience utilisateur :  Le visiteur arrive directement sur la bonne version du site sans devoir sélectionner sa langue.

  • Centralisation de la logique : Toute la logique est regroupée dans un seul composant réutilisable.

  • Compatible SEO :  Chaque langue dispose de sa propre URL pour que les moteurs de recherche peuvent donc indexer correctement les différentes versions du site :

    • /fr

    • /en

    • /nl

Compatible avec Umbraco

Dans l'exemple fourni, le module utilise directement le service ILocalizationService pour récupérer les langues configurées dans le back-office.

Points d'attention

Quelques bonnes pratiques :

  • Placer le middleware très tôt dans le pipeline ASP.NET Core.

  • Éviter les boucles de redirection.

  • Ne rediriger que la racine du site.

  • Respecter les préférences déjà enregistrées par l'utilisateur.

Conclusion

Quelques dizaines de lignes de code suffisent pour améliorer considérablement l'expérience utilisateur d'un site multilingue sous Umbraco.

Cette solution est simple, performante et facilement adaptable à des scénarios plus avancés comme la géolocalisation, les sous-domaines linguistiques ou encore la mémorisation des préférences utilisateur.

Télécharger le code source ici :  LanguageRedirectMiddleware.cs
Et pour l'activer n'oubliez pas d'ajuster votre startup : 

app.UseMiddleware<LanguageRedirectMiddleware>();