Redirection automatique de langue dans Umbraco
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.8Le 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>();