说起遇到过的奇葩国际化bug,相信各位的经验不会在我之下,甚至用一个seminar的时间也只能管中规豹。近日笔者就又遇到了一个,分享出来以飨读者吧。
首先,让我们来看看我是怎样偶遇该奇葩的,复现的过程倒也简单——登陆产品界面,进入dashboard的overviewpage,当设置browser为en,de,it之类的locale时,没任何异常。然后,一旦设置成zh_CN, ja时,异常就这样不期而遇了。
这是为什么呢?ja跟zh其他locale相比有什么特殊点么?脑海中随即浮现出三种可能性。
1. 莫非是因为locale中的dash?
2. 又或者是浏览器升级后的自身问题?
3. 再或者是根本没有找到ja和zha对应的资源文件?
如果假设一成立,那么选择的ja并没有dash啊?异常照样没有放过他,不是么?嗯,所以该假设不成立;浏览器升级后的导致的?立刻换台机器,使用旧版本的FF和IE试试看,结果发现异常还是那个异常;再查查资源文件吧,经过对比后发现,ja和zh_CN并不缺少任何一行。完全困惑了,只好读读源码吧,就这样,时间又过去16个小时左右……结论一样还是——没毛病啊!
一星期后,束手无策的我发现当新的property文件check-in,该问题居然不药自愈了!赶紧对比下吧,究竟是什么灵丹妙药,竟有如此神功。然而当我发现真相时,忍不住大口吐血。
原来是好心的translator看到property文件中存在这样的双引号,凭经验“推测”这一定是dev一时间的笔误,多写了点儿而已。于是就将这个widget开关中的双引号“帮忙”删除了……
dashboard.widget.on="\u300c\u30aa\u30f3\u300d"
dashboard.widget.off="\u300c\u30aa\u30d5\u300d"
呜呼~~~在该案例中,除了吐血我们还能悟道些什么呢?笔者看至少以下两点吧。
1. 对于dev来说,凡是涉及功能相关的,尤其是开关之类,一定不能放在资源文件中,指望翻译人员来识别这种种暗门,实在是强人所难了喽
2. 对于translator来说,无论dev在资源文件中输入了什么,请不好凭经验臆测和取舍,也许下次带来的损耗就不是16小时这么简单了