zoukankan      html  css  js  c++  java
  • 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节点,替换节点内容。

    点此下载

  • 相关阅读:
    manacher(求最大回文串并返回)
    编程求一个后缀表达式的值
    栈的简单使用
    云计算的概念
    乐优商城
    四大函数型接口
    Stream流计算
    JWT实现无状态登录
    Thymeleaf模板引擎
    elasticSearch的使用
  • 原文地址:https://www.cnblogs.com/lovelylife/p/i18n.html
Copyright © 2011-2022 走看看