Skip to content

Localização

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

Como funciona

Depois de integrar o SDK do Braze, as informações de localidade dos dispositivos do usuário são coletadas automaticamente. O locale contém o idioma e um identificador de região. Essas informações estão disponíveis na ferramenta de segmentação do Braze em País e Idioma.

Gerenciamento de traduções

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

Um modelo para todos

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

Um modelo por país

Essa abordagem separa o modelo em diferentes locais de envio. Após o envio, o painel informa o envio de análises com base em cada país separadamente, e todos os eventos do Currents no nível do usuário posterior também serão vinculados a uma campanha específica.

  • Os modelos se beneficiam da implementação de tags para fins de manutenção e rastreamento.
  • As campanhas podem herdar as configurações do mesmo modelo Braze e dos blocos de conteúdo (como os modelos de e-mail que contêm Liquid).
  • Campanhas e modelos pré-existentes podem ser duplicados para permitir um time-to-value mais rápido.

Uma viagem para todos

Nessa abordagem, a localização é tratada no Canvas Journeys e no Liquid para definir as mensagens para cada usuário.

Depois que um Canvas é enviado, o painel fornece o Canvas Analytics agregado, enquanto o envolvimento no nível do usuário pode ser medido por meio de funis de segmentos personalizados, como a combinação de País e Etapa do Canvas recebido filtros.

Uma viagem por país

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

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

  • Canvases separados por país, o que garante que as jornadas complexas do usuário sejam definidas no topo do funil usando filtros de público-alvo
  • Jornadas de usuário personalizadas por país, a implementação de Audience Paths para segmentar intuitivamente os usuários em grande escala para cada jornada, criando tópicos de mensagens separados para cada país em um único Canvas

Depois de enviado, o painel fornece análises dinâmicas por país e em eventos do 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 ou na localidade de um usuário, use um dos métodos a seguir:

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

  1. Escreva sua mensagem e selecione Idioma para gerar a lógica condicional Liquid para cada um dos idiomas selecionados.
  2. Você pode usar o modelo Liquid a seguir para ajudar a elaborar sua mensagem. Para cada campo com modelo, você deve inserir as variações após o segmento entre colchetes do modelo. 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 o e-mail de um usuário para verificar como uma mensagem apareceria para uma pessoa, dependendo do idioma dela.

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

Ao criar uma campanha no painel, os blocos de conteúdo podem ser referenciados usando a tag {{content_blocks.${name_of_content_block}}}. Esses blocos podem conter todas as traduções alojadas na lógica condicional para cada idioma, conforme mostrado na opção 1, ou pode ser usado um bloco separado para cada idioma.

Os blocos de conteúdo também podem ser utilizados como um processo de gerenciamento de tradução, em que o conteúdo que requer tradução é armazenado em um bloco de conteúdo, buscado, traduzido e depois atualizado:

  1. Crie manualmente um bloco de conteúdo no painel com a tag “Needs Translation” (Precisa de tradução).
  2. Seu serviço realiza uma busca noturna de todos os blocos de conteúdo usando o ponto de extremidade/content_blocks/list .
  3. Seu serviço obtém detalhes sobre 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 blocos de conteúdo “Precisa de tradução”.
  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 aos atributos personalizados ou às propriedades de eventos personalizados do 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 a personalização, mostrada abaixo, ou seleções que permitem criar grupos de dados.

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

Adicione e use localidades em sua mensagem para atingir usuários em diferentes idiomas em uma única campanha ou Canvas para os canais de e-mail ou push. Para obter um passo a passo completo, consulte Locales in email messages (Locais em mensagens de e-mail ) ou Locales in push messages (Locais em mensagens push).

Muitos parceiros do Braze oferecem soluções de localização, incluindo a Transifex e a Crowdin. Normalmente, os usuários usam a plataforma juntamente com uma equipe interna e uma agência de tradução. Essas traduções são carregadas lá e podem ser acessadas por meio da API REST. Esses serviços também costumam aproveitar o Connected Content, permitindo que os usuários obtenham as traduções por meio da API.

Por exemplo, as seguintes chamadas do Connected Content chamam o Transifex e o Crowdin para buscar uma tradução, aproveitando o {{${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}}

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

Você pode pedir a uma agência de tradução que armazene as traduções em uma planilha do Google e, em seguida, consultar esse conteúdo usando o Braze Connected Content. Quando você enviar uma mensagem, a tradução relevante para cada usuário será inserida no corpo da campanha com base no idioma selecionado.

Essa opção oferece um método alternativo de transformar o Google Sheets em objetos JSON consultados via Connected Content. Ao transformar uma planilha em uma API JSON por meio do SheetDB, você pode escolher entre vários níveis de assinatura, dependendo da cadência das chamadas à 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 do Liquid e do Connected Block, implementando o método de pesquisa do SheetDB em chamadas de solicitação GET para filtrar os objetos JSON com base na tag {{${language}}} Liquid para retornar automaticamente os resultados de um único idioma, em vez de criar grandes blocos condicionais.

Etapa 1: Formatar a planilha do Google

Primeiro, crie a planilha do Google de modo que os idiomas sejam objetos diferentes:

Etapa 2: Use a tag language Liquid em uma chamada de Connected Content

Em seguida, implemente a tag {{${language}}} Liquid em uma chamada Connected Content. Observe que o SheetDB gerará automaticamente o endereço sheet_id ao criar a planilha.

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

Etapa 3: Modelo de suas mensagens

Por fim, use o Liquid para criar modelos para suas mensagens:

1
2
{{result[0].title1}} //returns “Hey”
{{result[0].title2}} //returns “Hey2”
Considerações
  • O campo {{${language}}} deve ser definido para todos os usuários; caso contrário, um bloco condicional Liquid deve ser apresentado como um manipulador de fallback para usuários sem um idioma.
  • A modelagem de dados no Planilhas Google precisa seguir uma vertical diferente, orientada pela linguagem, em vez de ter objetos de mensagem.
  • O SheetDB oferece uma conta gratuita limitada e várias opções de pagamento que devem ser consideradas com base em sua estratégia de campanha.
  • As chamadas do Connected Content 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 pesquisa.
New Stuff!