mirror of
https://github.com/gl-inet/glkvm-cloud.git
synced 2026-10-03 12:20:20 +00:00
fix: render modal Confirm/Cancel buttons in all locales
Route button labels through the project's vue-i18n; the upstream fallback only knew en/zh and crashed the footer in de/es/fr/ja/ko. Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package server
|
||||
|
||||
const RttysVersion = "5.2.0"
|
||||
const KVMCloudVersion = "v2.5.0"
|
||||
const KVMCloudVersion = "v2.6.0"
|
||||
|
||||
var (
|
||||
GitCommit = ""
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
<!--
|
||||
* @Description: Wraps gl-web-main's BaseModal with project-i18n defaults for
|
||||
* okText / cancelText. The upstream BaseModal falls back to its own internal
|
||||
* i18n table when these props are omitted, but that table only contains
|
||||
* zh/en — any other locale throws at render time and the entire footer slot
|
||||
* fails to mount, so Confirm/Cancel buttons disappear in de/es/fr/ja/ko.
|
||||
* Defaulting the props here routes labels through the project's vue-i18n,
|
||||
* which knows every supported locale.
|
||||
-->
|
||||
<template>
|
||||
<BaseModal
|
||||
:cancelText="cancelText"
|
||||
:okText="okText"
|
||||
>
|
||||
<template v-for="(_, name) in $slots" #[name]="slotData">
|
||||
<slot :name="name" v-bind="slotData || {}" />
|
||||
</template>
|
||||
</BaseModal>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
|
||||
withDefaults(defineProps<{
|
||||
okText?: string
|
||||
cancelText?: string
|
||||
}>(), {
|
||||
okText: 'common.confirm',
|
||||
cancelText: 'common.cancel',
|
||||
})
|
||||
</script>
|
||||
@@ -12,6 +12,7 @@
|
||||
"success": "Erfolgreich",
|
||||
"failed": "Fehlgeschlagen",
|
||||
"cancel": "Abbrechen",
|
||||
"confirm": "Bestätigen",
|
||||
"ok": "OK",
|
||||
"close": "Schließen",
|
||||
"about": "Über",
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"success": "Success",
|
||||
"failed": "Failed",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"ok": "OK",
|
||||
"close": "Close",
|
||||
"about": "About",
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"success": "Éxito",
|
||||
"failed": "Error",
|
||||
"cancel": "Cancelar",
|
||||
"confirm": "Confirmar",
|
||||
"ok": "Aceptar",
|
||||
"close": "Cerrar",
|
||||
"about": "Acerca de",
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"success": "Succès",
|
||||
"failed": "Échec",
|
||||
"cancel": "Annuler",
|
||||
"confirm": "Confirmer",
|
||||
"ok": "OK",
|
||||
"close": "Fermer",
|
||||
"about": "À propos",
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"success": "成功",
|
||||
"failed": "失敗",
|
||||
"cancel": "キャンセル",
|
||||
"confirm": "確認",
|
||||
"ok": "OK",
|
||||
"close": "閉じる",
|
||||
"about": "このサービスについて",
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"success": "성공",
|
||||
"failed": "실패",
|
||||
"cancel": "취소",
|
||||
"confirm": "확인",
|
||||
"ok": "확인",
|
||||
"close": "닫기",
|
||||
"about": "정보",
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"success": "成功",
|
||||
"failed": "失败",
|
||||
"cancel": "取消",
|
||||
"confirm": "确认",
|
||||
"ok": "确定",
|
||||
"close": "关闭",
|
||||
"about": "关于",
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
|
||||
@@ -41,7 +41,8 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, reactive, watch } from 'vue'
|
||||
import { BaseInfo, BaseModal, BaseRadioButtonsCompact } from 'gl-web-main/components'
|
||||
import { BaseInfo, BaseRadioButtonsCompact } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { getAddDeviceScriptInfoApi } from '@/api/device'
|
||||
import { copyText } from 'gl-web-main'
|
||||
import { message } from 'ant-design-vue'
|
||||
@@ -191,10 +192,10 @@ esac
|
||||
exit 0
|
||||
EOF
|
||||
|
||||
# 4. Add execution permissions
|
||||
# 5. Add execution permissions
|
||||
chmod +x "$SCRIPT_FILE"
|
||||
|
||||
# 5. Execute restart once
|
||||
# 6. Execute restart once
|
||||
"$SCRIPT_FILE" restart
|
||||
|
||||
`
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
|
||||
const props = defineProps<{ open: boolean, type: string, res: any }>()
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ import BaseTable from '@/components/base/baseTable.vue'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { DeviceInfo, ExecuteCommandFormData } from '@/models/device'
|
||||
import { useFakeUpgradeProgress } from 'gl-web-main'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { TableColumnType } from 'ant-design-vue'
|
||||
import { computed, reactive, watch } from 'vue'
|
||||
import CmdResDetailDialog from './cmdResDetailDialog.vue'
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk, useValidateInfo } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk, useValidateInfo } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { DeviceInfo, ExecuteCommandFormData } from '@/models/device'
|
||||
|
||||
@@ -50,7 +50,8 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseInfo, BaseModal } from 'gl-web-main/components'
|
||||
import { BaseInfo } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
|
||||
@@ -44,7 +44,7 @@ import '@xterm/xterm/css/xterm.css'
|
||||
import OverlayAddon from './components/xterm-addon-overlay'
|
||||
import ContextMenu from './components/contextMenu.vue'
|
||||
import RttyKeyboard from './components/rttyKeyboard.vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { message, Modal } from 'ant-design-vue'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
|
||||
|
||||
@@ -96,7 +96,8 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, reactive, ref, watch } from 'vue'
|
||||
import { BaseInfo, BaseModal } from 'gl-web-main/components'
|
||||
import { BaseInfo } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, macAddressFormatter, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance, TableColumnType } from 'ant-design-vue'
|
||||
|
||||
@@ -69,7 +69,8 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, h, reactive, watch } from 'vue'
|
||||
import { BaseInfo, BaseModal } from 'gl-web-main/components'
|
||||
import { BaseInfo } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { baseCustomModal, macAddressFormatter, OnBeforeOk } from 'gl-web-main'
|
||||
import BaseLoadingContainer from '@/components/base/baseLoadingContainer.vue'
|
||||
import { useDeviceStore } from '@/stores/modules/device'
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
|
||||
@@ -66,7 +66,8 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, h, reactive, watch } from 'vue'
|
||||
import { BaseInfo, BaseModal } from 'gl-web-main/components'
|
||||
import { BaseInfo } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { baseCustomModal, macAddressFormatter, PageLink } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { message, TableColumnType } from 'ant-design-vue'
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
import { reqDisable2fa } from '@/api/personal'
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { FormInstance, message } from 'ant-design-vue'
|
||||
import { reqUpdateProfile } from '@/api/personal'
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
import QRCode from 'qrcode'
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance, message } from 'ant-design-vue'
|
||||
|
||||
@@ -41,7 +41,8 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseInfo, BaseModal } from 'gl-web-main/components'
|
||||
import { BaseInfo } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance } from 'ant-design-vue'
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance, Tooltip } from 'ant-design-vue'
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { BaseModal } from 'gl-web-main/components'
|
||||
import BaseModal from '@/components/base/baseModalI18n.vue'
|
||||
import { FormRules, OnBeforeOk } from 'gl-web-main'
|
||||
import { t } from '@/hooks/useLanguage'
|
||||
import { FormInstance, message } from 'ant-design-vue'
|
||||
|
||||
Reference in New Issue
Block a user