initClub · 1ère Communauté Webflow Francophone

Updated 2 weeks ago

Varying Payment Block Design and Content Across Locales

Hello !

J’ai un site en localization, et mon client aimerait que le bloc de paiement varie (en design et contenu) d’une locale à l’autre.
Je pensais cacher certaines divs en fonction des locales, est-ce que c’est la bonne approche ?

Mercii

1
N
C
S
17 comments

Hello @Caroline Teulery, les changements sont très différents ?

Eh bien oui, je vais avoir des présentations de tarifs très différents (certains pays en “transactions fees only”, d’autres en “100% free”, et du coup on va forcement travailler un design différent. + certaines fonctionnalités ne sont pas accessibles dans tous les pays. Donc usine à gaz quoi...

Quel sont tes langues sur le site et les extensions de langue associé, j'ai la solution 🙂

Pour le moment j’ai :
EN
FR
ES
IT

Dans quelques temps je vais ces pays :
Qatar
Chili
Croatie

Tu peux me screen ton Localization ici stp.

Attachment
CleanShot 2025-02-25 at 10.00.35.png

Voilà 🙂

Attachment
Capture d’écran 2025-02-25 à 10.04.08.png

Pour moi t’as tout dit dans ta question :

J’ai un site en localization, et mon client aimerait que le bloc de paiement varie (en design et contenu) d’une locale à l’autre.

Créé des variantes. 😉

Tu veux dire passer le bloc en composant et créer des variantes du composant ? (C’est ce que tu m’as montré avec les btn je crois @Théo ROLAND?)

Je n’y avais pas pensé, merci @Séb!!

Le code :

<!-- [Localization Display] -->
<script>
document.addEventListener("DOMContentLoaded", function () {
  // Détermine la langue actuelle depuis l'URL de manière dynamique
  const pathSegments = window.location.pathname.split('/').filter(Boolean);
  const currentLang = (pathSegments[0] && /^[a-z]{2}$/i.test(pathSegments[0]))
    ? pathSegments[0].toLowerCase()
    : "en";

  // Traitement de l'élément <body>
  const bodyElem = document.body;
  const bodyDisplay = bodyElem.getAttribute("display");
  if (bodyDisplay !== null) {
    const [allowedLang, redirectSlug] = bodyDisplay.split(",").map(s => s.trim());
    if (allowedLang && allowedLang !== currentLang) {
      let target = redirectSlug ? redirectSlug : "/";
      if (!target.startsWith("/")) target = "/" + target;
      window.location.href = target;
      return;
    }
  }

  // Traitement des autres éléments munis de l'attribut "display"
  document.querySelectorAll("[display]").forEach(elem => {
    if (elem === bodyElem) return;
    const attrValue = elem.getAttribute("display");
    if (!attrValue || attrValue.trim() === "") return;
    const allowedLangs = attrValue.split("-").map(s => s.trim());
    if (!allowedLangs.includes(currentLang)) {
      elem.remove();
    }
  });
});
</script>

Explication : https://chatgpt.com/share/67bd8a2d-8b30-8004-9dca-925da860317e

Je regarde pendant ma pause @Nicolas Tizio 🙏

Tu peux le faire nativement désormais

Ou mieux en CSS pour pas avoir à le faire en JS

Exemple :

  • Tu ajoutes un attribute genre locale-en="true" sur une section si tu veux l’afficher que sur la partie US
  • Tu ajoutes un attribute genre locale-fr="true" sur une section si tu veux l’afficher que sur la partie US

Et tu mets ce CSS :
[lang="en-US"] [locale-en="true"] {
	display: block !important;
}

[lang="en-US"] [locale-en="false"] {
	display: none !important;
}

[lang="fr-FR"] [locale-fr="true"] {
	display:block !important;
}

[lang="fr-FR"] [locale-fr="false"] {
	display:none !important;
}

Pourquoi vous n’utilisez pas plutot une approche component avec des variantes / des slots ?

Avec les variantes, les props, les slots, les conditions de visibility, maintenant on peut quand même assez fortement tweaker les contenus d’une langue à l’autre tout en permettant a l’utilisateur final de modifier facilement le contenu.

Moi cette approche de hide/show avec potentiel nettoyage en JS je ne le fais que quand je n’ai pas le choix. (genre tous les trucs pas gérés dans les components : collections par ex)

Les variantes de composants existent avec la localization ? Je suis pas sur (je suis pas sur Webflow là pour checker)

Ça ouvre un champ des possibles assez infini en terme de tweak par langue

Add a reply
Sign up and join the conversation on Slack