Quellcode durchsuchen

working multilingual :)

karl.hudgell vor 4 Jahren
Ursprung
Commit
f020e27f8c
8 geänderte Dateien mit 137 neuen und 16 gelöschten Zeilen
  1. 12 1
      app.js
  2. 46 0
      lang/es.json
  3. 8 1
      lib/adb.js
  4. 7 3
      lib/common.js
  5. 8 0
      lib/files.js
  6. 1 0
      lib/globalVars.js
  7. 22 1
      lib/inquirer.js
  8. 33 10
      pages/pages.js

+ 12 - 1
app.js

@@ -1,3 +1,14 @@
 const pages = require('./pages/pages')
+const Language = require("@shypes/language-translator");
+const globalVariables = require('./lib/globalVars');
+
+async function main() {
+    lang = await pages.selectLanguage();
+    globalVariables.language = lang.selection
+    await pages.connectWatch()
+}
+
+main()
+
+
 
-pages.connectWatch();

+ 46 - 0
lang/es.json

@@ -0,0 +1,46 @@
+{
+    "main-menu-question": "¿Qué quieres hacer?",
+    "main-menu-item-1": "1-Click Karl0ss Klean",
+    "main-menu-item-2": "Eliminar aplicaciones Xiaomi",
+    "main-menu-item-3": "Restaurar aplicaciones Xiaomi",
+    "main-menu-item-4": "Instalar aplicaciones compatibles",
+    "main-menu-item-5": "Restaura CUALQUIER aplicación",
+    "main-menu-item-6": "Aplicaciones de instalación por lotes",
+    "main-menu-item-7": "Eliminar por lotes las aplicaciones instaladas",
+    "main-menu-item-8": "Salir",
+    "connection-type-message": "¿Cómo desea conectarse?",
+    "connect-wifi-message":"¿Cuál es su MiWatch IpAdress?",
+    "restore-app-message": "¿Qué aplicaciones quieres restaurar?",
+    "install-compatible-apps-message": "¿Qué aplicaciones quieres instalar?",
+    "remove-installed-apps-message": "¿Qué aplicaciones instaladas desea eliminar?",
+    "restore-any-app-message": "¿Qué aplicación desea restaurar?",
+    "header-remove-installed-apps": "Eliminar aplicaciones instaladas",
+    "packages-recieved-from-watch": "Paquetes recibidos desde watch",
+    "device-not-authorised": "Dispositivo no autorizado",
+    "restarting-adb": "Reiniciando ADB",
+    "please-reconnect-to-watch": "Vuelve a conectarte para mirar",
+    "remove-installed-apps-failed": "Falló la eliminación de aplicaciones instaladas",
+    "removing": "Eliminando",
+    "removal-complete": "Eliminación completa",
+    "installing": "Instalando",
+    "restoring": "Restaurando",
+    "remove-selected-user-apps": "Aplicaciones de usuario seleccionadas eliminadas",
+    "install-compatible-apps-header": "Instalar aplicaciones compatibles",
+    "simple-weather-activated-on-watch": "simpleWeather activado en el reloj",
+    "morelocale-activated-on-watch": "moreLocale activado durante el reloj",
+    "alberto-locale-activated-on-watch": "Alberto Locale activado durante el reloj",
+    "compatible-apps-installed": "Aplicaciones compatibles instaladas",
+    "compatible-apps": "Aplicaciones compatibles",
+    "remove-xiaomi-apps": "Eliminar aplicaciones Xiaomi",
+    "downloading-compatible-apps": "Descarga de aplicaciones compatibles",
+    "installing-apps": "Instalar aplicaciones",
+    "downloading-latest": "Descargando la última",
+    "complete": "Completo",
+    "failed": "Falló",
+    "restoring-apps-complete": "Restauración de aplicaciones completa",
+    "batch-install-apps-complete": "Instalación por lotes de aplicaciones completa",
+    "connect-to-watch": "Conectarse al reloj",
+    "connected-via-usb": "Conectado mediante USB",
+    "connected-via-wifi": "Conectado a través de Wifi",
+    "not-connected": "No conectado"
+}

+ 8 - 1
lib/adb.js

@@ -6,7 +6,6 @@ const inquirer = require('../lib/inquirer');
 const common = require('./common')
 const chalk = require('chalk');
 const globalVariables = require('../lib/globalVars');
-const { removeAppsList } = require('../lib/inquirer');
 
 if (process.platform === 'win32' || process.platform === 'win64') {
   adbRun = 'adb'
@@ -16,6 +15,7 @@ if (process.platform === 'win32' || process.platform === 'win64') {
 
 module.exports = {
   installApk: async (element) => {
+    Language.setActiveLang(globalVariables.language)
     result = await shellExec(adbRun + ' install -r ' + element).then(async function (result) {
       if (result.stderr != '') {
         logger.info(await Language.get('device-not-authorised'));
@@ -49,6 +49,7 @@ module.exports = {
     });
   },
   removeApk: async (package) => {
+    Language.setActiveLang(globalVariables.language)
     result = await shellExec(adbRun + ' uninstall ' + package)
     if (result.stderr != '') {
       logger.info('Error ' + result.stderr);
@@ -59,6 +60,7 @@ module.exports = {
     }
   },
   removeXiaomiApk: async (package) => {
+    Language.setActiveLang(globalVariables.language)
     result = await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + package)
     if (result.stderr != '') {
       logger.info('Error ' + result.stderr);
@@ -69,6 +71,7 @@ module.exports = {
     }
   },
   restoreXiaomiApk: async (package) => {
+    Language.setActiveLang(globalVariables.language)
     result = await shellExec(adbRun + ' shell cmd package install-existing ' + package)
     if (result.stderr != '') {
       logger.info('Error ' + result.stderr);
@@ -79,6 +82,7 @@ module.exports = {
     }
   },
   restoreAnyApk: async (package) => {
+    Language.setActiveLang(globalVariables.language)
     result = await shellExec(adbRun + ' shell cmd package install-existing ' + package.restoreAnyApp)
     if (result.stderr != '') {
       logger.info('Error ' + result.stderr);
@@ -92,6 +96,7 @@ module.exports = {
     }
   },
   getInstalledPacakges: async () => {
+    Language.setActiveLang(globalVariables.language)
     result = await shellExec(adbRun + ' shell pm list packages -3')
     logger.info(await Language.get('packages-recieved-from-watch'))
     if (result.stderr.includes('error')) {
@@ -119,11 +124,13 @@ module.exports = {
     }
   },
   killAdbServer: async () => {
+    Language.setActiveLang(globalVariables.language)
     let result = await shellExec(adbRun + ' kill-server')
     logger.info('Restarting ADB')
     logger.info(result.stdout)
   },
   watchConnection: async (value) => {
+    Language.setActiveLang(globalVariables.language)
     if (value.connection === "usb") {
       await module.exports.killAdbServer()
       result = await shellExec(adbRun + ' devices')

+ 7 - 3
lib/common.js

@@ -7,13 +7,12 @@ const fetch = require('node-fetch');
 var shell = require('shelljs');
 const logger = require('perfect-logger');
 const Language = require("@shypes/language-translator");
-// var remote = require('remote-file-size')
 const globalVariables = require('../lib/globalVars');
 var chalkRainbow = require('chalk-rainbow')
 
-
 module.exports = {
     header: async (page) => {
+        Language.setActiveLang(globalVariables.language)
         clear();
         console.log(
             chalkRainbow(
@@ -24,7 +23,6 @@ module.exports = {
         );
         console.log(chalk.red('                                                                                     ' + pjson.version));
         console.log();
-
         console.log(
             chalk.red(
                 '-------------------------------------------------------------------------------------------------------'
@@ -38,6 +36,7 @@ module.exports = {
         await new Promise(resolve => setTimeout(resolve, time));
     },
     connectionCheck: async () => {
+        Language.setActiveLang(globalVariables.language)
         if (globalVariables.localUSB === "X") {
             console.log(chalk.white('MiWatch: ') + chalk.green(await Language.get('connected-via-usb')))
         }
@@ -49,6 +48,7 @@ module.exports = {
         }
     },
     downloadFile: async (url, path) => {
+        Language.setActiveLang(globalVariables.language)
         const res = await fetch(url);
         // await module.exports.downloadSize(url)
         await new Promise(async (resolve, reject) => {
@@ -81,6 +81,7 @@ module.exports = {
         logger.info(await Language.get(item, 'en'))
     },
     print: async (item, colour) => {
+        Language.setActiveLang(globalVariables.language)
         switch (colour) {
             case 'green':
                 console.log(chalk.green(await Language.get(item)))
@@ -91,6 +92,9 @@ module.exports = {
             case 'whiteBright':
                 console.log(chalk.whiteBright(await Language.get(item)))
                 break;
+            case 'rainbow':
+                console.log(chalkRainbow(await Language.get(item)))
+                break;
             default:
                 console.log(chalk.white(await Language.get(item)))
                 break;

+ 8 - 0
lib/files.js

@@ -2,6 +2,10 @@ const fs = require('fs');
 const path = require('path');
 const tiny = require("@peterpanhihi/tiny");
 const getFilesIn = require('get-files-in')
+const globalVariables = require('../lib/globalVars');
+const Language = require("@shypes/language-translator");
+
+Language.setActiveLang(globalVariables.language)
 
 
 module.exports = {
@@ -45,4 +49,8 @@ module.exports = {
     const result = getFilesIn(path, matchFiletypes = ["apk"], checkSubDirectories = false)
     return result
   },
+  getLanguageFiles: () => {
+    const result = getFilesIn('./lang/', matchFiletypes = ["json"], checkSubDirectories = false)
+    return result
+  },
 }

+ 1 - 0
lib/globalVars.js

@@ -1,6 +1,7 @@
 class globalVariables {
     localUSB = "";
     miWatchIpaddress = "";
+    language = "";
     usersList=[];
  }
 

+ 22 - 1
lib/inquirer.js

@@ -1,11 +1,12 @@
 const inquirer = require("inquirer");
 const files = require("./files");
 const common = require("./common");
-
 const Language = require("@shypes/language-translator");
+const globalVariables = require('../lib/globalVars');
 
 module.exports = {
   mainMenu: async () => {
+    Language.setActiveLang(globalVariables.language)
     const questions = [{
       type: "list",
       name: "mainMenu",
@@ -26,7 +27,22 @@ module.exports = {
     },];
     return inquirer.prompt(questions);
   },
+  LanguageSelect: async () => {
+    langList = files.getLanguageFiles()
+    langList = langList.map(s => s.slice(5, -5));
+    const questions = [{
+      type: "list",
+      name: "selection",
+      message: await Language.get('Select Language'),
+      choices: langList,
+      filter: function (val) {
+        return val.toLowerCase();
+      },
+    },];
+    return inquirer.prompt(questions);
+  },
   connectionType: async () => {
+    Language.setActiveLang(globalVariables.language)
     const questions = [{
       type: "list",
       name: "connection",
@@ -42,6 +58,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   connectWifi: async () => {
+    Language.setActiveLang(globalVariables.language)
     const questions = [{
       type: "input",
       name: "connectWifi",
@@ -50,6 +67,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   removeAppsList: async () => {
+    Language.setActiveLang(globalVariables.language)
     const packages = await files.loadPackageList();
 
     const questions = [{
@@ -61,6 +79,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   compatibleApps: async () => {
+    Language.setActiveLang(globalVariables.language)
     const compatibleApps = await common.getCompatibleAppsList()
     const appList = []
     for (let element of compatibleApps) {
@@ -75,6 +94,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   installedApps: async (installedApps) => {
+    Language.setActiveLang(globalVariables.language)
     const questions = [{
       type: "checkbox",
       name: "removeAppsList",
@@ -84,6 +104,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   restoreAnyApp: async () => {
+    Language.setActiveLang(globalVariables.language)
     const questions = [{
       type: "input",
       name: "restoreAnyApp",

+ 33 - 10
pages/pages.js

@@ -5,7 +5,6 @@ const files = require('../lib/files')
 const logger = require('perfect-logger');
 const Language = require("@shypes/language-translator");
 const adb = require('../lib/adb');
-const { dualLog } = require('../lib/common');
 
 logger.info(process.platform + " detected")
 if (process.platform === 'win32' || process.platform === 'win64') {
@@ -174,35 +173,59 @@ module.exports = {
         }
     },
 
+    selectLanguage: async () => {
+        common.header('Select Language')
+        common.log('Select Language')
+        // const value = await inquirer.connectionType()
+        const v = await inquirer.LanguageSelect()
+        // connected = await adb.watchConnection(value)
+        // if (connected != true) {
+        //     module.exports.connectWatch()
+        // } else {
+        //     module.exports.mainMenu()
+        // }
+        return v
+    },
+
     mainMenu: async () => {
         common.header('Main Menu')
         const mainMenuSelection = await inquirer.mainMenu();
+        menu_1 = await Language.get('main-menu-item-1')
+        menu_2 = await Language.get('main-menu-item-2')
+        menu_3 = await Language.get('main-menu-item-3')
+        menu_4 = await Language.get('main-menu-item-4')
+        menu_5 = await Language.get('main-menu-item-5')
+        menu_6 = await Language.get('main-menu-item-6')
+        menu_7 = await Language.get('main-menu-item-7')
+        menu_8 = await Language.get('main-menu-item-8')
+        menu_9 = await Language.get('main-menu-item-9')
+
         switch (mainMenuSelection.mainMenu) {
-            case '1-click karl0ss klean':
+            case menu_1.toLowerCase():
                 module.exports.oneClick()
                 break;
-            case 'remove xiaomi apps':
+            case menu_2.toLowerCase():
                 module.exports.removeXiaomiApps()
                 break;
-            case 'restore xiaomi apps':
+            case menu_3.toLowerCase():
                 module.exports.restoreXiaomiApps()
                 break;
-            case 'install compatible apps':
+            case menu_4.toLowerCase():
                 module.exports.installCompatibleApps()
                 break;
-            case 'restore any app':
+            case menu_5.toLowerCase():
                 module.exports.restoreAnyApp()
                 break;
-            case 'batch install apps':
+            case menu_6.toLowerCase():
                 module.exports.batchInstallApps()
                 break;
-            case 'batch remove installed apps':
+            case menu_7.toLowerCase():
                 module.exports.batchRemoveInstalledApps()
                 break;
-            case 'connect to miwatch':
+            case menu_8.toLowerCase():
                 module.exports.connectWatch()
                 break;
-            case 'quit':
+            case menu_9.toLowerCase():
                 break;
             default:
             // code block