Localisation
Pour les entreprises avec des clients dans de nombreux pays, gérer la localisation tôt dans votre parcours Braze peut faire gagner du temps et des ressources à votre entreprise.
Fonctionnement
Une fois que vous avez intégré le SDK de Braze, les informations locales des appareils des utilisateurs sont automatiquement collectées. L’emplacement contient l’identifiant de langue et de région. Cette information est disponible dans l’outil de segmentation de Braze sous Pays et langue.
Gestion de la traduction
Envisagez les approches suivantes pour gérer vos traductions.
Un modèle unique 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 de campagne agrégées. L’engagement au niveau de l’utilisateur peut être mesuré à l’aide d’entonnoirs de segmentation personnalisés, par exemple en combinant les filtres Pays et Campagne reçue.
Avantages | Considérations | |
---|---|---|
- Approche centralisée - Temps de création des e-mails réduit, pas besoin de créer un e-mail plusieurs fois |
- Création manuelle de rapports - Le rapport de campagne affiche les indicateurs agrégés plutôt que les indicateurs par pays - Nécessité de tester soigneusement le Liquid pour s’assurer qu’il se remplit comme prévu - Selon la façon dont vous saisissez la valeur du pays ou le nombre de pays que vous avez paramétrés, il peut être difficile de tester chaque pays - Envois plus difficiles à planifier pour des heures spécifiques sur plusieurs fuseaux horaires - Difficile à utiliser si vous souhaitez envoyer un contenu distinct par pays. |
|
-– | -– | -– |
Un modèle par pays
Cette approche permet de séparer les modèles en différents lieux d’envoi. Après l’envoi, le tableau de bord présente des analyses d’envoi basées sur chaque pays séparément, et tout événement Currents au niveau de l’utilisateur en aval sera également lié à une campagne spécifique.
- Les modèles bénéficient de la mise en place de tags à des fins de maintenance et de suivi.
- Les campagnes peuvent hériter des configurations du même modèle Braze et des blocs de contenu (tels que les modèles d’e-mail qui contiennent Liquid).
- Les campagnes et les modèles préexistants peuvent être dupliqués pour permettre un délai de rentabilité plus rapide.
Avantages | Considérations |
---|---|
- Évolutif vers plusieurs emplacements - Génération de rapports sur les revenus par pays au sein de Braze (par exemple, par campagne) - Flexibilité en cas de contenu radicalement différent par pays |
- Nécessite une structuration stratégique - Plus d’efforts de création requis (par exemple, campagnes distinctes pour chaque pays) |
Un voyage pour tous
Dans cette approche, la localisation est gérée au sein de Canvas Journeys et Liquid pour définir les envois de messages pour chaque utilisateur.
Après l’envoi d’un canvas, le tableau de bord fournit une analyse agrégée du canvas, tandis que l’engagement au niveau de l’utilisateur peut être mesuré via des entonnoirs de segments personnalisés, tels que la combinaison des filtres Pays et [Étape du canvas reçu.
Avantages | Considérations |
---|---|
- Approche centralisée - Temps de création des e-mails réduit : pas besoin de créer un e-mail plusieurs fois. |
- Création manuelle de rapports - Le rapport de Canvas affiche les indicateurs agrégés plutôt que les indicateurs par pays - Nécessité de tester soigneusement le Liquid pour s’assurer qu’il se remplit comme prévu - Selon la façon dont vous saisissez la valeur du pays ou le nombre de pays que vous avez paramétrés, il peut être difficile de tester chaque pays - Envois plus difficiles à planifier pour des heures spécifiques sur plusieurs fuseaux horaires - Difficile à utiliser si vous souhaitez envoyer un contenu distinct par pays. |
Un voyage par pays
Dans cette approche, le générateur de parcours Canvas offre la flexibilité de créer des parcours utilisateurs via plusieurs composants Canvas. Ces composants peuvent être dupliqués au niveau des composants et de l’ensemble du parcours.
La localisation peut être réalisée à l’aide des méthodes suivantes :
- Des Canvas séparés 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 utilisateurs sur mesure par pays, la mise en œuvre 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 dans un seul Canvas.
Une fois envoyé, le tableau de bord fournit des analyses/analytiques dynamiques par pays et au sein des événements Currents au niveau de l’utilisateur, en fonction de l’emplacement/localisation actuel du client.
Avantages | Considérations |
---|---|
- Génération de rapports sur les revenus par pays au sein de Braze (par exemple, par canvas, variante ou étape) - Flexibilité en cas de contenu radicalement différent par pays - Peut ajouter d’autres canaux dans le cadre du parcours à l’avenir |
- Nécessite une structuration stratégique - Plus d’efforts de création requis (par exemple, des étapes de messages distinctes pour chaque pays) - Le Canvas peut devenir volumineux et difficile à lire si vous avez des parcours personnalisés et complexes pour chaque pays dans un même Canvas. |
Envoi de messages traduits
Pour envoyer des messages personnalisés en fonction de la langue ou du lieu de résidence de l’utilisateur, utilisez l’une des méthodes suivantes :
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 une logique conditionnelle liquide pour chacune des langues sélectionnées.
-
Vous pouvez utiliser le modèle de liquide suivant pour vous aider à créer votre message. Pour chaque champ ayant une modélisation, vous devez saisir les variations après le segment entre crochets de modélisation. La variation doit correspondre au code de langue référencé entre crochets avant lui.
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 d’un utilisateur ou un e-mail pour vérifier comment un message apparaîtrait à une personne en fonction de sa langue.
Nous recommandons toujours d’inclure une déclaration {% else %}
dans votre message. Alors que la plupart des utilisateurs verront des envois de messages pour leur langue spécifique, le texte sera visible pour ceux qui :
- Aucune langue sélectionnée
- Ont une langue qui n’est pas prise en charge par Braze
- Disposent d’un appareil pour lequel la langue est indétectable
Les blocs de contenu Braze sont des blocs de contenu réutilisables. Lorsqu’un bloc est modifié, toutes les références à ce bloc sont modifiées. Par exemple, les mises à jour de l’en-tête ou du pied de page d’un e-mail seront répercutées dans tous les e-mails ou dans les traductions en interne. Ces blocs peuvent également être créés et mis à jour à l’aide de l’API REST, et les utilisateurs peuvent charger des traductions par programmation.
Lors de la création d’une campagne dans le tableau de bord, les blocs de contenu peuvent être référencés à l’aide d’une balise {{content_blocks.${name_of_content_block}}}
Ces blocs peuvent contenir toutes les traductions logé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 blocs de contenu peuvent également être utilisés comme processus de gestion de la traduction où le contenu qui nécessite une traduction est hébergé dans un bloc de contenu, récupéré, traduit, puis mis à jour :
- Créez manuellement un bloc de contenu dans le tableau de bord avec la balise « Nécessite une traduction ».
- Votre service effectue une extraction nocturne de tous les blocs de contenu à l’aide de l’endpoint
/content_blocks/list
. - Votre service récupère les détails de chaque bloc de contenu via l’endpoint
/content_blocks/info
afin d’identifier les blocs tagués pour traduction. - Votre service de traduction traduit le corps de tous les blocs de contenu indiquant « Nécessite une traduction ».
- Votre service utilise l’endpoint
/content_block/update
pour mettre à jour le contenu traduit et l’étiquette avec la mention « Traduction terminée ».
Les catalogues vous permettent d’accéder aux données des objets JSON importés via l’API et les fichiers CSV afin d’enrichir vos messages, de manière similaire aux attributs personnalisés ou aux propriétés d’événements personnalisés via Liquid. Par exemple :
Créez un catalogue à l’aide de 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 à l’aide de 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 | contexte | langue | body |
---|---|---|---|
1 | 1 | en | Hé |
2 | 1 | es | Hola |
3 | 1 | pt | Oi |
4 | 1 | de | Hallo |
5 | 2 | en | Hé |
6 | 2 | es | Hola |
7 | 2 | pt | Oi |
8 | 2 | de | Hallo |
9 | 3 | en | Hé |
10 | 3 | es | Hola |
11 | 3 | pt | Oi |
12 | 3 | de | Hallo |
Ces éléments du catalogue peuvent ensuite être référencés à l’aide de la personnalisation, illustrée ci-dessous, ou de 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 de Braze proposent des solutions de localisation, notamment Transifex et Crowdin. Généralement, les utilisateurs se servent de la plateforme aux côtés d’une équipe interne et d’une agence de traduction. Ces traductions y sont ensuite téléchargées et deviennent accessibles via l’API REST. Ces services s’appuient également souvent sur le contenu connecté, ce qui permet aux utilisateurs de récupérer les traductions via l’API.
Par exemple, les appels de contenu connecté suivants font appel à Transifex et Crowdin pour récupérer une traduction, en s’appuyant sur {{${language}}}
afin d’identifier la bonne traduction pour un utilisateur donné. Cette traduction est ensuite enregistrée dans le bloc JSON « chaînes » 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 une feuille de calcul, puis utilisez l’une des méthodes suivantes pour envoyer votre message dans la langue concernée.
Vous pouvez avec une agence de traduction stocker les traductions dans une feuille de calcul Google, puis interroger ce contenu à l’aide de Braze Connected Content. Lorsque vous envoyez un message, la traduction pertinente pour chaque utilisateur sera intégrée dans le corps de votre campagne en fonction de la 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 ne peut pas être mise à l’échelle d’une campagne à fort trafic.
Cette option offre une méthode alternative pour transformer Google Sheets en objets JSON interrogés à l’aide du Contenu connecté. En transformant une feuille de calcul en API JSON via SheetDB, vous pouvez choisir parmi plusieurs niveaux d’abonnement en fonction de la cadence des appels à l’API.
La structure de la feuille de calcul suit les étapes de l’option 4, mais SheetDB fournit également des filtres supplémentaires pour interroger les objets.
Certains utilisateurs préféreront peut-être mettre en œuvre SheetDB avec moins de dépendances Liquid et Connected Block en implémentant la méthode de recherche de SheetDB dans les appels de requête GET pour filtrer les objets JSON sur la base de l’étiquette Liquid {{${language}}}
afin de renvoyer automatiquement les résultats pour une seule langue plutôt que de créer de grands blocs conditionnels.
Étape 1 : Formater la Google Sheet
Tout d’abord, créez la Google Sheet de sorte que les langues soient des objets différents :
langue | titre1 | corps1 | titre2 | corps2 |
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 l’étiquette Liquid {{${language}}}
dans un appel de contenu connecté. Notez que SheetDB génère automatiquement le site sheet_id
lors de la création de la feuille de calcul.
1
{% connected_content https://sheetdb.io/api/v1/[sheet_id]/search?language={{${language}}} :save result%}
Étape 3 : Modélisez vos messages
Enfin, utilisez le Liquid pour modéliser 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 ; dans le cas contraire, un bloc conditionnel Liquid doit être fonctionnalité en tant que traitement de repli pour les utilisateurs ne disposant pas d’une langue. - La modélisation des données dans Google Sheets doit suivre un autre segment vertical axé sur la langue plutôt que d’avoir des objets Message.
- SheetDB propose un compte gratuit limité et plusieurs options payantes qu’il convient d’envisager en fonction de votre stratégie de campagne.
- Les appels de contenu connecté peuvent être mis en cache. Nous vous recommandons de mesurer la cadence prévue des appels à l’API et d’étudier une autre approche consistant à appeler l’endpoint principal de SheetDB au lieu d’utiliser la méthode de recherche.