附录B i18n

优质
小牛编辑
132浏览
2023-12-01

使用i18n接口实现扩展应用程序的国际化。本节内容部分参考https://crxdoc-zh.appspot.com/apps/i18n

在扩展应用程序的根目录下创建_locales文件夹,在_locales下以每个支持的语言的代码为名称创建子文件夹,然后在其中放入message.json指定对应语言的字符串。支持的语言和对应的语言代码参加https://developer.chrome.com/webstore/i18n

root directiory
|- manifest.json
|- *.html, *.js
|- _locales
   |- en
      |- message.json
   |- zh-CN
      |- message.json

message.json指定字符串:

{
    "extName": {
        "message": "一个国际化扩展",
        "description": "Extension Name"
    },
    ...
}

在Manifest中调用国际化字符串:

{
    "name": "__MSG_extName__",
    "default_locale": "en",
    ...
}

在JavaScript中获取国际化字符串:

title = chrome.i18n.getMessage('extName');

有一些预定的国际化字符串:

@@extension_id:扩展应用id
@@ui_locale:当前语言
@@bidi_dir:当前语言的文字方向,ltr或rtl
@@bidi_reversed_dir:如果@@bidi_dir是ltr则该消息为rtl,否则为ltr
@@bidi_start_edge:如果@@bidi_dir是ltr则该消息为left,否则为right
@@bidi_end_edge:如果@@bidi_dir是ltr则该消息为right,否则为left

上面这些预定义字符串可以直接在JavaScript和CSS中引用,如:

body {
    direction: __MSG_@@bidi_dir__;
}

div#header {
    margin-bottom: 1.05em;
    overflow: hidden;
    padding-bottom: 1.5em;
    padding-__MSG_@@bidi_start_edge__: 0;
    padding-__MSG_@@bidi_end_edge__: 1.5em;
    position: relative;
}

获取浏览器可接受的语言:

chome.i18n.getAcceptLanguages(function(languageArray){
    //do something with languageArray
});

获得指定消息的本地化字符串。如果消息不存在,该方法返回空字符串""

var msg = chrome.i18n.getMessage(messageName, substitutions);

获取浏览器用户界面的语言1

var currentLanguage = chrome.i18n.getUILanguage(); 

1 从Chrome 35开始支持。