Culture & Routage d’URL
Sur un portail multilingue, où la langue active se trouve dans l’URL — et comment le changement de langue se comporte — est configurable avec une seule option, UrlCultureStrategy. Il régit l’ensemble de la pile de manière cohérente : le routage des requêtes du serveur, les balises href et SEO de base du document Blazor, ainsi que les <LanguageDropdown /> tags sur Blazor et React, s’accordent tous sur la place du langage. Les portails monolingues ne sont pas affectés — il n’y a rien à négocier, donc chaque stratégie se comporte de la même manière.
Comment la langue apparaît dans l’URL
Trois stratégies sont disponibles. Le défaut conserve le comportement qui avait été livré avant l’existence de l’option, donc les portails existants n’ont pas besoin de modifications.
PathPrefixe (par défaut)
Le langage par défaut est servi aux URL nues et sur tous les autres langages sous un /{culture} préfixe de chemin :
/contacts— la langue par défaut, sans préfixe./fr/contacts— toute langue non par défaut, sous son préfixe culturel.- Une URL par défaut (
/en/contacts) préfixée redirige de façon permanente vers le formulaire nu, et un visiteur débutant dont le navigateurAccept-Languagecorrespond à une langue non par défaut prise en charge est redirigé vers l’URL préfixée de cette langue — ainsi, chaque page a une adresse canonique et accessible par langue.
PathPrefixAll
Chaque langage est préfixé, y compris le par défaut — /en/contacts, /fr/contacts — pour une forme d’URL symétrique unique sans préfixe spécial par défaut. Une URL de page nue redirige vers le préfixe de la langue résolue (pris du cookie de culture ou Accept-Language, revenant à la langue par défaut).
CookieOnly
La langue n’apparaît jamais dans l’URL. Il est résolu à partir du .AspNetCore.Culture cookie (revenant à Accept-Language) et appliqué en place — pas de redirections, pas de réécriture de chemin. Idéal pour les portails de type SPA qui changent de langue sans avoir à naviguer.
Choisir une stratégie
Définissez la stratégie de LocalizationOptions configuration de la localisation dans votre hôte. Par défaut, PathPrefixil est donc indiqué par consentement :
builder.Services
.Configure<LocalizationOptions>(options =>
{
// Par défaut est PathPrefixe ; PathPrefixAll applique les préfixes à chaque langue, CookieOnly l’empêche d’entrer dans l’URL
options.UrlCultureStrategy = UrlCultureStrategy.PathPrefixAll;
});
C’est le seul câblage nécessaire — la même option pilote les hôtes Blazor et React (tous deux configurés LocalizationOptions de la même manière), et tout ce qui suit en découle.
Base href, canonique et hreflang — gérés pour vous
Quelle que soit la stratégie choisie, le framework synchronise le balisage d’identité URL de chaque page, de sorte que les moteurs de recherche et le circuit Blazor s’accordent toujours sur l’emplacement d’un langage :
- Base href — le document
<base href>suit la base de chemin de la requête, de sorte que la page pré-rendue et le circuit Blazor Server résolvent la même racine d’application sous n’importe quel préfixe. - URL canonique — chaque page annonce son adresse canonique dans la langue active, préfixe ou nue selon la stratégie.
- hreflang alterne — un lien alternatif par langue prise en charge plus
x-default, chacun pointant vers l’URL de cette langue pour la page courante.
Deux composants du cadre émettent ce balisage — <CultureBaseHref /> pour le href de base et <CultureAlternateLinks /> pour les balises de localisation canonique, hreflang et Open Graph. Les deux sont présents PowerPortalsPro.Web.Blazor.Components et attentifs à la stratégie dès la sortie des sentiers ; la démo les intègre à son App.razor composant SEO :
@using PowerPortalsPro.Web.Blazor.Components
<head>
<CultureBaseHref />
...
</head>
<CultureAlternateLinks />
Changement de langage
Sur <LanguageDropdown /> les deux piles liste les langues configurées du portail et change la langue active lorsque l’utilisateur le choisit. Elle suit automatiquement la stratégie configurée :
// Même composant, même comportement, sur la pile React
import { LanguageDropdown } from '@powerportalspro/react-fluent';
<LanguageDropdown /><LanguageDropdown />Sous une stratégie de préfixe, le commutateur navigue vers l’URL de la langue choisie, de sorte que la page se recharge à son adresse canonique, correctement préfixée. En dessous CookieOnly , elle se replace via le cookie de culture, sans navigation. Dans tous les cas, le cookie est réglé, donc toute autre surface d’origine similaire reste synchronisée.
Lecture de la stratégie dans une interface personnalisée
Construire votre propre switcher ou des liens sensibles à la langue ? Lisez la stratégie active directement — côté serveur depuis LocalizationOptions Blazor, ou depuis le manifeste de localisation dans React, où buildLocalePath() elle devient l’URL d’une langue pour la page actuelle :
// Le client React lit la stratégie à partir du manifeste de localisation ;
// buildLocalePath() le transforme en URL cible pour une langue donnée.
import { useUrlCultureStrategy, useDefaultLocale, buildLocalePath } from '@powerportalspro/react';
const strategy = useUrlCultureStrategy();
const defaultLocale = useDefaultLocale();@inject IOptions<LocalizationOptions> Options
@code {
// La stratégie configurée, partout où vous pouvez injecter des options
private UrlCultureStrategy Strategy => Options.Value.UrlCultureStrategy;
}Note
Tout ce qui précède ne prend effet que lorsqu’un portail prend en charge plus d’une culture d’interface. Un site à culture unique sert chaque page à son URL nue, quelle que soit la stratégie, donc il n’y a pas de redirection ni de préfixe à payer pour des langues que vous ne distribuez pas.
