交互工程 · 7 / 10 界面会说话:用户怎么理解你的文案 控件选对了,界面还得开口说话。按钮上的两个字、弹窗里的一句话,就是产品和用户的全部对话。 微文案是交互的一半 :写对了,用户不用想;写错了,控件再标准也白搭。AI 写微文案只有一招,逢事「确定」。 按钮动词 确定取消 系统语翻译 弹窗改造 一句话速览 「删除这 3 条」比「确定」诚实。按钮动词要说清后果,标签用用户的词,别把数据库字段名端给用户。亲手改写一个弹窗的三处文案 「确定」是最忙的按钮,也是最没用的 数一数你今天点过多少次「确定」。它出现在删除、提交、退出、覆盖、清空的弹窗里,同一个词替一百种后果背书。问题就出在这: 按钮自己不带答案,答案在正文里 ,用户必须读完整段话,才知道这一下点的是什么。「确定 / 取消」配对是偷懒,把阅读成本推给了用户。 处方是让按钮把后果带在身上:「删除这 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:交互设计精髓》。