← 返回博客列表
多语言与本地化2026 年 5 月 30 日 · 约 9 分钟读完

阿拉伯语内容策略:三个容易踩的坑

阿拉伯语内容策略里最容易踩的三个坑,都不是翻译问题,而是把「方向」当成了次要的样…

阿拉伯语内容策略:三个容易踩的坑

阿拉伯语内容策略里最容易踩的三个坑,都不是翻译问题,而是把「方向」当成了次要的样式细节:把 RTL 当成 CSS 里改个对齐、以为声明了语言就等于声明了方向、表单和动态生成的文本没设自动方向。这三个坑的后果是同一个——内容看着在,读起来不对,机器也读不对。下面把三个坑、正确做法和官方依据并排列出来,可以直接拿去核对现有页面。

阿拉伯语页面的三个坑

坑典型表现正确做法依据
① 用 CSS 处理方向靠 text-align: right 让页面「看起来是 RTL」在 html 标签上加 dir="rtl";样式里改用 start / end 逻辑属性W3C:不要用 CSS 设定基准方向
② 把语言当方向只写了 lang="ar",没有 dir语言用 lang 声明,方向必须用 dir 单独声明W3C:语言声明不代表方向,反之亦然
③ 动态内容与表单没设自动方向用户输入的英文标题在阿拉伯语界面里被显示成右对齐、标点错位表单与运行时插入的文本加 dir="auto";需要时用 dirname 把方向传给服务端W3C:auto 按首个强方向字符判断

坑一:用 CSS 处理方向

W3C 的建议很直接:不要用 CSS 施加基准方向。原因不是风格偏好,而是方向信息属于内容语义的一部分——当样式表没加载、或被分发到另一个环境时,方向信息不应随之消失。基准方向应当由标记给出。

官方给的正面做法只有一条:如果整篇文档是 RTL,就在 html 标签上加 dir="rtl";在其之下,只有在某个区块需要改变方向时才在区块元素上再用这个属性。样式侧则改用逻辑属性——例如 text-align: start | end、margin-inline-start/end、padding-inline-start/end、float、flex 与 grid 的 flex-start / flex-end 等,让方向切换由标记驱动、样式自动跟随。官方同时建议避免使用取值为 left / right 的 HTML 属性,改用样式选择器——这样后续本地化时改动面小得多。

加上 dir=”rtl” 之后,页面会发生什么

这一步的价值在于它会一次性解决一批问题。按 W3C 的说明,在 html 标签上设定方向后,以下各项会同时生效:

  1. 段落与其他区块右对齐;
  2. 双向文本按从右到左正确排布;
  3. 标点出现在相对于文本的正确位置;
  4. 表格列从右向左推进,单元格内容右对齐;
  5. 表单输入默认从右侧开始;
  6. 承载自然语言的属性(例如图片的 alt、title)跟随元素方向;
  7. 如果样式表写得正确,CSS 会自动镜像布局;
  8. 溢出内容的起始方向也随之设定。

对照一下就能判断:如果这些效果你在页面上没看到,通常说明方向并没有真正设定在文档层,而是被某个样式或某个区块的属性挡掉了。

坑二:以为声明了语言就等于声明了方向

W3C 明确提示:不要以为语言声明能表明方向,也不要反过来。即使语言标签里带了书写系统子标签,也不会影响浏览器中文本的方向——方向必须用 dir 属性声明。

官方举的反例很有说明力:阿塞拜疆语既可用阿拉伯字母(从右到左)书写,也可用拉丁或西里尔字母(从左到右),所以语言代码本身无法决定方向。阿拉伯语虽然稳定地使用 RTL 书写系统,规则上仍然适用同一条:语言与方向是两件事,要分别声明。

语言这一侧的正确写法是:始终在 html 标签上用语言属性声明页面默认语言,子语言内容用嵌套元素单独标注;取值使用 IANA 语言子标签注册表里的标签(遵循 BCP 47)。官方另外提醒:不要用 meta 元素配合 http-equiv="Content-Language" 来声明页面语言;也不存在用 CSS 声明语言的办法。

坑三:表单与动态文本没有用 dir=”auto”

阿拉伯语页面里经常出现另一种文字:客户名称、产品型号、用户提交的评语。这些内容的方向事先并不知道,而 W3C 给的正解是把它们的 dir 设为 auto —— 浏览器会查看元素中第一个强方向字符,据此决定该元素的方向。

官方特别推荐把它用在表单上:一个阿拉伯语界面的站点要接受希伯来语或英文书名输入时,不加处理会出现词语位置错乱、输入时光标与标点跳动的问题;加上 auto 之后,输入框会按内容自动切换方向。若还要把这个方向信息传给服务端,可以使用 dirname 属性——它会把你设定的名称与计算出的方向一起随表单提交,便于在另一个页面里按正确方向重新展示这段文本。官方也说明 auto 在极少数情况下会判断错(例如整段以阿拉伯字符开头、但实际应视为左到右的句子),所以对关键内容仍需人工核对。

表格与标题的连带影响

两个容易被忽略的细节:

  • 表格。 方向设定会影响表格列的推进顺序。如果希望整个表格改回左到右,W3C 说明需要给表格套一层元素并在该元素上设定方向——不要用 CSS 的 text-align 来处理,因为它会同时影响单元格内容。
  • 页面标题。 浏览器显示标题时常常不是读取标记里的方向,而是找标题里第一个强方向字符来自行判断。如果 RTL 页面的标题以拉丁字母缩写开头,顺序就可能出错。官方给的变通办法是在标题文本开头加 ‏(不可见的强 RTL 字符);反过来给左到右文本加 ‎。

发布前的 RTL 检查清单

#检查项通过标准
1文档层方向html 标签带 dir="rtl"
2语言声明html 标签带语言属性,取值来自 IANA 注册表
3没有用 meta 声明语言不存在 http-equiv="Content-Language" 的用法
4样式使用逻辑属性使用 start / end,不依赖 left / right
5表单自动方向输入类元素带 dir="auto"
6动态内容自动方向运行时插入文本的容器带 dir="auto" 或使用 bdi 元素
7表格方向可用列顺序与对齐符合预期
8整页只用一种语言的正文没有把阿拉伯语正文与中文并排放在同一页

第 8 条与另一个市场的经验是相通的,理由见出海东南亚的本地化信号清单。这八项都是可控范围内的结构与事实问题;做完全部之后能不能被检索到、会不会被 AI 引用,属于平台的不可控变量,没有可承诺的位置。五类交付物的分界见方法与交付,完整服务范围见GEO 服务方案。安徽云边出海科技开发有限公司(云边科技)在阿拉伯语项目里把 RTL 检查放进「多语言本地化与全球分发」这一项的验收环节,原因很直接——方向写错的内容,读者第一屏就看出来了。

常见问题

只有阿拉伯语需要处理方向吗?

不是。W3C 列出的使用从右到左书写系统的语言包括阿拉伯语、希伯来语、波斯语、乌尔都语、普什图语、信德语、迪维希语等。凡是目标市场涉及这些语言,同一条规则都适用。

能不能用 JavaScript 设定方向?

技术上可以,但会让方向依赖于脚本执行。对不执行脚本的抓取器来说,方向信息就会缺失;而 W3C 的立场是方向应属于标记而非样式。所以首选仍是在 html 标签上声明。

英文内容和阿拉伯语内容放同一页,会有什么问题?

两项问题叠加:一是方向需要在区块层反复调整,维护成本高;二是官方在讨论语言判断时明确建议一个页面只用一种语言、避免并排双语。分成独立页面各用各的语言,是成本最低的做法。

数字和日期在 RTL 页面里要不要转换?

方向与数字制式是两件事。方向必须由标记声明,数字和日期则按目标市场的习惯呈现。两者都要做,且不要用一个去代替另一个。

机器翻译之后还需要检查排版吗?

需要,而且排版的检查要单独做一遍。翻译工具解决的是词句,方向、标点位置、表格列顺序、表单输入行为这些属于标记层面的问题,翻译工具通常不会替你改。

怎么快速验证一页是否真的按 RTL 渲染?

看三处即可:段落是否整体右对齐、表格列是否从右向左推进、表单输入是否默认从右侧开始。这三项都对,说明方向设定在文档层生效了;只对一部分,说明方向被局部样式或属性覆盖了。

参考来源

想先看清自己的缺口?

发送官网、产品和目标市场,我们从技术、实体、内容与覆盖四条线做一次初步判断。

免费出海诊断