From 320f679f6d03c83c16f15249df1acb87c1cc7728 Mon Sep 17 00:00:00 2001
From: Observer KRypt0n_ <suimin.tu.mu.ga.mi@gmail.com>
Date: Wed, 3 Nov 2021 16:34:46 +0200
Subject: [PATCH] Added telemetry servers notification localization Also now
 localization files can contain references to the constant properties

---
 public/locales/de.json    |  3 +-
 public/locales/en-us.json |  3 +-
 public/locales/en.json    |  3 +-
 public/locales/es.json    |  3 +-
 public/locales/fr.json    |  3 +-
 public/locales/id.json    |  3 +-
 public/locales/ja.json    |  3 +-
 public/locales/ko.json    |  3 +-
 public/locales/pt.json    |  3 +-
 public/locales/ru.json    |  3 +-
 public/locales/th.json    |  3 +-
 public/locales/vi.json    |  3 +-
 public/locales/zh-cn.json |  3 +-
 public/locales/zh-tw.json |  3 +-
 src/ts/index.ts           |  4 +--
 src/ts/lib/LauncherUI.ts  |  1 +
 src/ts/lib/Tools.ts       |  1 -
 src/ts/lib/i18n.ts        | 73 +++++++++++++++++++++++----------------
 18 files changed, 75 insertions(+), 46 deletions(-)

diff --git a/public/locales/de.json b/public/locales/de.json
index 676a6f6..22c5173 100644
--- a/public/locales/de.json
+++ b/public/locales/de.json
@@ -31,5 +31,6 @@
     "Skip": "Überspringen",
     "SkipAndDontAsk": "Überspingen und nicht noch mal fragen",
     "LauncherUpdateTitle": "Launcher update verfügbar: ",
-    "LauncherUpdateBody": "Sie können eine neue Version des Launchers aus dem Repository des Projekts unter https://notabug.org/nobody/an-anime-game-launcher herunterladen."
+    "LauncherUpdateBody": "Sie können eine neue Version des Launchers aus dem Repository des Projekts unter {uri.launcher} herunterladen.",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/en-us.json b/public/locales/en-us.json
index d6ab86b..0d47fab 100644
--- a/public/locales/en-us.json
+++ b/public/locales/en-us.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/en.json b/public/locales/en.json
index 049e6d0..9e30161 100644
--- a/public/locales/en.json
+++ b/public/locales/en.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/es.json b/public/locales/es.json
index 049e6d0..9e30161 100644
--- a/public/locales/es.json
+++ b/public/locales/es.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/fr.json b/public/locales/fr.json
index 049e6d0..9e30161 100644
--- a/public/locales/fr.json
+++ b/public/locales/fr.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/id.json b/public/locales/id.json
index 049e6d0..9e30161 100644
--- a/public/locales/id.json
+++ b/public/locales/id.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/ja.json b/public/locales/ja.json
index faa9f3c..7b1a93e 100644
--- a/public/locales/ja.json
+++ b/public/locales/ja.json
@@ -31,5 +31,6 @@
     "Skip": "スキップ",
     "SkipAndDontAsk": "スキップして二度と聞かない",
     "LauncherUpdateTitle": "ランチャーのアップデートが可能 ",
-    "LauncherUpdateBody": "ランチャーの新バージョンは、プロジェクトのリポジトリ(https://notabug.org/nobody/an-anime-game-launcher)からダウンロードできます。"
+    "LauncherUpdateBody": "ランチャーの新バージョンは、プロジェクトのリポジトリ({uri.launcher})からダウンロードできます。",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}のテレメトリサーバは無効になっていません!"
 }
\ No newline at end of file
diff --git a/public/locales/ko.json b/public/locales/ko.json
index 049e6d0..9e30161 100644
--- a/public/locales/ko.json
+++ b/public/locales/ko.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/pt.json b/public/locales/pt.json
index 049e6d0..9e30161 100644
--- a/public/locales/pt.json
+++ b/public/locales/pt.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/ru.json b/public/locales/ru.json
index 5e4c319..eeb8cc6 100644
--- a/public/locales/ru.json
+++ b/public/locales/ru.json
@@ -31,5 +31,6 @@
     "Skip": "Пропустить",
     "SkipAndDontAsk": "Пропустить и не спрашивать",
     "LauncherUpdateTitle": "Доступно обновление лаунчера: ",
-    "LauncherUpdateBody": "Вы можете скачать новую версию лаунчера с репозитория проекта: https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "Вы можете скачать новую версию лаунчера с репозитория проекта: {uri.launcher}",
+    "TelemetryNotDisabled": "Серверы сбора телеметрии {placeholders.uppercase.company} не отключены!"
 }
\ No newline at end of file
diff --git a/public/locales/th.json b/public/locales/th.json
index 049e6d0..9e30161 100644
--- a/public/locales/th.json
+++ b/public/locales/th.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/vi.json b/public/locales/vi.json
index 049e6d0..9e30161 100644
--- a/public/locales/vi.json
+++ b/public/locales/vi.json
@@ -31,5 +31,6 @@
     "Skip": "Skip",
     "SkipAndDontAsk": "Skip and don't ask again",
     "LauncherUpdateTitle": "Launcher update available: ",
-    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "You can download a new version of the launcher from the project's repository at {uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/zh-cn.json b/public/locales/zh-cn.json
index 5bdfe6b..b417236 100644
--- a/public/locales/zh-cn.json
+++ b/public/locales/zh-cn.json
@@ -31,5 +31,6 @@
     "Skip": "省略",
     "SkipAndDontAsk": "跳过,不要再问",
     "LauncherUpdateTitle": "启动器更新可用:",
-    "LauncherUpdateBody": "你可以从项目的资源库中下载新版本的启动器,网址是:https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "你可以从项目的资源库中下载新版本的启动器,网址是:{uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/public/locales/zh-tw.json b/public/locales/zh-tw.json
index 2012a2c..efa87db 100644
--- a/public/locales/zh-tw.json
+++ b/public/locales/zh-tw.json
@@ -31,5 +31,6 @@
     "Skip": "跳過",
     "SkipAndDontAsk": "跳過,不要再詢問我",
     "LauncherUpdateTitle": "啟動器有新的更新可用:",
-    "LauncherUpdateBody": "您可以從此專案的資源庫中下載新版本的啟動器,網址是:https://notabug.org/nobody/an-anime-game-launcher"
+    "LauncherUpdateBody": "您可以從此專案的資源庫中下載新版本的啟動器,網址是:{uri.launcher}",
+    "TelemetryNotDisabled": "{placeholders.uppercase.company}'s telemetry servers don't disabled!"
 }
\ No newline at end of file
diff --git a/src/ts/index.ts b/src/ts/index.ts
index 4c5c273..ac9e463 100644
--- a/src/ts/index.ts
+++ b/src/ts/index.ts
@@ -197,8 +197,8 @@ $(() => {
                     console.log(`${constants.placeholders.uppercase.company}'s telemetry servers doesn't disabled!`);
 
                     ipcRenderer.send('notification', {
-                        title: document.title, // FIXME add translation
-                        body: `${constants.placeholders.uppercase.company}'s telemetry servers doesn't disabled!`
+                        title: document.title,
+                        body: LauncherUI.i18n.translate('TelemetryNotDisabled')
                     });
                 }
 
diff --git a/src/ts/lib/LauncherUI.ts b/src/ts/lib/LauncherUI.ts
index b685f71..fc5fe82 100644
--- a/src/ts/lib/LauncherUI.ts
+++ b/src/ts/lib/LauncherUI.ts
@@ -28,6 +28,7 @@ export class LauncherUI
     {
         if (!this._i18n)
             this._i18n = i18n;
+        
         return this._i18n;
     }
 
diff --git a/src/ts/lib/Tools.ts b/src/ts/lib/Tools.ts
index 03747c5..60dae6f 100644
--- a/src/ts/lib/Tools.ts
+++ b/src/ts/lib/Tools.ts
@@ -138,7 +138,6 @@ export class Tools
 
                     let matches = /^[dwxr\-]+ [\w/]+[ ]+(\d+) [0-9\-]+ [0-9\:]+ (.+)/.exec(line);
 
-                    // TODO: compressedSize?
                     if (matches)
                     {
                         total += parseInt(matches[1]);
diff --git a/src/ts/lib/i18n.ts b/src/ts/lib/i18n.ts
index d25caac..ca48a7f 100644
--- a/src/ts/lib/i18n.ts
+++ b/src/ts/lib/i18n.ts
@@ -1,46 +1,61 @@
 const path = require('path');
 const fs = require('fs');
 
+import { constants } from './constants';
+
 export class i18n
 {
-     public static readonly localesDir = path.join(path.dirname(__dirname), '..', 'locales');
+    public static readonly localesDir = path.join(path.dirname(__dirname), '..', 'locales');
 
-     public static loadedLanguage: any;
+    public static loadedLanguage: any;
 
-     public static translate (phrase: string)
-     {
-          if (i18n.loadedLanguage === undefined)
-               this.setLang(navigator.language);
+    public static translate (phrase: string): string
+    {
+        if (i18n.loadedLanguage === undefined)
+            this.setLang(navigator.language);
 
-          return i18n.loadedLanguage[phrase] ?? phrase;
-     }
+        let translation = i18n.loadedLanguage[phrase] ?? phrase;
+        let item;
 
-     public static setLang (lang: string)
-     {
-          lang = lang.toLowerCase();
+        while ((item = /\{([a-zA-Z\.]+)\}/g.exec(translation)) !== null)
+        {
+            let value = constants;
 
-          // Test if the locale is the same string so if it's de-de or id-id remove -de or -id like navigator.language does.
-          let samecode = new RegExp(`(${lang.replace(/-.*$/, '')}.*){2}`, 'g');
+            // @ts-expect-error
+            item[1].split('.').forEach(ref => value = value[ref]);
 
-          if (samecode.test(lang))
-               lang = lang.replace(/-.*$/, '');
+            translation = translation.replace(item[0], value);
+        }
 
-          switch (lang)
-          {
-               case 'ja-jp':
-                    lang = 'ja';
+        return translation;
+    }
 
-                    break;
+    public static setLang (lang: string)
+    {
+        lang = lang.toLowerCase();
 
-               case 'vi-vn':
-                    lang = 'vi';
+        // Test if the locale is the same string so if it's de-de or id-id remove -de or -id like navigator.language does.
+        let samecode = new RegExp(`(${lang.replace(/-.*$/, '')}.*){2}`, 'g');
 
-                    break;
-          }
+        if (samecode.test(lang))
+            lang = lang.replace(/-.*$/, '');
 
-          i18n.loadedLanguage = JSON.parse(fs.readFileSync(path.join(this.localesDir, 
-               fs.existsSync(path.join(this.localesDir, lang + '.json')) ?
-                    lang + '.json' : 'en.json'
-          )));
-     }
+        switch (lang)
+        {
+            case 'ja-jp':
+                lang = 'ja';
+
+            break;
+
+            case 'vi-vn':
+                lang = 'vi';
+
+            break;
+        }
+
+        i18n.loadedLanguage = JSON.parse(fs.readFileSync(path.join(this.localesDir, 
+            fs.existsSync(path.join(this.localesDir, lang + '.json')) ?
+                lang + '.json' : 'en.json'
+        )));
+    }
 }