菜单

国家与语言的区别:本地化的三层与测试矩阵

一个国家可以有多门官方语言,一门语言也可以被多个国家使用。把国家当语言、把语言当国家,是最常见的一类本地化错配。本文拆开本地化的三层,并给出一张可用的测试矩阵。

发布于

  • 本地化
  • 测试矩阵

国家与语言的区别,是本地化测试里最容易被跳过的一步。国家决定的是数据形态——地址怎么写、行政区怎么分、证件号码长什么样;语言决定的主要是呈现与文案。把两者绑在一起,最典型的后果是切换语言时顺带换了地址格式,或者反过来,换了国家却还在用同一套姓名顺序。

国家与语言各自决定什么?

国家决定数据层。地址的层级顺序、行政区是省还是州、有没有邮编、货币与证件号码的形态,这些都跟着国家走。两个国家说同一种语言,数据形态依然可以差得很远。

语言决定呈现层。界面文案、日期与数字的书写习惯、姓名的排列与称呼方式,这些跟着语言与地区习惯走,而不是跟着国界走。

这个分工不是绝对的,但它给出了默认的判断依据:碰到一个问题,先问它属于数据还是呈现,再决定该挂到国家上还是语言上。挂错了,后面的用例会一直歪。

还有一点要提醒:语言本身也会影响数据。同一批数据在不同语言习惯下,姓和名的先后可能不同。跨国别的分组逻辑见区域分组与市场分级,它和本地化是两个不同维度的切分,不该混在同一列里。

本地化的三层:界面、数据与流程

把本地化拆成三层,覆盖范围就清楚了。

  • 界面层:文案、按钮、提示、日期与数字的书写。这一层随语言变化最明显,也最容易被误当成全部。
  • 数据层:地址结构、行政区层级、证件号码形态、货币与电话区号。这一层随国家变化最明显,随语言变化很有限。
  • 流程层:校验时机、错误提示的语气、需要用户补填哪些字段、哪些字段允许留空。这一层最容易被忽略,却最影响实际体验。

三层里,界面层的改动成本最低,数据层次之,流程层的改动往往牵一发动全身。排期时按层拆,比按页面拆靠谱得多。

三层的组合才叫本地化。只做了界面层的产品,用户会觉得「翻译了,但用起来还是不对」——那多半是数据层和流程层没跟上,而这两层恰恰不是靠加语言就能解决的。

为什么一国多语言、一语言多国都要覆盖?

这两种情况都在现实中存在,而且各自暴露不同的缺陷。

一个国家和地区有多门官方语言:如果只取默认的那一种,其他语言下的姓名顺序、称呼与地址书写习惯就永远不会被验证到,问题会一直藏在可见范围之外。

一门语言被多个国家和地区使用:如果按国家去推断语言,就会漏掉跨国但同语言的人群,也会在只改了国家语言标签时误以为已经覆盖。

这两件事要分开测,因为它们考察的能力不同。前者考察「同一份数据在多语言下是否都能正常呈现」,后者考察「同一种呈现下多份数据是否都能被正确处理」。

姓名与称呼这一层在多语言下的差异,跨主题里有更细的说明,见姓名数据的地区差异。

测试矩阵怎么排才不爆炸?

国家数与语言数相乘,组合会迅速变得不可管理,所以矩阵必须先做减法。

第一步是选轴:国家和地区取几个形态差异大的,语言取几门书写方向与字符集不同的,先保证每一类都有代表,而不是先保证数量多。

第二步是标出真正需要的交叉点。并不是每个国家和地区都要配每门语言,很多组合在现实中没有用户,测了也只是花钱买安心。

第三步是把剩下的组合分成必测与抽测。必测的是那些一旦出错就会阻断流程的,抽测的是纯呈现类问题。

最后一步,记下没有测的部分。矩阵的价值一半在于它列了什么,另一半在于它诚实标出了哪里留白。

这套矩阵要和选择字段的测试配合起来看:国家和地区与语言在下拉里如何被挑选、如何被记住,见国家选择字段测试。

用国家推断语言的几个坑

最常见的一类错配,就是把国家直接映射成一门语言。

第一个坑:把默认语言当成唯一语言。用户能看到的那一门,未必是他填数据时用的那一门。

第二个坑:把地区变体当成同一门语言。同一门语言在不同国家和地区的写法与习惯可以不同,用一个变体的规则去套另一个,会得到「看起来对但就是别扭」的结果。

第三个坑:语言切换时顺手改了国家。两者本来是独立选择,一旦联动,用户在切换语言时会丢失已经填好的国家。

第四个坑:把语言标签当国家标签用。语言标签里可以带地区子标签,但它描述的是书写习惯,不是行政归属。

避开这些坑的共同前提是:把国家和语言当成两个独立字段来存储与传递。想先看清国家和地区层面都有哪些可用项,可以从国家和地区总览按地区浏览入口。

给开发者:让语言与国家各自独立可配

实现上的第一原则是别让两者互相推导。

存储时分开存:国家一个字段,语言一个字段,谁都不作为对方的默认来源。真要提供便捷的默认值,也应该发生在输入环节,而不是写进数据里。

传递时分开放:请求里带的是「要用哪门语言呈现」和「这份数据属于哪个国家和地区」,两件事各自明确,不靠上下文猜。

渲染时分开用:地址与证件号码按国家取格式,文案与日期数字按语言取习惯。这两条路径要能各自替换,互不牵连。

测试时分开断:出现问题时先判断是数据取错了国家,还是呈现取错了语言。只有一条路径需要回看,排查时间会短很多。

这样拆开之后,前面那张矩阵才有一半是可以自动化的,而不是每加一个组合就多一份人工检查。

下一步

先检查现有系统里国家和语言是不是真的分开了:存储、传递、渲染、日志各看一遍。再挑一个「一国多语言」和一个「一语言多国」的组合,各写一组用例跑通。

如果两条用例都能过,说明两层是干净的;如果其中一条要通过改动另一条才能通过,那说明还有东西被绑在一起,值得先解开再往下扩。

本文示例中出现的语言与国家和地区组合都是为演示矩阵结构而构造的合成数据,不对应任何真实用户群体或流量分布,也不构成对任何地区语言使用情况的描述。

继续阅读

各国地址与身份数据格式相关文章