feat(translations): basic translations support
This commit is contained in:
@ -12,7 +12,7 @@ import { autoUpdater } from 'electron-updater'
|
||||
|
||||
import { devMenuTemplate } from "./menu/dev_menu_template";
|
||||
import { editMenuTemplate } from "./menu/edit_menu_template";
|
||||
import { settingsMenuTemplate } from "./menu/config_menu_template";
|
||||
import { settingsMenuTemplateFunc } from "./menu/config_menu_template";
|
||||
import { aboutMenuTemplate } from "./menu/about_menu_template";
|
||||
import { manageMenuTemplate } from "./menu/manage_menu_template";
|
||||
|
||||
@ -24,18 +24,6 @@ import fs from 'fs';
|
||||
// plugins and dev tool
|
||||
require('electron-context-menu')({})
|
||||
|
||||
const setApplicationMenu = () => {
|
||||
const menus = [editMenuTemplate, manageMenuTemplate, settingsMenuTemplate, aboutMenuTemplate];
|
||||
if (env.name !== "production") {
|
||||
menus.push(devMenuTemplate);
|
||||
}
|
||||
// append version as disabled menu item
|
||||
menus.push({
|
||||
label: app.getVersion()
|
||||
})
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(menus));
|
||||
};
|
||||
|
||||
// Save userData in separate folders for each environment.
|
||||
// Thanks to this you can use production and development versions of the app
|
||||
// on same machine like those are two separate apps.
|
||||
@ -59,11 +47,29 @@ const appConfig = require('./config')
|
||||
const spiderCall = require('./spider')
|
||||
const dbPatcher = require('./dbPatcher')
|
||||
const startSphinx = require('./sphinx')
|
||||
const { changeLanguage } = require('../app/translation')
|
||||
|
||||
let mainWindow = undefined
|
||||
let sphinx = undefined
|
||||
let spider = undefined
|
||||
|
||||
const setApplicationMenu = () => {
|
||||
const settingsMenuTemplate = settingsMenuTemplateFunc(appConfig, (lang) => {
|
||||
// update menu translation
|
||||
changeLanguage(lang, () => setApplicationMenu())
|
||||
})
|
||||
const menus = [editMenuTemplate, manageMenuTemplate, settingsMenuTemplate, aboutMenuTemplate];
|
||||
|
||||
if (env.name !== "production") {
|
||||
menus.push(devMenuTemplate);
|
||||
}
|
||||
// append version as disabled menu item
|
||||
menus.push({
|
||||
label: app.getVersion()
|
||||
})
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(menus));
|
||||
};
|
||||
|
||||
const util = require('util');
|
||||
if (!fs.existsSync(app.getPath("userData"))){
|
||||
fs.mkdirSync(app.getPath("userData"));
|
||||
@ -144,7 +150,7 @@ app.on("ready", () => {
|
||||
});
|
||||
|
||||
dbPatcher(() => {
|
||||
setApplicationMenu();
|
||||
changeLanguage(appConfig.language, () => setApplicationMenu())
|
||||
|
||||
mainWindow.loadURL(
|
||||
url.format({
|
||||
|
@ -10,6 +10,7 @@ let config = {
|
||||
udpTrackersPort: 4446,
|
||||
udpTrackersTimeout: 3 * 60 * 1000,
|
||||
peerId: undefined,
|
||||
language: 'en',
|
||||
|
||||
p2p: true,
|
||||
p2pConnections: 10,
|
||||
|
@ -1,6 +1,9 @@
|
||||
import { app, BrowserWindow } from "electron";
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import __ from '../../app/translation'
|
||||
|
||||
export const settingsMenuTemplate = {
|
||||
export const settingsMenuTemplateFunc = (config, onLanguageChange) => ({
|
||||
label: "Settings",
|
||||
submenu: [
|
||||
{
|
||||
@ -16,6 +19,27 @@ export const settingsMenuTemplate = {
|
||||
click: () => {
|
||||
BrowserWindow.getFocusedWindow().webContents.send('url', '/filters')
|
||||
}
|
||||
},
|
||||
{
|
||||
label: __("Language"),
|
||||
submenu: (() => {
|
||||
const translations = []
|
||||
fs.readdirSync('translations').forEach(translation => {
|
||||
const translationJson = JSON.parse(fs.readFileSync(`translations/${translation}`, 'utf8'))
|
||||
translations.push({
|
||||
label: translationJson.nameOriginal,
|
||||
click: () => {
|
||||
const lang = path.basename(translation, '.json')
|
||||
BrowserWindow.getFocusedWindow().webContents.send('changeLanguage', lang)
|
||||
config.language = lang
|
||||
if(onLanguageChange)
|
||||
onLanguageChange(lang)
|
||||
console.log('changed translation to:', lang)
|
||||
}
|
||||
})
|
||||
})
|
||||
return translations
|
||||
})()
|
||||
}
|
||||
]
|
||||
};
|
||||
});
|
||||
|
Reference in New Issue
Block a user