diff options
| author | Shishkevich D. <135337715+shishkevichd@users.noreply.github.com> | 2025-03-15 14:15:46 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-15 14:15:46 +0300 |
| commit | b9307c6c9c26c7d87819ef60c18eccce134f09ea (patch) | |
| tree | 5770a7ecbc87a9b90b9d719c27109d43a9512bdd /web | |
| parent | d30cdbf49a7443a62f599d4f91a4f1ebceb1c666 (diff) | |
chore: pretty 'Overview' page (#2772)
* chore: pretty 'Overview' page
* chore: some improvements in 'overview page'
- reduced font size
- added caption to buttons
- fixed display of xray state
- xray version display returned
Diffstat (limited to 'web')
| -rw-r--r-- | web/html/xui/index.html | 389 | ||||
| -rw-r--r-- | web/translation/translate.en_US.toml | 16 | ||||
| -rw-r--r-- | web/translation/translate.es_ES.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.fa_IR.toml | 12 | ||||
| -rw-r--r-- | web/translation/translate.id_ID.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.ja_JP.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.pt_BR.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.ru_RU.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.tr_TR.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.uk_UA.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.vi_VN.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.zh_CN.toml | 14 | ||||
| -rw-r--r-- | web/translation/translate.zh_TW.toml | 12 |
13 files changed, 323 insertions, 232 deletions
diff --git a/web/html/xui/index.html b/web/html/xui/index.html index e78940fd..bd7d3878 100644 --- a/web/html/xui/index.html +++ b/web/html/xui/index.html @@ -24,13 +24,35 @@ user-select: none; cursor: pointer; } - .dark .ant-backup-list-item svg { - color: var(--dark-color-text-primary); + .dark .ant-backup-list-item svg, + .dark .ant-card-actions>li>*, + .dark .ant-badge-status-text, + .dark .ant-statistic-title, + .dark .ant-statistic-content, + .dark .ant-card-extra { + color: var(--dark-color-text-primary) !important; + } + .dark .ant-card-actions>li>*:hover { + color: var(--color-primary-100) !important; } .dark .ant-backup-list, - .dark .ant-xray-version-list { + .dark .ant-xray-version-list, + .dark .ant-card-actions, + .dark .ant-card-actions>li:not(:last-child) { border-color: var(--dark-color-stroke); } + .ant-card-actions { + background: transparent !important; + } + .ant-statistic-content-prefix { + font-size: 20px; + } + .ant-statistic-content-value { + font-size: 18px; + } + .ip-hidden { + filter: blur(10px); + } </style> <body> @@ -47,7 +69,7 @@ show-icon closable> </a-alert> </transition> - <transition name="list" appear> + <transition v-if="status.isLoaded" name="list" appear> <a-row> <a-card hoverable> <a-row> @@ -100,172 +122,191 @@ </a-row> </transition> <transition name="list" appear> - <a-row> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <b>3X-UI:</b> - <a rel="noopener" href="https://github.com/MHSanaei/3x-ui/releases" target="_blank"><a-tag color="green">v{{ .cur_ver }}</a-tag></a> - <a rel="noopener" href="https://t.me/XrayUI" target="_blank"><a-tag color="green">@XrayUI</a-tag></a> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <b>{{ i18n "pages.index.operationHours" }}:</b> - <a-tag :color="status.xray.color">Xray: [[ TimeFormatter.formatSecond(status.appStats.uptime) ]]</a-tag> - <a-tag color="green">OS: [[ TimeFormatter.formatSecond(status.uptime) ]]</a-tag> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <b>{{ i18n "pages.index.xrayStatus" }}:</b> - <a-tag style="text-transform: capitalize;" :color="status.xray.color">[[ status.xray.state ]] </a-tag> - <a-popover v-if="status.xray.state === State.Error" :overlay-class-name="themeSwitcher.currentTheme"> - <span slot="title" style="font-size: 12pt">An error occurred while running Xray - <a-tag color="purple" style="cursor: pointer; float: right;" @click="openLogs()">{{ i18n "pages.index.logs" }}</a-tag> - </span> - <template slot="content"> - <p style="max-width: 400px" v-for="line in status.xray.errorMsg.split('\n')">[[ line ]]</p> - </template> - <a-icon type="question-circle"></a-icon> - </a-popover> - <a-tag color="purple" style="cursor: pointer;" @click="stopXrayService">{{ i18n "pages.index.stopXray" }}</a-tag> - <a-tag color="purple" style="cursor: pointer;" @click="restartXrayService">{{ i18n "pages.index.restartXray" }}</a-tag> - <a-tag color="purple" style="cursor: pointer;" @click="openSelectV2rayVersion">v[[ status.xray.version ]]</a-tag> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <b>{{ i18n "menu.link" }}:</b> - <a-tag color="purple" style="cursor: pointer;" @click="openLogs()">{{ i18n "pages.index.logs" }}</a-tag> - <a-tag color="purple" style="cursor: pointer;" @click="openConfig">{{ i18n "pages.index.config" }}</a-tag> - <a-tag color="purple" style="cursor: pointer;" @click="openBackup">{{ i18n "pages.index.backup" }}</a-tag> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <b>{{ i18n "pages.index.systemLoad" }}:</b> - <a-tag color="green"> - <a-tooltip> - [[ status.loads[0] ]] | [[ status.loads[1] ]] | [[ status.loads[2] ]] - <template slot="title"> - {{ i18n "pages.index.systemLoadDesc" }} + <template v-if="!status.isLoaded"> + <a-card hoverable style="text-align: center; padding: 30px 0; margin-top: 10px;"> + <a-spin size="large"></a-spin> + </a-card> + </template> + <template v-else> + <a-row> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "pages.index.xrayStatus" }}' hoverable> + <template #extra> + <template v-if="status.xray.state != State.Error"> + <a-badge :text="status.xray.state" :color="status.xray.color" style="text-transform: capitalize;"/> </template> - </a-tooltip> - </a-tag> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <b>{{ i18n "usage"}}:</b> - <a-tag color="green"> RAM: [[ SizeFormatter.sizeFormat(status.appStats.mem) ]] </a-tag> - <a-tag color="green"> Threads: [[ status.appStats.threads ]] </a-tag> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <a-row> - <a-col :span="12"> - <a-tag> - <a-tooltip> - <a-icon type="global"></a-icon> IPv4 - <template slot="title"> - [[ status.publicIP.ipv4 ]] + <template v-else> + <a-popover :overlay-class-name="themeSwitcher.currentTheme"> + <span slot="title" style="font-size: 12pt">An error occurred while running Xray + <a-tag color="purple" style="cursor: pointer; float: right;" @click="openLogs()">{{ i18n "pages.index.logs" }}</a-tag> + </span> + <template slot="content"> + <p style="max-width: 400px" v-for="line in status.xray.errorMsg.split('\n')">[[ line ]]</p> </template> - </a-tooltip> - </a-tag> - </a-col> - <a-col :span="12"> - <a-tag> - <a-tooltip> - <a-icon type="global"></a-icon> IPv6 - <template slot="title"> - [[ status.publicIP.ipv6 ]] + <a-badge :text="status.xray.state" :color="status.xray.color" style="text-transform: capitalize;"/> + </a-popover> + </template> + </template> + <template #actions> + <a-space direction="horizontal" @click="stopXrayService" style="justify-content: center;"> + <a-icon type="poweroff"></a-icon> + <span>{{ i18n "pages.index.stopXray" }}</span> + </a-space> + <a-space direction="horizontal" @click="restartXrayService" style="justify-content: center;"> + <a-icon type="reload"></a-icon> + <span>{{ i18n "pages.index.restartXray" }}</span> + </a-space> + <a-space direction="horizontal" @click="openSelectV2rayVersion" style="justify-content: center;"> + <a-icon type="tool"></a-icon> + <span>v[[ status.xray.version ]]</span> + </a-space> + </template> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "menu.link" }}' hoverable> + <template #actions> + <a-space direction="horizontal" @click="openLogs()" style="justify-content: center;"> + <a-icon type="bars"></a-icon> + <span>{{ i18n "pages.index.logs" }}</span> + </a-space> + <a-space direction="horizontal" @click="openConfig" style="justify-content: center;"> + <a-icon type="control"></a-icon> + <span>{{ i18n "pages.index.config" }}</span> + </a-space> + <a-space direction="horizontal" @click="openBackup" style="justify-content: center;"> + <a-icon type="cloud-server"></a-icon> + <span>{{ i18n "pages.index.backup" }}</span> + </a-space> + </template> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='3X-UI' hoverable> + <a rel="noopener" href="https://github.com/MHSanaei/3x-ui/releases" target="_blank"><a-tag color="green">v{{ .cur_ver }}</a-tag></a> + <a rel="noopener" href="https://t.me/XrayUI" target="_blank"><a-tag color="green">@XrayUI</a-tag></a> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "pages.index.operationHours" }}' hoverable> + <a-tag :color="status.xray.color">Xray: [[ TimeFormatter.formatSecond(status.appStats.uptime) ]]</a-tag> + <a-tag color="green">OS: [[ TimeFormatter.formatSecond(status.uptime) ]]</a-tag> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "pages.index.systemLoad" }}' hoverable> + <a-tag color="green"> + <a-tooltip> + [[ status.loads[0] ]] | [[ status.loads[1] ]] | [[ status.loads[2] ]] + <template slot="title"> + {{ i18n "pages.index.systemLoadDesc" }} + </template> + </a-tooltip> + </a-tag> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "usage"}}' hoverable> + <a-tag color="green"> RAM: [[ SizeFormatter.sizeFormat(status.appStats.mem) ]] </a-tag> + <a-tag color="green"> Threads: [[ status.appStats.threads ]] </a-tag> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "pages.index.ipAddresses" }}' hoverable> + <template #extra> + <a-tooltip> + <template #title> + {{ i18n "pages.index.toggleIpVisibility" }} + </template> + <a-icon :type="showIp ? 'eye' : 'eye-invisible'" :style="{ fontSize: '1rem' }" @click="showIp = !showIp"></a-icon> + </a-tooltip> + </template> + <a-row :class="showIp ? 'ip-visible' : 'ip-hidden'"> + <a-col :lg="12" :sm="24" :style="{ marginTop: isMobile ? '10px' : 0 }"> + <a-statistic title="IPv4" :value="status.publicIP.ipv4"> + <template #prefix> + <a-icon type="global" /> </template> - </a-tooltip> - </a-tag> - </a-col> - </a-row> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <a-row> - <a-col :span="12"> - <a-tag> - <a-tooltip> - <a-icon type="swap"></a-icon> TCP: [[ status.tcpCount ]] - <template slot="title"> - {{ i18n "pages.index.connectionTcpCountDesc" }} + </a-statistic> + </a-col> + <a-col :lg="12" :sm="24" :style="{ marginTop: isMobile ? '10px' : 0 }"> + <a-statistic title="IPv6" :value="status.publicIP.ipv6"> + <template #prefix> + <a-icon type="global" /> </template> - </a-tooltip> - </a-tag> - </a-col> - <a-col :span="12"> - <a-tag> - <a-tooltip> - <a-icon type="swap"></a-icon> UDP: [[ status.udpCount ]] - <template slot="title"> - {{ i18n "pages.index.connectionUdpCountDesc" }} + </a-statistic> + </a-col> + </a-row> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "pages.index.connectionCount" }}' hoverable> + <a-row> + <a-col :lg="12" :sm="24" :style="{ marginTop: isMobile ? '10px' : 0 }"> + <a-statistic title="TCP" :value="status.tcpCount"> + <template #prefix> + <a-icon type="swap" /> </template> - </a-tooltip> - </a-tag> - </a-col> - </a-row> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <a-row> - <a-col :span="12"> - <a-tag> - <a-tooltip> - <a-icon type="arrow-up"></a-icon> Up: [[ SizeFormatter.sizeFormat(status.netIO.up) ]]/s - <template slot="title"> - {{ i18n "pages.index.upSpeed" }} + </a-statistic> + </a-col> + <a-col :lg="12" :sm="24" :style="{ marginTop: isMobile ? '10px' : 0 }"> + <a-statistic title="UDP" :value="status.udpCount"> + <template #prefix> + <a-icon type="swap" /> </template> - </a-tooltip> - </a-tag> - </a-col> - <a-col :span="12"> - <a-tag> - <a-tooltip> - <a-icon type="arrow-down"></a-icon> Down: [[ SizeFormatter.sizeFormat(status.netIO.down) ]]/s - <template slot="title"> - {{ i18n "pages.index.downSpeed" }} + </a-statistic> + </a-col> + </a-row> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "pages.index.overallSpeed" }}' hoverable> + <a-row> + <a-col :lg="12" :sm="24" :style="{ marginTop: isMobile ? '10px' : 0 }"> + <a-statistic title='{{ i18n "pages.index.upload" }}' :value="SizeFormatter.sizeFormat(status.netIO.up)"> + <template #prefix> + <a-icon type="arrow-up" /> </template> - </a-tooltip> - </a-tag> - </a-col> - </a-row> - </a-card> - </a-col> - <a-col :sm="24" :lg="12"> - <a-card hoverable> - <a-row> - <a-col :span="12"> - <a-tag> - <a-tooltip> - <a-icon type="cloud-upload"></a-icon> - <template slot="title"> - {{ i18n "pages.index.totalSent" }} - </template> Out: [[ SizeFormatter.sizeFormat(status.netTraffic.sent) ]] - </a-tooltip> - </a-tag> - </a-col> - <a-col :span="12"> - <a-tag> - <a-tooltip> - <a-icon type="cloud-download"></a-icon> - <template slot="title"> - {{ i18n "pages.index.totalReceive" }} - </template> In: [[ SizeFormatter.sizeFormat(status.netTraffic.recv) ]] - </a-tooltip> - </a-tag> - </a-col> - </a-row> - </a-card> - </a-col> - </a-row> + <template #suffix> + /s + </template> + </a-statistic> + </a-col> + <a-col :lg="12" :sm="24" :style="{ marginTop: isMobile ? '10px' : 0 }"> + <a-statistic title='{{ i18n "pages.index.download" }}' :value="SizeFormatter.sizeFormat(status.netIO.down)"> + <template #prefix> + <a-icon type="arrow-down" /> + </template> + <template #suffix> + /s + </template> + </a-statistic> + </a-col> + </a-row> + </a-card> + </a-col> + <a-col :sm="24" :lg="12"> + <a-card title='{{ i18n "pages.index.totalData" }}' hoverable> + <a-row> + <a-col :lg="12" :sm="24" :style="{ marginTop: isMobile ? '10px' : 0 }"> + <a-statistic title='{{ i18n "pages.index.sent" }}' :value="SizeFormatter.sizeFormat(status.netTraffic.sent)"> + <template #prefix> + <a-icon type="cloud-upload" /> + </template> + </a-statistic> + </a-col> + <a-col :lg="12" :sm="24" :style="{ marginTop: isMobile ? '10px' : 0 }"> + <a-statistic title='{{ i18n "pages.index.received" }}' :value="SizeFormatter.sizeFormat(status.netTraffic.recv)"> + <template #prefix> + <a-icon type="cloud-download" /> + </template> + </a-statistic> + </a-col> + </a-row> + </a-card> + </a-col> + </a-row> + </template> </transition> </a-spin> </a-layout-content> @@ -279,7 +320,7 @@ <a-list-item-meta> <template #title>[[ version ]]</template> </a-list-item-meta> - <a-radio :checked="version === `v${status.xray.version}`" @click="switchV2rayVersion(version)"></a-radio> + <a-radio :class="themeSwitcher.currentTheme" :checked="version === `v${status.xray.version}`" @click="switchV2rayVersion(version)"></a-radio> </a-list-item> </a-list> </a-modal> @@ -360,9 +401,9 @@ {{template "textModal"}} <script> const State = { - Running: "running", - Stop: "stop", - Error: "error", + Running: "running", + Stop: "stop", + Error: "error", } Object.freeze(State); @@ -393,7 +434,7 @@ } class Status { - constructor(data) { + constructor(data, isLoaded = false) { this.cpu = new CurTotal(0, 0); this.cpuCores = 0; this.logicalPro = 0; @@ -413,8 +454,10 @@ this.xray = { state: State.Stop, errorMsg: "", version: "", color: "" }; if (data == null) { - return; + return; } + + this.isLoaded = isLoaded; this.cpu = new CurTotal(data.cpu, 100); this.cpuCores = data.cpuCores; this.logicalPro = data.logicalPro; @@ -536,6 +579,8 @@ spinning: false, loadingTip: '{{ i18n "loading"}}', showAlert: false, + showIp: false, + isMobile: window.innerWidth <= 768 }, methods: { loading(spinning, tip = '{{ i18n "loading"}}') { @@ -546,14 +591,14 @@ try { const msg = await HttpUtil.post('/server/status'); if (msg.success) { - this.setStatus(msg.obj); + this.setStatus(msg.obj, true); } } catch (e) { console.error("Failed to get status:", e); } }, - setStatus(data) { - this.status = new Status(data); + setStatus(data, isLoaded = false) { + this.status = new Status(data, isLoaded); }, async openSelectV2rayVersion() { this.loading(true); diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index f09a9e79..f3c88f57 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -99,19 +99,21 @@ "operationHours" = "Uptime" "systemLoad" = "System Load" "systemLoadDesc" = "System load average for the past 1, 5, and 15 minutes" -"connectionTcpCountDesc" = "Total TCP connections across the system" -"connectionUdpCountDesc" = "Total UDP connections across the system" "connectionCount" = "Connection Stats" -"upSpeed" = "Overall upload speed across the system" -"downSpeed" = "Overall download speed across the system" -"totalSent" = "Total data sent across the system since OS startup" -"totalReceive" = "Total data received across the system since OS startup" +"ipAddresses" = "IP addresses" +"toggleIpVisibility" = "Toggle visibility of the IP" +"overallSpeed" = "Overall speed" +"upload" = "Upload" +"download" = "Download" +"totalData" = "Total data" +"sent" = "Sent" +"received" = "Received" "xraySwitchVersionDialog" = "Change Xray Version" "xraySwitchVersionDialogDesc" = "Are you sure you want to change the Xray version to" "dontRefresh" = "Installation is in progress, please do not refresh this page" "logs" = "Logs" "config" = "Config" -"backup" = "Backup & Restore" +"backup" = "Backup" "backupTitle" = "Database Backup & Restore" "exportDatabase" = "Back Up" "exportDatabaseDesc" = "Click to download a .db file containing a backup of your current database to your device." diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index e1f3af28..05ab33d8 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -102,16 +102,20 @@ "connectionTcpCountDesc" = "Conexiones TCP totales en todas las tarjetas de red."
"connectionUdpCountDesc" = "Conexiones UDP totales en todas las tarjetas de red."
"connectionCount" = "Número de Conexiones"
-"upSpeed" = "Velocidad de Subida Total para Todas las Tarjetas de Red."
-"downSpeed" = "Velocidad de Bajada Total para Todas las Tarjetas de Red."
-"totalSent" = "Tráfico Total de Subida de Todas las Tarjetas de Red desde el inicio del sistema."
-"totalReceive" = "Datos Descargados Totales en Todas las Tarjetas de Red desde el inicio del sistema."
+"ipAddresses" = "Direcciones IP"
+"toggleIpVisibility" = "Alternar visibilidad de la IP"
+"overallSpeed" = "Velocidad general"
+"upload" = "Subida"
+"download" = "Descarga"
+"totalData" = "Datos totales"
+"sent" = "Enviado"
+"received" = "Recibido"
"xraySwitchVersionDialog" = "Cambiar Versión de Xray"
"xraySwitchVersionDialogDesc" = "¿Estás seguro de que deseas cambiar la versión de Xray a"
"dontRefresh" = "La instalación está en progreso, por favor no actualices esta página."
"logs" = "Registros"
"config" = "Configuración"
-"backup" = "Copia de Seguridad y Restauración"
+"backup" = "Сopia de Seguridad"
"backupTitle" = "Copia de Seguridad y Restauración de la Base de Datos"
"exportDatabase" = "Copia de seguridad"
"exportDatabaseDesc" = "Haz clic para descargar un archivo .db que contiene una copia de seguridad de tu base de datos actual en tu dispositivo."
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index 319a3a74..7a56a3d1 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -102,10 +102,14 @@ "connectionTcpCountDesc" = "در تمامشبکهها TCP مجموعاتصالات" "connectionUdpCountDesc" = "در تمامشبکهها UDP مجموعاتصالات" "connectionCount" = "تعداد کانکشن ها" -"upSpeed" = "سرعت کلی آپلود در تمامشبکهها" -"downSpeed" = "سرعت کلی دانلود در تمامشبکهها" -"totalSent" = "مجموع ترافیک ارسالشده پساز شروعبهکار سیستمعامل" -"totalReceive" = "مجموع ترافیک دریافتشده پساز شروعبهکار سیستمعامل" +"ipAddresses" = "آدرسهای IP" +"toggleIpVisibility" = "تغییر وضعیت نمایش IP" +"overallSpeed" = "سرعت کلی" +"upload" = "آپلود" +"download" = "دانلود" +"totalData" = "دادههای کل" +"sent" = "ارسال شده" +"received" = "دریافت شده" "xraySwitchVersionDialog" = "تغییر نسخه ایکسری" "xraySwitchVersionDialogDesc" = "آیا از تغییر نسخه مطمئن هستید؟" "dontRefresh" = "در حال نصب، لطفا صفحه را رفرش نکنید" diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml index e578f2d6..ae68cdd3 100644 --- a/web/translation/translate.id_ID.toml +++ b/web/translation/translate.id_ID.toml @@ -102,16 +102,20 @@ "connectionTcpCountDesc" = "Total koneksi TCP di seluruh sistem" "connectionUdpCountDesc" = "Total koneksi UDP di seluruh sistem" "connectionCount" = "Statistik Koneksi" -"upSpeed" = "Kecepatan unggah keseluruhan di seluruh sistem" -"downSpeed" = "Kecepatan unduh keseluruhan di seluruh sistem" -"totalSent" = "Total data terkirim di seluruh sistem sejak startup OS" -"totalReceive" = "Total data diterima di seluruh sistem sejak startup OS" +"ipAddresses" = "Alamat IP" +"toggleIpVisibility" = "Alihkan visibilitas IP" +"overallSpeed" = "Kecepatan keseluruhan" +"upload" = "Unggah" +"download" = "Unduh" +"totalData" = "Total data" +"sent" = "Dikirim" +"received" = "Diterima" "xraySwitchVersionDialog" = "Ganti Versi Xray" "xraySwitchVersionDialogDesc" = "Apakah Anda yakin ingin mengubah versi Xray menjadi" "dontRefresh" = "Instalasi sedang berlangsung, harap jangan menyegarkan halaman ini" "logs" = "Log" "config" = "Konfigurasi" -"backup" = "Cadangan & Pulihkan" +"backup" = "Cadangan" "backupTitle" = "Cadangan & Pulihkan Database" "exportDatabase" = "Cadangkan" "exportDatabaseDesc" = "Klik untuk mengunduh file .db yang berisi cadangan dari database Anda saat ini ke perangkat Anda." diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml index ffaf7abd..9e73e604 100644 --- a/web/translation/translate.ja_JP.toml +++ b/web/translation/translate.ja_JP.toml @@ -102,16 +102,20 @@ "connectionTcpCountDesc" = "システム内のすべてのTCP接続数" "connectionUdpCountDesc" = "システム内のすべてのUDP接続数" "connectionCount" = "接続数" -"upSpeed" = "総アップロード速度" -"downSpeed" = "総ダウンロード速度" -"totalSent" = "システム起動以降の送信データ量" -"totalReceive" = "システム起動以降の受信データ量" +"ipAddresses" = "IPアドレス" +"toggleIpVisibility" = "IPの表示を切り替える" +"overallSpeed" = "全体の速度" +"upload" = "アップロード" +"download" = "ダウンロード" +"totalData" = "総データ量" +"sent" = "送信" +"received" = "受信" "xraySwitchVersionDialog" = "Xrayバージョン切り替え" "xraySwitchVersionDialogDesc" = "Xrayのバージョンを切り替えますか?" "dontRefresh" = "インストール中、このページをリロードしないでください" "logs" = "ログ" "config" = "設定" -"backup" = "バックアップと復元" +"backup" = "バックアップ" "backupTitle" = "データベースのバックアップと復元" "exportDatabase" = "バックアップ" "exportDatabaseDesc" = "クリックして、現在のデータベースのバックアップを含む .db ファイルをデバイスにダウンロードします。" diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml index dc33ac24..b259cdaf 100644 --- a/web/translation/translate.pt_BR.toml +++ b/web/translation/translate.pt_BR.toml @@ -102,16 +102,20 @@ "connectionTcpCountDesc" = "Total de conexões TCP no sistema" "connectionUdpCountDesc" = "Total de conexões UDP no sistema" "connectionCount" = "Estatísticas de Conexão" -"upSpeed" = "Velocidade total de upload no sistema" -"downSpeed" = "Velocidade total de download no sistema" -"totalSent" = "Dados totais enviados desde a inicialização do sistema" -"totalReceive" = "Dados totais recebidos desde a inicialização do sistema" +"ipAddresses" = "Endereços IP" +"toggleIpVisibility" = "Alternar visibilidade do IP" +"overallSpeed" = "Velocidade geral" +"upload" = "Upload" +"download" = "Download" +"totalData" = "Dados totais" +"sent" = "Enviado" +"received" = "Recebido" "xraySwitchVersionDialog" = "Alterar Versão do Xray" "xraySwitchVersionDialogDesc" = "Tem certeza de que deseja alterar a versão do Xray para" "dontRefresh" = "Instalação em andamento, por favor não atualize a página" "logs" = "Logs" "config" = "Configuração" -"backup" = "Backup e Restauração" +"backup" = "Backup" "backupTitle" = "Backup e Restauração do Banco de Dados" "exportDatabase" = "Backup" "exportDatabaseDesc" = "Clique para baixar um arquivo .db contendo um backup do seu banco de dados atual para o seu dispositivo." diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index 80787e24..30602d90 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -102,16 +102,20 @@ "connectionTcpCountDesc" = "Общее количество подключений TCP по всем сетевым картам." "connectionUdpCountDesc" = "Общее количество подключений UDP по всем сетевым картам." "connectionCount" = "Количество соединений" -"upSpeed" = "Общая скорость отправки для всех сетей" -"downSpeed" = "Общая скорость загрузки для всех сетей" -"totalSent" = "Общий объем отправляемых данных с момента запуска системы" -"totalReceive" = "Общий объем полученных данных для всех сетей с момента запуска системы." +"ipAddresses" = "IP-адреса" +"toggleIpVisibility" = "Переключить видимость IP" +"overallSpeed" = "Общая скорость" +"upload" = "Отправка" +"download" = "Загрузка" +"totalData" = "Общий объем данных" +"sent" = "Отправлено" +"received" = "Получено" "xraySwitchVersionDialog" = "Переключить версию Xray" "xraySwitchVersionDialogDesc" = "Вы точно хотите сменить версию Xray?" "dontRefresh" = "Установка в процессе. Не обновляйте страницу" "logs" = "Логи" "config" = "Конфигурация" -"backup" = "Резервное копирование и восстановление" +"backup" = "Резервная копия" "backupTitle" = "База данных резервных копий" "exportDatabase" = "Экспорт базы данных" "exportDatabaseDesc" = "Нажмите, чтобы скачать файл .db, содержащий резервную копию вашей текущей базы данных на ваше устройство." diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml
index ee773b21..1cbaf701 100644 --- a/web/translation/translate.tr_TR.toml +++ b/web/translation/translate.tr_TR.to |
