“多余”的双引号

本文讲述了开发者在处理国际化问题时遇到的一个奇葩bug,当locale设置为zh_CN或ja时,出现异常。经过一系列排查,发现是翻译人员误删了property文件中开关状态的双引号。这提醒我们,dev应避免在资源文件中放置功能相关的代码,同时翻译人员不应随意修改原文内容,以防止类似耗时的错误发生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说起遇到过的奇葩国际化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小时这么简单了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值