Skip to content

Localização

Para empresas com clientes em vários países, lidar com a localização no início da sua jornada com a Braze pode economizar tempo e recursos.

Como funciona

As informações de localidade são armazenadas no perfil do usuário com base nos dados que você coleta usando um SDK da Braze (automaticamente) ou a REST API. A localidade contém o idioma e um identificador de região. Essas informações estão disponíveis na ferramenta de segmentação da Braze em País e Idioma.

Gerenciamento de traduções

Considere as seguintes abordagens para gerenciar suas traduções.

Um modelo para todos

Nesta abordagem, a localização é aplicada a um único modelo na Braze usando Liquid. Após o envio, o dashboard fornece análises agregadas da Campaign. O engajamento no nível do usuário pode ser medido usando funis de segmentos personalizados, por exemplo, combinando os filtros País e Campaign recebida.

Um modelo por país

Nesta abordagem, os modelos são separados em diferentes localidades de envio. Após o envio, o dashboard exibe análises de envio com base em cada país separadamente, e quaisquer eventos de Currents no nível do usuário também estarão vinculados a uma Campaign específica.

  • Os modelos se beneficiam da implementação de tags para fins de manutenção e rastreamento.
  • As Campaigns podem herdar as configurações do mesmo modelo da Braze e Content Blocks (como modelos de e-mail que contêm Liquid).
  • Campaigns e modelos pré-existentes podem ser duplicados para permitir um tempo de retorno mais rápido.

Uma jornada para todos

Nesta abordagem, a localização é tratada dentro dos fundamentos do Canvas e do Liquid para definir o envio de mensagens para cada usuário.

Após o envio de um Canvas, o dashboard fornece análises agregadas do Canvas, enquanto o engajamento no nível do usuário pode ser medido por meio de funis de segmentos personalizados, como a combinação dos filtros País e Etapa do Canvas recebida.

Uma jornada por país

Nesta abordagem, o construtor de jornadas do Canvas oferece a flexibilidade de criar jornadas de usuário por meio de múltiplos componentes do Canvas. Esses componentes podem ser duplicados no nível do componente e da jornada geral.

A localização pode ser alcançada com os seguintes métodos:

  • Canvas separados por país, garantindo que as jornadas complexas de usuário sejam definidas no topo do funil usando filtros de público
  • Jornadas de usuário personalizadas por país, com a implementação de Jornadas do público para segmentar usuários de forma intuitiva em grande escala para cada jornada, criando threads de mensagens separados para cada país em um único Canvas

Após o envio, o dashboard fornece análises dinâmicas por país e, dentro dos eventos de Currents no nível do usuário, com base na localização atual do cliente.

Envio de mensagens traduzidas

Para enviar mensagens personalizadas com base no idioma, localidade ou atributos personalizados de um usuário, use um dos métodos a seguir.

Tags Liquid de tradução (recomendado)

A Braze oferece suporte a uma tag Liquid {% translation salutation %}Hello!{% endtranslation %} para direcionar usuários em diferentes idiomas com uma única mensagem.

Para um passo a passo completo, consulte o guia sobre o uso de tags de tradução.

Abordagens alternativas

Você pode colar manualmente seu conteúdo no corpo da mensagem e usar Liquid para exibir condicionalmente o idioma correto para o destinatário. Para fazer isso:

  1. Redija sua mensagem e selecione Idioma para gerar a lógica condicional Liquid para cada um dos idiomas selecionados.
  2. Você pode usar o seguinte modelo Liquid para ajudar a construir sua mensagem. Para cada campo com modelo, você deve inserir as variações após o segmento de modelo entre colchetes. A variação deve corresponder ao código de idioma referenciado nos colchetes antes dela.

    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. Teste sua mensagem antes de enviá-la inserindo o ID ou e-mail de um usuário para verificar como a mensagem apareceria para uma pessoa dependendo do idioma dela.

Os Content Blocks da Braze são blocos de conteúdo reutilizáveis. Quando um bloco é alterado, todas as referências a esse bloco são atualizadas. Por exemplo, atualizações em um cabeçalho ou rodapé de e-mail serão refletidas em todos os e-mails, ou para abrigar traduções. Esses blocos também podem ser criados e atualizados usando a REST API, e os usuários podem fazer upload de traduções programaticamente.

Ao criar uma Campaign no dashboard, os Content Blocks podem ser referenciados usando a tag {{content_blocks.${name_of_content_block}}}. Esses blocos podem conter todas as traduções dentro de lógica condicional para cada idioma, como mostrado na opção 1, ou um bloco separado para cada idioma pode ser usado.

Os Content Blocks também podem ser utilizados como um processo de gerenciamento de tradução, onde o conteúdo que precisa de tradução é armazenado em um Content Block, buscado, traduzido e então atualizado:

  1. Crie manualmente um Content Block no dashboard com a tag “Needs Translation”.
  2. Seu serviço realiza uma busca noturna de todos os Content Blocks usando o endpoint /content_blocks/list.
  3. Seu serviço busca detalhes de cada Content Block por meio do endpoint /content_blocks/info para ver quais blocos estão marcados para tradução.
  4. Seu serviço de tradução traduz o corpo de todos os Content Blocks marcados como “Needs Translation”.
  5. Seu serviço acessa o endpoint /content_block/update para atualizar o conteúdo traduzido e atualizar a tag para “Translation Complete”.

Os Catálogos permitem que você acesse dados de objetos JSON importados via API e arquivos CSV para enriquecer suas mensagens, de forma semelhante a atributos personalizados ou propriedades de eventos personalizados por meio de Liquid. Por exemplo:

Crie um catálogo por meio da seguinte chamada de API:

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"
       }
     ]
   }
 ]
}'

Adicione itens por meio da seguinte chamada de API:

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"
   }
 ]
}'

Crie um CSV no seguinte formato:

Esses itens de catálogo podem ser referenciados usando personalização, conforme mostrado abaixo, ou seleções que permitem criar grupos de dados.

1
2
3
{% catalog_items translations 1 %}
{{items[0].body}}
//returns “Hey”

Muitos parceiros da Braze oferecem soluções de localização, incluindo Transifex e Crowdin. Normalmente, os usuários utilizam a plataforma em conjunto com uma equipe interna e uma agência de tradução. Essas traduções são então carregadas e ficam acessíveis via REST API. Esses serviços também costumam utilizar Conteúdo conectado, permitindo que os usuários busquem as traduções via API.

Por exemplo, as seguintes chamadas de Conteúdo conectado chamam o Transifex e o Crowdin para buscar uma tradução, utilizando {{${language}}} para identificar a tradução correta para um determinado usuário. Essa tradução é então salva no bloco JSON “strings” e referenciada.

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}}

Armazene as traduções em uma planilha e use um dos métodos a seguir para enviar sua mensagem no idioma relevante.

Você pode trabalhar com uma agência de tradução para armazenar traduções em uma planilha do Google e consultar esse conteúdo usando o Conteúdo conectado da Braze. Quando você envia uma mensagem, a tradução relevante para cada usuário será inserida no corpo da sua Campaign com base no idioma selecionado.

Esta opção fornece um método alternativo de transformar planilhas do Google em objetos JSON consultados via Conteúdo conectado. Ao transformar uma planilha em uma API JSON via SheetDB, você pode escolher entre múltiplos planos de assinatura dependendo da cadência das chamadas de API.

A estrutura da planilha segue as etapas da opção 4, mas o SheetDB também fornece filtros adicionais para consultar os objetos.

Alguns usuários podem preferir implementar o SheetDB com menos dependências de Liquid e blocos de Conteúdo conectado, implementando o método de busca do SheetDB em chamadas de solicitação GET para filtrar os objetos JSON com base na tag Liquid {{${language}}} para retornar automaticamente os resultados de um único idioma, em vez de construir grandes blocos condicionais.

Etapa 1: Formate a planilha do Google

Primeiro, construa a planilha do Google de forma que os idiomas sejam objetos diferentes:

Etapa 2: Use a tag Liquid de idioma em uma chamada de Conteúdo conectado

Em seguida, implemente a tag Liquid {{${language}}} dentro de uma chamada de Conteúdo conectado. Observe que o SheetDB gerará automaticamente o sheet_id ao criar a planilha.

1
{% connected_content https://sheetdb.io/api/v1/[sheet_id]/search?language={{${language}}} :save result%}

Etapa 3: Crie o modelo das suas mensagens

Por fim, use Liquid para criar o modelo das suas mensagens:

1
2
{{result[0].title1}} //returns “Hey”
{{result[0].title2}} //returns “Hey2”
Considerações
  • O campo {{${language}}} precisa estar definido para todos os usuários; caso contrário, um bloco condicional Liquid deve ser incluído como tratamento de fallback para usuários sem um idioma definido.
  • A modelagem de dados no Google Sheets deve seguir uma estrutura vertical orientada por idioma, em vez de ter objetos de mensagem.
  • O SheetDB oferece uma conta gratuita limitada e múltiplas opções pagas que devem ser consideradas com base na sua estratégia de Campaign.
  • As chamadas de Conteúdo conectado podem ser armazenadas em cache. Recomendamos medir a cadência projetada das chamadas de API e investigar uma abordagem alternativa de chamar o endpoint principal do SheetDB em vez de usar o método de busca.
New Stuff!