Esta guía explica cómo configurar el idioma de un usuario en OneSignal y enviar mensajes en su idioma preferido a través de notificaciones push, emails y mensajes en la app.
Configurar idioma del usuario
OneSignal configura automáticamente la propiedad language desde el idioma del dispositivo cuando un usuario se crea por primera vez usando los SDKs web o móviles.
También puedes configurar o actualizar manualmente el idioma del usuario usando el código de idioma de 2 letras ISO 639-1 con:
- El método
setLanguage del SDK.
- El campo
language en las APIs Crear usuario o Actualizar usuario.
- La columna
language en el Importador CSV.
Enviar mensajes en diferentes idiomas
Usa las pestañas a continuación para ver opciones de localización por canal de mensajería.
Notificaciones push
Email
Mensajes en la app
SMS
Envío desde el panel
Desde Messages > Push > New Message o Plantillas, haz clic en Add Languages. Elige entre:Opción 1: Casillas de verificación
Selecciona los idiomas que soportas. Cualquier idioma no seleccionado volverá a Any/English.Opción 2: Importar contenido de idiomas
Usa la plantilla proporcionada para formatear el mensaje en cada idioma.Copia y pega el contenido de vuelta en el campo “Add Languages”.Previsualiza el contenido para verificar, inserta el contenido, y aparecerán nuevas pestañas en el editor con el contenido designado completado.Opción 3: Contenido dinámico
Usa Contenido dinámico que implica crear y subir un archivo CSV con los idiomas que soportas.Solución de problemas
- Inglés requerido: Incluye una fila para
en como predeterminado.
- Usar encabezados correctos:
language_code, title, subtitle, message
- Valores separados por comas: Asegura el formato CSV apropiado.
- Idioma no soportado: Si no está listado en la interfaz o plantilla, no está soportado. Usa la siguiente mejor opción y contacta a
support@onesignal.com.
El editor del panel usa un campo HTML estándar. Caracteres especiales como % pueden causar problemas de visualización en idiomas RTL. Agrega marcas RLM después de tales caracteres para solucionar problemas de formato.
Envío por API
Los campos contents y headings soportan múltiples idiomas: {
"contents": {
"en": "English content",
"fr": "French content"
},
"headings": {
"en": "English heading",
"fr": "French heading"
}
}
Envío desde el panel
Desde Messages > Email > New Message o Plantillas, elige entre:Opción 1: Segmentos
- Crea un segmento para cada idioma.
- Crea una plantilla por idioma.
- Envía cada uno a su segmento correspondiente.
Opción 2: Sintaxis Liquid
Usa sintaxis Liquid y sustitución de propiedades o tags para crear declaraciones condicionales en el mensaje y renderizar el contenido apropiado basado en el idioma del usuario.{% assign language = subscription.language %}
{% if language == 'fr' %}
Bonjour {{ name }}!
{% elsif language == 'es' %}
Hola {{ name }}!
{% else %}
Hi {{ name }}!
{% endif %}
Opción 3: Contenido dinámico
Usa Contenido dinámico que implica crear y subir un archivo CSV con los idiomas que soportas.
Envío por API
Usando la API Crear mensaje, puedes:
- Orientar segmentos o filtros de idioma como lo harías con el panel.
- Crear plantillas de mensaje con sintaxis Liquid utilizando
custom_data, sustitución de propiedades o tags. Consulta Personalización de mensajes para más detalles sobre estas opciones.
Ejemplo de personalización masiva con custom_data:{% assign eid = message.custom_data.users[subscription.external_id] %}
Hi {{ eid.first_name }}, you have {{ eid.points }} points. Your level is {{ eid.level }}.
{
"app_id": "YOUR_APP_ID",
"template_id": "YOUR_TEMPLATE_ID",
"include_aliases": {
"external_id": ["user123", "user456"]
},
"custom_data": {
"users": {
"user123": { "first_name": "John", "points": "150", "level": "Gold" },
"user456": { "first_name": "Sarah", "points": "200", "level": "Platinum" }
}
}
}
El cliente ve:
- “Hi John, you have 150 points. Your level is Gold.”
- “Hi Sarah, you have 200 points. Your level is Platinum.”
Panel - Segmentos
Para enviar un mensaje en la app específico de idioma a cada idioma que necesitas soportar:
- Crea un segmento para cada idioma.
- Crea un mensaje en la app por idioma.
- Envía cada uno a su segmento correspondiente.
Usa sintaxis Liquid y sustitución de tags para crear declaraciones condicionales en el mensaje y renderizar el contenido apropiado basado en tags.Solo la sustitución de tags está soportada para mensajes en la app.
language : german
first_name : Jon
{% assign lang = language%}
{% if lang == "english" %}
Good day {{first_name}}!
{%- elsif lang == 'german' -%}
Guten Tag {{first_name}}!
{%- elsif lang == 'spanish' -%}
Buenos Dias {{first_name}}!
{%- elsif lang == 'french' -%}
Bonjour {{first_name}}!
{% else %}
Hello {{first_name}}!
{% endif %}
Envío desde el panel
Desde Messages > SMS > New Message o Plantillas, elige entre:Opción 1: Segmentos
- Crea un segmento para cada idioma.
- Crea una plantilla por idioma.
- Envía cada uno a su segmento correspondiente.
Opción 2: Contenido dinámico
Usa Contenido dinámico que implica crear y subir un archivo CSV con los idiomas que soportas.
Envío por API
Los campos contents y headings soportan múltiples idiomas: {
"contents": {
"en": "English content",
"fr": "French content"
},
"headings": {
"en": "English heading",
"fr": "French heading"
}
}
Idiomas soportados
El código de idioma se mapea a la propiedad de usuario language en el formato de código de 2 letras ISO 639-1. Soportamos los siguientes códigos de idioma.
Si el código de idioma no está incluido en la ventana emergente y la plantilla CSV, entonces este idioma no está soportado. Recomendamos usar el siguiente mejor idioma y enviarnos una solicitud de producto a support@onesignal.com
| Language | Language Code |
|---|
| English | en |
| Arabic | ar |
| Azerbaijani | az |
| Bosnian | bs |
| Catalan | ca |
| Chinese (Simplified) | zh-Hans |
| Chinese (Traditional) | zh-Hant |
| Croatian | hr |
| Czech | cs |
| Danish | da |
| Dutch | nl |
| Estonian | et |
| Finnish | fi |
| French | fr |
| Georgian | ka |
| Bulgarian | bg |
| German | de |
| Greek | el |
| Hindi | hi |
| Hebrew | he |
| Hungarian | hu |
| Indonesian | id |
| Italian | it |
| Japanese | ja |
| Korean | ko |
| Latvian | lv |
| Lithuanian | lt |
| Malay | ms |
| Norwegian | nb |
| Persian | fa |
| Polish | pl |
| Portuguese | pt |
| Punjabi | pa |
| Romanian | ro |
| Russian | ru |
| Serbian | sr |
| Slovak | sk |
| Spanish | es |
| Swedish | sv |
| Thai | th |
| Turkish | tr |
| Ukrainian | uk |
| Vietnamese | vi |