交互工程 · 7 / 10

界面会说话:用户怎么理解你的文案

控件选对了,界面还得开口说话。按钮上的两个字、弹窗里的一句话,就是产品和用户的全部对话。微文案是交互的一半:写对了,用户不用想;写错了,控件再标准也白搭。AI 写微文案只有一招,逢事「确定」。

按钮动词确定取消系统语翻译弹窗改造
「确定」是最忙的按钮,也是最没用的

数一数你今天点过多少次「确定」。它出现在删除、提交、退出、覆盖、清空的弹窗里,同一个词替一百种后果背书。问题就出在这:按钮自己不带答案,答案在正文里,用户必须读完整段话,才知道这一下点的是什么。「确定 / 取消」配对是偷懒,把阅读成本推给了用户。

处方是让按钮把后果带在身上:「删除这 3 条」替掉「确定」,「留着」替掉「取消」。这样哪怕正文一个字没读,扫一眼按钮也能安全作答。Cooper 在《About Face 4》第 21 章给功能对话框立过同款规矩:标题要用动词。标题说清在确认什么,按钮说清点了会怎样,两头都不让用户猜。

「在功能对话框的标题中使用动词。」
Alan Cooper,《About Face 4》第 21 章:动词带着动作和后果,名词和「提示」什么都不带。

这条规矩还有一个测试版本:把弹窗正文遮住,只看标题和按钮,能不能安全作答。能,文案就合格;要回头翻正文,就还是「确定 / 取消」的偷懒变体。先看几组对照,找找动词按钮的手感。

场景偷懒版携带后果版
清空购物车确定 / 取消清空 12 件 / 先留着
退出编辑是 / 否保存并退出 / 丢弃改动
解绑手机号继续 / 返回解绑 138****2046 / 不解绑

注意「携带后果版」的另一个副产品:数量和对象一并写进按钮(12 件、138****2046),等于替用户做了最后一次核对。误操作大多发生在「我以为选的是另一批」,按钮把对象报出来,这层误会当场消解。

用户的词,系统的词

按钮之外,第二个重灾区是名词。界面上写着「字段 user_mobile 校验失败」「违反唯一性约束」,这些词一个用户都不认识,它们是从数据库和日志里直接端出来的。Cooper 在第 14 章把根子挖了出来:开发者把数据库的需求放在用户的需求前面,软件成了替 CPU 服务的,用户反倒像在替软件打工。

第 14 章还有一条被引用得很多的原则:出错可能不是程序的问题,但是程序的责任。手机号少一位、用户名重复,都算用户的「错」,但把错误翻译成用户听得懂、改得动的话,是程序分内的事。连菜单名都逃不过这条:Cooper 认为「文件」这个菜单名都是实现模型的词,发票应用的菜单就该叫「发票」,用户管自己的东西叫什么,界面就叫什么。

系统的词它其实想说病根
此操作无法撤销「此操作」指哪个操作?说出来系统视角的指代,用户要自己回忆上一步
Error 422哪里填得不对、怎么改HTTP 状态码是写给开发者的日志(第 2 节的病历)
Session 已过期登录过期了,重新登录就行Session 是实现模型的词,用户的词是「登录」

AI 写界面时特别容易犯这个病:它对着数据结构生成文案,字段叫什么,标签就叫什么。你不拦,数据库就直接上台演讲。下面动手改一个弹窗,三处文案逐条换成人话,看 mock 当场变样。

动手 · 改写一个弹窗,mock 实时变

左边这个删除确认弹窗出自 AI 产出的真实水平:标题「提示」、正文含糊、按钮「确定 / 取消」。右边三处逐条点「说人话」,每改一处,弹窗当场更新,三处全改完再做遮正文测试。

按钮文案改写器 改写 0 / 3
场景:用户勾了 3 封邮件点删除。点右侧每条的「说人话」,左边弹窗实时变
mail.example.com/inbox
提示
确定要执行此操作吗?此操作无法撤销。
取消 确定
标题提示说人话 →
删除这 3 封邮件?
「提示」零信息量。功能对话框标题用动词(第 21 章),动作和数量都摆进标题,用户第一眼就知道在确认什么。
正文确定要执行此操作吗?此操作无法撤销。说人话 →
删除后会进「已删除」,保留 30 天,之后才永久消失。
「此操作」是系统视角的指代,用户要自己回忆刚才点了什么。正文该交代的是后果的细节:东西去哪了、留多久、还救不救得回。
按钮取消 / 确定说人话 →
留着 / 删除这 3 封
「确定 / 取消」把答案全押在正文上。按钮携带各自的后果,危险的那颗换成红色,正文一个字不读也不会点错。
对决 · 哪个弹窗更危险

危险的定义先说清:用户没读懂也会点下去的那种,才叫危险。上一节的狼来了实验演过,用户处理弹窗的平均耗时读不完一行字,文案模糊的弹窗等于在盲点里放了一把刀。下面两个弹窗都在删客户数据,点你敢把用户交给的那个。

模糊文案 vs 明确文案 A/B 对决
点你敢把用户交给的那个,投完揭晓另一个危险在哪
方案 A
crm.example.com/customers
警告
此操作将影响所选数据,确定要继续吗?
取消确定
影响什么数据、影响成什么样,全靠用户脑补
方案 B
crm.example.com/customers
删除这 3 位客户?
会同时删除他们名下的 24 条跟进记录。删除后 30 天内可以在回收站找回。
留着删除这 3 位
对象、连带后果、退路,三样都写在明面上
动手 · 把系统语翻译成人话

按钮练完练名词。下面五条都是 AI 爱直接端上界面的系统语,每条从两个翻译里挑出真正的人话。小心,有个别选项只是把系统语打扮了一下,骨子里还是日志。

系统语翻译题 0 / 5
每条选一个翻译,选错有解释,可以再选
DB_CONN_TIMEOUT
A数据库连接超时(错误码 10060),请稍后重试。
B刚才没连上服务器,你写的内容已存在本机,网络恢复后会自动重试。
打扮过的系统语。「数据库」「错误码」还是实现模型的词,用户不关心哪个环节超时,关心的是我的东西丢没丢、接下来要不要管
对。只字不提数据库,先交代用户最怕的事(内容没丢),再交代要不要行动(不用管,会自动重试)。技术故障自己消化,这是第 2 节三要素的名词版。
字段 user_mobile 校验失败
A手机号少了一位,现在是 10 位,补上就能提交。
B手机号格式不合法,请检查后重新输入。
对。user_mobile 翻成「手机号」只是及格线,说出「少了一位」才算把校验结果翻译完,用户不用数就知道怎么改。
「不合法」加「请检查」,等于让用户自己当校验器再跑一遍。程序明明知道差在哪,说出来是它的责任(第 14 章)。
Session 已过期,Token 失效
A会话凭证已失效,请重新获取访问令牌。
B登录过期了,重新登录就能接着编辑,草稿已经保留。
把 Session 翻成「会话凭证」、Token 翻成「访问令牌」,词是中文了,模型还是实现模型。用户的词典里只有「登录」。
对。用户的词(登录)、明确的出路(重新登录)、最要紧的安抚(草稿还在),一句话三件事全办了。
404 Not Found: /orders/8291
A请求的资源不存在,请确认地址是否正确。
B这笔订单找不到了,可能已被撤销。去「全部订单」里看看,或者联系客服帮你查。
「资源」「地址」都是 HTTP 的词。用户点的是一笔订单,他的世界里没有资源,只有订单。
对。用用户的词(订单)说清现状,给两条出路(去列表、找客服)。404 这种死胡同页面,出路比解释更值钱。
该操作违反唯一性约束
A这个用户名已经有人用了,换一个试试,比如加个数字。
B数据重复,操作被拒绝,请修改后重试。
对。「唯一性约束」是数据库给自己立的规矩,用户眼里这件事叫「名字被人占了」。顺手给条建议(加个数字),把死胡同变成岔路口。
「数据重复」比「唯一性约束」好懂一点,但哪个数据重复、跟谁重复、怎么办,一个都没说。翻译要翻到用户能行动为止。
错误信息三要素,第 2 节讲过了

聊到这里你可能想起第 2 节的错误文案改写器:发生了什么、为什么、怎么办。那套三要素管错误信息的骨架,这一节管的是骨架里每个词的选法,两边拼起来才是完整的文案功。三要素不重教,跳转卡在这。

本章引用 · 状态三件套:loading、空态、错误态错误信息三要素(发生了什么、为什么、怎么办)和三条弱文案的完整改写,第 2 节讲透了,点这里跳过去。

最后一道综合题,把这一节的按钮功和上面的三要素合在一起考。

关文档时还有改动没保存,按钮组怎么配 单选
选错也有解释,选到对的为止
A「确定 / 取消」,正文写明会丢失未保存的改动
B「保存并关闭 / 不保存 / 取消」,三颗按钮各带后果
C「是 / 否」,正文问「要保存吗?」
D「知道了」,告知改动将丢失
本节要点

按钮携带后果:「删除这 3 条」替掉「确定」,「留着」替掉「取消」。验收标准:遮住正文只看标题和按钮,还能安全作答。

用用户的词:Session、字段名、错误码都是实现模型的词,别端给用户(Cooper,《About Face 4》第 14 章)。翻译要翻到用户能行动为止。

出错是程序的责任:用户的输入可以有错,把错讲成听得懂、改得动的话,是程序分内的事。措辞不责备用户,三要素骨架在第 2 节。

给 AI 提需求的话术:「按钮文案写明动作和数量,禁用『确定 / 取消』配对;界面文案禁止出现字段名、错误码、Session 等系统词」。界面细节到此讲完,下一节开始把这些要求翻译给 AI 听。

内容来源:小山学堂「交互工程」专题原创;部分交互原则整理自《About Face 4:交互设计精髓》。