本指南解释了如何在 OneSignal 中设置用户的语言,并跨推送通知、电子邮件和应用内消息以用户首选语言发送消息。
设置用户语言
当使用网页或移动 SDK 首次创建用户时,OneSignal 会自动从设备的语言设置 language 属性。
您也可以使用 ISO 639-1 2 位字母语言代码通过以下方式手动设置或更新用户的语言:
- SDK 的
setLanguage 方法。
- 创建用户 或 更新用户 API 中的
language 字段。
- CSV 导入器 中的
language 列。
发送不同语言的消息
使用下面的选项卡按消息渠道查看本地化选项。
仪表板发送
从 消息 > 推送 > 新消息 或 模板 中,点击 添加语言。从以下选项中选择:选项 1:复选框
选择您支持的语言。任何未选择的语言将回退到任意/英语。选项 2:导入语言内容
使用提供的模板为每种语言格式化消息。将内容复制并粘贴回”添加语言”字段。预览内容以双重检查,插入内容,编辑器中将出现填充了指定内容的新选项卡。选项 3:动态内容
使用 动态内容,这涉及创建和上传包含您支持的语言的 CSV 文件。故障排除
- 需要英语:包含
en 行作为默认值。
- 使用正确的标题:
language_code、title、subtitle、message
- 逗号分隔值:确保正确的 CSV 格式。
- 不支持的语言:如果未在 UI 或模板中列出,则不支持该语言。请使用最佳备选方案并联系
support@onesignal.com。
仪表板编辑器使用标准 HTML 字段。特殊字符如 % 可能在 RTL 语言中引起显示问题。在这些字符后添加 RLM 标记 以修复格式问题。
API 发送
contents 和 headings 字段支持多种语言: {
"contents": {
"en": "English content",
"fr": "French content"
},
"headings": {
"en": "English heading",
"fr": "French heading"
}
}
仪表板发送
从 消息 > 电子邮件 > 新消息 或 模板 中,从以下选项中选择:选项 1:细分
- 为每种语言创建一个细分。
- 为每种语言创建一个模板。
- 将每个模板发送到其对应的细分。
选项 2:Liquid 语法
使用 Liquid 语法 和 属性或标签替换 在消息中创建条件语句,并根据用户的语言渲染适当的内容。{% assign language = subscription.language %}
{% if language == 'fr' %}
Bonjour {{ name }}!
{% elsif language == 'es' %}
Hola {{ name }}!
{% else %}
Hi {{ name }}!
{% endif %}
选项 3:动态内容
使用 动态内容,这涉及创建和上传包含您支持的语言的 CSV 文件。
API 发送
使用 创建消息 API,您可以:
- 像使用仪表板一样定位语言细分或过滤器。
- 使用 Liquid 语法创建消息模板,利用
custom_data、属性或标签替换。请参阅 消息个性化 了解这些选项的更多详细信息。
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" }
}
}
}
客户看到:
- “Hi John, you have 150 points. Your level is Gold.”
- “Hi Sarah, you have 200 points. Your level is Platinum.”
仪表板 - 细分
要为您需要支持的每种语言发送特定语言的应用内消息:
- 为每种语言创建一个细分。
- 为每种语言创建一个应用内消息。
- 将每个消息发送到其对应的细分。
标签替换
使用 Liquid 语法 和 标签替换 在消息中创建条件语句,并基于标签渲染适当的内容。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 %}
仪表板发送
从 消息 > 短信 > 新消息 或 模板 中,从以下选项中选择:选项 1:细分
- 为每种语言创建一个细分。
- 为每种语言创建一个模板。
- 将每个模板发送到其对应的细分。
选项 2:动态内容
使用 动态内容,这涉及创建和上传包含您支持的语言的 CSV 文件。
API 发送
contents 和 headings 字段支持多种语言: {
"contents": {
"en": "English content",
"fr": "French content"
},
"headings": {
"en": "English heading",
"fr": "French heading"
}
}
支持的语言
语言代码映射到 ISO 639-1 代码 2 位字母格式的 language 用户属性。我们支持以下语言代码。
如果弹窗和 CSV 模板中未包含该语言代码,则不支持该语言。我们建议使用最佳备选语言并向 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 |