首页 > 网站 > WEB开发 > 正文

Chrome插件i18n多语言实现

2024-04-27 14:15:02
字体:
来源:转载
供稿:网友

Chrome插件i18n多语言实现

i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。Chrome插件框架中i18n的封装API:

chrome.i18n.getMessage(name)

用到的字符都可以定义成__MSG_extName__类似这样的格式,然后通过这个API来调用,例如:

chrome.i18n.getMessage('extName')

在调用这个接口前还需要做一些准备工作:

1. 插件的目录结构定义, 蓝色高亮部分为多语言文件夹:

myextension

|

|---_locales

| |------ en --------- messages.json

| |------ zh_CN ---- messages.json

| |------ ...

|--- *.js

|--- *.html

|--- *.*

2. manifest.json 定义, 如果创建了_locales, default_locale字段必须要定义:

{   "name": "name",   "version": "1.6",   "default_locale" : "zh_CN",   "manifest_version": 2,   ...}

3.messages.json 文件定义多语言符号,格式如下:

{  "extName": {    "message": "插件名称",    "description": "描述"  },  "extDescription": {    "message": "插件描述",    "description": "描述2"  },  "width": {    "message": "200px",    "description": "CSS width"  }}

在messages.json定义的符号可以在manifest.json和*.css文件中直接使用, 例如:

manifest.json:

{   "name": "__MSG_extName__",   "version": "1.6",   "default_locale" : "zh_CN",   "manifest_version": 2,   "description": "__MSG_extDescription__",   ...}

css文件

#div-test {  width: __MSG_width__;}

javascript文件:

var title = chrome.i18n.getMessage("extName");document.getElementById('div-test').innerHTML = title;

*.html文件

暂时还没找到对应的接口,按照帮助文档的说法,HTML界面的多语言初始化放在js文件中, 这样就工作OK了。但是这种方式不推荐,另外一种方案: 正则。

在标签里面使用__MSG_XXX__, 遍历所有TextNode节点,替换节点内容。

点此下载


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表