迪拜City Walk的一家土耳其餐厅上月推出阿拉伯语菜单。第一个投诉数小时内就来了:"Adana Kebap 45 AED"显示为难以辨认的乱码。问题不在翻译,而在于在RTL流中管理嵌入的拉丁数字。本指南通过真实生产实例介绍镜像布局、价格标签方向和多行阿拉伯语描述中的line-clamp行为。
镜像与价格方向
在HTML根设置dir="rtl",Flex和Grid自动镜像。产品名在右,价格在左 — 正是阿拉伯语读者所期望的。对于"45 AED",Unicode BiDi算法默认正确处理:数字LTR,上下文RTL。
问题始于像"5分钟内就绪"这样混合数字和阿拉伯字形的描述。换行时数字跳到错误一侧。解决方案:在描述元素上应用unicode-bidi: plaintext。
Line-clamp与多行换行
卡片通常限制2-3行。拉丁文无问题,阿拉伯语最后一行经常消失或数字跳跃。原因:line-clamp先截断,BiDi后重排。
- unicode-bidi: plaintext — 每行保持其方向
- text-align: start — 按locale对齐
- word-break: normal — 保留阿拉伯连字
数字与货币
沙特菜单显示"45 ر.س";阿联酋偏好"AED 45"。locale配置中位置位于currency.position。东阿拉伯数字(٠١٢٣٤٥٦٧٨٩)受老年受众欢迎,但海湾地区使用拉丁数字。
thMenu默认使用Intl.NumberFormat的numberingSystem: "latn",可为埃及和黎凡特覆盖为"arab"。
常见问题
dir="rtl"够吗?不,混合卡片需要unicode-bidi: plaintext。
阿拉伯数字必须吗?不,仅埃及/黎凡特。
镜像logo?品牌不,方向图标是。
觉得有用?分享给朋友。