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节点,替换节点内容。

点此下载

Chrome插件i18n多语言实现的更多相关文章

  1. 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)

    写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...

  2. 【干货】Chrome插件(扩展)开发全攻略

    写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...

  3. Chrome插件(扩展)

    [干货]Chrome插件(扩展)开发全攻略   写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均 ...

  4. 【干货】Chrome插件(扩展)开发全攻略(转)

    写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...

  5. Chrome插件(Extensions)开发攻略

    本文将从个人经验出发,讲述为什么需要Chrome插件,如何开发,如何调试,到哪里找资料,会遇到怎样的问题以及如何解决等,同时给出一个个人认为的比较典型的例子——获取网页内容,和服务器交互,再把信息反馈 ...

  6. 如何查看google chrome 插件源码

    常用浏览器google chrome 有很多优秀的插件,寂寞的时候想看看人家是怎么实现的,说是快那就动手吧 插件代码位置 本人mac笔记本,chrome 插件位置如下 $ cd  /Users/vin ...

  7. 实用chrome插件

    2015年最实用的9款chrome插件 随着14年chrome浏览器的市场超过IE浏览器,chrome凭借它强劲性能和出色的使用体验真正的登上了平民级的殿堂.今天小编就为大家推荐9款自己常用的chro ...

  8. Chrome 插件PPAPI 开发(一)环境搭建

    前言:本文参考了其他已有的文章,在其基础上简化了一些没有必要的操作. 同时也记录一下chrome 插件ppapi环境的基础搭建.并且感谢已有文章作者的大无畏的分享精神! 在这附上参考文章链接:http ...

  9. 2018-10-19 Chrome插件实现GitHub代码离线翻译v0.0.4

    续前文Chrome插件实现GitHub代码翻译v0.0.3. 添加了对驼峰命名的支持. 由于调用浏览器插件-离线英汉词典进行词汇翻译, 因此也不依赖于任何在线翻译服务. Chrome插件: 官网链接 ...

随机推荐

  1. SQL表连接

    背景 在上次的自考科目<数据库系统原理>中.已经接触到了关于数据库表连接的一些知识,近期的学习过程中又用到了关于数据库表的连接问题,趁此再跟大家一起回想一下. 导图总结 首先用一张思维导图 ...

  2. AngularJS系列之总结

    AngularJS深入的系列就是这九篇博客了,把我以前在项目中应用到的和自己学习的都总结在了里面.为了更方便的看,把我写的AngularJS系列的博客都列到下面.之后就开始学习ionic:html5移 ...

  3. c语言发挥帕斯卡三角

    我们已经确定了帕斯卡三角的规则,下面是我的代码,非常实用哦! !! #include<stdio.h>  void main()  {      int i,j,n,k;      sca ...

  4. 那些必须要知道的Javascript

    原文:那些必须要知道的Javascript JavaScript是前端必备,而这其中的精髓也太多太多,最近在温习的时候发现有些东西比较容易忽略,这里记录一下,一方面是希望自己在平时应用的时候能够得心应 ...

  5. System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(string, string)已过时的解决办法

    FormsAuthentication.HashPasswordForStoringInConfigFile 方法是一个在.NET 4.5中已经废弃不用的API,参见: https://msdn.mi ...

  6. 组件接口(API)设计指南[5]-最后的思考

    *阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477 最后的思考 我通过困难的学习以及多年的失误.写了这片篇关于创建组件和a ...

  7. Grub启动配置文件

    和许多其他linux发行版一样,Fedora使用Grub作为32位和64位X86系统的启动加载器(bootloader).grub的配置文件主要是/boot/grub/grub.conf,而/boot ...

  8. SQL SERVER存储过程生成字母+数字的编码

    公司内设备管理系统中设备建账功能,功能目的是对新进设备进行记录并入库.其中设备编号一项定义为自己修改(查看之前的设备号,取一个不重复的值来填写),感觉特别麻烦!用存储过程自动生成编码岂不是更效率. 需 ...

  9. 图解:SQL Server SSIS包和job的部署攻略

    原文:图解:SQL Server SSIS包和job的部署攻略 以下将建立一个SQL Server SSIS包 然后在job中使用这个包,并将job部署到目标机器 1. 首先建立ssis包,使用sql ...

  10. 为ASP.NET MVC应用程序使用高级功能

    为ASP.NET MVC应用程序使用高级功能 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译, ...