Localización
Para las empresas con clientes en muchos países, gestionar la localización de forma temprana en tu recorrido con Braze puede ahorrar tiempo y recursos a tu empresa.
Cómo funciona
La información de configuración regional se almacena en el perfil de un usuario a partir de los datos que recopilas mediante un SDK de Braze (automáticamente) o la REST API. La configuración regional contiene el idioma y un identificador de región. Esta información está disponible en la herramienta de segmentación de Braze en País e Idioma.
Gestión de traducciones
Considera los siguientes enfoques para gestionar tus traducciones.
Una plantilla para todos
En este enfoque, la localización se aplica a una única plantilla en Braze utilizando Liquid. Después del envío, el dashboard proporciona análisis agregados de la Campaign. La interacción a nivel de usuario se puede medir mediante embudos de Segment personalizados, por ejemplo, combinando los filtros País y Campaign recibida.
| Ventajas | Consideraciones |
|---|---|
| - Enfoque centralizado - Tiempo de creación de correo electrónico reducido, sin necesidad de crear un correo electrónico varias veces |
- Creación manual de informes - El informe de Campaign muestra métricas agregadas en lugar de métricas por país - Es necesario probar exhaustivamente Liquid para asegurarse de que se rellena como se espera - Dependiendo de cómo obtengas el valor del país o cuántos países tengas configurados, puede ser complicado probar cada país - Más difícil programar envíos para horarios específicos en diferentes zonas horarias - Más difícil de usar si quieres enviar contenido diferente por país. |
Una plantilla por país
Este enfoque separa las plantillas en diferentes configuraciones regionales de envío. Después del envío, el dashboard muestra los análisis de envío basados en cada país por separado, y cualquier evento de Currents a nivel de usuario posterior también estará vinculado a una Campaign específica.
- Las plantillas se benefician de implementar etiquetas con fines de mantenimiento y seguimiento.
- Las Campaigns pueden heredar las configuraciones de la misma plantilla de Braze y Content Blocks (como las plantillas de correo electrónico que contienen Liquid).
- Las Campaigns y plantillas preexistentes se pueden duplicar para permitir un tiempo de obtención de valor más rápido.
| Ventajas | Consideraciones |
|---|---|
| - Escalable a múltiples ubicaciones - Informes de ingresos por país dentro de Braze (como por Campaign) - Flexibilidad si hay contenido drásticamente diferente por país |
- Requiere una estructuración estratégica - Se requiere más esfuerzo de creación (como Campaigns separadas para cada país) |
Un recorrido para todos
En este enfoque, la localización se gestiona dentro de los conceptos básicos de Canvas y Liquid para definir la mensajería para cada usuario.
Después de enviar un Canvas, el dashboard proporciona análisis de Canvas agregados, mientras que la interacción a nivel de usuario se puede medir mediante embudos de Segment personalizados, como la combinación de los filtros País y Paso de Canvas recibido.
| Ventajas | Consideraciones |
|---|---|
| - Enfoque centralizado - Tiempo de creación de correo electrónico reducido: no es necesario crear un correo electrónico varias veces. |
- Creación manual de informes - El informe de Canvas muestra métricas agregadas en lugar de métricas por país - Es necesario probar exhaustivamente Liquid para asegurarse de que se rellena como se espera - Dependiendo de cómo obtengas el valor del país o cuántos países tengas configurados, puede ser complicado probar cada país - Más difícil programar envíos para horarios específicos en diferentes zonas horarias - Más difícil de usar si quieres enviar contenido diferente por país. |
Un recorrido por país
En este enfoque, el constructor de recorridos de Canvas proporciona la flexibilidad de crear recorridos de usuario a través de múltiples componentes de Canvas. Estos componentes se pueden duplicar a nivel de componente y de recorrido general.
La localización se puede lograr con los siguientes métodos:
- Canvas separados por país, esto asegura que los recorridos de usuario complejos se definan en la parte superior del embudo utilizando filtros de audiencia
- Recorridos de usuario personalizados por país, la implementación de Rutas de audiencia para segmentar intuitivamente a los usuarios a gran escala para cada recorrido creando hilos de mensajes separados para cada país en un solo Canvas
Una vez enviado, el dashboard proporciona análisis dinámicos por país y dentro de los eventos de Currents a nivel de usuario basados en la ubicación actual del cliente.
| Ventajas | Consideraciones |
|---|---|
| - Informes de ingresos por país dentro de Braze (como por Canvas, variante o paso) - Flexibilidad si hay contenido drásticamente diferente por país - Se pueden añadir otros canales como parte del recorrido en el futuro |
- Requiere una estructuración estratégica - Se requiere más esfuerzo de creación (como pasos de mensaje separados para cada país) - El Canvas puede volverse grande y difícil de leer si tienes recorridos personalizados y complejos para cada país en un solo Canvas. |
Envío de mensajes traducidos
Para enviar mensajes personalizados basados en el idioma, la configuración regional o los atributos personalizados de un usuario, utiliza uno de los siguientes métodos.
Etiquetas de Liquid de traducción (recomendado)
Braze admite una etiqueta de Liquid {% translation salutation %}Hello!{% endtranslation %} para dirigirse a los usuarios en diferentes idiomas con un solo mensaje.
Para un tutorial completo, consulta la guía sobre el uso de etiquetas de traducción.
Enfoques alternativos
Puedes pegar manualmente tu contenido en el cuerpo de tu mensaje y usar Liquid para mostrar condicionalmente el idioma correcto al destinatario. Para hacer esto:
- Redacta tu mensaje, luego selecciona Idioma para generar lógica condicional de Liquid para cada uno de tus idiomas seleccionados.
-
Puedes usar la siguiente plantilla de Liquid para ayudar a construir tu mensaje. Para cada campo con plantilla, debes introducir las variaciones después del segmento entre corchetes de la plantilla. La variación debe corresponder al código de idioma referenciado en los corchetes antes de ella.
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 %}
- Prueba tu mensaje antes de enviarlo introduciendo el ID o correo electrónico de un usuario para comprobar cómo aparecería un mensaje a una persona dependiendo de su idioma.
Siempre recomendamos incluir una declaración {% else %} en tu mensajería. Aunque la mayoría de los usuarios verán mensajes en su idioma específico, el texto será visible para aquellos que:
- No tienen un idioma seleccionado
- Tienen un idioma que Braze no admite
- Tienen un dispositivo en el que el idioma no es detectable
Los Content Blocks de Braze son bloques de contenido reutilizables. Cuando se modifica un bloque, todas las referencias a ese bloque cambian. Por ejemplo, las actualizaciones en un encabezado o pie de página de correo electrónico se reflejarán en todos los correos electrónicos o para alojar traducciones. Estos bloques también se pueden crear y actualizar usando la REST API, y los usuarios pueden cargar traducciones de forma programática.
Al crear una Campaign en el dashboard, se puede hacer referencia a los Content Blocks usando la etiqueta {{content_blocks.${name_of_content_block}}}. Estos bloques podrían contener todas las traducciones alojadas dentro de lógica condicional para cada idioma, como se muestra en la opción 1, o se puede usar un bloque separado para cada idioma.
Los Content Blocks también se pueden utilizar como un proceso de gestión de traducciones donde el contenido que requiere traducción se aloja dentro de un Content Block, se obtiene, se traduce y luego se actualiza:
- Crea manualmente un Content Block en el dashboard con la etiqueta “Needs Translation”.
- Tu servicio realiza una obtención nocturna de todos los Content Blocks usando el punto de conexión
/content_blocks/list. - Tu servicio obtiene detalles de cada Content Block a través del punto de conexión
/content_blocks/infopara ver qué bloques están etiquetados para traducción. - Tu servicio de traducción traduce el cuerpo de todos los Content Blocks con “Needs Translation”.
- Tu servicio llama al punto de conexión
/content_block/updatepara actualizar el contenido traducido y actualizar la etiqueta a “Translation Complete”.
Los Catálogos te permiten acceder a datos de objetos JSON importados a través de API y archivos CSV para enriquecer tus mensajes, de forma similar a los atributos personalizados o las propiedades de eventos personalizados a través de Liquid. Por ejemplo:
Crea un catálogo a través de la siguiente llamada a la 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"
}
]
}
]
}'
Añade elementos a través de la siguiente llamada a la 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"
}
]
}'
Crea un CSV en el siguiente 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 |
Estos elementos del catálogo se pueden referenciar usando personalización, como se muestra a continuación, o selecciones que te permiten crear grupos de datos.
1
2
3
{% catalog_items translations 1 %}
{{items[0].body}}
//returns “Hey”
Muchos socios de Braze ofrecen soluciones de localización, incluyendo Transifex y Crowdin. Normalmente, los usuarios utilizan la plataforma junto con un equipo interno y una agencia de traducción. Estas traducciones se cargan allí y luego son accesibles a través de la REST API. Estos servicios también suelen aprovechar el contenido conectado, lo que permite a los usuarios obtener las traducciones a través de la API.
Por ejemplo, las siguientes llamadas de contenido conectado llaman a Transifex y Crowdin para obtener una traducción, aprovechando {{${language}}} para identificar la traducción correcta para un usuario determinado. Esta traducción se guarda luego en el bloque JSON “strings” y se referencia.
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}}
Aloja las traducciones en una hoja de cálculo y luego usa uno de los siguientes métodos para enviar tu mensaje en el idioma correspondiente.
Puedes trabajar con una agencia de traducción para almacenar traducciones en una hoja de cálculo de Google y luego consultar este contenido usando el contenido conectado de Braze. Cuando envías un mensaje, la traducción correspondiente para cada usuario se incorporará al cuerpo de tu Campaign según su idioma seleccionado.
La API de Google Sheets tiene un límite de 500 solicitudes por cada 100 segundos por proyecto. Las llamadas de contenido conectado se pueden almacenar en caché, pero esta solución no es escalable para una Campaign de alto tráfico.
Esta opción proporciona un método alternativo para transformar Google Sheets en objetos JSON consultados a través de contenido conectado. Al convertir una hoja de cálculo en una API JSON a través de SheetDB, puedes elegir entre múltiples niveles de suscripción dependiendo de la cadencia de las llamadas a la API.
La estructura de la hoja de cálculo sigue los pasos de la opción 4, pero SheetDB también proporciona filtros adicionales para consultar los objetos.
Algunos usuarios pueden preferir implementar SheetDB con menos dependencias de Liquid y bloques conectados implementando el método de búsqueda de SheetDB en llamadas de solicitud GET para filtrar los objetos JSON basándose en la etiqueta de Liquid {{${language}}} para devolver automáticamente los resultados de un solo idioma en lugar de construir grandes bloques condicionales.
Paso 1: Formatea la hoja de Google
Primero, construye la hoja de Google de modo que los idiomas sean 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 |
Paso 2: Usa la etiqueta de Liquid de idioma en una llamada de contenido conectado
A continuación, implementa la etiqueta de Liquid {{${language}}} dentro de una llamada de contenido conectado. Ten en cuenta que SheetDB generará automáticamente el sheet_id al crear la hoja de cálculo.
1
{% connected_content https://sheetdb.io/api/v1/[sheet_id]/search?language={{${language}}} :save result%}
Paso 3: Crea plantillas para tus mensajes
Por último, usa Liquid para crear plantillas de tus mensajes:
1
2
{{result[0].title1}} //returns “Hey”
{{result[0].title2}} //returns “Hey2”
Consideraciones
- El campo
{{${language}}}debe estar definido para todos los usuarios; de lo contrario, se debe incluir un bloque condicional de Liquid como controlador alternativo para los usuarios sin un idioma. - El modelado de datos dentro de Google Sheets debe seguir una estructura vertical orientada por idioma, a diferencia de tener objetos de mensaje.
- SheetDB ofrece una cuenta gratuita limitada y múltiples opciones de pago que deben considerarse según tu estrategia de Campaign.
- Las llamadas de contenido conectado se pueden almacenar en caché. Recomendamos medir la cadencia proyectada de las llamadas a la API e investigar un enfoque alternativo de llamar al punto de conexión principal de SheetDB en lugar de usar el método de búsqueda.