aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author0neGal <mail@0negal.com>2021-12-29 00:52:20 +0100
committerGitHub <noreply@github.com>2021-12-29 00:52:20 +0100
commitefdc25e4516bc5341e305acf42935407f465a0fb (patch)
tree5b0eeb6c16d8d419e9dc680136918938cee3aff6
parent3d5ccdad4b95e4453ac1857324b2a89497870f09 (diff)
parent4add9f34f5d9cded91db553aa7a72c6898f7d98b (diff)
downloadViper-efdc25e4516bc5341e305acf42935407f465a0fb.tar.gz
Viper-efdc25e4516bc5341e305acf42935407f465a0fb.zip
Merge pull request #7 from 0neGal/localization
Localization support
-rw-r--r--src/app/index.html15
-rw-r--r--src/app/lang.js10
-rw-r--r--src/app/main.js7
-rw-r--r--src/cli.js14
-rw-r--r--src/index.js1
-rw-r--r--src/lang.js24
-rw-r--r--src/lang/en.json21
-rw-r--r--src/utils.js6
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();
}
diff --git a/src/cli.js b/src/cli.js
index e5fe042..8593117 100644
--- a/src/cli.js
+++ b/src/cli.js
@@ -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();
+ },
}