提到开发中的多线程问题,我想大部分人并不陌生,其中有不少兄弟还能津津乐道于生产者,消费者模型,做烤鸭吃烤鸭的案例也烂熟于心。不过要是谈到多线程跟国际化有啥关系时,相信多数人还是会语塞,其实我也一样,从未认为国际化问题跟多线程能扯上什么关系。直到最近碰到了这样的几个bug,算是“活久见”系吧。
在一个产品的UI上,慕然发现大部分内容显示中文字符(这是期望结果),但就在同一页面上某几个label还有零星选项居然显示为日文,注意!不是英文,绝非hardcode哦。(screenshot太敏感,就不贴出来了)
这是为啥呢?莫非中文的资源文件中包含了日文?因为翻译的一个简单疏漏所导致?那就查查看呗,结果发现所有资源问题静静的躺在那里,一点儿瑕疵也没有啊。那只好再看看产品代码是如何读取locale并更新l10nstring的吧。
定位代码如下:(仅用于示意)
class Test:
@classmethod
def UpdateLocale(cls, locale):
if locale:
cls.locale = locale
print('UpdateLocale: ', locale)
@classmethod
def L10NGetHealthCheckText(cls):
print('L10NGetHealthCheckText locale is', cls.locale)
可以看到test.py