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 sola plantilla en Braze mediante Liquid. Tras el envío, el panel proporciona análisis agregados de la Campaign. La participación a nivel de usuario se puede medir mediante embudos de Segments personalizados, por ejemplo, combinando los filtros País y Campaign recibida.
| Ventajas | Consideraciones |
|---|---|
| - Enfoque centralizado - Reducción del tiempo de creación de correos electrónicos, sin necesidad de crear un correo electrónico varias veces |
- Creación manual de informes - El informe de la Campaign muestra métricas agregadas en lugar de métricas por país - Es necesario probar a fondo Liquid para asegurar que se rellena como se espera - Dependiendo de cómo obtengas el valor del país o de cuántos países tengas configurados, puede ser complicado probar cada país - Más difícil programar envíos en horarios específicos en distintas 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. Tras el envío, el panel reporta los análisis de envío basados en cada país por separado, y cualquier evento descendente de Currents a nivel de usuario 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 el contenido varía drásticamente por país |
- Requiere una estructuración estratégica - Mayor esfuerzo de construcción requerido (como Campaigns separadas para cada país) |
Un recorrido para todos
En este enfoque, la localización se gestiona dentro de los fundamentos de Canvas y Liquid para definir la mensajería de cada usuario.
Tras el envío de un Canvas, el panel proporciona análisis de Canvas agregados, mientras que la participación a nivel de usuario se puede medir mediante embudos de Segments personalizados, como la combinación de los filtros País y Paso en Canvas recibido.
| Ventajas | Consideraciones |
|---|---|
| - Enfoque centralizado - Reducción del tiempo de creación de correos electrónicos, sin necesidad de 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 a fondo Liquid para asegurar que se rellena como se espera - Dependiendo de cómo obtengas el valor del país o de cuántos países tengas configurados, puede ser complicado probar cada país - Más difícil programar envíos en horarios específicos en distintas 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 mediante múltiples componentes de Canvas. Estos componentes se pueden duplicar tanto a nivel de componente como de recorrido completo.
La localización se puede lograr con los siguientes métodos:
- Canvas separados por país, lo que garantiza que los recorridos de usuario complejos se definan en la parte superior del embudo mediante filtros de audiencia
- Recorridos de usuario personalizados por país, con la implementación de rutas de audiencia para segmentar intuitivamente a los usuarios a gran escala en cada recorrido, creando hilos de mensajes separados para cada país en un solo Canvas
Una vez enviado, el panel 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 el contenido varía drásticamente por país - Posibilidad de añadir otros canales como parte del recorrido en el futuro |
- Requiere una estructuración estratégica - Mayor esfuerzo de construcción requerido (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. |
Enviar mensajes traducidos
Para enviar mensajes personalizados según el idioma, la configuración regional o los atributos personalizados de un usuario, usa uno de los siguientes métodos.
Etiquetas de traducción Liquid (recomendado)
Braze admite una etiqueta Liquid {% translation salutation %}Hello!{% endtranslation %} para dirigirte a usuarios en diferentes idiomas con un solo mensaje.
Para un recorrido 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 hacerlo:
- Redacta tu mensaje, luego selecciona Idioma para generar lógica condicional Liquid para cada uno de los idiomas seleccionados.
-
Puedes usar la siguiente plantilla Liquid para ayudarte 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 entre corchetes antes de ella.
{% 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 el correo electrónico de un usuario para comprobar cómo aparecería un mensaje a una persona según su idioma.

Siempre recomendamos incluir una sentencia {% 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 quienes:
- No tengan un idioma seleccionado
- Tengan un idioma que Braze no admite
- Tengan un dispositivo en el que el idioma no sea detectable
Los Content Blocks de Braze son bloques de contenido reutilizables. Cuando un bloque se modifica, todas las referencias a ese bloque cambian. Por ejemplo, las actualizaciones en el encabezado o pie de página de un correo electrónico se reflejarán en todos los correos electrónicos, o para almacenar 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 construir una Campaign en el panel, se puede hacer referencia a los Content Blocks usando la etiqueta {{content_blocks.${name_of_content_block}}}. Estos bloques pueden contener todas las traducciones 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 almacena en un Content Block, se recupera, se traduce y luego se actualiza:
- Crea manualmente un Content Block en el panel con la etiqueta “Needs Translation”.
- Tu servicio realiza una recuperación nocturna de todos los Content Blocks usando el endpoint
/content_blocks/list. - Tu servicio obtiene los detalles de cada Content Block a través del endpoint
/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 etiqueta “Needs Translation”.
- Tu servicio llama al endpoint
/content_block/updatepara actualizar el contenido traducido y cambiar la etiqueta a “Translation Complete”.
Los catálogos te permiten acceder a datos de objetos JSON importados a través de la API y archivos CSV para enriquecer tus mensajes, de forma similar a los atributos personalizados o las propiedades de eventos personalizados mediante Liquid. Por ejemplo:
Crea un catálogo mediante la siguiente llamada a la API:
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 mediante la siguiente llamada a la API:
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 con 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 |
Luego se puede hacer referencia a estos elementos del catálogo usando la personalización, como se muestra en el siguiente ejemplo, o las selecciones que te permiten crear grupos de datos.
{% catalog_items translations 1 %}
{{items[0].body}}
//returns “Hey”
Muchos partners de Braze ofrecen soluciones de localización, incluidos Transifex y Crowdin. Normalmente, los usuarios usan 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 entonces en el bloque JSON “strings” y se hace referencia a ella.
{% connected_content https://www.transifex.com/api/2/project/example/resource/example/translation/{{${language}}}/strings :basic_auth semc :save strings %}
{{strings[0].translation}}
{% 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}}
Almacena 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á en el cuerpo de tu Campaign según el idioma seleccionado.

La API de Google Sheets tiene un límite de 500 solicitudes por 100 segundos por proyecto. Las llamadas de contenido conectado se pueden almacenar en caché, pero esta solución no es escalable para Campaigns 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 varios niveles de suscripción según 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 de contenido conectado, implementando el método de búsqueda de SheetDB en llamadas de solicitud GET para filtrar los objetos JSON según la etiqueta Liquid {{${language}}} para devolver automáticamente los resultados de un solo idioma en lugar de construir grandes bloques condicionales.
Paso 1: Da formato a la hoja de Google
Primero, construye la hoja de Google para 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 Liquid de idioma en una llamada de contenido conectado
A continuación, implementa la etiqueta 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.
{% connected_content https://sheetdb.io/api/v1/[sheet_id]/search?language={{${language}}} :save result%}
Paso 3: Construye la plantilla de tus mensajes
Por último, usa Liquid para crear la plantilla de tus mensajes:
{{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 Liquid como controlador alternativo para usuarios sin idioma. - El modelado de datos dentro de Google Sheets debe seguir una estructura vertical diferente basada en idiomas, en lugar 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 endpoint principal de SheetDB en lugar de usar el método de búsqueda.
Esta opción convierte una hoja de Google en una API JSON que puedes consultar con contenido conectado. Sheetlabs admite grandes volúmenes de consultas y ofrece niveles gratuitos y de pago.
Paso 1: Prepara tu hoja de traducciones en Google Sheets
Construye la hoja de Google de modo que cada fila sea un idioma. Por ejemplo:
| language | greeting | title1 | legal1 |
|---|---|---|---|
| en | Welcome! | Your exclusive offer is here | … |
| fr | Bienvenue! | Votre offre exclusive est arrivée | … |
Paso 2: Usa Sheetlabs para importar la hoja y crear una API
- Regístrate en Sheetlabs.
- Sigue las instrucciones de Sheetlabs para importar datos desde Google Sheets.
- Selecciona la hoja de cálculo que creaste en el paso 1.
- Selecciona Create a matching API.
Paso 3: Añade tu token de autenticación de Sheetlabs a Braze (opcional)
Si tu API de Sheetlabs es pública, omite este paso. Si requiere autenticación:
- Ve a la página My Account en Sheetlabs y copia tu token de API.
- Sigue los pasos en Autenticación de Braze con Basic Auth para crear una credencial de autenticación básica en Braze. Usa tu nombre de usuario de Sheetlabs (dirección de correo electrónico) y el token de API que copiaste.
- Guarda la credencial con un nombre como
sheetlabs_creds.
Paso 4: Llama a la API de Sheetlabs desde contenido conectado
Añade una llamada de contenido conectado a Sheetlabs. Reemplaza /XXX/yourapi con la ruta de la API que creaste en el paso 2.
{% connected_content https://sheetlabs.com/XXX/yourapi?language={{${language}}} :save translations :basic_auth sheetlabs_creds %}
Paso 5: Construye la plantilla de tus mensajes
Usa Liquid para hacer referencia a los campos devueltos. Por ejemplo:
{{translations[0].greeting}} {{${first_name}}},
{{translations[0].body1}}
Consideraciones
- Define el campo
{{${language}}}para cada usuario que quieras asociar. Si un usuario no tiene un idioma configurado, incluye una alternativa con Liquid. - Las llamadas de contenido conectado se pueden almacenar en caché. Mide la cadencia proyectada de tu API al elegir un plan de Sheetlabs.
Para más información, consulta Uso de Sheetlabs con Braze.