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.
| Vantagens | Considerações |
|---|---|
| - Abordagem centralizada - Tempo reduzido de criação de e-mail, sem necessidade de criar o mesmo e-mail várias vezes |
- Criação manual de relatórios - O relatório da Campaign mostra métricas agregadas em vez de métricas por país - É necessário testar o Liquid minuciosamente para garantir que ele seja preenchido conforme esperado - Dependendo de como você obtém o valor do país ou de quantos países você configurou, pode ser difícil testar cada país - Mais difícil programar envios para horários específicos em diferentes fusos horários - Mais difícil de usar se você quiser enviar conteúdo diferente por país. |
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.
| Vantagens | Considerações |
|---|---|
| - Escalável para múltiplas localidades - Relatórios de receita por país dentro da Braze (como por Campaign) - Flexibilidade se houver conteúdo drasticamente diferente por país |
- Requer estruturação estratégica - Mais esforço de construção necessário (como Campaigns separadas para cada país) |
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.
| Vantagens | Considerações |
|---|---|
| - Abordagem centralizada - Tempo reduzido de criação de e-mail — sem necessidade de criar o mesmo e-mail várias vezes. |
- Criação manual de relatórios - O relatório do Canvas mostra métricas agregadas em vez de métricas por país - É necessário testar o Liquid minuciosamente para garantir que ele seja preenchido conforme esperado - Dependendo de como você obtém o valor do país ou de quantos países você configurou, pode ser difícil testar cada país - Mais difícil programar envios para horários específicos em diferentes fusos horários - Mais difícil de usar se você quiser enviar conteúdo diferente por país. |
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.
| Vantagens | Considerações |
|---|---|
| - Relatórios de receita por país dentro da Braze (como por Canvas, variante ou etapa) - Flexibilidade se houver conteúdo drasticamente diferente por país - Possibilidade de adicionar outros canais como parte da jornada no futuro |
- Requer estruturação estratégica - Mais esforço de construção necessário (como etapas de mensagem separadas para cada país) - O Canvas pode ficar grande e difícil de ler se você tiver jornadas personalizadas e complexas para cada país em um único Canvas. |
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:
- Redija sua mensagem e selecione Idioma para gerar a lógica condicional Liquid para cada um dos idiomas selecionados.
-
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 %}
- 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.
Sempre recomendamos incluir uma instrução {% else %} no seu envio de mensagens. Embora a maioria dos usuários veja a mensagem no seu idioma específico, o texto será visível para aqueles que:
- Não têm um idioma selecionado
- Têm um idioma que a Braze não suporta
- Têm um dispositivo em que o idioma não é detectável
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:
- Crie manualmente um Content Block no dashboard com a tag “Needs Translation”.
- Seu serviço realiza uma busca noturna de todos os Content Blocks usando o endpoint
/content_blocks/list. - Seu serviço busca detalhes de cada Content Block por meio do endpoint
/content_blocks/infopara ver quais blocos estão marcados para tradução. - Seu serviço de tradução traduz o corpo de todos os Content Blocks marcados como “Needs Translation”.
- Seu serviço acessa o endpoint
/content_block/updatepara 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:
| 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 |
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.
A API do Google Sheets tem um limite de 500 solicitações por 100 segundos por projeto. As chamadas de Conteúdo conectado podem ser armazenadas em cache, mas essa solução não é escalável para Campaigns de alto tráfego.
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:
| 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 |
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.