Une requête par locale
Le contenu diffère par langue : faites un appel par locale pour chaque endpoint menus.establishment et hours ne sont pas localisés : un seul appel suffit, partagé entre vos pages fr et en.
Afficher la langue réellement reçue
À cause du replien → fr, une réponse en peut contenir du texte français pour les champs non traduits. Affichez le texte tel qu’il arrive ; ne le rejetez pas et ne le masquez pas parce qu’il « n’a pas l’air anglais ». Côté markup, vous pouvez annoter au niveau du champ si la langue compte pour vous (lang="fr" sur un libellé retombé en français), mais ne vous fiez pas à un champ d’API pour deviner la langue d’un item.
Ne pas supposer la parité fr/en sur les fichiers du menu
Les fichiers du menu ne se replient pas (voir Comportement de repli). Avant d’afficher un visuel anglais :- Lisez le
language_scopede chaque fichier (fr,enoufr_en). - N’affichez l’URL
/r/menus?...&locale=enque si un fichier couvreenoufr_en. - Prévoyez le 404 : masquez le visuel ou retombez côté intégrateur sur la version
fr.
Choisir le fichier à afficher
Cache, builds et webhooks
C’est le point le plus important pour un site multilingue. Conséquences concrètes :- Mettez la locale dans votre clé de cache. Le contenu diffère par langue, pas la révision. Une clé du type
establishment_slug + ":" + menu_type_slug + ":" + locale + ":" + content_revisionévite de servir du fr là où vous attendez de l’en. - Une notif
establishment.content_updatedinvalide fr ET en. À la réception du webhook, purgez (ou re-fetchez) les deux locales, pas seulement celle qui a déclenché le changement — le payload ne distingue pas la langue. - Comparez la révision pour éviter les re-fetch inutiles. Stockez la dernière
content_revisionconnue et ne reconstruisez que si la nouvelle valeur est supérieure.
Exemple de clé de cache
La locale doit faire partie de la clé de cache, pas la
content_revision qui est partagée entre fr et en. Sans la locale dans la clé, une entrée fr et une entrée en se télescopent et vous risquez de servir la mauvaise langue.Schéma de build incrémental
Réception webhook
establishment.content_updated arrive avec une content_revision plus élevée et la liste changed_resources.Pour aller plus loin
content_revision
Le compteur monotone commun à toutes les locales pour invalider votre cache.
Webhooks
Recevoir
establishment.content_updated et savoir quoi re-lire.