Skip to content

Module i18n, dictionnaire, SEO & newsletter

Langues

4 langues, definies dans src/Web/uSync/v17/Languages/ : fr (defaut), de, it, en. Les document types de page sont Culture-variants. Le backoffice est en fr-FR (DefaultUILanguage).

  • Le front commute la langue via scripts/modules/switchLanguages.js.
  • Les inscriptions JEMA acceptent fr/de/it ; en sert de langue de repli pour les messages d'erreur.

Dictionnaire

  • ~188 cles dans src/Web/uSync/v17/Dictionary/, nommees en point.notation (ex. Forms.Generic.Email, Forms.Jema.Date, CraftsmanPage.RegistrationJema.Error.TimeSlotFull, cookies.accept).
  • Consommation cote serveur : _umbracoHelper.GetDictionaryValue(key, culture) (CultureInfo) ou IDictionaryItemService.TranslateAsync(key, cultureCode).
  • Extensions utilitaires : Extensions/DictionaryItemServiceExtensions.cs, Extensions/LanguageServiceExtensions.cs.
  • Config : Umbraco:CMS:Dictionary:EnableValueSearch = true ; le DictionaryHandler uSync est en CreateOnly (ne reecrase pas les valeurs existantes a l'import).
  • Tout texte d'interface passe par le dictionnaire, jamais en dur.

SEO (Helpers/SeoHelpers.cs)

  • BuildMetaTitle(name, brandSuffix) -> Nom – Suffixe (demi-cadratin), ou l'un des deux si l'autre est vide.
  • BuildMetaDescription(rawHtml, maxLength = 150) -> fallback : strip des balises HTML, decode des entites, normalisation des espaces, troncature au dernier mot, ajout de si tronque.
  • Helpers complementaires : SeoHelpers, Helpers/ViewHelper.cs, Helpers/ImageHelper.cs, Helpers/CriticalCssHelper.cs. Travail lie aux branches feature/seo-fallback-artisan-metier (fallback SEO sur les fiches artisan/metier).
  • Sitemap et robots : Controllers/SitemapController.cs, Controllers/RobotsController.cs.

Newsletter (Controllers/NewsletterController.cs)

  • Surface controller, action Subscribe(email, culture) ([HttpPost], [ValidateAntiForgeryToken]).
  • Selectionne l'ID de liste selon la culture (ListIdFR/DE/IT/EN de NewsletterOptions).
  • Poste vers l'API Infomaniak (api/Newsletter/Infomaniak/DoubleOptInByClient) via le HttpClient nomme NewsletterOptIn (base address = NewsletterOptions.ApiUrl, configure dans Program.cs).
  • Front : scripts/modules/newsletterForm.js.
  • Config (appsettings.json section Newsletter) : ApiUrl, IsDoubleOptIn, ListId*, Domain, Client, Provider (infomaniak). Valeurs renseignees par environnement.

404 multilingue (ContentFinders/NotFoundContentFinder.cs)

IContentLastChanceFinder enregistre dans SiteComposer. Resout la racine de site correspondant au domaine de la requete (via IDomainService), puis cherche un enfant notFoundPage. Permet une page 404 par site/culture.

Contributors

No contributors

Changelog

No recent changes