温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - Internationalization of HTML pages for my Google Chrome Extension
google-chrome google-chrome-extension html internationalization javascript

javascript - 我的Google Chrome扩展程序的HTML页面国际化

发布于 2020-04-13 10:37:10

我发现了一个非常简单的方法实现的翻译我的谷歌Chrome扩展的(或定位),但似乎只适用于.jsoncssjs文件。

但是,如何html在弹出窗口或选项窗口中定位我的内容呢?

查看更多

提问者
c00000fd
被浏览
23
ahmd0 2014-09-25 11:19

您将要做的是这个。

首先,在您的HTML中使用与Chrome在其他任何地方所需要的语法相同的语法。因此,您的基本知识popup.html将是:

<!DOCTYPE html>
<html>
<head>
<title>__MSG_app_title__</title>
</head>
<body>

<a href="http://example.com/" title="__MSG_prompt001__">__MSG_link001__</a>

<!-- Need to call our JS to do the localization -->
<script src="popup.js"></script>
</body>
</html>

然后在中提供通常的翻译_locales\en\messages.json

{
    "app_title": {
        "message": "MyApp",
        "description": "Name of the extension"
    },
    "link001": {
        "message": "My link",
        "description": "Link name for the page"
    },
    "prompt001": {
        "message": "Click this link",
        "description": "User prompt for the link"
    }
}

最后,您popup.js将执行实际的本地化:

function localizeHtmlPage()
{
    //Localize by replacing __MSG_***__ meta tags
    var objects = document.getElementsByTagName('html');
    for (var j = 0; j < objects.length; j++)
    {
        var obj = objects[j];

        var valStrH = obj.innerHTML.toString();
        var valNewH = valStrH.replace(/__MSG_(\w+)__/g, function(match, v1)
        {
            return v1 ? chrome.i18n.getMessage(v1) : "";
        });

        if(valNewH != valStrH)
        {
            obj.innerHTML = valNewH;
        }
    }
}

localizeHtmlPage();