working multilingual :)
This commit is contained in:
parent
2905c6675a
commit
f020e27f8c
13
app.js
13
app.js
@ -1,3 +1,14 @@
|
|||||||
const pages = require('./pages/pages')
|
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
46
lang/es.json
Normal 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"
|
||||||
|
}
|
@ -6,7 +6,6 @@ const inquirer = require('../lib/inquirer');
|
|||||||
const common = require('./common')
|
const common = require('./common')
|
||||||
const chalk = require('chalk');
|
const chalk = require('chalk');
|
||||||
const globalVariables = require('../lib/globalVars');
|
const globalVariables = require('../lib/globalVars');
|
||||||
const { removeAppsList } = require('../lib/inquirer');
|
|
||||||
|
|
||||||
if (process.platform === 'win32' || process.platform === 'win64') {
|
if (process.platform === 'win32' || process.platform === 'win64') {
|
||||||
adbRun = 'adb'
|
adbRun = 'adb'
|
||||||
@ -16,6 +15,7 @@ if (process.platform === 'win32' || process.platform === 'win64') {
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
installApk: async (element) => {
|
installApk: async (element) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
result = await shellExec(adbRun + ' install -r ' + element).then(async function (result) {
|
result = await shellExec(adbRun + ' install -r ' + element).then(async function (result) {
|
||||||
if (result.stderr != '') {
|
if (result.stderr != '') {
|
||||||
logger.info(await Language.get('device-not-authorised'));
|
logger.info(await Language.get('device-not-authorised'));
|
||||||
@ -49,6 +49,7 @@ module.exports = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
removeApk: async (package) => {
|
removeApk: async (package) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
result = await shellExec(adbRun + ' uninstall ' + package)
|
result = await shellExec(adbRun + ' uninstall ' + package)
|
||||||
if (result.stderr != '') {
|
if (result.stderr != '') {
|
||||||
logger.info('Error ' + result.stderr);
|
logger.info('Error ' + result.stderr);
|
||||||
@ -59,6 +60,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
removeXiaomiApk: async (package) => {
|
removeXiaomiApk: async (package) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
result = await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + package)
|
result = await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + package)
|
||||||
if (result.stderr != '') {
|
if (result.stderr != '') {
|
||||||
logger.info('Error ' + result.stderr);
|
logger.info('Error ' + result.stderr);
|
||||||
@ -69,6 +71,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
restoreXiaomiApk: async (package) => {
|
restoreXiaomiApk: async (package) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
result = await shellExec(adbRun + ' shell cmd package install-existing ' + package)
|
result = await shellExec(adbRun + ' shell cmd package install-existing ' + package)
|
||||||
if (result.stderr != '') {
|
if (result.stderr != '') {
|
||||||
logger.info('Error ' + result.stderr);
|
logger.info('Error ' + result.stderr);
|
||||||
@ -79,6 +82,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
restoreAnyApk: async (package) => {
|
restoreAnyApk: async (package) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
result = await shellExec(adbRun + ' shell cmd package install-existing ' + package.restoreAnyApp)
|
result = await shellExec(adbRun + ' shell cmd package install-existing ' + package.restoreAnyApp)
|
||||||
if (result.stderr != '') {
|
if (result.stderr != '') {
|
||||||
logger.info('Error ' + result.stderr);
|
logger.info('Error ' + result.stderr);
|
||||||
@ -92,6 +96,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
getInstalledPacakges: async () => {
|
getInstalledPacakges: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
result = await shellExec(adbRun + ' shell pm list packages -3')
|
result = await shellExec(adbRun + ' shell pm list packages -3')
|
||||||
logger.info(await Language.get('packages-recieved-from-watch'))
|
logger.info(await Language.get('packages-recieved-from-watch'))
|
||||||
if (result.stderr.includes('error')) {
|
if (result.stderr.includes('error')) {
|
||||||
@ -119,11 +124,13 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
killAdbServer: async () => {
|
killAdbServer: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
let result = await shellExec(adbRun + ' kill-server')
|
let result = await shellExec(adbRun + ' kill-server')
|
||||||
logger.info('Restarting ADB')
|
logger.info('Restarting ADB')
|
||||||
logger.info(result.stdout)
|
logger.info(result.stdout)
|
||||||
},
|
},
|
||||||
watchConnection: async (value) => {
|
watchConnection: async (value) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
if (value.connection === "usb") {
|
if (value.connection === "usb") {
|
||||||
await module.exports.killAdbServer()
|
await module.exports.killAdbServer()
|
||||||
result = await shellExec(adbRun + ' devices')
|
result = await shellExec(adbRun + ' devices')
|
||||||
|
@ -7,13 +7,12 @@ const fetch = require('node-fetch');
|
|||||||
var shell = require('shelljs');
|
var shell = require('shelljs');
|
||||||
const logger = require('perfect-logger');
|
const logger = require('perfect-logger');
|
||||||
const Language = require("@shypes/language-translator");
|
const Language = require("@shypes/language-translator");
|
||||||
// var remote = require('remote-file-size')
|
|
||||||
const globalVariables = require('../lib/globalVars');
|
const globalVariables = require('../lib/globalVars');
|
||||||
var chalkRainbow = require('chalk-rainbow')
|
var chalkRainbow = require('chalk-rainbow')
|
||||||
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
header: async (page) => {
|
header: async (page) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
clear();
|
clear();
|
||||||
console.log(
|
console.log(
|
||||||
chalkRainbow(
|
chalkRainbow(
|
||||||
@ -24,7 +23,6 @@ module.exports = {
|
|||||||
);
|
);
|
||||||
console.log(chalk.red(' ' + pjson.version));
|
console.log(chalk.red(' ' + pjson.version));
|
||||||
console.log();
|
console.log();
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
chalk.red(
|
chalk.red(
|
||||||
'-------------------------------------------------------------------------------------------------------'
|
'-------------------------------------------------------------------------------------------------------'
|
||||||
@ -38,6 +36,7 @@ module.exports = {
|
|||||||
await new Promise(resolve => setTimeout(resolve, time));
|
await new Promise(resolve => setTimeout(resolve, time));
|
||||||
},
|
},
|
||||||
connectionCheck: async () => {
|
connectionCheck: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
if (globalVariables.localUSB === "X") {
|
if (globalVariables.localUSB === "X") {
|
||||||
console.log(chalk.white('MiWatch: ') + chalk.green(await Language.get('connected-via-usb')))
|
console.log(chalk.white('MiWatch: ') + chalk.green(await Language.get('connected-via-usb')))
|
||||||
}
|
}
|
||||||
@ -49,6 +48,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
downloadFile: async (url, path) => {
|
downloadFile: async (url, path) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
const res = await fetch(url);
|
const res = await fetch(url);
|
||||||
// await module.exports.downloadSize(url)
|
// await module.exports.downloadSize(url)
|
||||||
await new Promise(async (resolve, reject) => {
|
await new Promise(async (resolve, reject) => {
|
||||||
@ -81,6 +81,7 @@ module.exports = {
|
|||||||
logger.info(await Language.get(item, 'en'))
|
logger.info(await Language.get(item, 'en'))
|
||||||
},
|
},
|
||||||
print: async (item, colour) => {
|
print: async (item, colour) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
switch (colour) {
|
switch (colour) {
|
||||||
case 'green':
|
case 'green':
|
||||||
console.log(chalk.green(await Language.get(item)))
|
console.log(chalk.green(await Language.get(item)))
|
||||||
@ -91,6 +92,9 @@ module.exports = {
|
|||||||
case 'whiteBright':
|
case 'whiteBright':
|
||||||
console.log(chalk.whiteBright(await Language.get(item)))
|
console.log(chalk.whiteBright(await Language.get(item)))
|
||||||
break;
|
break;
|
||||||
|
case 'rainbow':
|
||||||
|
console.log(chalkRainbow(await Language.get(item)))
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
console.log(chalk.white(await Language.get(item)))
|
console.log(chalk.white(await Language.get(item)))
|
||||||
break;
|
break;
|
||||||
|
@ -2,6 +2,10 @@ const fs = require('fs');
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const tiny = require("@peterpanhihi/tiny");
|
const tiny = require("@peterpanhihi/tiny");
|
||||||
const getFilesIn = require('get-files-in')
|
const getFilesIn = require('get-files-in')
|
||||||
|
const globalVariables = require('../lib/globalVars');
|
||||||
|
const Language = require("@shypes/language-translator");
|
||||||
|
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
@ -45,4 +49,8 @@ module.exports = {
|
|||||||
const result = getFilesIn(path, matchFiletypes = ["apk"], checkSubDirectories = false)
|
const result = getFilesIn(path, matchFiletypes = ["apk"], checkSubDirectories = false)
|
||||||
return result
|
return result
|
||||||
},
|
},
|
||||||
|
getLanguageFiles: () => {
|
||||||
|
const result = getFilesIn('./lang/', matchFiletypes = ["json"], checkSubDirectories = false)
|
||||||
|
return result
|
||||||
|
},
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
class globalVariables {
|
class globalVariables {
|
||||||
localUSB = "";
|
localUSB = "";
|
||||||
miWatchIpaddress = "";
|
miWatchIpaddress = "";
|
||||||
|
language = "";
|
||||||
usersList=[];
|
usersList=[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
const inquirer = require("inquirer");
|
const inquirer = require("inquirer");
|
||||||
const files = require("./files");
|
const files = require("./files");
|
||||||
const common = require("./common");
|
const common = require("./common");
|
||||||
|
|
||||||
const Language = require("@shypes/language-translator");
|
const Language = require("@shypes/language-translator");
|
||||||
|
const globalVariables = require('../lib/globalVars');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
mainMenu: async () => {
|
mainMenu: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
const questions = [{
|
const questions = [{
|
||||||
type: "list",
|
type: "list",
|
||||||
name: "mainMenu",
|
name: "mainMenu",
|
||||||
@ -26,7 +27,22 @@ module.exports = {
|
|||||||
},];
|
},];
|
||||||
return inquirer.prompt(questions);
|
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 () => {
|
connectionType: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
const questions = [{
|
const questions = [{
|
||||||
type: "list",
|
type: "list",
|
||||||
name: "connection",
|
name: "connection",
|
||||||
@ -42,6 +58,7 @@ module.exports = {
|
|||||||
return inquirer.prompt(questions);
|
return inquirer.prompt(questions);
|
||||||
},
|
},
|
||||||
connectWifi: async () => {
|
connectWifi: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
const questions = [{
|
const questions = [{
|
||||||
type: "input",
|
type: "input",
|
||||||
name: "connectWifi",
|
name: "connectWifi",
|
||||||
@ -50,6 +67,7 @@ module.exports = {
|
|||||||
return inquirer.prompt(questions);
|
return inquirer.prompt(questions);
|
||||||
},
|
},
|
||||||
removeAppsList: async () => {
|
removeAppsList: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
const packages = await files.loadPackageList();
|
const packages = await files.loadPackageList();
|
||||||
|
|
||||||
const questions = [{
|
const questions = [{
|
||||||
@ -61,6 +79,7 @@ module.exports = {
|
|||||||
return inquirer.prompt(questions);
|
return inquirer.prompt(questions);
|
||||||
},
|
},
|
||||||
compatibleApps: async () => {
|
compatibleApps: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
const compatibleApps = await common.getCompatibleAppsList()
|
const compatibleApps = await common.getCompatibleAppsList()
|
||||||
const appList = []
|
const appList = []
|
||||||
for (let element of compatibleApps) {
|
for (let element of compatibleApps) {
|
||||||
@ -75,6 +94,7 @@ module.exports = {
|
|||||||
return inquirer.prompt(questions);
|
return inquirer.prompt(questions);
|
||||||
},
|
},
|
||||||
installedApps: async (installedApps) => {
|
installedApps: async (installedApps) => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
const questions = [{
|
const questions = [{
|
||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
name: "removeAppsList",
|
name: "removeAppsList",
|
||||||
@ -84,6 +104,7 @@ module.exports = {
|
|||||||
return inquirer.prompt(questions);
|
return inquirer.prompt(questions);
|
||||||
},
|
},
|
||||||
restoreAnyApp: async () => {
|
restoreAnyApp: async () => {
|
||||||
|
Language.setActiveLang(globalVariables.language)
|
||||||
const questions = [{
|
const questions = [{
|
||||||
type: "input",
|
type: "input",
|
||||||
name: "restoreAnyApp",
|
name: "restoreAnyApp",
|
||||||
|
@ -5,7 +5,6 @@ const files = require('../lib/files')
|
|||||||
const logger = require('perfect-logger');
|
const logger = require('perfect-logger');
|
||||||
const Language = require("@shypes/language-translator");
|
const Language = require("@shypes/language-translator");
|
||||||
const adb = require('../lib/adb');
|
const adb = require('../lib/adb');
|
||||||
const { dualLog } = require('../lib/common');
|
|
||||||
|
|
||||||
logger.info(process.platform + " detected")
|
logger.info(process.platform + " detected")
|
||||||
if (process.platform === 'win32' || process.platform === 'win64') {
|
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 () => {
|
mainMenu: async () => {
|
||||||
common.header('Main Menu')
|
common.header('Main Menu')
|
||||||
const mainMenuSelection = await inquirer.mainMenu();
|
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) {
|
switch (mainMenuSelection.mainMenu) {
|
||||||
case '1-click karl0ss klean':
|
case menu_1.toLowerCase():
|
||||||
module.exports.oneClick()
|
module.exports.oneClick()
|
||||||
break;
|
break;
|
||||||
case 'remove xiaomi apps':
|
case menu_2.toLowerCase():
|
||||||
module.exports.removeXiaomiApps()
|
module.exports.removeXiaomiApps()
|
||||||
break;
|
break;
|
||||||
case 'restore xiaomi apps':
|
case menu_3.toLowerCase():
|
||||||
module.exports.restoreXiaomiApps()
|
module.exports.restoreXiaomiApps()
|
||||||
break;
|
break;
|
||||||
case 'install compatible apps':
|
case menu_4.toLowerCase():
|
||||||
module.exports.installCompatibleApps()
|
module.exports.installCompatibleApps()
|
||||||
break;
|
break;
|
||||||
case 'restore any app':
|
case menu_5.toLowerCase():
|
||||||
module.exports.restoreAnyApp()
|
module.exports.restoreAnyApp()
|
||||||
break;
|
break;
|
||||||
case 'batch install apps':
|
case menu_6.toLowerCase():
|
||||||
module.exports.batchInstallApps()
|
module.exports.batchInstallApps()
|
||||||
break;
|
break;
|
||||||
case 'batch remove installed apps':
|
case menu_7.toLowerCase():
|
||||||
module.exports.batchRemoveInstalledApps()
|
module.exports.batchRemoveInstalledApps()
|
||||||
break;
|
break;
|
||||||
case 'connect to miwatch':
|
case menu_8.toLowerCase():
|
||||||
module.exports.connectWatch()
|
module.exports.connectWatch()
|
||||||
break;
|
break;
|
||||||
case 'quit':
|
case menu_9.toLowerCase():
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// code block
|
// code block
|
||||||
|
Loading…
x
Reference in New Issue
Block a user