Localisation
Pour les entreprises ayant des clients dans de nombreux pays, prendre en charge la localisation dès le début de votre parcours avec Braze peut faire gagner du temps et des ressources à votre entreprise.
Fonctionnement
Les informations de locale sont stockées dans le profil d’un utilisateur en fonction des données que vous collectez à l’aide d’un SDK Braze (automatiquement), ou de la REST API. La locale contient la langue et un identifiant de région. Ces informations sont disponibles dans l’outil de segmentation de Braze sous Pays et Langue.

Gestion des traductions
Considérez les approches suivantes pour gérer vos traductions.
Un seul modèle pour tous
Dans cette approche, la localisation est appliquée à un seul modèle dans Braze à l’aide de Liquid. Après l’envoi, le tableau de bord fournit des analyses agrégées de la campagne. L’engagement au niveau de l’utilisateur peut être mesuré à l’aide d’entonnoirs de segments personnalisés, par exemple en combinant les filtres Pays et Campaign reçue.
| Avantages | Considérations |
|---|---|
| - Approche centralisée - Temps de création d’e-mail réduit, pas besoin de créer un e-mail plusieurs fois |
- Création manuelle des rapports - Le rapport de Campaign affiche des indicateurs agrégés plutôt que des indicateurs par pays - Nécessité de tester minutieusement le Liquid pour s’assurer qu’il s’affiche comme prévu - Selon la manière dont vous récupérez la valeur du pays ou le nombre de pays configurés, il peut être difficile de tester chaque pays - Plus difficile de planifier des envois à des heures précises selon les fuseaux horaires - Plus difficile à utiliser si vous souhaitez envoyer un contenu distinct par pays. |
Un modèle par pays
Cette approche sépare les modèles en différentes locales d’envoi. Après l’envoi, le tableau de bord affiche les analyses d’envoi pour chaque pays séparément, et tous les événements Currents en aval au niveau de l’utilisateur seront également liés à une Campaign spécifique.
- Les modèles bénéficient de l’implémentation de tags à des fins de maintenance et de suivi.
- Les Campaigns peuvent hériter des configurations du même modèle Braze et des Content Blocks (tels que les modèles d’e-mail contenant du Liquid).
- Les Campaigns et modèles préexistants peuvent être dupliqués pour accélérer la mise en œuvre.
| Avantages | Considérations |
|---|---|
| - Évolutif pour de multiples emplacements - Rapports sur le chiffre d’affaires par pays dans Braze (par exemple par Campaign) - Flexibilité en cas de contenu radicalement différent par pays |
- Nécessite une structuration stratégique - Effort de création plus important (par exemple des Campaigns distinctes pour chaque pays) |
Un parcours pour tous
Dans cette approche, la localisation est gérée au sein des bases de Canvas et du Liquid pour définir les messages de chaque utilisateur.
Après l’envoi d’un Canvas, le tableau de bord fournit des analyses Canvas agrégées, tandis que l’engagement au niveau de l’utilisateur peut être mesuré via des entonnoirs de segments personnalisés, par exemple en combinant les filtres Pays et Étape Canvas reçue.
| Avantages | Considérations |
|---|---|
| - Approche centralisée - Temps de création d’e-mail réduit — pas besoin de créer un e-mail plusieurs fois. |
- Création manuelle des rapports - Le rapport Canvas affiche des indicateurs agrégés plutôt que des indicateurs par pays - Nécessité de tester minutieusement le Liquid pour s’assurer qu’il s’affiche comme prévu - Selon la manière dont vous récupérez la valeur du pays ou le nombre de pays configurés, il peut être difficile de tester chaque pays - Plus difficile de planifier des envois à des heures précises selon les fuseaux horaires - Plus difficile à utiliser si vous souhaitez envoyer un contenu distinct par pays. |
Un parcours par pays
Dans cette approche, le générateur de parcours Canvas offre la flexibilité de créer des parcours utilisateur via plusieurs composants Canvas. Ces composants peuvent être dupliqués au niveau du composant et du parcours global.
La localisation peut être réalisée avec les méthodes suivantes :
- Des Canvas distincts par pays, ce qui garantit que les parcours utilisateur complexes sont définis en haut de l’entonnoir à l’aide de filtres d’audience
- Des parcours utilisateur sur mesure par pays, grâce à l’implémentation de parcours d’audience pour segmenter intuitivement les utilisateurs à grande échelle pour chaque parcours, en créant des fils de messages distincts pour chaque pays au sein d’un seul Canvas
Une fois envoyé, le tableau de bord fournit des analyses dynamiques par pays et au sein des événements Currents au niveau de l’utilisateur, en fonction de la localisation actuelle du client.
| Avantages | Considérations |
|---|---|
| - Rapports sur le chiffre d’affaires par pays dans Braze (par exemple par Canvas, variante ou étape) - Flexibilité en cas de contenu radicalement différent par pays - Possibilité d’ajouter d’autres canaux au parcours à l’avenir |
- Nécessite une structuration stratégique - Effort de création plus important (par exemple des étapes de message distinctes pour chaque pays) - Le Canvas peut devenir volumineux et difficile à lire si vous avez des parcours personnalisés et complexes pour chaque pays au sein d’un seul Canvas. |
Envoyer des messages traduits
Pour envoyer des messages personnalisés en fonction de la langue, des paramètres régionaux ou des attributs personnalisés d’un utilisateur, utilisez l’une des méthodes suivantes.
Balises Liquid de traduction (recommandé)
Braze prend en charge une balise Liquid {% translation salutation %}Hello!{% endtranslation %} pour cibler des utilisateurs dans différentes langues avec un seul message.
Pour un guide complet, consultez le guide d’utilisation des balises de traduction.
Approches alternatives
Vous pouvez coller manuellement votre contenu dans le corps de votre message et utiliser Liquid pour afficher conditionnellement la bonne langue au destinataire. Pour ce faire :
- Composez votre message, puis sélectionnez Langue pour générer la logique conditionnelle Liquid pour chacune de vos langues sélectionnées.
-
Vous pouvez utiliser le modèle Liquid suivant pour construire votre message. Pour chaque champ avec du templating, vous devez saisir les variantes après le segment entre crochets du templating. La variante doit correspondre au code de langue référencé entre crochets avant elle.
1 2 3 4 5 6 7 8 9
{% if ${language} == 'en' %} This is a message in English from Braze! {% elsif ${language} == 'es' %} Este es un mensaje en español de Braze ! {% elsif ${language} == 'zh' %} 这是一条来自Braze的中文消息。 {% else %} This is a message from Braze! This will go to anyone who does not match the other specified languages! {% endif %}
- Testez votre message avant de l’envoyer en saisissant l’ID ou l’e-mail d’un utilisateur pour vérifier comment un message apparaîtrait à une personne en fonction de sa langue.

Nous recommandons toujours d’inclure une instruction {% else %} dans vos messages. Bien que la plupart des utilisateurs verront le message dans leur langue spécifique, le texte sera visible pour ceux qui :
- N’ont pas de langue sélectionnée
- Ont une langue que Braze ne prend pas en charge
- Ont un appareil dont la langue est indétectable
Les Content Blocks de Braze sont des blocs de contenu réutilisables. Lorsqu’un bloc est modifié, toutes les références à ce bloc sont mises à jour. Par exemple, les mises à jour d’un en-tête ou d’un pied de page d’e-mail seront reflétées dans tous les e-mails, ou pour héberger des traductions. Ces blocs peuvent également être créés et mis à jour via la REST API, et les utilisateurs peuvent télécharger des traductions de manière programmatique.
Lors de la création d’une Campaign dans le tableau de bord, les Content Blocks peuvent être référencés à l’aide de la balise {{content_blocks.${name_of_content_block}}}. Ces blocs peuvent contenir toutes les traductions hébergées dans une logique conditionnelle pour chaque langue, comme indiqué dans l’option 1, ou un bloc séparé pour chaque langue peut être utilisé.
Les Content Blocks peuvent également être utilisés comme processus de gestion des traductions, où le contenu nécessitant une traduction est hébergé dans un Content Block, récupéré, traduit, puis mis à jour :
- Créez manuellement un Content Block dans le tableau de bord avec l’étiquette « Needs Translation ».
- Votre service effectue une récupération nocturne de tous les Content Blocks à l’aide de l’endpoint
/content_blocks/list. - Votre service récupère les détails de chaque Content Block via l’endpoint
/content_blocks/infopour voir quels blocs sont étiquetés pour traduction. - Votre service de traduction traduit le corps de tous les Content Blocks « Needs Translation ».
- Votre service appelle l’endpoint
/content_block/updatepour mettre à jour le contenu traduit et modifier l’étiquette en « Translation Complete ».
Les catalogues vous permettent d’accéder à des données provenant d’objets JSON importés via API et fichiers CSV pour enrichir vos messages, de manière similaire aux attributs personnalisés ou aux propriétés d’événement personnalisées via Liquid. Par exemple :
Créez un catalogue via l’appel API suivant :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
curl --location --request POST 'https://your_api_endpoint/catalogs' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--data-raw '{
"catalogs": [
{
"name": "translations",
"description": "My localization samples",
"fields": [
{
"name": "id",
"type": "string"
},
{
"name": "context",
"type": "string"
},
{
"name": "language",
"type": "string"
},
{
"name": "body",
"type": "string"
}
]
}
]
}'
Ajoutez des éléments via l’appel API suivant :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
curl --location --request POST 'https://your_api_endpoint/catalogs/translations/items' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--data-raw '{
"items": [
{
"id": "1",
"context": "1",
"language": "en",
"body": "Hey"
},
{
"id": "2",
"context": "1",
"language": "es",
"body": "Hola"
},
{
"id": "3",
"context": "1",
"language": "pt",
"body": "Oi"
},
{
"id": "4",
"context": "1",
"language": "de",
"body": "Hallo"
}
]
}'
Créez un fichier CSV au format suivant :
| id | context | language | body |
|---|---|---|---|
| 1 | 1 | en | Hey |
| 2 | 1 | es | Hola |
| 3 | 1 | pt | Oi |
| 4 | 1 | de | Hallo |
| 5 | 2 | en | Hey |
| 6 | 2 | es | Hola |
| 7 | 2 | pt | Oi |
| 8 | 2 | de | Hallo |
| 9 | 3 | en | Hey |
| 10 | 3 | es | Hola |
| 11 | 3 | pt | Oi |
| 12 | 3 | de | Hallo |
Ces éléments de catalogue peuvent ensuite être référencés à l’aide de la personnalisation, comme illustré dans l’exemple suivant, ou des sélections qui vous permettent de créer des groupes de données.
1
2
3
{% catalog_items translations 1 %}
{{items[0].body}}
//returns “Hey”
De nombreux partenaires Braze proposent des solutions de localisation, notamment Transifex et Crowdin. En général, les utilisateurs utilisent la plateforme en complément d’une équipe interne et d’une agence de traduction. Ces traductions sont ensuite téléchargées et deviennent accessibles via la REST API. Ces services exploitent également souvent le contenu connecté, permettant aux utilisateurs de récupérer les traductions via API.
Par exemple, les appels de contenu connecté suivants appellent Transifex et Crowdin pour récupérer une traduction, en exploitant {{${language}}} pour identifier la traduction correcte pour un utilisateur donné. Cette traduction est ensuite enregistrée dans le bloc JSON « strings » et référencée.
1
2
{% connected_content https://www.transifex.com/api/2/project/example/resource/example/translation/{{${language}}}/strings :basic_auth semc :save strings %}
{{strings[0].translation}}
1
2
{% connected_content https://api.crowdin.com/api/project/braze-test/export-file?key=you_api_key&language={{${language}}}&file=test.json&export_translated_only=1 :save response %}
{{response.value_1}}
Hébergez les traductions dans un tableur, puis utilisez l’une des méthodes suivantes pour envoyer votre message dans la langue appropriée.
Vous pouvez travailler avec une agence de traduction pour stocker les traductions dans un tableur Google Sheets, puis interroger ce contenu à l’aide du contenu connecté Braze. Lorsque vous envoyez un message, la traduction correspondante pour chaque utilisateur sera intégrée dans le corps de votre Campaign en fonction de sa langue sélectionnée.

L’API Google Sheets a une limite de 500 requêtes par 100 secondes par projet. Les appels de contenu connecté peuvent être mis en cache, mais cette solution n’est pas adaptée à une Campaign à fort trafic.
Cette option fournit une méthode alternative pour transformer des Google Sheets en objets JSON interrogeables via le contenu connecté. En transformant un tableur en API JSON via SheetDB, vous pouvez choisir parmi plusieurs niveaux d’abonnement en fonction de la cadence des appels API.
La structure du tableur suit les étapes de l’option 4, mais SheetDB fournit également des filtres supplémentaires pour interroger les objets.
Certains utilisateurs peuvent préférer implémenter SheetDB avec moins de dépendances Liquid et de blocs connectés en utilisant la méthode de recherche de SheetDB dans les appels de requête GET pour filtrer les objets JSON en fonction de la balise Liquid {{${language}}} afin de retourner automatiquement les résultats pour une seule langue plutôt que de construire de grands blocs conditionnels.
Étape 1 : Formater le tableur Google
Tout d’abord, construisez le tableur Google de sorte que les langues soient des objets différents :
| language | title1 | body1 | title2 | body2 |
| en | Hey | 1 | Hey2 | 5 |
| es | Hola | 2 | Hola2 | 6 |
| pt | Oi | 3 | Oi2 | 7 |
| de | Hallo | 4 | Hallo2 | 8 |
Étape 2 : Utiliser la balise Liquid de langue dans un appel de contenu connecté
Ensuite, implémentez la balise Liquid {{${language}}} dans un appel de contenu connecté. Notez que SheetDB générera automatiquement le sheet_id lors de la création du tableur.
1
{% connected_content https://sheetdb.io/api/v1/[sheet_id]/search?language={{${language}}} :save result%}
Étape 3 : Créer le modèle de vos messages
Enfin, utilisez Liquid pour créer le modèle de vos messages :
1
2
{{result[0].title1}} //returns “Hey”
{{result[0].title2}} //returns “Hey2”
Considérations
- Le champ
{{${language}}}doit être défini pour tous les utilisateurs ; sinon, un bloc conditionnel Liquid doit être inclus comme gestionnaire de secours pour les utilisateurs sans langue définie. - La modélisation des données dans Google Sheets doit suivre une structure verticale orientée par langue, par opposition à des objets de message.
- SheetDB propose un compte gratuit limité et plusieurs options payantes qui doivent être évaluées en fonction de votre stratégie de Campaign.
- Les appels de contenu connecté peuvent être mis en cache. Nous recommandons de mesurer la cadence projetée des appels API et d’envisager une approche alternative consistant à appeler l’endpoint principal de SheetDB au lieu d’utiliser la méthode de recherche.
Cette option transforme un tableur Google en API JSON que vous pouvez interroger avec le contenu connecté. Sheetlabs prend en charge de grands volumes de requêtes et propose des niveaux gratuits et payants.
Étape 1 : Préparer votre feuille de traductions dans Google Sheets
Construisez le tableur Google de sorte que chaque ligne corresponde à une langue. Par exemple :
| language | greeting | title1 | legal1 |
|---|---|---|---|
| en | Welcome! | Your exclusive offer is here | … |
| fr | Bienvenue! | Votre offre exclusive est arrivée | … |
Étape 2 : Utiliser Sheetlabs pour importer la feuille et créer une API
- Inscrivez-vous sur Sheetlabs.
- Suivez les instructions de Sheetlabs pour importer des données depuis Google Sheets.
- Sélectionnez le tableur que vous avez créé à l’étape 1.
- Sélectionnez Create a matching API.
Étape 3 : Ajouter votre jeton d’authentification Sheetlabs à Braze (facultatif)
Si votre API Sheetlabs est publique, ignorez cette étape. Si elle nécessite une authentification :
- Accédez à la page My Account dans Sheetlabs et copiez votre jeton API.
- Suivez les étapes de la section Authentification Braze avec Basic Auth pour créer un identifiant d’authentification basique dans Braze. Utilisez votre nom d’utilisateur Sheetlabs (adresse e-mail) et le jeton API que vous avez copié.
- Enregistrez l’identifiant avec un nom tel que
sheetlabs_creds.
Étape 4 : Appeler l’API Sheetlabs depuis le contenu connecté
Ajoutez un appel de contenu connecté à Sheetlabs. Remplacez /XXX/yourapi par le chemin vers l’API que vous avez créée à l’étape 2.
1
2
{% connected_content https://sheetlabs.com/XXX/yourapi?language={{${language}}} :save translations :basic_auth sheetlabs_creds %}
Étape 5 : Créer le modèle de vos messages
Utilisez Liquid pour référencer les champs retournés. Par exemple :
1
2
{{translations[0].greeting}} {{${first_name}}},
{{translations[0].body1}}
Considérations
- Définissez le champ
{{${language}}}pour chaque utilisateur que vous souhaitez cibler. Si un utilisateur n’a pas de langue définie, incluez un mécanisme de secours Liquid. - Les appels de contenu connecté peuvent être mis en cache. Mesurez la cadence projetée de vos appels API lors du choix d’un plan Sheetlabs.
Pour plus d’informations, consultez Utiliser Sheetlabs avec Braze.