文案变量的取值范围需随文案一起交付
别名: 文案插值范围 · interpolation range · {name} 取值
概念解释
带插值的句子不是一句,而是一族句子。「你好,{name}」「已选 {count} 项」「将从 {source} 移到 {target}」在交付里若只展示一组填好的样例,实现只能按这一组的宽度排。文案插值范围(copy-variable range delivery)要求每个变量把合法取值的长度、数量级、单复数和空值形态随句子一起交出,让这一族里的最短成员和最长成员都有落点。
它针对的是作者文案里的槽,不是列表里用户数据字段的分布取界。{name} 是问候语模板的一段,姓名列的 P99 是另一件事;两者可能碰巧同长,交付职责不同。
机制
模板在运行时才展开。设计文件里 {name} 常被填成「小王」或「Alex」,计数被填成「3」,看起来刚刚好。实现若把这句做成单行、把气泡做成固定宽,{name} 一旦变成复合姓氏或邮箱,气泡就裁切主语;{count} 一旦从 3 变成 12048,或从 1 变成 0 而语法仍用复数,句子会在语法和宽度上同时坏掉。变量还可能为空:{source} 缺失时是省略整句、是退回无插值的备文句,还是显示「未知」,这三选一只写在范围说明里,写不进那一个填好的样例。
范围不是最大值一个数字。长度、枚举集合、零值、过大值是否改用另一句模板(「已选全部」替代「已选 99999 项」),都是这一族句子的成员。只交样例等于只交众数成员,其余成员又会在实现时被发明。
边界
不含插值的静态句子没有范围可交,不要为了表格好看给每句造假变量。日期、货币若已由格式库接管,交付应指向所用格式和最长本地化形态,而不是再发明一套 {date} 的字符数。服务器拼接、客户端拼接混用时,范围要写在真正拼出用户可见句的那一层,避免两边各猜各的上限。变量取值来自用户输入且已被输入层截断时,文案范围以上限截断后的形态为准,不要再按截断前的原始粘贴去撑布局。
怎么落地
- 为每条带花括号的文案附一张取值表:变量名、类型、最短样例、最长样例、零值/空值时的备文句、是否在过大时切换模板。
- 同一句至少出两帧:所有变量取最短、所有变量取已批准的最长;需要时再加一帧「count = 0」或「name 为空」。
- 把单复数、量词和单位写进范围,而不是只写阿拉伯数字宽度。
{count}为 1 与为 0 往往要换整句。 - 用最长样例和零值样例跑一遍已实现的模板。主语被裁、出现「已选 0 项」这种未批准的语法、或过大计数把邻接按钮挤走,都说明范围没有随句子交付。把取值表补进文案源,而不是让实现给
{name}写死 8 个字符。