Add initial chrome.i18n.getMessage API
This commit is contained in:
parent
a3899f17f9
commit
84960af793
4 changed files with 41 additions and 0 deletions
|
@ -63,6 +63,7 @@
|
||||||
'lib/renderer/api/remote.js',
|
'lib/renderer/api/remote.js',
|
||||||
'lib/renderer/api/screen.js',
|
'lib/renderer/api/screen.js',
|
||||||
'lib/renderer/api/web-frame.js',
|
'lib/renderer/api/web-frame.js',
|
||||||
|
'lib/renderer/extensions/i18n.js',
|
||||||
],
|
],
|
||||||
'js2c_sources': [
|
'js2c_sources': [
|
||||||
'lib/common/asar.js',
|
'lib/common/asar.js',
|
||||||
|
|
|
@ -115,6 +115,10 @@ ipcMain.on('CHROME_RUNTIME_CONNECT', function (event, extensionId, connectInfo)
|
||||||
page.webContents.sendToAll(`CHROME_RUNTIME_ONCONNECT_${extensionId}`, event.sender.id, portId, connectInfo)
|
page.webContents.sendToAll(`CHROME_RUNTIME_ONCONNECT_${extensionId}`, event.sender.id, portId, connectInfo)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ipcMain.on('CHROME_I18N_MANIFEST', function (event, extensionId) {
|
||||||
|
event.returnValue = manifestMap[extensionId]
|
||||||
|
})
|
||||||
|
|
||||||
ipcMain.on('CHROME_RUNTIME_SENDMESSAGE', function (event, extensionId, message) {
|
ipcMain.on('CHROME_RUNTIME_SENDMESSAGE', function (event, extensionId, message) {
|
||||||
const page = backgroundPages[extensionId]
|
const page = backgroundPages[extensionId]
|
||||||
if (!page) {
|
if (!page) {
|
||||||
|
|
|
@ -199,4 +199,6 @@ exports.injectTo = function (extensionId, isBackgroundPage, context) {
|
||||||
setPopup () {},
|
setPopup () {},
|
||||||
getPopup () {}
|
getPopup () {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chrome.i18n = require('./extensions/i18n.js')
|
||||||
}
|
}
|
||||||
|
|
34
lib/renderer/extensions/i18n.js
Normal file
34
lib/renderer/extensions/i18n.js
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
const {ipcRenderer} = require('electron')
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
const getMessagesPath = (language) => {
|
||||||
|
const manifest = ipcRenderer.sendSync('CHROME_I18N_MANIFEST', chrome.runtime.id)
|
||||||
|
let messagesPath = path.join(manifest.srcDirectory, '_locales', language, 'messages.json')
|
||||||
|
if (!fs.statSyncNoException(messagesPath)) {
|
||||||
|
messagesPath = path.join(manifest.srcDirectory, '_locales', manifest.default_locale, 'messages.json')
|
||||||
|
}
|
||||||
|
return messagesPath
|
||||||
|
}
|
||||||
|
|
||||||
|
const getMessages = (language) => {
|
||||||
|
try {
|
||||||
|
return JSON.parse(fs.readFileSync(getMessagesPath(language))) || {}
|
||||||
|
} catch (error) {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getLanguage = () => {
|
||||||
|
return navigator.language.replace(/-.*$/, '').toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getMessage (messageName, substitutions) {
|
||||||
|
const language = getLanguage()
|
||||||
|
const messages = getMessages(language)
|
||||||
|
if (messages.hasOwnProperty(messageName)) {
|
||||||
|
return messages[messageName].message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue