如何在使用Facebook Send API发Messenger消息时实现多语言文本对齐
解决方案
你遇到的对齐异常是因为Messenger自动文本方向检测在混合不同书写方向的多行文本时会判断错误,只需给每行文本加上对应的Unicode方向控制字符即可强制指定对齐方向,无需修改原有发送函数。
需要用到的控制字符:
\u202B(RLE, Right-to-Left Embedding):强制后续文本按右到左对齐\u202A(LRE, Left-to-Right Embedding):强制后续文本按左到右对齐\u202C(PDF, Pop Directional Formatting):结束当前方向控制,避免影响后续文本
修改后的调用代码
const psid = "<Page scoped id for the target user>"; const message = [ "\u202B- المرجو اختيار اللغة.\u202C", "\u202A- Please choose a language.\u202C", "\u202A- Veuillez choisir une langue.\u202C", ].join("\n"); void sendTextMessage(message, psid);
批量处理方案(可选)
如果频繁需要混合发送RTL和LTR文本,可以写个工具函数自动添加控制符:
/** * 给文本自动添加对应方向控制符 * @param text 原始文本 * @param isRtl 是否是右到左书写的语言 */ function wrapDirection(text: string, isRtl: boolean): string { if (isRtl) { return `\u202B${text}\u202C`; } return `\u202A${text}\u202C`; } // 调用示例 const message = [ wrapDirection("- المرجو اختيار اللغة.", true), wrapDirection("- Please choose a language.", false), wrapDirection("- Veuillez choisir une langue.", false), ].join("\n");
该方案完全兼容Facebook Messenger Send API的文本消息渲染规则,不会出现格式错乱问题。
内容的提问来源于stack exchange,提问作者soufiane yakoubi
相关产品推荐
相关产品推荐

