-const {BrowserWindow, Menu, app, shell, dialog} = require('electron')
+const {Menu, app, shell} = require('electron')
const settings = require('electron-settings')
+const i18n = global.i18n
+const path = require('path')
+const logger = require('../logger')
+const log = logger.create('menu')
let advNav = settings.get('browserSetting.app.navAdvancedState') || 'normal'
let btmAmountUnit = settings.get('browserSetting.core.btmAmountUnit') || 'BTM'
let menu = null
-const i18n = global.i18n
+
+const logFolder = {logFolder: path.join(app.getPath('userData'), 'logs')}
+const loggerOptions = Object.assign(logFolder)
+logger.setup(loggerOptions)
let menuTempl = function () {
const menu = []
-
// APP
const fileMenu = []
const name = app.getName()
// LANGUAGE (VIEW)
+ const defaultLanguage = i18n.getBestMatchedLangCode(app.getLocale())
+ let currentLanguage = settings.get('browserSetting.core.lang') || defaultLanguage
const LanguageMenu = [{
label: i18n.t('desktop.applicationMenu.view.default'),
type: 'checkbox',
- // checked: btmAmountUnit === 'BTM',
click: (item, focusedWindow) => {
if (focusedWindow) {
+ i18n.changeLanguage(defaultLanguage, (err, t) => {
+ if (err) return log.error('something went wrong loading', err)
+ focusedWindow.webContents.send('lang', defaultLanguage)
+ createMenu()
+ })
}
}
},{
},{
label: i18n.t('desktop.applicationMenu.view.langCodes.zh'),
type: 'checkbox',
- // checked: btmAmountUnit === 'mBTM',
+ checked: currentLanguage === 'zh',
click: (item, focusedWindow) => {
if (focusedWindow) {
i18n.changeLanguage('zh', (err, t) => {
- if (err) return console.log('something went wrong loading', err)
+ if (err) return log.error('something went wrong loading', err)
+ focusedWindow.webContents.send('lang', 'zh')
createMenu()
})
},{
label: i18n.t('desktop.applicationMenu.view.langCodes.en'),
type: 'checkbox',
- // checked: btmAmountUnit === 'NEU',
+ checked: currentLanguage === 'en',
click: (item, focusedWindow) => {
if (focusedWindow) {
- // debugger
i18n.changeLanguage('en', (err, t) => {
- if (err) return console.log('something went wrong loading', err)
+ if (err) return log.error('something went wrong loading', err)
+ focusedWindow.webContents.send('lang', 'en')
createMenu()
})
}
const createMenu = function () {
+ log.info('Create Menu')
menu = Menu.buildFromTemplate(menuTempl())
Menu.setApplicationMenu(menu)
}
menu.items[2].submenu.items[0].submenu.items[2].checked = ( btmAmountUnit === 'NEU' )
})
+ settings.watch('browserSetting.core.lang', newValue => {
+ i18n.changeLanguage(newValue, (err, t) => {
+ if (err) return log.error('i18n: something went wrong loading', err)
+ createMenu()
+ })
+ })
+
})
app.on('browser-window-created', () => {
const autoUpdater = require('./auto-updater')
const exec = require('child_process').exec
const glob = require('glob')
+const settings = require('electron-settings')
+
+global.language = settings.get('browserSetting.core.lang')
+
const i18n = require('./main-process/i18n.js')
const url = require('url')
const path = require('path')
let win, bytomdInit, bytomdMining
-global.i18n = i18n
+
global.fileExist = false
+global.i18n = i18n
function initialize () {
+
loadMenu()
function createWindow() {
}
app.on('ready', () => {
+ // init i18n
+ if(!settings.get('browserSetting.core.lang')){
+ i18n.init({lng: app.getLocale()})
+ }
+
const logFolder = {logFolder: path.join(app.getPath('userData'), 'logs')}
const loggerOptions = Object.assign(logFolder)
logger.setup(loggerOptions)
})
createWindow()
- // autoUpdater.initialize()
})
function loadMenu () {
const files = glob.sync(path.join(__dirname, 'main-process/menus/*.js'))
files.forEach((file) => { require(file) })
- autoUpdater.updateMenu()
+ // autoUpdater.updateMenu()
}
// Handle Squirrel on Windows startup events
window.ipcRenderer.on('btmAmountUnitState', (event, arg) => {
this.props.uptdateBtmAmountUnit(arg)
})
+ window.ipcRenderer.on('lang', (event, arg) => {
+ this.props.uptdateLang(arg)
+ })
window.ipcRenderer.on('FileExist', (event, arg) => {
- debugger
if(arg === 'true'){
this.props.updateConfiguredStatus()
}
showRoot: () => dispatch(actions.app.showRoot),
showConfiguration: () => dispatch(actions.app.showConfiguration()),
uptdateBtmAmountUnit: (param) => dispatch(actions.core.updateBTMAmountUnit(param)),
+ uptdateLang: (param) => dispatch(actions.core.updateLang(param)),
updateConfiguredStatus: () => dispatch(actions.core.updateConfiguredStatus)
})
)(Container)