Skip to content

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 localisation 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 localisation 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 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 Campaign. 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 façon dont vous récupérez la valeur du pays ou le nombre de pays que vous avez configurés, il peut être difficile de tester chaque pays
- Plus difficile de planifier des envois à des heures spécifiques 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 localisations 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 d’étiquettes à 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 plusieurs emplacements
- Rapports sur le chiffre d’affaires par pays dans Braze (par exemple par Campaign)
- Flexibilité si le contenu diffère considérablement d’un pays à l’autre
- 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 pour 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 façon dont vous récupérez la valeur du pays ou le nombre de pays que vous avez configurés, il peut être difficile de tester chaque pays
- Plus difficile de planifier des envois à des heures spécifiques 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 personnalisés 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 dans 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é si le contenu diffère considérablement d’un pays à l’autre
- Possibilité d’ajouter d’autres canaux dans le 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 dans un seul Canvas.

Envoi de messages traduits

Pour envoyer des messages personnalisés en fonction de la langue, de la localisation ou des attributs personnalisés d’un utilisateur, utilisez l’une des méthodes suivantes.

Étiquettes Liquid de traduction (recommandé)

Braze prend en charge une étiquette Liquid {% translation salutation %}Hello!{% endtranslation %} pour cibler les utilisateurs dans différentes langues avec un seul message.

Pour un guide complet, consultez le guide sur l’utilisation des étiquettes 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 :

  1. Rédigez votre message, puis sélectionnez Langue pour générer la logique conditionnelle Liquid pour chacune de vos langues sélectionnées.
  2. Vous pouvez utiliser le modèle Liquid suivant pour construire votre message. Pour chaque champ avec un modèle, vous devez saisir les variantes après le segment de modèle entre crochets. 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 %}
    
  3. 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 à un individu en fonction de sa langue.

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 l’étiquette {{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 distinct 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 :

  1. Créez manuellement un Content Block dans le tableau de bord avec l’étiquette « Needs Translation ».
  2. Votre service effectue une récupération nocturne de tous les Content Blocks à l’aide de l’endpoint /content_blocks/list.
  3. Votre service récupère les détails de chaque Content Block via l’endpoint /content_blocks/info pour voir quels blocs sont étiquetés pour la traduction.
  4. Votre service de traduction traduit le corps de tous les Content Blocks « Needs Translation ».
  5. Votre service appelle l’endpoint /content_block/update pour 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é ci-dessous, 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 utilisant {{${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é de 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 la langue sélectionnée.

Cette option fournit une méthode alternative pour transformer des Google Sheets en objets JSON interrogés 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 fréquence 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 l’étiquette 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 l’étiquette 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é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 : Modéliser vos messages

Enfin, utilisez 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 ; sinon, un bloc conditionnel Liquid doit être prévu 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 fréquence 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.
New Stuff!