working multilingual :)

This commit is contained in:
karl.hudgell 2020-08-29 12:34:02 +01:00
parent 2905c6675a
commit f020e27f8c
8 changed files with 137 additions and 16 deletions

13
app.js
View File

@ -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
lang/es.json Normal file
View File

@ -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"
}

View File

@ -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')

View File

@ -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;

View File

@ -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
},
}

View File

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

View File

@ -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",

View File

@ -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