原文地址:waynegong.cn/posts/954.h…
Chrome 浏览器扩展进行 i18n 国际化多语言适配需要进行三处修改:
- 在特定目录按照特定格式编写多语言配置的
messages.json文件; - 在
manifest.json中设置默认语言; - 修改项目代码,通过
__MSG_messagename__或getMessage方法获取本地化内容;
编写多语言配置
多语言文件位于扩展根目录的 _locales/{_localeCode_}/messages.json 路径下
支持的 _localeCode_ 可参考 languages.cc
以英语 en 为例,_localCode_/en/messages.json 如下:
{
"title": {
"message": "hello world", // title 字段的英语表示,必填
"description": "Title string" // 当前字段的描述信息(注释),可选
},
...
}
配置默认语言
多语言配置编写完成后,还必须在 manifest.json 中设置默认语言 default_locale 才能生效。
使用本地化内容
在 Javascript 中,可通过调用 getMessage 方法获取本地化之后的内容,具体参数参考 getMessage API
在不支持 getMessage 方法的环境下(例如 json、css、html),可使用 __MSG_messagename__ 占位符获取本地化内容。
多语言降级
当扩展程序在特定 _localeCode_ 目录下没有找到本地化内容时,会按照一定规则进行搜索:
- 未找到当前地区的语言时,降级到当前大的语言环境,例如未找到
en_US时,会尝试搜索en目录; - 未满足上述条件时,则会使用
default_locale配置的语言; - 否则返回
""空字符;
多语言调试
调试多语言配置时,需要修改到特定的语言环境,具体方法参考: