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

标签 javascript html google-chrome google-chrome-extension internationalization

我找到了一个非常简单的方法来 implement translation (或本地化)我的 Google Chrome 扩展程序,但这似乎仅适用于 .jsoncssjs 文件。

但是如何本地化我的 html 内容,比如在弹出窗口或选项窗口中?

最佳答案

你会做的是这个。

首先,在您的 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();

关于javascript - 我的 Google Chrome 扩展程序的 HTML 页面国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467009/

相关文章:

node.js - React JS : console. 调试不是一个函数

javascript - 在点击另一个 div 时切换一个 div

javascript - 无法在我的单元测试中使用 Jest 渲染 Vue 组件

使用 Internet Explorer 为基于 Blogger 的网站修复 HTML/CSS 高度

html - chrome 29 和 firefox 23 (ubuntu 12.04) 中不同的边框位置

css - 父级中绝对定位图像与相对定位图像上的 Chrome 左偏移差异像素宽度不均匀

javascript - 抽象掉 localStorage

javascript - 将一些有用的 js 库包装到 Angular 模块的好习惯是什么?

html - 如何检测 &lt;input type ="color"> 拾色器是否打开和关闭

javascript - 不要让最终用户保存密码