fix: monitor information

This commit fixes monitor information, which now is properly working and named, and also has proper status words.
This commit is contained in:
ThePedroo
2024-11-12 20:16:37 -03:00
parent e55a825f7d
commit ea42fbea41
14 changed files with 223 additions and 283 deletions

View File

@@ -22,7 +22,7 @@
<script src="js/smallPage/errorHistory.js" type="module"></script>
<script src="js/restoreError.js" type="module"></script>
<script src="js/navbar.js" type="module"></script>
<script src="js/daemonActions.js" type="module"></script>
<script src="js/monitorActions.js" type="module"></script>
<script src="js/switcher/fontChanger.js" type="module"></script>
<script src="js/main.js" type="module"></script>
</head>
@@ -107,33 +107,18 @@
<div id="panel_actions" class="panel">
<div id="panel_actions_header" class="header">Actions</div>
<div style="padding: 45px 0px;"></div>
<!-- INFO: Settings card body (Daemon32) -->
<div id="daemon32" class="dimc" style="display: block; margin: 0 15px 0 15px; border-radius: 20px;">
<!-- INFO: Settings card body (monitor) -->
<div id="monitor" class="dimc" style="display: block; margin: 0 15px 0 15px; border-radius: 20px;">
<div class="dimc liste" style="padding: 30px 22px 30px; border-radius: 20px;">
<div id="daemon32_title" class="dimc" style="font-size: 1.22em;">Monitor (32 bit)</div>
<div id="daemon32_status" class="dimc" style="font-size: 1.1em;">Unknown</div>
<div id="monitor_title" class="dimc" style="font-size: 1.22em;">Monitor</div>
<div id="monitor_status" class="dimc" style="font-size: 1.1em;">Unknown</div>
</div>
<div class="small_card_bg" style="padding: 25px 20px 25px 20px; border-radius: 20px;">
<div class="small_card_bg button_list">
<div id="daemon32_stop_button" class="center button">Stop</div>
<div id="daemon32_start_button" class="center button">Start</div>
<div id="daemon32_pause_button" class="center button">Pause</div>
</div>
</div>
</div>
<!-- INFO: Settings card body (Daemon64) -->
<div id="daemon64" class="dimc" style="display: block; margin: 15px 15px 0 15px; border-radius: 20px;">
<div class="dimc liste" style="padding: 30px 22px 30px; border-radius: 20px;">
<div id="daemon64_title" class="dimc" style="font-size: 1.22em;">Monitor (64 bit)</div>
<div id="daemon64_status" class="dimc" style="font-size: 1.1em;">Unknown</div>
</div>
<div class="small_card_bg" style="padding: 25px 20px 25px 20px; border-radius: 20px;">
<div class="small_card_bg button_list">
<div id="daemon64_stop_button" class="center button">Stop</div>
<div id="daemon64_start_button" class="center button">Start</div>
<div id="daemon64_pause_button" class="center button">Pause</div>
<div id="monitor_stop_button" class="center button">Stop</div>
<div id="monitor_start_button" class="center button">Start</div>
<div id="monitor_pause_button" class="center button">Pause</div>
</div>
</div>
</div>

View File

@@ -1,37 +0,0 @@
import { exec } from './kernelsu.js'
const daemon64_start = document.getElementById('daemon64_start_button')
const daemon64_stop = document.getElementById('daemon64_stop_button')
const daemon64_pause = document.getElementById('daemon64_pause_button')
if (daemon64_start) {
daemon64_start.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace64 ctl start')
})
daemon64_stop.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace64 ctl exit')
})
daemon64_pause.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace64 ctl stop')
})
}
const daemon32_start = document.getElementById('daemon32_start_button')
const daemon32_stop = document.getElementById('daemon32_stop_button')
const daemon32_pause = document.getElementById('daemon32_pause_button')
if (daemon32_start) {
daemon32_start.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace32 ctl start')
})
daemon32_stop.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace32 ctl exit')
})
daemon32_pause.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace32 ctl stop')
})
}

View File

@@ -49,8 +49,7 @@ export function setErrorData(errorLog) {
const zygote64_div = document.getElementById('zygote64')
const zygote32_div = document.getElementById('zygote32')
const daemon64_div = document.getElementById('daemon64')
const daemon32_div = document.getElementById('daemon32')
const monitor_status = document.getElementById('monitor_status')
const zygote32_status_div = document.getElementById('zygote32_status')
const zygote64_status_div = document.getElementById('zygote64_status')
@@ -69,12 +68,10 @@ export function setErrorData(errorLog) {
if (!has64BitSupport) {
zygote64_div.style.display = 'none'
daemon64_div.style.display = 'none'
}
if (!has32BitSupport) {
zygote32_div.style.display = 'none'
daemon32_div.style.display = 'none'
}
const catCmd = await exec('/system/bin/cat /data/adb/rezygisk/status')
@@ -82,11 +79,19 @@ export function setErrorData(errorLog) {
if (catCmd.errno === 0) {
const [ Version, Tracing, Daemon64, Zygote64 ] = catCmd.stdout.split('\n')
let hasOffset = false
/* TODO: Show the tracing state */
/* TODO: Show if daemon is running */
code_version.innerHTML = Version.split(': ')[1]
const tracingState = Tracing.split(': ')[1].split(' ')[0]
switch (tracingState) {
case '1': monitor_status.innerHTML = translations.page.actions.status.tracing; break;
case '2': monitor_status.innerHTML = translations.page.actions.status.stopping; break;
case '3': monitor_status.innerHTML = translations.page.actions.status.stopped; break;
case '4': monitor_status.innerHTML = translations.page.actions.status.exiting; break;
default: monitor_status.innerHTML = translations.page.actions.status.unknown;
}
if (has64BitSupport && Daemon64 && Daemon64.startsWith('Daemon64:')) {
hasOffset = true
@@ -107,11 +112,19 @@ export function setErrorData(errorLog) {
/* TODO: add handling for unknown status */
if (zygote64_injection_status === 'injected') {
zygote64_status_div.innerHTML = translations.page.home.info.zygote.injected
} else {
} else if (zygote64_injection_status === 'not injected') {
zygote64_status_div.innerHTML = translations.page.home.info.zygote.notInjected
zygote64_status = UNEXPECTED_FAIL
} else {
zygote64_status_div.innerHTML = translations.page.home.info.zygote.unknown
zygote64_status = UNEXPECTED_FAIL
}
} else if (has64BitSupport && (!Daemon64 || !Daemon64.startsWith('Daemon64:'))) {
zygote64_div.style.display = 'none'
zygote64_status = UNEXPECTED_FAIL
}
if (has32BitSupport) {
@@ -144,14 +157,17 @@ export function setErrorData(errorLog) {
if (zygote32_injection_status === 'injected') {
zygote32_status_div.innerHTML = translations.page.home.info.zygote.injected
} else {
} else if (zygote32_injection_status === 'not injected') {
zygote32_status_div.innerHTML = translations.page.home.info.zygote.notInjected
zygote32_status = UNEXPECTED_FAIL
} else {
zygote32_status_div.innerHTML = translations.page.home.info.zygote.unknown
zygote32_status = UNEXPECTED_FAIL
}
} else {
zygote32_div.style.display = 'none'
daemon32_div.style.display = 'none'
zygote32_status = UNEXPECTED_FAIL
}

View File

@@ -0,0 +1,19 @@
import { exec } from './kernelsu.js'
const monitor_start = document.getElementById('monitor_start_button')
const monitor_stop = document.getElementById('monitor_stop_button')
const monitor_pause = document.getElementById('monitor_pause_button')
if (monitor_start) {
monitor_start.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace64 ctl start')
})
monitor_stop.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace64 ctl exit')
})
monitor_pause.addEventListener('click', () => {
exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace64 ctl stop')
})
}

View File

@@ -1,60 +1,38 @@
export function translateActionPage(old_translations, new_translations) {
/* INFO: action card */
document.getElementById('panel_actions_header').innerHTML = new_translations.page.action.header
/* INFO: actions card */
document.getElementById('panel_actions_header').innerHTML = new_translations.page.actions.header
/* INFO: daemon32 small card */
document.getElementById('daemon32_title').innerHTML = new_translations.page.action.monitor["32"]
if (document.getElementById('daemon32_stop_button')) { /* INFO: Not all devices have 32-bit support */
document.getElementById('daemon32_stop_button').innerHTML = new_translations.page.action.daemonButton.stop
document.getElementById('daemon32_start_button').innerHTML = new_translations.page.action.daemonButton.start
document.getElementById('daemon32_pause_button').innerHTML = new_translations.page.action.daemonButton.pause
/* INFO: monitor small card */
document.getElementById('monitor_title').innerHTML = new_translations.page.actions.monitor
if (document.getElementById('monitor_stop_button')) { /* INFO: Not all devices have 32-bit support */
document.getElementById('monitor_stop_button').innerHTML = new_translations.page.actions.monitorButton.stop
document.getElementById('monitor_start_button').innerHTML = new_translations.page.actions.monitorButton.start
document.getElementById('monitor_pause_button').innerHTML = new_translations.page.actions.monitorButton.pause
}
/* INFO: daemon64 small card */
document.getElementById('daemon64_title').innerHTML = new_translations.page.action.monitor["64"]
if (document.getElementById('daemon64_stop_button')) { /* INFO: Not all devices have 64-bit support */
document.getElementById('daemon64_stop_button').innerHTML = new_translations.page.action.daemonButton.stop
document.getElementById('daemon64_start_button').innerHTML = new_translations.page.action.daemonButton.start
document.getElementById('daemon64_pause_button').innerHTML = new_translations.page.action.daemonButton.pause
}
/* INFO: daemon32 status card */
const daemon32_status = document.getElementById('daemon32_status')
switch (daemon32_status.innerHTML.replace(/(\r\n|\n|\r)/gm, '').trim()) {
case old_translations.page.action.status.unknown: {
daemon32_status.innerHTML = new_translations.page.action.status.unknown
/* INFO: monitor status card */
const monitor_status = document.getElementById('monitor_status')
switch (monitor_status.innerHTML.replace(/(\r\n|\n|\r)/gm, '').trim()) {
case old_translations.page.actions.status.tracing: {
monitor_status.innerHTML = new_translations.page.actions.status.tracing
break
}
case old_translations.page.action.status.notWorking: {
daemon32_status.innerHTML = new_translations.page.action.status.notWorking
case old_translations.page.actions.status.stopping: {
monitor_status.innerHTML = new_translations.page.actions.status.stopping
break
}
case old_translations.page.action.status.ok: {
daemon32_status.innerHTML = new_translations.page.action.status.ok
case old_translations.page.actions.status.stopped: {
monitor_status.innerHTML = new_translations.page.actions.status.stopped
break
}
}
/* INFO: daemon64 status card */
const daemon64_status = document.getElementById('daemon64_status')
switch (daemon64_status.innerHTML.replace(/(\r\n|\n|\r)/gm, '').trim()) {
case old_translations.page.action.status.unknown: {
daemon64_status.innerHTML = new_translations.page.action.status.unknown
break
}
case old_translations.page.action.status.notWorking: {
daemon64_status.innerHTML = new_translations.page.action.status.notWorking
break
}
case old_translations.page.action.status.ok: {
daemon64_status.innerHTML = new_translations.page.action.status.ok
case old_translations.page.actions.status.exiting: {
monitor_status.innerHTML = new_translations.page.actions.status.exiting
break
}
default: monitor_status.innerHTML = new_translations.page.actions.status.unknown
}
}

View File

@@ -18,8 +18,8 @@
"copy": "COPY",
"clear": "CLEAR ALL LOGS"
},
"header": "Fehlerhistorie",
"placeholder": "Es wurde kein Fehler festgestellt!"
"header": "Error History",
"placeholder": "No error log recorded here!"
}
},
"page": {
@@ -46,21 +46,20 @@
"notAvaliable": "Kein Modul nutzt Zygisk.",
"arch": "Architektur: "
},
"action": {
"actions": {
"header": "Aktion",
"daemonButton": {
"monitorButton": {
"start": "Start",
"stop": "Stopp",
"pause": "Pause"
},
"monitor": {
"32": "Monitor (32 Bit)",
"64": "Monitor (64 Bit)"
},
"monitor": "Monitor",
"status": {
"unknown": "Unbekannt",
"notWorking": "Funktioniert nicht",
"ok": "Funktioniert"
"tracing": "Tracing",
"stopping": "Stopping",
"stopped": "Stopped",
"exiting": "Exiting",
"unknown": "Unknown"
}
},
"settings": {

View File

@@ -46,21 +46,20 @@
"notAvaliable": "No modules using Zygisk here.",
"arch": "Architecture: "
},
"action": {
"actions": {
"header": "Action",
"daemonButton": {
"monitorButton": {
"start": "Start",
"stop": "Stop",
"pause": "Pause"
},
"monitor": {
"32": "Monitor (32 bit)",
"64": "Monitor (64 bit)"
},
"monitor": "Monitor",
"status": {
"unknown": "Unknown",
"notWorking": "Not Working",
"ok": "Working"
"tracing": "Tracing",
"stopping": "Stopping",
"stopped": "Stopped",
"exiting": "Exiting",
"unknown": "Unknown"
}
},
"settings": {
@@ -92,4 +91,4 @@
}
}
}
}
}

View File

@@ -46,21 +46,20 @@
"notAvaliable": "No modules using Zygisk here.",
"arch": "アーキテクチャー: "
},
"action": {
"actions": {
"header": "Action",
"daemonButton": {
"monitorButton": {
"start": "スタート",
"stop": "ストップ",
"pause": "Pause"
},
"monitor": {
"32": "Monitor (32 bit)",
"64": "Monitor (64 bit)"
},
"monitor": "Monitor",
"status": {
"unknown": "Unknown",
"notWorking": "Not Working",
"ok": "Working"
"tracing": "Tracing",
"stopping": "Stopping",
"stopped": "Stopped",
"exiting": "Exiting",
"unknown": "Unknown"
}
},
"settings": {
@@ -92,4 +91,4 @@
}
}
}
}
}

View File

@@ -5,7 +5,7 @@
},
"smallPage": {
"language": {
"header": "Escolha sua nova língua"
"header": "Escolha o seu novo idioma"
},
"theme": {
"header": "Escolha o seu novo tema",
@@ -15,11 +15,11 @@
},
"errorh": {
"buttons": {
"copy": "COPY",
"clear": "CLEAR ALL LOGS"
"copy": "COPIAR",
"clear": "LIMPAR TODOS OS REGISTROS"
},
"header": "Histórico de erros",
"placeholder": "Nenhum erro foi salvo aqui!"
"header": "Histórico de Erros",
"placeholder": "Nenhum registro de erros aqui!"
}
},
"page": {
@@ -33,7 +33,7 @@
},
"info": {
"version": "Versão",
"root": "Implementação de root",
"root": "Implementação de Root",
"zygote": {
"injected": "Injetado",
"notInjected": "Não Injetado",
@@ -46,21 +46,20 @@
"notAvaliable": "Nenhum módulo está usando Zygisk aqui.",
"arch": "Arquitetura: "
},
"action": {
"actions": {
"header": "Ações",
"daemonButton": {
"monitorButton": {
"start": "Iniciar",
"stop": "Parar",
"pause": "Pausar"
},
"monitor": {
"32": "Monitor (32 bit)",
"64": "Monitor (64 bit)"
},
"monitor": "Monitor",
"status": {
"unknown": "Desconhecido",
"notWorking": "Não funcionando",
"ok": "Funcionando"
"tracing": "Rastreando",
"stopping": "Parando",
"stopped": "Parado",
"exiting": "Desligando",
"unknown": "Desconhecido"
}
},
"settings": {
@@ -78,8 +77,8 @@
"description": "Mude para sua nova língua"
},
"logs": {
"header": "Histórico de erros",
"description": "Veja o histórico de erros inteiro"
"header": "Histórico de Erros",
"description": "Ver o histórico de erros inteiro"
},
"credits": {
"module": "Desenvolvedora do módulo",
@@ -87,7 +86,7 @@
"web": "Desenvolvedor do WebUI"
},
"license": {
"module": "Licença do módulo",
"module": "Licença do Módulo",
"web": "Licença do WebUI"
}
}

View File

@@ -18,8 +18,8 @@
"copy": "COPY",
"clear": "CLEAR ALL LOGS"
},
"header": "Jurnal erori",
"placeholder": "Nu a fost înregistrat niciun jurnal de erori aici!"
"header": "Error History",
"placeholder": "No error log recorded here!"
}
},
"page": {
@@ -46,21 +46,20 @@
"notAvaliable": "Nu există module care să folosească Zygisk.",
"arch": "Arhitectură: "
},
"action": {
"actions": {
"header": "Acțiune",
"daemonButton": {
"monitorButton": {
"start": "Pornire",
"stop": "Oprire",
"pause": "Pauză"
},
"monitor": {
"32": "Monitorizare (32 bit)",
"64": "Monitorizare (64 bit)"
},
"monitor": "Monitorizare",
"status": {
"unknown": "Necunoscut",
"notWorking": "Nu funcționează",
"ok": "Funcționează"
"tracing": "Tracing",
"stopping": "Stopping",
"stopped": "Stopped",
"exiting": "Exiting",
"unknown": "Unknown"
}
},
"settings": {

View File

@@ -1,91 +1,84 @@
{
"langName": "Русский (Россия)",
"langName": "Английский (США)",
"global": {
"unknown": "Неизвестно"
},
"modal": {
"logs": {
"header": "Журнал ошибок",
"placeholder": "Журнал ошибок пуст!"
}
},
"smallPage": {
"language": {
"header": "Выберите ваш язык"
"header": "Выберите ваш новый язык"
},
"theme": {
"header": "Выберите тему",
"header": "Выберите свою новую тему",
"dark": "Темная",
"light": "Светлая",
"system": "Системная тема"
"system": "На основе системной темы"
},
"errorh": {
"buttons": {
"copy": "COPY",
"clear": "CLEAR ALL LOGS"
},
"header": "Журнал ошибок",
"placeholder": "Журнал ошибок пуст!"
"header": "Error History",
"placeholder": "No error log recorded here!"
}
},
"page": {
"home": {
"header": "Главная",
"status": {
"unknown": "Неизвестен",
"unknown": "Неизвестно",
"notWorking": "Не работает",
"ok": "Работает",
"partially": "Работает частично"
"partially": "Частично работает"
},
"info": {
"version": "Версия",
"root": "Реализация ROOT",
"root": "Root реализация",
"zygote": {
"injected": "Инъецирован",
"notInjected": "Не инъецирован",
"unknown": "Неизвестен"
"injected": "Инъецировано",
"notInjected": "Не инъецировано",
"unknown": "Неизвестно"
}
}
},
"modules": {
"header": "Модули",
"notAvaliable": "Нет модулей, использующих Zygisk.",
"notAvaliable": "Здесь нет модулей, использующих Zygisk.",
"arch": "Архитектура: "
},
"action": {
"actions": {
"header": "Действие",
"daemonButton": {
"start": "Старт",
"monitorButton": {
"start": "Начать",
"stop": "Стоп",
"pause": "Пауза"
},
"monitor": {
"32": "Контроль (32 bit)",
"64": "Контроль (64 bit)"
},
"monitor": "Мониторинг",
"status": {
"unknown": "Неизвестен",
"notWorking": "Не работает",
"ok": "Работает"
"tracing": "Tracing",
"stopping": "Stopping",
"stopped": "Stopped",
"exiting": "Exiting",
"unknown": "Unknown"
}
},
"settings": {
"header": "Настройки",
"font": {
"header": "Использовать системный шрифт",
"description": "Эта опция включает системный шрифт в текущем WebUI. ПРИМЕЧАНИЕ: Может быть несовместим с FlipFont"
"header": "Включить системный шрифт",
"description": "Эта опция включит системный шрифт в текущем WebUI. \nПРИМЕЧАНИЕ: Может быть несовместимо с FlipFont"
},
"theme": {
"header": "Системная тема",
"description": "Использовать системную тему для текущего WebUI"
"description": "Выберите вашу системную тему для текущего WebUI"
},
"language": {
"header": "Выбрать язык",
"description": "Выберите ваш язык"
"header": "Сменить язык",
"description": "Измените на ваш новый язык"
},
"logs": {
"header": "Журнал ошибок",
"description": "Просмотреть журнал ошибок"
"header": "История ошибок",
"description": "Просмотреть весь журнал ваших ошибок"
},
"credits": {
"module": "Разработчик модуля",

View File

@@ -15,11 +15,11 @@
},
"errorh": {
"buttons": {
"copy": "SAO CHÉP",
"clear": "XOÁ TOÀN BỘ LOG"
"copy": "COPY",
"clear": "CLEAR ALL LOGS"
},
"header": "Lịch sử lỗi",
"placeholder": "Không có lỗi nào đã được ghi lại ở đây!"
"header": "Error History",
"placeholder": "No error log recorded here!"
}
},
"page": {
@@ -46,21 +46,20 @@
"notAvaliable": "Không có mô-đun nào sử dụng Zygisk ở đây!",
"arch": "Cấu trúc: "
},
"action": {
"actions": {
"header": "Trình điều khiển",
"daemonButton": {
"monitorButton": {
"start": "Chạy",
"stop": "Dừng",
"pause": "Tạm Dừng"
},
"monitor": {
"32": "Trình chạy (32 bit)",
"64": "Trình chạy (64 bit)"
},
"monitor": "Trình chạy",
"status": {
"unknown": "Không xác định",
"notWorking": "Không hoạt động",
"ok": "Đang hoạt động"
"tracing": "Tracing",
"stopping": "Stopping",
"stopped": "Stopped",
"exiting": "Exiting",
"unknown": "Unknown"
}
},
"settings": {
@@ -92,4 +91,4 @@
}
}
}
}
}

View File

@@ -46,21 +46,20 @@
"notAvaliable": "目前没有模块使用Zygisk",
"arch": "架构: "
},
"action": {
"actions": {
"header": "操作",
"daemonButton": {
"monitorButton": {
"start": "启动",
"stop": "停止",
"pause": "暂停"
},
"monitor": {
"32": "监视器 (32位)",
"64": "监视器 (64位)"
},
"monitor": "监视器",
"status": {
"unknown": "未知",
"notWorking": "未运行",
"ok": "运行中"
"tracing": "Tracing",
"stopping": "Stopping",
"stopped": "Stopped",
"exiting": "Exiting",
"unknown": "Unknown"
}
},
"settings": {

View File

@@ -1,101 +1,94 @@
{
"langName": "繁體中文 (中國台灣)",
"langName": "繁體中文(中國臺灣)",
"global": {
"unknown": "未知"
},
"modal": {
"logs": {
"header": "Error History",
"placeholder": "No error log recorded here!"
}
},
"smallPage": {
"language": {
"header": "選擇你的語言"
"header": "選擇語言"
},
"theme": {
"header": "Choose your new theme",
"dark": "Dark",
"light": "Light",
"system": "System Based"
"header": "選擇新主題",
"dark": "深色",
"light": "淺色",
"system": "基於系統"
},
"errorh": {
"buttons": {
"copy": "COPY",
"clear": "CLEAR ALL LOGS"
"copy": "複製",
"clear": "清除所有日誌"
},
"header": "Error History",
"placeholder": "No error log recorded here!"
"header": "錯誤歷史記錄",
"placeholder": "這裡沒有記錄錯誤日誌!"
}
},
"page": {
"home": {
"header": "Home",
"header": "首頁",
"status": {
"unknown": "Unknown",
"notWorking": "Not Working",
"ok": "Working",
"partially": "Partially Working"
"unknown": "未知",
"notWorking": "未運作",
"ok": "運作中",
"partially": "部分運作"
},
"info": {
"version": "版本",
"root": "Root實現",
"root": "根實施",
"zygote": {
"injected": "已入",
"notInjected": "注入失敗",
"injected": "已入",
"notInjected": "注入",
"unknown": "未知"
}
}
},
"modules": {
"header": "模",
"notAvaliable": "No modules using Zygisk here.",
"arch": "架構: "
"header": "模",
"notAvaliable": "此處沒有使用 Zygisk 的模組。",
"arch": "架構 "
},
"action": {
"header": "Action",
"daemonButton": {
"start": "啟",
"stop": "停",
"pause": "Pause"
},
"monitor": {
"32": "Monitor (32 bit)",
"64": "Monitor (64 bit)"
"actions": {
"header": "操作",
"monitorButton": {
"start": "啟",
"stop": "停",
"pause": "暫停"
},
"monitor": "監控",
"status": {
"unknown": "Unknown",
"notWorking": "Not Working",
"ok": "Working"
"tracing": "Tracing",
"stopping": "Stopping",
"stopped": "Stopped",
"exiting": "Exiting",
"unknown": "Unknown"
}
},
"settings": {
"header": "設定",
"font": {
"header": "Enable system font",
"description": "This option will enable system font in current WebUI. NOTE: May not be compatible with FlipFont"
"header": "啟用系統字型",
"description": "此選項將在當前 WebUI 中啟用系統字體。注意:可能不兼容 FlipFont"
},
"theme": {
"header": "System theme",
"description": "Choose your system theme for current WebUI"
"header": "系統主題",
"description": "為當前 WebUI 選擇系統主題"
},
"language": {
"header": "Change language",
"description": "Change to your new language"
"header": "更改語言",
"description": "更換新語言"
},
"logs": {
"header": "Error History",
"description": "View all of your error log"
"header": "錯誤歷史記錄",
"description": "查看您的所有錯誤日誌"
},
"credits": {
"module": "Module Developer",
"original": "Original Module Developer",
"web": "WebUI Developer"
"module": "模組開發者",
"original": "原始模組開發者",
"web": "WebUI 開發者"
},
"license": {
"module": "Module License",
"web": "WebUI License"
"module": "模組授權條款",
"web": "WebUI 授權條款"
}
}
}
}
}