aboutsummaryrefslogtreecommitdiff
path: root/src/lang.js
diff options
context:
space:
mode:
author0neGal <mail@0negal.com>2022-02-21 22:56:42 +0100
committerGitHub <noreply@github.com>2022-02-21 22:56:42 +0100
commite96135cbc3877423f4c6c012c5d7e09436e5b32c (patch)
treecfc8e36d34e23a2e0259f072737d6f44a8ce7c07 /src/lang.js
parent68d933367c90ee2d3ef140cc4c30d5529b3872f8 (diff)
parent17947210b3fc9bac6ea2219655c73af07113690e (diff)
downloadViper-e96135cbc3877423f4c6c012c5d7e09436e5b32c.tar.gz
Viper-e96135cbc3877423f4c6c012c5d7e09436e5b32c.zip
Merge pull request #84 from Alystrasz/refactor/i18n
refactor: i18n
Diffstat (limited to 'src/lang.js')
-rw-r--r--src/lang.js44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/lang.js b/src/lang.js
index b3cbb43..8174174 100644
--- a/src/lang.js
+++ b/src/lang.js
@@ -1,35 +1,37 @@
const fs = require("fs");
-var lang = "en"; // Default language
+const enLang = JSON.parse(fs.readFileSync(__dirname + `/lang/en.json`, "utf8"));
+let lang = "";
+var langObj = {};
-// Loads fallback/default language strings
-var langDef = JSON.parse(fs.readFileSync(__dirname + `/lang/en.json`, "utf8"));
-// If settins are set it'll try to set the language to that instead of
-// the default, however if it can't find it, it'll still fallback to the
-// default language. This might happen as the default language is
-// retrieved from the renderer's navigator.language, which may have
-// languages we don't support yet.
-if (fs.existsSync("viper.json")) {
- lang = JSON.parse(fs.readFileSync("viper.json", "utf8")).lang;
- if (! lang) {lang = "en"} // Uses fallback, if language isn't set
- if (! fs.existsSync(__dirname + `/lang/${lang}.json`)) {
- if (fs.existsSync(__dirname + `/lang/${lang.replace(/-.*$/, "")}.json`)) {
- lang = lang.replace(/-.*$/, "");
- } else {
- lang = "en"; // Uses fallback if language doesn't exist
+function _loadTranslation() {
+ 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";
+ }
}
+ } else {
+ lang = "en";
}
+ langObj = JSON.parse(fs.readFileSync(__dirname + `/lang/${lang}.json`, "utf8"));
}
-var langObj = JSON.parse(fs.readFileSync(__dirname + `/lang/${lang}.json`, "utf8"));
module.exports = (string) => {
- if (langObj[string]) { // Returns string from language
+ if (lang === "")
+ _loadTranslation();
+
+ if (langObj[string]) {
return langObj[string];
- } else { // If string doesn't exist
- if (langDef[string]) { // Retrieves from default lang instead
- return langDef[string];
+ } else {
+ if (enLang[string]) {
+ return enLang[string];
} else {
// If it's not in the default lang either, it returns the
// string, this is absolute fallback.