姓名不应假定姓与名的顺序与数量
别名: 姓名字段 · 姓和名 · personal name structure · Western name form
概念解释
人的称呼不是全球统一的「名 + 姓」两格,也不是「姓在前」。有人只有一个词,有人有父名、母姓并列、世代缀、不翻译的尊称。不要假定顺序与数量指输入层不能把 First / Last 当成唯一骨架,更不能按产品默认语言把两格的左右当成姓和名。地址分列、电话区号是另两套结构。护照机读区怎么写,也不等于界面必须拆成两个框。
机制
姓名首先是身份的口头形式,其次才是数据库列。两格加固定顺序把说不进这两格的合法姓名变成校验失败,或逼人把一整串塞进 Last、把中间名丢掉。排序、问候语、证件核对各自需要不同切片:排序可能用家族名,屏幕问候可能用个人名,证件核对需要与证件完全一致的一串。用同一套 First/Last 去喂这三件事,必然在某一端出错。第二层是顺序的文化默认:产品给中文用户「姓在前」、给英文用户「名在前」看起来体贴,但对在英文界面里填中文姓名、或只有单名的人,默认变成陷阱。单行「姓名」加可选的「希望怎么称呼你」往往比两格更能保住合法值;拆格只在法律或支付通道强制要家族名单独存的时候才有理由,而且必须允许其中一格为空。
怎么研究
请持有单名、多词家族名、母姓+父姓、中间名的人,用 First/Last 表与单行表各填一次,再用于屏幕问候和模拟证件核对。
自变量:骨架(First+Last 必填 / 单行 / 多格均可空)、顺序是否随界面语言翻转、是否另要「称呼」。 因变量:合法姓名被拒、人丢掉的词、问候语读出来是否被当事人接受、与证件字符串是否一致。
实验室若只招两词西式姓名的被试,两格会显得无害。要刻意纳入单名、西班牙式双姓、印尼单名、中文名在英文界面。不要用「能不能按字母排序」作为唯一成功标准——排序牺牲的常常是当事人的称呼。
边界
航空、签证、银行若与机读姓名绑定,必须提供与证件一致的「证件姓名」字段,它可以是一串,而不是两格猜。角色扮演、笔名、尚未取名的婴儿允许与法定姓名不同的显示名。字形与音译(中文名的拼音)是另一层,不要把拼音格当成 Last Name。排序索引在有些语言不按「家族名」,强行抽 Last 会排错,那是检索问题,不能倒逼所有人发明一个 Last。
怎么落地
- 默认给单行「姓名」,另给可选「怎么称呼你」;只有通道强制要家族名时才拆格,并允许一格为空、不按界面语言锁定左右含义。
- 提交和证件核对使用人输入的完整串,不要在后台把两格按英文顺序拼接后再拿去比对护照。
- 问候语用「怎么称呼你」,不要用猜出来的 First Name 喊人。
- 验证:单名、双姓、中文姓名填英文界面三例都能提交。First/Last 两格都必填去挡单名,作为不得发布的对照。用产品拼接出来的串去对护照,列出对不上的例子。