一直使用浏览器插件的LastPass管理和生成密码,只说PC的Web端的体验还算是挺不错了,自动填充和自动记录都很方便。
但是最近LastPass宣布限制免费用户可访问设备类型的数量。思来想去决定先试试其他的管理软件,于是挑了开源方案中大名鼎鼎的KeePass
,一番操作之后发现在PC端上的体验很一般,而且不能在登录后自动弹框提示新增或者更新,有些网站的登录组件也无法正确填充,比如AcFun,即使我设置了填充策略的白名单,它仍然会将用户名填充到搜索框,如果把搜索框的ID排除,就干脆不触发填充了。于是乎放弃了这个方案。 还是商业软件靠谱啊,暂时还是先用回LastPass吧。
不过好久没点到LastPass里面看看内容了,除了刚用那会儿,基本上没再进入过仪表盘。记得在2019年底的时候LastPass因为一些原因取消掉了中文语言的支持,于是乎一堆英文在全是中文的浏览器里格外刺眼,之前没怎么点开看还不要紧,现在带着点小情绪点开还怪难受的。虽然说都是简单易懂的单词,但是能汉化还是给它整成简体中文吧。
对应的汉化资源和步骤位于文章末尾。
汉化分析
总所周知,大多数应用的i18n是通过本地的Map类型的数据结构来映射本地化文本,因此只要编辑插件的本地化文件就可以达到汉化的目的。
而Chrome插件的资源也仅仅是简单的打包起来,因此本地化文件还是很好获取的。
- 在通过
更多工具->扩展程序
或者输入chrome://extensions/
即可打开扩展程序页面 - 打开右上角的
开发者模式
。这时候LastPass对应的卡片会显示它的ID。这个ID是固定的hdokiejnpimakedhajhdlcegeplioahd
。 - 进入Chrome存放插件的目录
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\Extensions\hdokiejnpimakedhajhdlcegeplioahd
。 - 在目录中可以看到以版本号命名的文件夹,这个就是LastPass插件解压安装后的文件了。
进入文件夹,一眼就看到_locales
,好家伙,就是你了。
打开后,果不其然是几个以地区语言缩写命名的子文件夹,每个文件夹中有一个messages.json
文件,内容被格式化的JSON字符串,key是字段名称,value是一个JSON对象,对象包含一个属性message
,其值便是该字段对应的本地化文本。
起初我想通过增加一个zh_CN
的文件夹和文件来新增一个对中文支持,一番折腾后发现想多了:无法直接修改html源码,否则Chrome插件的安全机制会提示插件损坏。
虽然肯定可以重新打包再以开发者模式载入,但是作为密码管理软件,本着安全的想法,还是算了,另谋出路。
既然新增文件不行,那只能通过修改已有的本地化文件来获得汉化支持了。于是我挑了de
也就是German
对应的本地化文件。稍微修改部分文本后,选择语言然后重新加载插件,确实能达到汉化的目的。
但是我发现了一个问题,LastPass中vault的有些页面内容并不是通过本地资源进行加载的,修改成德语的话这些内容就会以德语显示。
那还是修改英文吧,于是备份一下英文的文件,开始了汉化之路。
用文本编辑器打开messages.json
,好家伙快八千行,起码有一两千个字段,手动去修改肯定是不现实的。既然以前有汉化支持,感觉现在界面也没太大差,不如先把旧的汉化文本替换进去,看看能汉化多少。
于是我去下载了日期比较相近的旧版本插件,拿到了旧的简体中文本地化文件,也有足足两千条数据。然后写了一个脚本,根据key的交集集合去替换对应的汉语文本,写出到文件中,然后丢到_locales
的en_US
目录中,替换掉原来的messages.json
(这里记得备份原来的英文文件)。然后重新打开浏览器或者加载插件,果不其然,插件按钮的界面大部分汉化完毕,仅有几条仍是英文文本,这些大概是后来加上的功能,计算了一下有七八百条吧。不过现在的界面,几条中文夹杂着一条英文看着也怪难受的,特别是在主要界面上面。大概扫了一眼,基本上都是1到4个单词组成的简单文本,干脆再写个脚本机翻一下这些单词,因为单词简单,所以就算是机翻也不会太离谱。
导入最后生成的文件,然后重新打开浏览器,那些突兀的英文条目也不见了,而且基本上日常用的地方都汉化了。当然机翻也并非完全靠谱,比如它把Done
翻译成了多恩
,最后手动修改了几个恰好看到的地方,也算是大功告成了。
汉化后效果
添加旧汉化文本
完全汉化后
如何进行设置
设置步骤
相关资源已经上传至Github,打开本地化文件下载后选择一个任意一个本地化文件下载(文件差异见下方),并修改文件名为messages.json
。
- 打开LastPass插件所在目录。通常命名为
C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data\Default\Extensions\hdokiejnpimakedhajhdlcegeplioahd\
(Chrome version 87.0.4280.88)。可以试图在地址栏输入%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\Extensions\hdokiejnpimakedhajhdlcegeplioahd
或者搜索hdokiejnpimakedhajhdlcegeplioahd
来打开该目录。 - 目录中包括一个以版本号命名的文件夹,如:
4.65.0.3_0
。进入该文件夹,然后找到_locales
文件夹,打开其中的en_US
文件夹。 - 下载github中的
messages.json
,替换/覆盖en_US
文件夹中原有的文件。此处可以先对原文件进行备份,以便恢复英文版本。 - 确保LastPass的语言选项是English。(默认已经是English)。
- 关闭浏览器并重新打开。
- 至此界面文本已经呈现简体中文。
不同文件的差异
messages_old.json
:仅提取了旧版本插件的汉化信息并进行替换。
messages_include_word_in_1_4.json
:在message_old.json的基础上,利用机器翻译批量翻译了单词量在1到4之间的文本,但是忽略掉了一些带有特殊符号的文本。
messages.json
:在message_old.json
的基础上,利用机器翻译批量翻译了大部分文本(排除了一些带有特殊功能符号的文本),并人工修正了一些翻译内容。
厉害,在4.77版本上也全都是中文了 😎
牛 赞一个