diff options
author | 0neGal <mail@0negal.com> | 2021-12-29 00:52:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-29 00:52:20 +0100 |
commit | efdc25e4516bc5341e305acf42935407f465a0fb (patch) | |
tree | 5b0eeb6c16d8d419e9dc680136918938cee3aff6 | |
parent | 3d5ccdad4b95e4453ac1857324b2a89497870f09 (diff) | |
parent | 4add9f34f5d9cded91db553aa7a72c6898f7d98b (diff) | |
download | Viper-efdc25e4516bc5341e305acf42935407f465a0fb.tar.gz Viper-efdc25e4516bc5341e305acf42935407f465a0fb.zip |
Merge pull request #7 from 0neGal/localization
Localization support
-rw-r--r-- | src/app/index.html | 15 | ||||
-rw-r--r-- | src/app/lang.js | 10 | ||||
-rw-r--r-- | src/app/main.js | 7 | ||||
-rw-r--r-- | src/cli.js | 14 | ||||
-rw-r--r-- | src/index.js | 1 | ||||
-rw-r--r-- | src/lang.js | 24 | ||||
-rw-r--r-- | src/lang/en.json | 21 | ||||
-rw-r--r-- | src/utils.js | 6 |
8 files changed, 83 insertions, 15 deletions
diff --git a/src/app/index.html b/src/app/index.html index 67d2e5c..1c34360 100644 --- a/src/app/index.html +++ b/src/app/index.html @@ -6,22 +6,23 @@ <body> <div class="lines"> <div class="line"> - <div class="text">Welcome to Viper!</div> + <div class="text">%%gui.welcome%%</div> <div class="buttons"> - <button id="exit" onclick="exit()">Exit</button> - <button id="update" onclick="update()">Update</button> - <button id="setpath" onclick="setpath()">Game Path</button> + <button id="exit" onclick="exit()">%%gui.exit%%</button> + <button id="update" onclick="update()">%%gui.update%%</button> + <button id="setpath" onclick="setpath()">%%gui.setpath%%</button> </div> </div> <div class="line"> - <div class="text">Launch:</div> + <div class="text">%%gui.launch%%:</div> <div class="buttons"> - <button id="vanilla" onclick="launchVanilla()">Vanilla</button> - <button id="northstar" onclick="launch()">Northstar</button> + <button id="vanilla" onclick="launchVanilla()">%%gui.launchvanilla%%</button> + <button id="northstar" onclick="launch()">%%gui.launchnorthstar%%</button> </div> </div> </div> <script src="main.js"></script> + <script src="lang.js"></script> </body> </html> diff --git a/src/app/lang.js b/src/app/lang.js new file mode 100644 index 0000000..8cf3d4b --- /dev/null +++ b/src/app/lang.js @@ -0,0 +1,10 @@ +html = document.body.innerHTML.split("%%"); + +for (let i = 0; i < html.length; i++) { + if (html[i][0] != " " && + html[i][html[i].length - 1] != " ") { + html[i] = lang(html[i]) + } +} + +document.body.innerHTML = html.join(""); diff --git a/src/app/main.js b/src/app/main.js index d390962..579f785 100644 --- a/src/app/main.js +++ b/src/app/main.js @@ -2,20 +2,25 @@ const fs = require("fs"); const path = require("path"); const { ipcRenderer } = require("electron"); +const lang = require("../lang"); + var settings = { gamepath: "", zip: "/northstar.zip", + lang: navigator.language, excludes: [ "ns_startup_args.txt", "ns_startup_args_dedi.txt" ] } +ipcRenderer.send("setlang", settings.lang); + if (fs.existsSync("viper.json")) { settings = {...settings, ...JSON.parse(fs.readFileSync("viper.json", "utf8"))}; settings.zip = path.join(settings.gamepath + "/northstar.zip"); } else { - alert("Game path is not set! Please select the path!"); + alert(lang("gui.missinggamepath")); setpath(); } @@ -5,6 +5,7 @@ const Emitter = require("events"); const events = new Emitter(); const cli = app.commandLine; +const lang = require("./lang"); function hasArgs() { if (cli.hasSwitch("cli") || @@ -24,12 +25,12 @@ function exit(code) { async function init() { if (cli.hasSwitch("help")) { console.log(`options: - --help shows this help message - --debug opens the dev/debug tools + --help ${lang("cli.help.help")} + --debug ${lang("cli.help.debug")} - --cli forces the CLI to enable - --update updates Northstar from your set game path - --setpath sets your game path`) + --cli ${lang("cli.help.cli")} + --update ${lang("cli.help.update")} + --setpath ${lang("cli.help.setpath")}`) // In the future --setpath should be able to understand // relative paths, instead of just absolute ones. exit(); @@ -43,7 +44,8 @@ async function init() { if (cli.getSwitchValue("setpath") != "") { ipcMain.emit("setpathcli", cli.getSwitchValue("setpath")); } else { - console.error("error: No argumment provided for --setpath"); + console.error(`error: ${lang("cli.setpath.noarg")}`); + exit(1); } } diff --git a/src/index.js b/src/index.js index 4e64414..fead15b 100644 --- a/src/index.js +++ b/src/index.js @@ -33,6 +33,7 @@ function start() { } ipcMain.on("launch", (event) => {utils.launch()}) +ipcMain.on("setlang", (event, lang) => {utils.setlang(lang)}) ipcMain.on("launchVanilla", (event) => {utils.launch("vanilla")}) ipcMain.on("update", (event) => {utils.update()}) diff --git a/src/lang.js b/src/lang.js new file mode 100644 index 0000000..266fb8b --- /dev/null +++ b/src/lang.js @@ -0,0 +1,24 @@ +const fs = require("fs"); + +var lang = "en"; +if (fs.existsSync("viper.json")) { + lang = JSON.parse(fs.readFileSync("viper.json", "utf8")).lang; + if (! lang) {lang = "en"} + if (! fs.existsSync(__dirname + `/lang/${lang}.json`)) { + if (fs.existsSync(__dirname + `/lang/${lang.replace(/-.*$/, "")}.json`)) { + lang = lang.replace(/-.*$/, ""); + } else { + lang = "en"; + } + } +} + +var langObj = JSON.parse(fs.readFileSync(__dirname + `/lang/${lang}.json`, "utf8")); + +module.exports = (string) => { + if (langObj[string]) { + return langObj[string]; + } else { + return string + } +} diff --git a/src/lang/en.json b/src/lang/en.json new file mode 100644 index 0000000..2322369 --- /dev/null +++ b/src/lang/en.json @@ -0,0 +1,21 @@ +{ + "cli.help.help": "shows this help message", + "cli.help.debug": "opens the dev/debug tools", + "cli.help.cli": "forces the CLI to enable", + "cli.help.update": "updates Northstar from your set game path", + "cli.help.setpath": "sets your game path", + + "cli.setpath.noarg": "No argument provided for --setpath", + + + "gui.welcome": "Welcome to Viper!", + "gui.exit": "Exit", + "gui.update": "Update", + "gui.setpath": "Game Path", + + "gui.launch": "Launch", + "gui.launchvanilla": "Vanilla", + "gui.launchnorthstar": "Northstar", + + "gui.missinggamepath": "Game path is not set! Please select the path!" +} diff --git a/src/utils.js b/src/utils.js index 9839c4c..ce927b8 100644 --- a/src/utils.js +++ b/src/utils.js @@ -16,6 +16,7 @@ process.chdir(app.getPath("appData")); var settings = { gamepath: "", + lang: "en-US", zip: "/northstar.zip", excludes: [ "ns_startup_args.txt", @@ -30,7 +31,6 @@ if (fs.existsSync("viper.json")) { console.log("Game path is not set! Please select the path."); } - function setpath(win) { if (! win) { settings.gamepath = cli.param("setpath"); @@ -141,4 +141,8 @@ module.exports = { update, setpath, settings, + setlang: (lang) => { + settings.lang = lang; + saveSettings(); + }, } |