以 Visual Studio 2017 举例,主界面上不同语言翻译文件,是保存在 IDE{LANGID}\msenvmui.dll 下面,可以用资源编辑器打开,截图这样:
有 ID 和对应的字符串,我这时候猜测,资源里就是一个表格文本,读取和翻译应该很容易。
然后花一小时读了源代码,最后发现完全不是自己想的这样。
在 msenvmui.dll 里,一共有 82 个有效字符串,中间穿插了一百多个空字符串。
[正常 string] [空 string] [空 string] [正常 string], 就是这种文件布局,空 string 都是实际占空间的(两个字节)。
为什么空呢,因为微软对 ID 字符串用的是二分法查找。查询键值是纯数字 ID,比如 1 到 100,就算中间一大片都没有 ID 对应的字符串,也需要占位符给填满,所谓有序排序。
微软可真是个小机灵鬼。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.