diff --git a/api/api.go b/api/api.go index a46710d83..7066f1e79 100644 --- a/api/api.go +++ b/api/api.go @@ -1,9 +1,12 @@ package api import ( + "errors" "github.com/0xJacky/Nginx-UI/model" "github.com/gin-gonic/gin" + "github.com/uozi-tech/cosy" "github.com/uozi-tech/cosy/logger" + "gorm.io/gorm" "net/http" ) @@ -13,9 +16,21 @@ func CurrentUser(c *gin.Context) *model.User { func ErrHandler(c *gin.Context, err error) { logger.GetLogger().Errorln(err) - c.JSON(http.StatusInternalServerError, gin.H{ - "message": err.Error(), - }) + var cErr *cosy.Error + switch { + case errors.Is(err, gorm.ErrRecordNotFound): + c.JSON(http.StatusNotFound, &cosy.Error{ + Code: http.StatusNotFound, + Message: gorm.ErrRecordNotFound.Error(), + }) + case errors.As(err, &cErr): + c.JSON(http.StatusInternalServerError, cErr) + default: + c.JSON(http.StatusInternalServerError, &cosy.Error{ + Code: http.StatusInternalServerError, + Message: err.Error(), + }) + } } func SetSSEHeaders(c *gin.Context) { diff --git a/api/nginx/router.go b/api/nginx/router.go index 1ea3cf1e3..d7c2e798d 100644 --- a/api/nginx/router.go +++ b/api/nginx/router.go @@ -1,6 +1,9 @@ package nginx -import "github.com/gin-gonic/gin" +import ( + "github.com/0xJacky/Nginx-UI/api/nginx_log" + "github.com/gin-gonic/gin" +) func InitRouter(r *gin.RouterGroup) { r.POST("ngx/build_config", BuildNginxConfig) @@ -10,10 +13,6 @@ func InitRouter(r *gin.RouterGroup) { r.POST("nginx/restart", Restart) r.POST("nginx/test", Test) r.GET("nginx/status", Status) - r.POST("nginx_log", GetNginxLogPage) + r.POST("nginx_log", nginx_log.GetNginxLogPage) r.GET("nginx/directives", GetDirectives) } - -func InitNginxLogRouter(r *gin.RouterGroup) { - r.GET("nginx_log", Log) -} diff --git a/api/nginx/nginx_log.go b/api/nginx_log/nginx_log.go similarity index 79% rename from api/nginx/nginx_log.go rename to api/nginx_log/nginx_log.go index 487c04309..e230b5130 100644 --- a/api/nginx/nginx_log.go +++ b/api/nginx_log/nginx_log.go @@ -1,12 +1,9 @@ -package nginx +package nginx_log import ( "encoding/json" - "fmt" - "github.com/0xJacky/Nginx-UI/internal/cache" - "github.com/0xJacky/Nginx-UI/internal/helper" "github.com/0xJacky/Nginx-UI/internal/nginx" - "github.com/0xJacky/Nginx-UI/settings" + "github.com/0xJacky/Nginx-UI/internal/nginx_log" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/hpcloud/tail" @@ -70,7 +67,7 @@ func GetNginxLogPage(c *gin.Context) { c.JSON(http.StatusInternalServerError, nginxLogPageResp{ Error: "log file is not regular file", }) - logger.Error("log file is not regular file:", logPath) + logger.Errorf("log file is not regular file: %s", logPath) return } @@ -132,30 +129,7 @@ func GetNginxLogPage(c *gin.Context) { }) } -// isLogPathUnderWhiteList checks if the log path is under one of the paths in LogDirWhiteList -func isLogPathUnderWhiteList(path string) bool { - cacheKey := fmt.Sprintf("isLogPathUnderWhiteList:%s", path) - res, ok := cache.Get(cacheKey) - // no cache, check it - if !ok { - for _, whitePath := range settings.NginxSettings.LogDirWhiteList { - if helper.IsUnderDirectory(path, whitePath) { - cache.Set(cacheKey, true, 0) - return true - } - } - return false - } - return res.(bool) -} - func getLogPath(control *controlStruct) (logPath string, err error) { - if len(settings.NginxSettings.LogDirWhiteList) == 0 { - err = errors.New("The settings.NginxSettings.LogDirWhiteList has not been configured. " + - "For security reasons, please configure a whitelist of log directories. " + - "Please visit https://nginxui.com/guide/config-nginx.html for more information.") - return - } switch control.Type { case "site": var config *nginx.NgxConfig @@ -167,12 +141,12 @@ func getLogPath(control *controlStruct) (logPath string, err error) { } if control.ServerIdx >= len(config.Servers) { - err = errors.New("serverIdx out of range") + err = nginx_log.ErrServerIdxOutOfRange return } if control.DirectiveIdx >= len(config.Servers[control.ServerIdx].Directives) { - err = errors.New("DirectiveIdx out of range") + err = nginx_log.ErrDirectiveIdxOutOfRange return } @@ -181,12 +155,12 @@ func getLogPath(control *controlStruct) (logPath string, err error) { case "access_log", "error_log": // ok default: - err = errors.New("directive.Params neither access_log nor error_log") + err = nginx_log.ErrLogDirective return } if directive.Params == "" { - err = errors.New("directive.Params is empty") + err = nginx_log.ErrDirectiveParamsIsEmpty return } @@ -200,8 +174,7 @@ func getLogPath(control *controlStruct) (logPath string, err error) { path := nginx.GetErrorLogPath() if path == "" { - err = errors.New("settings.NginxLogSettings.ErrorLogPath is empty," + - " refer to https://nginxui.com/guide/config-nginx.html for more information") + err = nginx_log.ErrErrorLogPathIsEmpty return } @@ -210,8 +183,7 @@ func getLogPath(control *controlStruct) (logPath string, err error) { path := nginx.GetAccessLogPath() if path == "" { - err = errors.New("settings.NginxLogSettings.AccessLogPath is empty," + - " refer to https://nginxui.com/guide/config-nginx.html for more information") + err = nginx_log.ErrAccessLogPathIsEmpty return } @@ -219,9 +191,8 @@ func getLogPath(control *controlStruct) (logPath string, err error) { } // check if logPath is under one of the paths in LogDirWhiteList - if !isLogPathUnderWhiteList(logPath) { - err = errors.New("The log path is not under the paths in LogDirWhiteList.") - return "", err + if !nginx_log.IsLogPathUnderWhiteList(logPath) { + return "", nginx_log.ErrLogPathIsNotUnderTheLogDirWhiteList } return } diff --git a/api/nginx_log/router.go b/api/nginx_log/router.go new file mode 100644 index 000000000..59540a63b --- /dev/null +++ b/api/nginx_log/router.go @@ -0,0 +1,7 @@ +package nginx_log + +import "github.com/gin-gonic/gin" + +func InitRouter(r *gin.RouterGroup) { + r.GET("nginx_log", Log) +} diff --git a/api/openai/openai.go b/api/openai/openai.go index 83855b93b..a6bdb30c0 100644 --- a/api/openai/openai.go +++ b/api/openai/openai.go @@ -6,7 +6,7 @@ import ( "github.com/0xJacky/Nginx-UI/internal/chatbot" "github.com/0xJacky/Nginx-UI/settings" "github.com/gin-gonic/gin" - "github.com/pkg/errors" + "errors" "github.com/sashabaranov/go-openai" "github.com/uozi-tech/cosy" "github.com/uozi-tech/cosy/logger" diff --git a/api/user/2fa.go b/api/user/2fa.go index 9eb425390..d9900a024 100644 --- a/api/user/2fa.go +++ b/api/user/2fa.go @@ -2,7 +2,6 @@ package user import ( "encoding/base64" - "fmt" "github.com/0xJacky/Nginx-UI/api" "github.com/0xJacky/Nginx-UI/internal/cache" "github.com/0xJacky/Nginx-UI/internal/passkey" @@ -77,23 +76,17 @@ func Start2FASecureSessionByOTP(c *gin.Context) { } u := api.CurrentUser(c) if !u.EnabledOTP() { - c.JSON(http.StatusBadRequest, gin.H{ - "message": "User has not configured OTP as 2FA", - }) + api.ErrHandler(c, user.ErrUserNotEnabledOTPAs2FA) return } if json.OTP == "" && json.RecoveryCode == "" { - c.JSON(http.StatusBadRequest, LoginResponse{ - Message: "The user has enabled OTP as 2FA", - }) + api.ErrHandler(c, user.ErrOTPOrRecoveryCodeEmpty) return } if err := user.VerifyOTP(u, json.OTP, json.RecoveryCode); err != nil { - c.JSON(http.StatusBadRequest, LoginResponse{ - Message: "Invalid OTP or recovery code", - }) + api.ErrHandler(c, err) return } @@ -106,7 +99,7 @@ func Start2FASecureSessionByOTP(c *gin.Context) { func BeginStart2FASecureSessionByPasskey(c *gin.Context) { if !passkey.Enabled() { - api.ErrHandler(c, fmt.Errorf("WebAuthn settings are not configured")) + api.ErrHandler(c, user.ErrWebAuthnNotConfigured) return } webauthnInstance := passkey.GetInstance() @@ -126,13 +119,13 @@ func BeginStart2FASecureSessionByPasskey(c *gin.Context) { func FinishStart2FASecureSessionByPasskey(c *gin.Context) { if !passkey.Enabled() { - api.ErrHandler(c, fmt.Errorf("WebAuthn settings are not configured")) + api.ErrHandler(c, user.ErrWebAuthnNotConfigured) return } passkeySessionID := c.GetHeader("X-Passkey-Session-ID") sessionDataBytes, ok := cache.Get(passkeySessionID) if !ok { - api.ErrHandler(c, fmt.Errorf("session not found")) + api.ErrHandler(c, user.ErrSessionNotFound) return } sessionData := sessionDataBytes.(*webauthn.SessionData) diff --git a/api/user/auth.go b/api/user/auth.go index fd0e4fc49..73a821d74 100644 --- a/api/user/auth.go +++ b/api/user/auth.go @@ -6,7 +6,7 @@ import ( "github.com/0xJacky/Nginx-UI/query" "github.com/0xJacky/Nginx-UI/settings" "github.com/gin-gonic/gin" - "github.com/pkg/errors" + "errors" "github.com/uozi-tech/cosy" "github.com/uozi-tech/cosy/logger" "math/rand/v2" @@ -25,12 +25,10 @@ type LoginUser struct { } const ( - ErrPasswordIncorrect = 4031 - ErrMaxAttempts = 4291 - ErrUserBanned = 4033 - Enabled2FA = 199 - Error2FACode = 4034 - LoginSuccess = 200 + ErrMaxAttempts = 4291 + Enabled2FA = 199 + Error2FACode = 4034 + LoginSuccess = 200 ) type LoginResponse struct { @@ -73,15 +71,9 @@ func Login(c *gin.Context) { time.Sleep(random * time.Second) switch { case errors.Is(err, user.ErrPasswordIncorrect): - c.JSON(http.StatusForbidden, LoginResponse{ - Message: "Password incorrect", - Code: ErrPasswordIncorrect, - }) + c.JSON(http.StatusForbidden, user.ErrPasswordIncorrect) case errors.Is(err, user.ErrUserBanned): - c.JSON(http.StatusForbidden, LoginResponse{ - Message: "The user is banned", - Code: ErrUserBanned, - }) + c.JSON(http.StatusForbidden, user.ErrUserBanned) default: api.ErrHandler(c, err) } diff --git a/api/user/casdoor.go b/api/user/casdoor.go index a018cb411..d46e2bcda 100644 --- a/api/user/casdoor.go +++ b/api/user/casdoor.go @@ -7,7 +7,7 @@ import ( "github.com/0xJacky/Nginx-UI/settings" "github.com/casdoor/casdoor-go-sdk/casdoorsdk" "github.com/gin-gonic/gin" - "github.com/pkg/errors" + "errors" "github.com/uozi-tech/cosy" "gorm.io/gorm" "net/http" diff --git a/api/user/passkey.go b/api/user/passkey.go index 3c6984569..0be9d9553 100644 --- a/api/user/passkey.go +++ b/api/user/passkey.go @@ -53,7 +53,7 @@ func FinishPasskeyRegistration(c *gin.Context) { webauthnInstance := passkey.GetInstance() sessionDataBytes, ok := cache.Get(buildCachePasskeyRegKey(cUser.ID)) if !ok { - api.ErrHandler(c, fmt.Errorf("session not found")) + api.ErrHandler(c, user.ErrSessionNotFound) return } @@ -87,7 +87,7 @@ func FinishPasskeyRegistration(c *gin.Context) { func BeginPasskeyLogin(c *gin.Context) { if !passkey.Enabled() { - api.ErrHandler(c, fmt.Errorf("WebAuthn settings are not configured")) + api.ErrHandler(c, user.ErrWebAuthnNotConfigured) return } webauthnInstance := passkey.GetInstance() @@ -107,13 +107,13 @@ func BeginPasskeyLogin(c *gin.Context) { func FinishPasskeyLogin(c *gin.Context) { if !passkey.Enabled() { - api.ErrHandler(c, fmt.Errorf("WebAuthn settings are not configured")) + api.ErrHandler(c, user.ErrWebAuthnNotConfigured) return } sessionId := c.GetHeader("X-Passkey-Session-ID") sessionDataBytes, ok := cache.Get(sessionId) if !ok { - api.ErrHandler(c, fmt.Errorf("session not found")) + api.ErrHandler(c, user.ErrSessionNotFound) return } webauthnInstance := passkey.GetInstance() diff --git a/app/src/components/NginxControl/NginxControl.vue b/app/src/components/NginxControl/NginxControl.vue index 71c722e5c..d82e6efd4 100644 --- a/app/src/components/NginxControl/NginxControl.vue +++ b/app/src/components/NginxControl/NginxControl.vue @@ -28,8 +28,6 @@ function reloadNginx() { message.warn(r.message) else message.error(r.message) - }).catch(e => { - message.error(`${$gettext('Server error')} ${e?.message}`) }).finally(() => getStatus()) } @@ -44,8 +42,6 @@ async function restartNginx() { message.warn(r.message) else message.error(r.message) - }).catch(e => { - message.error(`${$gettext('Server error')} ${e?.message}`) }) } diff --git a/app/src/components/Notification/Notification.vue b/app/src/components/Notification/Notification.vue index 8a4a7b08b..3283b0af0 100644 --- a/app/src/components/Notification/Notification.vue +++ b/app/src/components/Notification/Notification.vue @@ -67,8 +67,6 @@ function init() { notificationApi.get_list().then(r => { data.value = r.data unreadCount.value = r.pagination?.total || 0 - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) }).finally(() => { loading.value = false }) @@ -90,8 +88,7 @@ function clear() { message.success($gettext('Cleared successfully')) data.value = [] unreadCount.value = 0 - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) + open.value = false }) } @@ -99,8 +96,6 @@ function remove(id: number) { notificationApi.destroy(id).then(() => { message.success($gettext('Removed successfully')) init() - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) }) } diff --git a/app/src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue b/app/src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue index 177ac3d26..4b7579b70 100644 --- a/app/src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue +++ b/app/src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue @@ -48,10 +48,6 @@ async function ok() { emit('save') visible.value = false }) - .catch(e => { - error.value = e.errors - message.error($gettext(e?.message) ?? $gettext('Server error')) - }) .finally(() => { loading.value = false }) diff --git a/app/src/components/StdDesign/StdDataDisplay/StdBulkActions.vue b/app/src/components/StdDesign/StdDataDisplay/StdBulkActions.vue index ab8cd3cd9..f2c7186ce 100644 --- a/app/src/components/StdDesign/StdDataDisplay/StdBulkActions.vue +++ b/app/src/components/StdDesign/StdDataDisplay/StdBulkActions.vue @@ -66,8 +66,6 @@ function onClickApply() { computedActions.value[actionValue.value]?.action(props.selectedRowKeys).then(async () => { message.success($gettext('Apply bulk action successfully')) emit('onSuccess') - }).catch(e => { - message.error($gettext(e?.message) ?? $gettext('Server error')) }), ) }) diff --git a/app/src/components/StdDesign/StdDataDisplay/StdCurd.vue b/app/src/components/StdDesign/StdDataDisplay/StdCurd.vue index 3ed0b6955..9d94eb859 100644 --- a/app/src/components/StdDesign/StdDataDisplay/StdCurd.vue +++ b/app/src/components/StdDesign/StdDataDisplay/StdCurd.vue @@ -99,7 +99,6 @@ async function ok() { get_list() visible.value = false }).catch(e => { - message.error($gettext(e?.message ?? 'Server error'), 5) Object.assign(error, e.errors) }) } @@ -126,8 +125,6 @@ function edit(id: number | string) { visible.value = true modifyMode.value = true editMode.value = 'modify' - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error'), 5) }) } @@ -135,8 +132,6 @@ function view(id: number | string) { get(id).then(() => { visible.value = true modifyMode.value = false - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error'), 5) }) } diff --git a/app/src/components/StdDesign/StdDataDisplay/StdTable.vue b/app/src/components/StdDesign/StdDataDisplay/StdTable.vue index b5a413841..13a9601d5 100644 --- a/app/src/components/StdDesign/StdDataDisplay/StdTable.vue +++ b/app/src/components/StdDesign/StdDataDisplay/StdTable.vue @@ -181,8 +181,6 @@ function destroy(id: number | string) { props.api!.destroy(id, { permanent: props.inTrash }).then(() => { get_list() message.success($gettext('Deleted successfully')) - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) }) } @@ -190,8 +188,6 @@ function recover(id: number | string) { props.api.recover(id).then(() => { message.success($gettext('Recovered Successfully')) get_list() - }).catch(e => { - message.error(e?.message ?? $gettext('Server error')) }) } @@ -224,8 +220,6 @@ async function _get_list() { if (r.pagination) Object.assign(pagination, r.pagination) - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) }) loading.value = false diff --git a/app/src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts b/app/src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts index f3b16a7f3..d14ba3b9a 100644 --- a/app/src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts +++ b/app/src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts @@ -2,7 +2,6 @@ import type { StdTableProps } from '@/components/StdDesign/StdDataDisplay/types' import type { Column, StdTableResponse } from '@/components/StdDesign/types' import type { ComputedRef } from 'vue' import { downloadCsv } from '@/lib/helper' -import { message } from 'ant-design-vue' import dayjs from 'dayjs' import _ from 'lodash' @@ -40,8 +39,7 @@ async function exportCsv(props: StdTableProps, pithyColumns: ComputedRef { - message.error(e.message ?? $gettext('Server error')) + }).catch(() => { hasMore = false }) page += 1 diff --git a/app/src/components/StdDesign/StdDataDisplay/methods/sortable.ts b/app/src/components/StdDesign/StdDataDisplay/methods/sortable.ts index 124735188..4b12f5446 100644 --- a/app/src/components/StdDesign/StdDataDisplay/methods/sortable.ts +++ b/app/src/components/StdDesign/StdDataDisplay/methods/sortable.ts @@ -119,9 +119,6 @@ function useSortable(props: StdTableProps, randomId: Ref, dataSource: Re affected_ids: changeIds, }).then(() => { message.success($gettext('Updated successfully')) - // eslint-disable-next-line ts/no-explicit-any - }).catch((e: any) => { - message.error(e?.message ?? $gettext('Server error')) }) }, }) diff --git a/app/src/components/StdDesign/StdDataEntry/components/StdSelector.vue b/app/src/components/StdDesign/StdDataEntry/components/StdSelector.vue index 9c1e8c875..a9ab7eb2a 100644 --- a/app/src/components/StdDesign/StdDataEntry/components/StdSelector.vue +++ b/app/src/components/StdDesign/StdDataEntry/components/StdSelector.vue @@ -2,6 +2,7 @@ import type Curd from '@/api/curd' import type { Column } from '@/components/StdDesign/types' import StdTable from '@/components/StdDesign/StdDataDisplay/StdTable.vue' +import { CloseCircleFilled } from '@ant-design/icons-vue' import { watchOnce } from '@vueuse/core' import _ from 'lodash' @@ -134,10 +135,13 @@ async function ok() { M_values.value = _.clone(records.value) } -// function clear() { -// M_values.value = [] -// emit('update:selectedKey', '') -// } +function clear() { + M_values.value = [] + if (props.selectionType === 'radio') + selectedKey.value = null + else + selectedKey.value = [] +} defineExpose({ show }) @@ -150,9 +154,8 @@ defineExpose({ show }) >
-
+
+ +
+ +
$gettext('Filename is empty'), + 50002: () => $gettext('Cert path is not under the nginx conf dir'), + 50003: () => $gettext('Certificate decode error'), + 50004: () => $gettext('Certificate parse error'), + 50005: () => $gettext('Payload resource is nil'), + 50006: () => $gettext('Path: {0} is not under the nginx conf dir: {1}'), +} diff --git a/app/src/constants/errors/config.ts b/app/src/constants/errors/config.ts new file mode 100644 index 000000000..a86f4e1c4 --- /dev/null +++ b/app/src/constants/errors/config.ts @@ -0,0 +1,3 @@ +export default { + 50006: () => $gettext('Path: {0} is not under the nginx conf dir: {1}'), +} diff --git a/app/src/constants/errors/crypto.ts b/app/src/constants/errors/crypto.ts new file mode 100644 index 000000000..149086e18 --- /dev/null +++ b/app/src/constants/errors/crypto.ts @@ -0,0 +1,4 @@ +export default { + 50001: () => $gettext('Plain text is empty'), + 50002: () => $gettext('Cipher text is too short'), +} diff --git a/app/src/constants/errors/nginx.ts b/app/src/constants/errors/nginx.ts new file mode 100644 index 000000000..9a8fc0423 --- /dev/null +++ b/app/src/constants/errors/nginx.ts @@ -0,0 +1,3 @@ +export default { + 50001: () => $gettext('Block is nil'), +} diff --git a/app/src/constants/errors/nginx_log.ts b/app/src/constants/errors/nginx_log.ts new file mode 100644 index 000000000..9cc350163 --- /dev/null +++ b/app/src/constants/errors/nginx_log.ts @@ -0,0 +1,9 @@ +export default { + 50001: () => $gettext('The log path is not under the paths in settings.NginxSettings.LogDirWhiteList'), + 50002: () => $gettext('ServerIdx out of range'), + 50003: () => $gettext('DirectiveIdx out of range'), + 50004: () => $gettext('Directive.Params neither access_log nor error_log'), + 50005: () => $gettext('Directive params is empty'), + 50006: () => $gettext('Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information'), + 50007: () => $gettext('Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information'), +} diff --git a/app/src/constants/errors/self_check.ts b/app/src/constants/errors/self_check.ts new file mode 100644 index 000000000..6f563f86f --- /dev/null +++ b/app/src/constants/errors/self_check.ts @@ -0,0 +1,14 @@ +export default { + 4040: () => $gettext('Task not found'), + 4041: () => $gettext('Failed to read nginx.conf'), + 5001: () => $gettext('Failed to parse nginx.conf'), + 4042: () => $gettext('Nginx conf no http block'), + 4043: () => $gettext('Nginx conf not include sites-enabled'), + 4044: () => $gettext('Nginx conf no stream block'), + 4045: () => $gettext('Nginx conf not include stream-enabled'), + 5002: () => $gettext('Failed to create backup'), + 4046: () => $gettext('Sites-available directory not exist'), + 4047: () => $gettext('Sites-enabled directory not exist'), + 4048: () => $gettext('Streams-available directory not exist'), + 4049: () => $gettext('Streams-enabled directory not exist'), +} diff --git a/app/src/constants/errors/site.ts b/app/src/constants/errors/site.ts new file mode 100644 index 000000000..dc7427eb7 --- /dev/null +++ b/app/src/constants/errors/site.ts @@ -0,0 +1,5 @@ +export default { + 40401: () => $gettext('Site not found'), + 50001: () => $gettext('Destination file already exists'), + 50002: () => $gettext('Site is enabled'), +} diff --git a/app/src/constants/errors/user.ts b/app/src/constants/errors/user.ts new file mode 100644 index 000000000..547e4a385 --- /dev/null +++ b/app/src/constants/errors/user.ts @@ -0,0 +1,10 @@ +export default { + 40301: () => $gettext('Password incorrect'), + 40303: () => $gettext('User banned'), + 40304: () => $gettext('Invalid otp code'), + 40305: () => $gettext('Invalid recovery code'), + 50000: () => $gettext('WebAuthn settings are not configured'), + 50001: () => $gettext('User not enabled otp as 2fa'), + 50002: () => $gettext('Otp or recovery code empty'), + 40401: () => $gettext('Session not found'), +} diff --git a/app/src/language/ar/app.po b/app/src/language/ar/app.po index 723331a9a..d263f2677 100644 --- a/app/src/language/ar/app.po +++ b/app/src/language/ar/app.po @@ -17,7 +17,7 @@ msgstr "" msgid "2FA" msgstr "المصادقة الثنائية" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "إعدادات المصادقة الثنائية" @@ -47,23 +47,23 @@ msgstr "مستخدم ACME" msgid "Action" msgstr "إجراء" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "إضافة" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "أضف مفتاح مرور" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 msgid "Add Configuration" msgstr "إضافة تكوين" @@ -80,11 +80,11 @@ msgstr "أضف مكان" msgid "Add Site" msgstr "أضف موقع" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 msgid "Add Stream" msgstr "أضف Stream" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 msgid "Added successfully" msgstr "تمت الإضافة بنجاح" @@ -97,12 +97,12 @@ msgstr "إضافي" msgid "Advance Mode" msgstr "الوضع المتقدم" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "بعد ذلك، قم بتحديث هذه الصفحة وانقر فوق إضافة مفتاح مرور مرة أخرى." -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "الكل" @@ -127,7 +127,7 @@ msgstr "رمز API" msgid "API Type" msgstr "رمز API" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -136,25 +136,25 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "تم التكرار بنجاح" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "بنية" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 msgid "Are you sure to delete this banned IP immediately?" msgstr "هل أنت متأكد من حذف عنوان IP المحظور هذا على الفور؟" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 msgid "Are you sure to delete this passkey immediately?" msgstr "هل أنت متأكد من حذف مفتاح المرور هذا على الفور؟" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "هل أنت متأكد أنك تريد الحذف؟" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 msgid "Are you sure you want to clear all notifications?" msgstr "هل أنت متأكد أنك تريد مسح كافة التنبيهات؟" @@ -162,20 +162,20 @@ msgstr "هل أنت متأكد أنك تريد مسح كافة التنبيها msgid "Are you sure you want to clear the record of chat?" msgstr "هل أنت متأكد أنك تريد مسح سجل المحادثة؟" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 msgid "Are you sure you want to delete this item permanently?" msgstr "هل أنت متأكد أنك تريد حذف هذا العنصر نهائيًا؟" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 msgid "Are you sure you want to delete this item?" msgstr "هل أنت متأكد أنك تريد حذف هذا العنصر؟" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "هل أنت متأكد أنك تريد الحذف؟" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 msgid "Are you sure you want to recover this item?" msgstr "هل أنت متأكد أنك تريد استرداد هذا العنصر؟" @@ -208,15 +208,15 @@ msgstr "محاولات" msgid "Attempts" msgstr "محاولات" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "مصادقة" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "المصادقة باستخدام مفتاح المرور" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "إعدادات المصادقة" @@ -237,9 +237,9 @@ msgstr "تم تعطيل التجديد التلقائي لـ‎%{name}" msgid "Auto-renewal enabled for %{name}" msgstr "تم تمكين التجديد التلقائي لـ‏%{name}" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -249,15 +249,15 @@ msgstr "رجوع" msgid "Back Home" msgstr "العودة إلى الصفحة الرئيسية" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "العودة إلى القائمة" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "دقائق حد الحظر" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "عناوين IP المحظورة" @@ -269,8 +269,8 @@ msgstr "محظور حتى" msgid "Base information" msgstr "المعلومات الأساسية" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 msgid "Basic" @@ -281,24 +281,28 @@ msgstr "أساسي" msgid "Basic Mode" msgstr "الوضع الأساسي" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "إجراء" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 msgid "Batch Modify" msgstr "تعديل متعدد" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "ترقية متعددة" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "فيما يلي العناصر المحددة التي تريد تعديلها دفعة واحدة" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "بناء مع" @@ -311,15 +315,15 @@ msgstr "مجلد سلطة التصديق" msgid "CADir" msgstr "مجلد سلطة التصديق" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "لا يمكن المسح؟ استخدم ربط مفتاح النص" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -335,15 +339,29 @@ msgstr "إلغاء" msgid "Category" msgstr "فئة" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 msgid "Cert" msgstr "شهادة" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "خطأ في مزامنة الشهادة" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "خطأ في مزامنة الشهادة" + #: src/views/preference/CertSettings.vue:24 msgid "Certificate Renewal Interval" msgstr "الفاصل الزمني لتجديد الشهادة" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 msgid "Certificate Status" msgid_plural "Certificates Status" @@ -382,15 +400,15 @@ msgstr[3] "الشهادات المعدلة" msgstr[4] "الشهادات المعدلة" msgstr[5] "الشهادات المعدلة" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "Changed Path" msgstr "المسار المتغير" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "قناة" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "تحقق مرة أخرى" @@ -414,17 +432,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "تنظيف متغيرات البيئة" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "مسح" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 msgid "Cleared successfully" msgstr "تم المسح بنجاح" @@ -483,7 +505,7 @@ msgstr "تم النسخ" msgid "Copy" msgstr "نسخ" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "ترقية نواة" @@ -507,12 +529,12 @@ msgstr "إنشاء آخر" msgid "Create File" msgstr "إنشاء ملف" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 msgid "Create Folder" msgstr "إنشاء مجلد" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "تم الإنشاء في" @@ -533,15 +555,15 @@ msgstr "بيان الاعتماد" msgid "Credentials" msgstr "بيانات الاعتماد" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "TOTP مفعل للحساب الحالي." -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "TOTP معطل للحساب الحالي." -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "الإصدار الحالي" @@ -556,12 +578,12 @@ msgid "" "indicator." msgstr "قم بتخصيص اسم العقدة المحلية ليتم عرضها في مؤشر البيئة." -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "لوحة المعلومات" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "قاعدة البيانات (اختياري، الافتراضي: قاعدة البيانات)" @@ -570,16 +592,16 @@ msgid "Days" msgstr "أيام" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "حذف" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "حذف نهائي" @@ -591,7 +613,7 @@ msgstr "خطأ حذف الموقع البعيد" msgid "Delete Remote Site Success" msgstr "نجح حذف الموقع البعيد" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "حذف الموقع: ‎%{site_name}" @@ -603,7 +625,7 @@ msgstr "حذف البث: ‎%{stream_name}" msgid "Deleted successfully" msgstr "تم الحذف بنجاح" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -626,6 +648,10 @@ msgstr "تم النشر بنجاح" msgid "Description" msgstr "وصف" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "تفاصيل" @@ -638,6 +664,18 @@ msgstr "وضع التطوير" msgid "Directive" msgstr "توجيه" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "توجيهات" @@ -646,8 +684,8 @@ msgstr "توجيهات" msgid "Directory" msgstr "مجلد" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 msgid "Disable" msgstr "تعطيل" @@ -681,7 +719,7 @@ msgid "Disabled" msgstr "معطل" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -770,7 +808,7 @@ msgstr "نطاق" msgid "Domain Config Created Successfully" msgstr "تم إنشاء تكوين النطاق بنجاح" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "قائمة النطاقات فارغة، حاول إعادة فتح Auto Cert لـ %{config}" @@ -782,11 +820,11 @@ msgstr "خطأ في تنزيل الإصدار الأخير" msgid "Downloading latest release" msgstr "تنزيل الإصدار الأحدث" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "تمكين وضع التشغيل التجريبي" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." @@ -794,10 +832,10 @@ msgstr "" "نظرًا لسياسات الأمان لبعض المتصفحات، لا يمكنك استخدام مفاتيح المرور على مواقع " "الويب غير HTTPS، إلا عند التشغيل على localhost." -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "مكرر" @@ -828,7 +866,7 @@ msgstr "تعديل %{n}" msgid "Edit %{n}" msgstr "تعديل %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "تعديل التكوين" @@ -844,13 +882,13 @@ msgstr "تعديل البث" msgid "Email" msgstr "بريد إلكتروني" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "البريد الإلكتروني (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 msgid "Enable" msgstr "تفعيل" @@ -862,7 +900,7 @@ msgstr "فشل تفعيل %{conf_name} في %{node_name}" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "تم تفعيل %{conf_name} في %{node_name} بنجاح" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 msgid "Enable 2FA successfully" msgstr "تم تفعيل المصادقة الثنائية بنجاح" @@ -898,7 +936,7 @@ msgstr "تم التفعيل بنجاح" msgid "Enable TLS" msgstr "تفعيل TLS" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 msgid "Enable TOTP" msgstr "تفعيل TOTP" @@ -916,7 +954,7 @@ msgid "Enabled" msgstr "مفعل" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -927,7 +965,7 @@ msgstr "تم التفعيل بنجاح" msgid "Encrypt website with Let's Encrypt" msgstr "تشفير الموقع باستخدام Let's Encrypt" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "بيئة" @@ -948,7 +986,7 @@ msgstr "خطأ" msgid "Error Logs" msgstr "سجلات الأخطاء" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "مسار الملف التنفيذي" @@ -961,7 +999,7 @@ msgstr "منتهي الصلاحية" msgid "Expired At: %{date}" msgstr "تنتهي في: %{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "تصدير" @@ -969,15 +1007,20 @@ msgstr "تصدير" msgid "Fail to obtain certificate" msgstr "فشل في الحصول على الشهادة" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "فشل في التفعيل %{msg}" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "فشل في تعطيل %{msg}" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -987,6 +1030,14 @@ msgstr "فشل في التفعيل %{msg}" msgid "Failed to get certificate information" msgstr "فشل في الحصول على معلومات الشهادة" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1004,6 +1055,10 @@ msgstr "الملف موجود" msgid "File Not Found" msgstr "لم يتم العثور على الملف" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "تصفيه" @@ -1012,7 +1067,7 @@ msgstr "تصفيه" msgid "Finished" msgstr "انتهى" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1027,15 +1082,15 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "للمستخدمين الصين: /https://mirror.ghproxy.com" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "تنسيق الكود" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 msgid "Format error %{msg}" msgstr "خطأ في التنسيق %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 msgid "Format successfully" msgstr "تم التنسيق بنجاح" @@ -1051,7 +1106,7 @@ msgstr "توليد" msgid "Generating private key for registering account" msgstr "توليد مفتاح خاص لتسجيل الحساب" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 msgid "Get release information error" msgstr "خطأ في الحصول على معلومات الإصدار" @@ -1095,7 +1150,7 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "إذا تُرك فارغًا، سيتم استخدام دليل CA الافتراضي." -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." @@ -1103,7 +1158,7 @@ msgstr "" "إذا وصل عدد محاولات تسجيل الدخول الفاشلة من عنوان IP إلى الحد الأقصى " "للمحاولات في حد دقائق الحظر، سيتم حظر عنوان IP لفترة من الوقت." -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." @@ -1111,7 +1166,7 @@ msgstr "" "إذا فقدت هاتفك المحمول، يمكنك استخدام رمز الاسترداد لإعادة تعيين المصادقة " "الثنائية." -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "إذا كان متصفحك يدعم WebAuthn Passkey، ستظهر نافذة حوار." @@ -1127,14 +1182,10 @@ msgstr "" msgid "Import" msgstr "استيراد" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "استيراد شهادة" -#: src/views/other/Login.vue:78 -msgid "Incorrect username or password" -msgstr "اسم المستخدم أو كلمة المرور غير صحيحة" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1148,16 +1199,16 @@ msgstr "خطأ في ترقية النواة الأولية" msgid "Initialing core upgrader" msgstr "بدء ترقية النواة" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "أدخل الرمز من التطبيق:" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "أدخل رمز الاسترداد:" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "تثبيت" @@ -1173,23 +1224,29 @@ msgstr "فترة" msgid "Invalid" msgstr "غير صالح" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "رمز 2FA أو الاسترداد غير صالح" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 msgid "Invalid filename" msgstr "اسم ملف غير صالح" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "اسم المجلد غير صالح" +#: src/constants/errors/user.ts:4 +#, fuzzy +msgid "Invalid otp code" +msgstr "رمز 2FA أو الاسترداد غير صالح" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "رمز المرور أو رمز الاسترداد غير صالح" +#: src/constants/errors/user.ts:5 +#, fuzzy +msgid "Invalid recovery code" +msgstr "رمز 2FA أو الاسترداد غير صالح" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "IP" @@ -1219,11 +1276,11 @@ msgstr "سر JWT" msgid "Key Type" msgstr "نوع المفتاح" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "آخر فحص في" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 msgid "Last used at" msgstr "آخر استخدام في" @@ -1235,7 +1292,7 @@ msgstr "اتركه فارغًا لعدم التغيير" msgid "Leave blank for the default: https://api.openai.com/" msgstr "اتركه فارغًا للإعداد الافتراضي: /https://api.openai.com" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 msgid "Leave blank if do not want to modify" msgstr "اتركه فارغًا إذا كنت لا تريد التعديل" @@ -1243,8 +1300,8 @@ msgstr "اتركه فارغًا إذا كنت لا تريد التعديل" msgid "Leave blank if you don't need this." msgstr "اتركه فارغًا إذا لم تكن بحاجة إلى ذلك." -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 msgid "Leave blank will not change anything" msgstr "تركه فارغًا لن يغير شيئًا" @@ -1261,7 +1318,7 @@ msgstr "رخصة" msgid "Link Start" msgstr "ابدأ الرابط" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "قائمة" @@ -1269,7 +1326,7 @@ msgstr "قائمة" msgid "Load Average:" msgstr "متوسط التحميل:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "تحميل من الإعدادات" @@ -1290,15 +1347,15 @@ msgstr "مكان" msgid "Locations" msgstr "أماكن" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 msgid "Log" msgstr "سجل" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "تسجيل الدخول" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "تم تسجيل الدخول بنجاح" @@ -1306,7 +1363,7 @@ msgstr "تم تسجيل الدخول بنجاح" msgid "Logout successful" msgstr "تم تسجيل الخروج بنجاح" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "تدوير السجلات" @@ -1335,15 +1392,15 @@ msgstr "" "على الشهادة." #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "إدارة التكوينات" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "إدارة المواقع" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 msgid "Manage Streams" msgstr "إدارة التدفقات" @@ -1355,7 +1412,7 @@ msgstr "إدارة المستخدمين" msgid "Managed Certificate" msgstr "شهادة مُدارة" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "الحد الأقصى للمحاولات" @@ -1377,13 +1434,13 @@ msgid "Model" msgstr "نموذج" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 msgid "Modify" msgstr "تعديل" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "تعديل الشهادة" @@ -1391,7 +1448,7 @@ msgstr "تعديل الشهادة" msgid "Modify Config" msgstr "تعديل التكوين" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "Modify Mode" msgstr "وضع التعديل" @@ -1400,20 +1457,20 @@ msgid "Multi-line Directive" msgstr "توجيه متعدد الأسطر" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "اسم" @@ -1433,15 +1490,15 @@ msgstr "إجمالي استقبال الشبكة" msgid "Network Total Send" msgstr "إجمالي إرسال الشبكة" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 msgid "New name" msgstr "اسم جديد" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "New Path" msgstr "مسار جديد" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "تم إصدار نسخة جديدة" @@ -1451,7 +1508,7 @@ msgstr "تم إصدار نسخة جديدة" msgid "Next" msgstr "التالي" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "Nginx" @@ -1467,6 +1524,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 msgid "Nginx Configuration Parse Error" @@ -1476,7 +1549,7 @@ msgstr "خطأ في تحليل تكوين Nginx" msgid "Nginx Configurations Directory" msgstr "مجلد تكوينات Nginx" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "التحكم في Nginx" @@ -1512,24 +1585,24 @@ msgstr "تم إعادة تحميل Nginx بنجاح" msgid "Nginx Restart Command" msgstr "أمر إعادة تشغيل Nginx" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" msgstr "تم إعادة تشغيل Nginx بنجاح" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "لا" @@ -1566,11 +1639,11 @@ msgstr "" "يرجى ملاحظة أنه إذا كان ملف التكوين يتضمن تكوينات أو شهادات أخرى، فيرجى " "مزامنتها مع العقد البعيدة مسبقًا." -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 msgid "Notification" msgstr "إشعار" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 msgid "Notifications" msgstr "الإشعارات" @@ -1600,27 +1673,27 @@ msgstr "" msgid "Offline" msgstr "غير متصل" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "حسنًا" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "حسنًا" @@ -1635,19 +1708,19 @@ msgstr "بمجرد اكتمال التحقق، سيتم إزالة السجلا msgid "Online" msgstr "متصل" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "أوبن أي آي" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "أو" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "الاسم الأصلي" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 msgid "OS" msgstr "نظام التشغيل" @@ -1655,12 +1728,17 @@ msgstr "نظام التشغيل" msgid "OS:" msgstr "نظام التشغيل:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +#, fuzzy +msgid "Otp or recovery code empty" +msgstr "استخدم رمز الاسترداد" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "الكتابة فوق" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "الكتابة فوق الملف الموجود" @@ -1669,11 +1747,11 @@ msgstr "الكتابة فوق الملف الموجود" msgid "Params" msgstr "عوامل" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "مفتاح المرور" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " @@ -1683,25 +1761,38 @@ msgstr "" "التعرف على الوجه أو كلمة مرور الجهاز أو رقم التعريف الشخصي. يمكن استخدامها " "كبديل لكلمة المرور أو كطريقة للمصادقة الثنائية." -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "كلمة المرور" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "كلمة المرور (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "اسم المستخدم أو كلمة المرور غير صحيحة" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "مسار" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "نفذ" @@ -1713,14 +1804,18 @@ msgstr "خطأ في تنفيذ ترقية النواة" msgid "Performing core upgrade" msgstr "تنفيذ ترقية النواة" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" "يرجى إدخال اسم لمفتاح المرور الذي ترغب في إنشائه ثم انقر على زر موافق أدناه." -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 msgid "Please enter the OTP code:" msgstr "يرجى إدخال رمز OTP:" @@ -1730,7 +1825,7 @@ msgid "" "provider." msgstr "يرجى ملء بيانات اعتماد مصادقة API المقدمة من مزود DNS الخاص بك." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "يرجى ملء الحقول المطلوبة" @@ -1742,12 +1837,12 @@ msgstr "" "يرجى أولاً إضافة بيانات الاعتماد في الشهادات > بيانات اعتماد DNS، ثم اختيار " "أحد بيانات الاعتماد أدناه لطلب API لمزود DNS." -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 msgid "Please input a filename" msgstr "يرجى إدخال اسم الملف" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 msgid "Please input a folder name" msgstr "يرجى إدخال اسم المجلد" @@ -1780,7 +1875,7 @@ msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "يرجى ملاحظة أن تكوين وحدات الوقت أدناه كلها بالثواني." -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 msgid "Please select at least one node to upgrade" msgstr "يرجى اختيار عقدة واحدة على الأقل للترقية" @@ -1798,13 +1893,13 @@ msgstr "يرجى اختيار عقدة واحدة على الأقل!" msgid "Please upgrade the remote Nginx UI to the latest version" msgstr "يرجى ترقية واجهة Nginx البعيدة إلى أحدث إصدار" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "ما قبل الإصدار" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "تفضيل" @@ -1851,24 +1946,24 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "استعادة" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 msgid "Recovered Successfully" msgstr "تم الاسترداد بنجاح" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "استرداد" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "رمز الاسترداد" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "رمز الاسترداد:" @@ -1898,7 +1993,7 @@ msgstr "فشل التسجيل" msgid "Register On Startup" msgstr "التسجيل عند بدء التشغيل" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 msgid "Register passkey successfully" msgstr "تم تسجيل مفتاح المرور بنجاح" @@ -1914,20 +2009,20 @@ msgstr "تسجيل المستخدم" msgid "Registration Status" msgstr "حالة التسجيل" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 msgid "Reinstall" msgstr "إعادة التثبيت" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "ملاحظة الإصدار" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "إعادة تحميل" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "إعادة التحميل" @@ -1935,7 +2030,7 @@ msgstr "إعادة التحميل" msgid "Reloading nginx" msgstr "إعادة تحميل nginx" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "إزالة" @@ -1948,19 +2043,19 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "تمت إزالة الموقع %{site} من %{node} بنجاح" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 msgid "Remove successfully" msgstr "إزالة بنجاح" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 msgid "Removed successfully" msgstr "تمت الإزالة بنجاح" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 msgid "Rename" msgstr "إعادة تسمية" @@ -2032,31 +2127,31 @@ msgstr "تم التجديد بنجاح" msgid "Requested with wrong parameters" msgstr "تم الطلب باستخدام عوامل خاطئة" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "إعادة تعيين" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 msgid "Reset 2FA" msgstr "إعادة تعيين التحقق بخطوتين" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "إعادة تشغيل" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "إعادة التشغيل" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "اسم العرض RP" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "أصول RP" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "معرّف الجهاز عن بُعد" @@ -2064,20 +2159,20 @@ msgstr "معرّف الجهاز عن بُعد" msgid "Run Mode" msgstr "وضع التشغيل" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "يعمل" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2087,7 +2182,7 @@ msgstr "حفظ" msgid "Save Directive" msgstr "حفظ التوجيه" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2116,14 +2211,14 @@ msgstr "تم حفظ الموقع %{site} إلى %{node} بنجاح" msgid "Save successfully" msgstr "تم الحفظ بنجاح" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "تم الحفظ بنجاح" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "امسح رمز الاستجابة السريعة بهاتفك المحمول لإضافة الحساب إلى التطبيق." @@ -2131,7 +2226,7 @@ msgstr "امسح رمز الاستجابة السريعة بهاتفك المح msgid "SDK" msgstr "حزمة تطوير البرمجيات SDK" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "تم نسخ السر" @@ -2148,28 +2243,7 @@ msgstr "" msgid "Send" msgstr "إرسال" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "خطأ في الخادم" @@ -2185,6 +2259,14 @@ msgstr "اسم_الخادم غير موجود في التوجيهات" msgid "server_name parameter is required" msgstr "عامل server_name مطلوب" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +msgid "Session not found" +msgstr "" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2205,11 +2287,23 @@ msgstr "تعيين متغيرات البيئة" msgid "Setting HTTP01 challenge provider" msgstr "تعيين موفر تحدي HTTP01" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "عرض" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "تسجيل الدخول باستخدام مفتاح المرور" @@ -2221,10 +2315,20 @@ msgstr "توجيه واحد" msgid "Site Categories" msgstr "فئات الموقع" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "معطل" + #: src/routes/index.ts:224 msgid "Site Logs" msgstr "سجلات الموقع" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "لم يتم العثور على الملف" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2234,29 +2338,37 @@ msgstr "مجلد" msgid "Sites List" msgstr "قائمة المواقع" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Content" msgstr "محتوى شهادة SSL" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 msgid "SSL Certificate Key Content" msgstr "محتوى مفتاح شهادة SSL" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 msgid "SSL Certificate Key Path" msgstr "مسار مفتاح شهادة SSL" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 msgid "SSL Certificate Path" msgstr "مسار شهادة SSL" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 msgid "SSO Login" msgstr "تسجيل الدخول عبر SSO" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 msgid "Stable" msgstr "مستقر" @@ -2267,7 +2379,7 @@ msgstr "مستقر" msgid "Status" msgstr "الحالة" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "متوقف" @@ -2281,6 +2393,15 @@ msgstr "تخزين" msgid "Streams Directory" msgstr "مجلد" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "مجلد" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "نجاح" @@ -2306,7 +2427,7 @@ msgstr "التبديل إلى الوضع الداكن" msgid "Switch to light theme" msgstr "التبديل إلى الوضع الفاتح" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "مزامنة" @@ -2363,7 +2484,7 @@ msgstr "مزامنة العقد" msgid "Sync strategy" msgstr "استراتيجية المزامنة" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "مزامنة إلى" @@ -2383,6 +2504,11 @@ msgstr "مستخدم النظام الأولي" msgid "Target" msgstr "الهدف" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "غير موجود" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "محطة" @@ -2413,14 +2539,19 @@ msgstr "" "يجب أن يحتوي اسم العقدة على حروف وأحرف يونيكود وأرقام وشرطات وعلامات وصل " "ونقاط فقط." -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "الإدخال ليس شهادة SSL" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 msgid "The input is not a SSL Certificate Key" msgstr "المدخل ليس مفتاح شهادة SSL" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 #, fuzzy msgid "" @@ -2437,11 +2568,11 @@ msgstr "" "يجب أن يحتوي اسم العقدة على حروف وأحرف يونيكود وأرقام وشرطات وعلامات وصل " "ونقاط فقط." -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 msgid "The path exists, but the file is not a certificate" msgstr "المسار موجود، لكن الملف ليس شهادة" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "المسار موجود، لكن الملف ليس مفتاحًا خاصًا" @@ -2454,7 +2585,7 @@ msgstr "" "يجب أن يحتوي اسم العقدة على حروف وأحرف يونيكود وأرقام وشرطات وعلامات وصل " "ونقاط فقط." -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "رمز الاسترداد يُعرض مرة واحدة فقط، يرجى حفظه في مكان آمن." @@ -2490,17 +2621,17 @@ msgstr "عنوان URL غير صالح." msgid "The username or password is incorrect" msgstr "اسم المستخدم أو كلمة المرور غير صحيحة" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "هذا العنصر في الشهادة التلقائية غير صالح، يرجى إزالته." -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "يتم إدارة هذه الشهادة بواسطة Nginx UI" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "هذا الحقل مطلوب" @@ -2526,17 +2657,17 @@ msgstr "يجب أن يحتوي هذا الحقل على حروف وأحرف يو msgid "This value is already taken" msgstr "هذه القيمة مستخدمة مسبقا" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "سيتم ترقية أو إعادة تثبيت Nginx UI على %{nodeNames} إلى %{version}." -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "كبح" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "نصائح" @@ -2545,7 +2676,7 @@ msgstr "نصائح" msgid "Title" msgstr "عنوان" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." @@ -2553,7 +2684,7 @@ msgstr "" "لتفعيله، تحتاج إلى تثبيت تطبيق Google Authenticator أو Microsoft " "Authenticator على هاتفك المحمول." -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2588,11 +2719,6 @@ msgstr "" msgid "Token is not valid" msgstr "الرمز غير صالح" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "" -"عدد كبير جدًا من محاولات تسجيل الدخول الفاشلة، يرجى المحاولة مرة أخرى لاحقًا" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" @@ -2603,11 +2729,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "كلمة مرور لمرة واحدة تعتمد على الوقت" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." @@ -2615,7 +2741,7 @@ msgstr "" "TOTP هو طريقة مصادقة ثنائية تستخدم خوارزمية كلمة مرور لمرة واحدة تعتمد على " "الوقت." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "مهملات" @@ -2629,13 +2755,13 @@ msgstr "يتطلب المصادقة الثنائية" msgid "Type" msgstr "نوع" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 msgid "Update successfully" msgstr "تم التحديث بنجاح" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2649,12 +2775,12 @@ msgstr "محدث في" msgid "Updated successfully" msgstr "تم التحديث بنجاح" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "ترقية" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "تمت ترقية Nginx UI على %{node} بنجاح 🎉" @@ -2662,7 +2788,7 @@ msgstr "تمت ترقية Nginx UI على %{node} بنجاح 🎉" msgid "Upgraded successfully" msgstr "تم الترقية بنجاح" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "جارٍ ترقية Nginx UI، يرجى الانتظار..." @@ -2678,11 +2804,11 @@ msgstr "مدة التشغيل:" msgid "URL" msgstr "عنوان URL" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "استخدم كلمة المرور لمرة واحدة" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "استخدم رمز الاسترداد" @@ -2690,15 +2816,20 @@ msgstr "استخدم رمز الاسترداد" msgid "User" msgstr "مستخدم" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +#, fuzzy +msgid "User banned" msgstr "المستخدم محظور" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" +msgstr "" + +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "اسم المستخدم" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "اسم المستخدم (*)" @@ -2712,26 +2843,26 @@ msgstr "صالح" msgid "Version" msgstr "إصدار" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "عرض" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 msgid "View all notifications" msgstr "عرض جميع التنبيهات" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 msgid "View Details" msgstr "عرض التفاصيل" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "View Mode" msgstr "وضع العرض" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "تحذير" @@ -2750,10 +2881,14 @@ msgstr "" "سنقوم بإزالة تكوين HTTPChallenge من هذا الملف وإعادة تحميل Nginx. هل أنت " "متأكد أنك تريد المتابعة؟" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "ويب أوثن" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2785,27 +2920,34 @@ msgstr "كتابة مفتاح الشهادة الخاص إلى القرص" msgid "Writing certificate to disk" msgstr "كتابة الشهادة إلى القرص" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "نعم" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "أنت تستخدم أحدث إصدار" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "يمكنك التحقق من ترقية Nginx UI في هذه الصفحة." -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "لم تقم بتكوين إعدادات Webauthn، لذا لا يمكنك إضافة مفتاح مرور." -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "مفاتيح المرور الخاصة بك" + +#~ msgid "Incorrect username or password" +#~ msgstr "اسم المستخدم أو كلمة المرور غير صحيحة" + +#~ msgid "Too many login failed attempts, please try again later" +#~ msgstr "" +#~ "عدد كبير جدًا من محاولات تسجيل الدخول الفاشلة، يرجى المحاولة مرة أخرى لاحقًا" diff --git a/app/src/language/en/app.po b/app/src/language/en/app.po index c52a55122..286ac9072 100644 --- a/app/src/language/en/app.po +++ b/app/src/language/en/app.po @@ -13,7 +13,7 @@ msgstr "" msgid "2FA" msgstr "" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "" @@ -44,23 +44,23 @@ msgstr "Username" msgid "Action" msgstr "Action" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 #, fuzzy msgid "Add Configuration" msgstr "Edit Configuration" @@ -78,12 +78,12 @@ msgstr "Add Location" msgid "Add Site" msgstr "Add Site" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 #, fuzzy msgid "Add Stream" msgstr "Add Site" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 #, fuzzy msgid "Added successfully" msgstr "Saved successfully" @@ -98,12 +98,12 @@ msgstr "Add Location" msgid "Advance Mode" msgstr "Advance Mode" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "" @@ -127,7 +127,7 @@ msgstr "" msgid "API Type" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -136,27 +136,27 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "Saved successfully" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 #, fuzzy msgid "Are you sure to delete this banned IP immediately?" msgstr "Are you sure you want to remove this directive?" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 #, fuzzy msgid "Are you sure to delete this passkey immediately?" msgstr "Are you sure you want to remove this directive?" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "Are you sure you want to remove this directive?" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 #, fuzzy msgid "Are you sure you want to clear all notifications?" msgstr "Are you sure you want to remove this directive?" @@ -166,23 +166,23 @@ msgstr "Are you sure you want to remove this directive?" msgid "Are you sure you want to clear the record of chat?" msgstr "Are you sure you want to remove this directive?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 #, fuzzy msgid "Are you sure you want to delete this item permanently?" msgstr "Are you sure you want to remove this directive?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "Are you sure you want to remove this directive?" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 #, fuzzy msgid "Are you sure you want to delete?" msgstr "Are you sure you want to remove this directive?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "Are you sure you want to remove this directive?" @@ -217,15 +217,15 @@ msgstr "" msgid "Attempts" msgstr "" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "" @@ -246,9 +246,9 @@ msgstr "Auto-renewal disabled for %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Auto-renewal enabled for %{name}" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -259,15 +259,15 @@ msgstr "Back" msgid "Back Home" msgstr "Back" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "" @@ -279,8 +279,8 @@ msgstr "" msgid "Base information" msgstr "Base information" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 #, fuzzy @@ -292,25 +292,29 @@ msgstr "Basic Mode" msgid "Basic Mode" msgstr "Basic Mode" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "Action" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 #, fuzzy msgid "Batch Modify" msgstr "Modify Config" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "Build with" @@ -323,15 +327,15 @@ msgstr "" msgid "CADir" msgstr "" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -347,16 +351,30 @@ msgstr "Cancel" msgid "Category" msgstr "" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 msgid "Cert" msgstr "" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "Certificate is valid" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "Certificate has expired" + #: src/views/preference/CertSettings.vue:24 #, fuzzy msgid "Certificate Renewal Interval" msgstr "Certificate is valid" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 #, fuzzy msgid "Certificate Status" @@ -392,16 +410,16 @@ msgid_plural "Changed Certificates" msgstr[0] "Certificate is valid" msgstr[1] "Certificate is valid" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "Changed Path" msgstr "Certificate is valid" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "" @@ -425,17 +443,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 #, fuzzy msgid "Cleared successfully" @@ -497,7 +519,7 @@ msgstr "" msgid "Copy" msgstr "" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "" @@ -523,13 +545,13 @@ msgstr "Create Another" msgid "Create File" msgstr "Created at" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 #, fuzzy msgid "Create Folder" msgstr "Create Another" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "Created at" @@ -551,15 +573,15 @@ msgstr "" msgid "Credentials" msgstr "" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "" -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "" -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "" @@ -574,12 +596,12 @@ msgid "" "indicator." msgstr "" -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "Dashboard" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "Database (Optional, default: database)" @@ -588,16 +610,16 @@ msgid "Days" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "" @@ -611,7 +633,7 @@ msgstr "Certificate is valid" msgid "Delete Remote Site Success" msgstr "Certificate is valid" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "" @@ -624,7 +646,7 @@ msgstr "" msgid "Deleted successfully" msgstr "Disabled successfully" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -648,6 +670,10 @@ msgstr "Saved successfully" msgid "Description" msgstr "" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "" @@ -660,6 +686,18 @@ msgstr "Development Mode" msgid "Directive" msgstr "Directive" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "Directives" @@ -669,8 +707,8 @@ msgstr "Directives" msgid "Directory" msgstr "Directive" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 #, fuzzy msgid "Disable" msgstr "Disabled" @@ -709,7 +747,7 @@ msgid "Disabled" msgstr "Disabled" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -798,7 +836,7 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "Domain Config Created Successfully" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" @@ -810,20 +848,20 @@ msgstr "" msgid "Downloading latest release" msgstr "" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "" @@ -858,7 +896,7 @@ msgstr "Edit %{n}" msgid "Edit %{n}" msgstr "Edit %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "Edit Configuration" @@ -876,13 +914,13 @@ msgstr "Edit Site" msgid "Email" msgstr "Email (*)" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "Email (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 #, fuzzy msgid "Enable" msgstr "Enabled" @@ -895,7 +933,7 @@ msgstr "" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 #, fuzzy msgid "Enable 2FA successfully" msgstr "Enabled successfully" @@ -937,7 +975,7 @@ msgstr "Enabled successfully" msgid "Enable TLS" msgstr "Enable TLS" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 #, fuzzy msgid "Enable TOTP" msgstr "Enable TLS" @@ -956,7 +994,7 @@ msgid "Enabled" msgstr "Enabled" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -967,7 +1005,7 @@ msgstr "Enabled successfully" msgid "Encrypt website with Let's Encrypt" msgstr "Encrypt website with Let's Encrypt" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "" @@ -989,7 +1027,7 @@ msgstr "" msgid "Error Logs" msgstr "" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "" @@ -1003,7 +1041,7 @@ msgstr "" msgid "Expired At: %{date}" msgstr "Expiration Date: %{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "" @@ -1012,15 +1050,20 @@ msgstr "" msgid "Fail to obtain certificate" msgstr "Certificate is valid" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "Failed to enable %{msg}" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "Failed to disable %{msg}" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -1030,6 +1073,14 @@ msgstr "Failed to enable %{msg}" msgid "Failed to get certificate information" msgstr "" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1047,6 +1098,10 @@ msgstr "" msgid "File Not Found" msgstr "File Not Found" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "" @@ -1055,7 +1110,7 @@ msgstr "" msgid "Finished" msgstr "Finished" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1070,16 +1125,16 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 #, fuzzy msgid "Format error %{msg}" msgstr "Save error %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 #, fuzzy msgid "Format successfully" msgstr "Saved successfully" @@ -1097,7 +1152,7 @@ msgstr "" msgid "Generating private key for registering account" msgstr "" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 #, fuzzy msgid "Get release information error" msgstr "Base information" @@ -1142,19 +1197,19 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." msgstr "" -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." msgstr "" -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" @@ -1168,15 +1223,11 @@ msgstr "" msgid "Import" msgstr "" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "Certificate Status" -#: src/views/other/Login.vue:78 -msgid "Incorrect username or password" -msgstr "" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1190,16 +1241,16 @@ msgstr "" msgid "Initialing core upgrader" msgstr "" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "Install" @@ -1217,24 +1268,29 @@ msgstr "" msgid "Invalid" msgstr "Invalid E-mail!" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 #, fuzzy msgid "Invalid filename" msgstr "Invalid E-mail!" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "" +#: src/constants/errors/user.ts:4 +#, fuzzy +msgid "Invalid otp code" +msgstr "Invalid E-mail!" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "" +#: src/constants/errors/user.ts:5 +msgid "Invalid recovery code" +msgstr "" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "" @@ -1267,11 +1323,11 @@ msgstr "" msgid "Key Type" msgstr "" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 #, fuzzy msgid "Last used at" msgstr "Created at" @@ -1284,7 +1340,7 @@ msgstr "Leave blank for no change" msgid "Leave blank for the default: https://api.openai.com/" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 #, fuzzy msgid "Leave blank if do not want to modify" msgstr "Leave blank for no change" @@ -1294,8 +1350,8 @@ msgstr "Leave blank for no change" msgid "Leave blank if you don't need this." msgstr "Leave blank for no change" -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 #, fuzzy msgid "Leave blank will not change anything" msgstr "Leave blank for no change" @@ -1314,7 +1370,7 @@ msgstr "License" msgid "Link Start" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "" @@ -1323,7 +1379,7 @@ msgstr "" msgid "Load Average:" msgstr "Load Averages:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "" @@ -1346,16 +1402,16 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 #, fuzzy msgid "Log" msgstr "Login" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "Login" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "Login successful" @@ -1363,7 +1419,7 @@ msgstr "Login successful" msgid "Logout successful" msgstr "Logout successful" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "" @@ -1387,15 +1443,15 @@ msgstr "" "HTTPChallengePort (default: 9180) before getting the certificate." #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "Manage Configs" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "Manage Sites" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 #, fuzzy msgid "Manage Streams" msgstr "Manage Sites" @@ -1409,7 +1465,7 @@ msgstr "Manage Users" msgid "Managed Certificate" msgstr "Certificate is valid" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "" @@ -1432,14 +1488,14 @@ msgid "Model" msgstr "Advance Mode" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 #, fuzzy msgid "Modify" msgstr "Modify Config" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "Certificate Status" @@ -1448,7 +1504,7 @@ msgstr "Certificate Status" msgid "Modify Config" msgstr "Modify Config" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "Modify Mode" msgstr "Modify Config" @@ -1459,20 +1515,20 @@ msgid "Multi-line Directive" msgstr "Single Directive" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "Name" @@ -1492,17 +1548,17 @@ msgstr "Network Total Receive" msgid "Network Total Send" msgstr "Network Total Send" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 #, fuzzy msgid "New name" msgstr "Username" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "New Path" msgstr "Path" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "" @@ -1512,7 +1568,7 @@ msgstr "" msgid "Next" msgstr "Next" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "" @@ -1528,6 +1584,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 #, fuzzy @@ -1539,7 +1611,7 @@ msgstr "Configuration Name" msgid "Nginx Configurations Directory" msgstr "Configuration Name" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "" @@ -1576,25 +1648,25 @@ msgstr "Saved successfully" msgid "Nginx Restart Command" msgstr "" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 #, fuzzy msgid "Nginx restarted successfully" msgstr "Saved successfully" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "No" @@ -1630,12 +1702,12 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 #, fuzzy msgid "Notification" msgstr "Certificate is valid" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 #, fuzzy msgid "Notifications" msgstr "Certificate is valid" @@ -1665,27 +1737,27 @@ msgstr "" msgid "Offline" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "" @@ -1700,19 +1772,19 @@ msgstr "" msgid "Online" msgstr "" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 #, fuzzy msgid "OS" msgstr "OS:" @@ -1721,12 +1793,16 @@ msgstr "OS:" msgid "OS:" msgstr "OS:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +msgid "Otp or recovery code empty" +msgstr "" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "" @@ -1735,36 +1811,49 @@ msgstr "" msgid "Params" msgstr "Params" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "Password" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "Password (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "Password" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "Path" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "" @@ -1776,13 +1865,17 @@ msgstr "" msgid "Performing core upgrade" msgstr "" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 msgid "Please enter the OTP code:" msgstr "" @@ -1792,7 +1885,7 @@ msgid "" "provider." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "" @@ -1802,13 +1895,13 @@ msgid "" "select one of the credentialsbelow to request the API of the DNS provider." msgstr "" -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 #, fuzzy msgid "Please input a filename" msgstr "Please input your username!" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 #, fuzzy msgid "Please input a folder name" msgstr "Please input your username!" @@ -1842,7 +1935,7 @@ msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "" -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 msgid "Please select at least one node to upgrade" msgstr "" @@ -1861,13 +1954,13 @@ msgstr "" msgid "Please upgrade the remote Nginx UI to the latest version" msgstr "Saved successfully" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "" @@ -1915,25 +2008,25 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 #, fuzzy msgid "Recovered Successfully" msgstr "Saved successfully" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "" @@ -1964,7 +2057,7 @@ msgstr "Enable failed" msgid "Register On Startup" msgstr "" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 #, fuzzy msgid "Register passkey successfully" msgstr "Enabled successfully" @@ -1982,21 +2075,21 @@ msgstr "" msgid "Registration Status" msgstr "" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 #, fuzzy msgid "Reinstall" msgstr "Install" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "" @@ -2004,7 +2097,7 @@ msgstr "" msgid "Reloading nginx" msgstr "" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "" @@ -2019,21 +2112,21 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "Saved successfully" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 #, fuzzy msgid "Remove successfully" msgstr "Saved successfully" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 #, fuzzy msgid "Removed successfully" msgstr "Saved successfully" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 #, fuzzy msgid "Rename" msgstr "Username" @@ -2116,31 +2209,31 @@ msgstr "Enabled successfully" msgid "Requested with wrong parameters" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 msgid "Reset 2FA" msgstr "" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "" @@ -2149,20 +2242,20 @@ msgstr "" msgid "Run Mode" msgstr "Advance Mode" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2172,7 +2265,7 @@ msgstr "Save" msgid "Save Directive" msgstr "Save Directive" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2206,14 +2299,14 @@ msgstr "Saved successfully" msgid "Save successfully" msgstr "Saved successfully" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "Saved successfully" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "" @@ -2221,7 +2314,7 @@ msgstr "" msgid "SDK" msgstr "" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "" @@ -2238,28 +2331,7 @@ msgstr "" msgid "Send" msgstr "Send" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "Server error" @@ -2275,6 +2347,15 @@ msgstr "server_name not found in directives" msgid "server_name parameter is required" msgstr "server_name parameter is required" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +#, fuzzy +msgid "Session not found" +msgstr "File Not Found" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2293,11 +2374,23 @@ msgstr "" msgid "Setting HTTP01 challenge provider" msgstr "" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "" @@ -2309,11 +2402,21 @@ msgstr "Single Directive" msgid "Site Categories" msgstr "" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "Disabled" + #: src/routes/index.ts:224 #, fuzzy msgid "Site Logs" msgstr "Sites List" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "File Not Found" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2323,34 +2426,42 @@ msgstr "Directive" msgid "Sites List" msgstr "Sites List" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 #, fuzzy msgid "SSL Certificate Content" msgstr "Certificate Status" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 #, fuzzy msgid "SSL Certificate Key Content" msgstr "Certificate Status" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 #, fuzzy msgid "SSL Certificate Key Path" msgstr "Certificate Status" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 #, fuzzy msgid "SSL Certificate Path" msgstr "Certificate Status" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 #, fuzzy msgid "SSO Login" msgstr "Login" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 #, fuzzy msgid "Stable" msgstr "Enabled" @@ -2362,7 +2473,7 @@ msgstr "Enabled" msgid "Status" msgstr "Status" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "" @@ -2376,6 +2487,15 @@ msgstr "Storage" msgid "Streams Directory" msgstr "Directive" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "Directive" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "" @@ -2401,7 +2521,7 @@ msgstr "" msgid "Switch to light theme" msgstr "" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "" @@ -2467,7 +2587,7 @@ msgstr "" msgid "Sync strategy" msgstr "Certificate is valid" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "" @@ -2487,6 +2607,11 @@ msgstr "" msgid "Target" msgstr "" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "File Not Found" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "Terminal" @@ -2515,15 +2640,20 @@ msgid "" "dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "Certificate Status" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 msgid "" "The model name should only contain letters, unicode, numbers, hyphens, " @@ -2536,12 +2666,12 @@ msgid "" "dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "Certificate Status" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "" @@ -2551,7 +2681,7 @@ msgid "" "hyphens, dashes, colons, and dots." msgstr "" -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "" @@ -2586,17 +2716,17 @@ msgstr "" msgid "The username or password is incorrect" msgstr "" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "" -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "" @@ -2622,17 +2752,17 @@ msgstr "" msgid "This value is already taken" msgstr "" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "" @@ -2641,13 +2771,13 @@ msgstr "" msgid "Title" msgstr "" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." msgstr "" -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2673,27 +2803,23 @@ msgstr "" msgid "Token is not valid" msgstr "" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" msgstr[1] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "" @@ -2707,14 +2833,14 @@ msgstr "" msgid "Type" msgstr "" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 #, fuzzy msgid "Update successfully" msgstr "Saved successfully" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2729,12 +2855,12 @@ msgstr "Updated at" msgid "Updated successfully" msgstr "Saved successfully" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 #, fuzzy msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "Saved successfully" @@ -2744,7 +2870,7 @@ msgstr "Saved successfully" msgid "Upgraded successfully" msgstr "Saved successfully" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "" @@ -2760,11 +2886,11 @@ msgstr "Uptime:" msgid "URL" msgstr "" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "" @@ -2773,15 +2899,20 @@ msgstr "" msgid "User" msgstr "Username" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +#, fuzzy +msgid "User banned" +msgstr "Username" + +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" msgstr "" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "Username" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "Username (*)" @@ -2795,28 +2926,28 @@ msgstr "" msgid "Version" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 #, fuzzy msgid "View all notifications" msgstr "Certificate is valid" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 msgid "View Details" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "View Mode" msgstr "Basic Mode" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "Warning" @@ -2833,10 +2964,14 @@ msgid "" "Nginx. Are you sure you want to continue?" msgstr "" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2863,28 +2998,28 @@ msgstr "" msgid "Writing certificate to disk" msgstr "" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "Yes" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "" -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "" -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "" @@ -2894,10 +3029,6 @@ msgstr "" #~ "the remote Nginx UI to the latest version" #~ msgstr "Saved successfully" -#, fuzzy -#~ msgid "File not found" -#~ msgstr "File Not Found" - #, fuzzy #~ msgid "Server Name" #~ msgstr "Server Info" @@ -2910,9 +3041,6 @@ msgstr "" #~ msgid "Rename " #~ msgstr "Username" -#~ msgid "Certificate has expired" -#~ msgstr "Certificate has expired" - #~ msgid "Certificate is valid" #~ msgstr "Certificate is valid" diff --git a/app/src/language/es/app.po b/app/src/language/es/app.po index daf5ef4ab..7b456a697 100644 --- a/app/src/language/es/app.po +++ b/app/src/language/es/app.po @@ -20,7 +20,7 @@ msgstr "" msgid "2FA" msgstr "2FA" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "Configuración de 2FA" @@ -50,23 +50,23 @@ msgstr "Usuario ACME" msgid "Action" msgstr "Acción" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "Agregar" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "Agregar una llave de acceso" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 msgid "Add Configuration" msgstr "Agregar configuración" @@ -83,11 +83,11 @@ msgstr "Agregar Ubicación" msgid "Add Site" msgstr "Agregar Sitio" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 msgid "Add Stream" msgstr "Agregar Stream" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 msgid "Added successfully" msgstr "Agregado exitoso" @@ -100,14 +100,14 @@ msgstr "Adicional" msgid "Advance Mode" msgstr "Modo avanzado" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" "Luego, actualice esta página y haga clic nuevamente en Agregar llave de " "acceso." -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "Todo" @@ -132,7 +132,7 @@ msgstr "Token de la API" msgid "API Type" msgstr "Token de la API" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -141,25 +141,25 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "Duplicado con éxito" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "Arquitectura" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 msgid "Are you sure to delete this banned IP immediately?" msgstr "¿Está seguro de eliminar esta IP bloqueada inmediatamente?" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 msgid "Are you sure to delete this passkey immediately?" msgstr "¿Está seguro de eliminar esta llave de acceso inmediatamente?" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "¿Está seguro de que quiere borrar?" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 msgid "Are you sure you want to clear all notifications?" msgstr "¿Está seguro de que desea borrar todas las notificaciones?" @@ -167,20 +167,20 @@ msgstr "¿Está seguro de que desea borrar todas las notificaciones?" msgid "Are you sure you want to clear the record of chat?" msgstr "¿Está seguro de que desea borrar el registro del chat?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 msgid "Are you sure you want to delete this item permanently?" msgstr "¿Está seguro de que desea eliminar este elemento de forma permanente?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 msgid "Are you sure you want to delete this item?" msgstr "¿Está seguro de que quiere borrar este elemento?" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "¿Está seguro de que quiere borrar?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 msgid "Are you sure you want to recover this item?" msgstr "¿Está seguro de que quiere recuperar este elemento?" @@ -213,15 +213,15 @@ msgstr "Intentos" msgid "Attempts" msgstr "Intentos" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "Autenticación" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "Autenticarse con una llave de acceso" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "Configuración de autenticación" @@ -242,9 +242,9 @@ msgstr "Renovación automática deshabilitada por %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Renovación automática habilitada por %{name}" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -254,15 +254,15 @@ msgstr "Volver" msgid "Back Home" msgstr "Volver al Inicio" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "Volver a la lista" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "Umbral de Prohibición en Minutos" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "IPs prohibidas" @@ -274,8 +274,8 @@ msgstr "Bloqueado hasta" msgid "Base information" msgstr "Información general" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 msgid "Basic" @@ -286,26 +286,30 @@ msgstr "Básico" msgid "Basic Mode" msgstr "Modo Básico" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "Acción" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 msgid "Batch Modify" msgstr "Modificar por lotes" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "Actualización por lotes" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "" "A continuación se muestran los elementos seleccionados que desea modificar " "por lotes" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "Desarrollado con" @@ -318,15 +322,15 @@ msgstr "Dir CA" msgid "CADir" msgstr "Directorio CA" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "¿No puede escanear? Utilice la vinculación con una llave de texto" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -342,15 +346,29 @@ msgstr "Cancelar" msgid "Category" msgstr "Categoría" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 msgid "Cert" msgstr "Certificado" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "Error de Certificado de Sincronización" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "El certificado expiró" + #: src/views/preference/CertSettings.vue:24 msgid "Certificate Renewal Interval" msgstr "Intervalo de renovación del Certificado" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 msgid "Certificate Status" msgid_plural "Certificates Status" @@ -381,15 +399,15 @@ msgid_plural "Changed Certificates" msgstr[0] "Cambiar Certificado" msgstr[1] "Cambiar Certificados" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "Changed Path" msgstr "Ruta cambiada" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "Canal" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "Intentar nuevamente" @@ -413,17 +431,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Borrar las variables de entorno" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "Borrar" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 msgid "Cleared successfully" msgstr "Limpiado exitoso" @@ -482,7 +504,7 @@ msgstr "Copiado" msgid "Copy" msgstr "Copiar" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "Actualización del kernel" @@ -506,12 +528,12 @@ msgstr "Crear otro" msgid "Create File" msgstr "Crear Archivo" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 msgid "Create Folder" msgstr "Crear carpeta" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "Creado el" @@ -532,15 +554,15 @@ msgstr "Credencial" msgid "Credentials" msgstr "Credenciales" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "La cuenta actual tiene habilitada TOTP." -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "La cuenta actual no tiene habilitada TOTP." -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "Versión actual" @@ -557,12 +579,12 @@ msgstr "" "Personalice el nombre del servidor local para mostrarlo en el indicador de " "entorno." -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "Panel" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "Base de datos (Opcional, default: database)" @@ -571,16 +593,16 @@ msgid "Days" msgstr "Días" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "Eliminar" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "Eliminar Permanentemente" @@ -592,7 +614,7 @@ msgstr "Error al eliminar sitio remoto" msgid "Delete Remote Site Success" msgstr "Borrado del sitio remoto correcto" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "Eliminar sitio: %{site_name}" @@ -604,7 +626,7 @@ msgstr "Eliminar stream: %{site_name}" msgid "Deleted successfully" msgstr "Borrado exitoso" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -627,6 +649,10 @@ msgstr "Desplegado con éxito" msgid "Description" msgstr "Descripción" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "Detalles" @@ -639,6 +665,18 @@ msgstr "Modo de desarrollo" msgid "Directive" msgstr "Directiva" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "Directivas" @@ -647,8 +685,8 @@ msgstr "Directivas" msgid "Directory" msgstr "Directorio" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 msgid "Disable" msgstr "Desactivar" @@ -683,7 +721,7 @@ msgid "Disabled" msgstr "Desactivado" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -764,7 +802,7 @@ msgstr "Dominio" msgid "Domain Config Created Successfully" msgstr "Configuración de dominio creada con éxito" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "La lista de dominios está vacía, intente reabrir la certificación automática " @@ -778,11 +816,11 @@ msgstr "Error al descargar la última versión" msgid "Downloading latest release" msgstr "Descargando la última versión" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "Modo de ejecución de prueba habilitado" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." @@ -791,10 +829,10 @@ msgstr "" "utilizar claves de acceso en sitios web que no sean HTTPS, excepto cuando se " "ejecutan en el host local." -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "Duplicar" @@ -825,7 +863,7 @@ msgstr "Editar %{n}" msgid "Edit %{n}" msgstr "Editar %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "Editar Configuración" @@ -841,13 +879,13 @@ msgstr "Editar Transmisión" msgid "Email" msgstr "Correo" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "Correo (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 msgid "Enable" msgstr "Habilitar" @@ -859,7 +897,7 @@ msgstr "Falló el habilitado de %{conf_name} en %{node_name}" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "Habilitado exitoso de %{conf_name} en %{node_name}" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 msgid "Enable 2FA successfully" msgstr "Habilitar 2FA exitoso" @@ -899,7 +937,7 @@ msgstr "Habilitado con Éxito" msgid "Enable TLS" msgstr "Habilitar TLS" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 #, fuzzy msgid "Enable TOTP" msgstr "Habilitar TLS" @@ -918,7 +956,7 @@ msgid "Enabled" msgstr "Habilitado" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -929,7 +967,7 @@ msgstr "Habilitado con éxito" msgid "Encrypt website with Let's Encrypt" msgstr "Encriptar sitio web con Let's Encrypt" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "Entorno" @@ -950,7 +988,7 @@ msgstr "Error" msgid "Error Logs" msgstr "Logs de error" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "Ruta ejecutable" @@ -963,7 +1001,7 @@ msgstr "Vencido" msgid "Expired At: %{date}" msgstr "Vencido el: %{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "Exportar" @@ -971,15 +1009,20 @@ msgstr "Exportar" msgid "Fail to obtain certificate" msgstr "Falla al obtener el certificado" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "Error al habilitar %{msg}" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "Error al deshabilitar %{msg}" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -989,6 +1032,14 @@ msgstr "Error al habilitar %{msg}" msgid "Failed to get certificate information" msgstr "No se pudo obtener la información del certificado" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1007,6 +1058,10 @@ msgstr "El archivo existe" msgid "File Not Found" msgstr "Archivo no encontrado" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "Filtro" @@ -1015,7 +1070,7 @@ msgstr "Filtro" msgid "Finished" msgstr "Terminado" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1032,15 +1087,15 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "Para usuario chino: https://mirror.ghproxy.com/" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "Código de formato" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 msgid "Format error %{msg}" msgstr "Error de formato %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 msgid "Format successfully" msgstr "Formateado correctamente" @@ -1056,7 +1111,7 @@ msgstr "Generar" msgid "Generating private key for registering account" msgstr "Generando clave privada para registrar cuenta" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 msgid "Get release information error" msgstr "Obtener error de información de versión" @@ -1100,7 +1155,7 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "Si se deja en blanco, se utilizará el directorio CA predeterminado." -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." @@ -1109,7 +1164,7 @@ msgstr "" "el máximo de intentos en los minutos del umbral de prohibición, la IP será " "bloqueada por un período de tiempo." -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." @@ -1117,7 +1172,7 @@ msgstr "" "Si pierde su teléfono móvil, puede usar el código de recuperación para " "restablecer su 2FA." -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" "Si su navegador admite WebAuthn Passkey, aparecerá un cuadro de diálogo." @@ -1134,14 +1189,10 @@ msgstr "" msgid "Import" msgstr "Importar" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "Importar Certificado" -#: src/views/other/Login.vue:78 -msgid "Incorrect username or password" -msgstr "Nombre de usuario o contraseña incorrectos" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1155,16 +1206,16 @@ msgstr "Error de actualización de kernel inicial" msgid "Initialing core upgrader" msgstr "Inicializando la actualización del kernel" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "Ingrese el código de la aplicación:" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "Ingrese el código de recuperación:" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "Instalar" @@ -1180,23 +1231,29 @@ msgstr "Intervalo" msgid "Invalid" msgstr "Inválido" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "Código 2FA o de recuperación inválido" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 msgid "Invalid filename" msgstr "Nombre de archivo inválido" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "Nombre de carpeta inválido" +#: src/constants/errors/user.ts:4 +#, fuzzy +msgid "Invalid otp code" +msgstr "Código 2FA o de recuperación inválido" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "Código de acceso o código de recuperación inválido" +#: src/constants/errors/user.ts:5 +#, fuzzy +msgid "Invalid recovery code" +msgstr "Código 2FA o de recuperación inválido" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "IP" @@ -1226,11 +1283,11 @@ msgstr "Secreto Jwt" msgid "Key Type" msgstr "Tipo llave" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "Comprobado por última vez el" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 #, fuzzy msgid "Last used at" msgstr "Comprobado por última vez el" @@ -1243,7 +1300,7 @@ msgstr "Para no modificar dejar en blanco" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Dejar en blanco para el valor predeterminado: https://api.openai.com/" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 #, fuzzy msgid "Leave blank if do not want to modify" msgstr "Para no modificar dejar en blanco" @@ -1252,8 +1309,8 @@ msgstr "Para no modificar dejar en blanco" msgid "Leave blank if you don't need this." msgstr "Déjelo en blanco si no lo necesita." -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 msgid "Leave blank will not change anything" msgstr "Dejarlo en blanco no cambiará nada" @@ -1270,7 +1327,7 @@ msgstr "Licencia" msgid "Link Start" msgstr "Iniciar conexión" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "Lista" @@ -1278,7 +1335,7 @@ msgstr "Lista" msgid "Load Average:" msgstr "Promedios de carga:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "Cargar desde configuraciones" @@ -1299,15 +1356,15 @@ msgstr "Ubicación" msgid "Locations" msgstr "Ubicaciones" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 msgid "Log" msgstr "Registro" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "Acceso" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "Acceso exitoso" @@ -1315,7 +1372,7 @@ msgstr "Acceso exitoso" msgid "Logout successful" msgstr "Cierre de sesión exitoso" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "Rotación de logs" @@ -1345,15 +1402,15 @@ msgstr "" "known en HTTPChallengePort antes de obtener el certificado." #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "Administrar configuraciones" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "Administrar sitios" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 msgid "Manage Streams" msgstr "Administrar Transmisiones" @@ -1365,7 +1422,7 @@ msgstr "Administrar usuarios" msgid "Managed Certificate" msgstr "Certificado Administrado" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "Intentos máximos" @@ -1387,13 +1444,13 @@ msgid "Model" msgstr "Modelo" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 msgid "Modify" msgstr "Modificar" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "Modificar Certificado" @@ -1401,7 +1458,7 @@ msgstr "Modificar Certificado" msgid "Modify Config" msgstr "Modificar configuración" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "Modify Mode" msgstr "Modo Modificar" @@ -1410,20 +1467,20 @@ msgid "Multi-line Directive" msgstr "Directiva multilínea" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "Nombre" @@ -1443,15 +1500,15 @@ msgstr "Total recibido por la red" msgid "Network Total Send" msgstr "Total enviado por la red" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 msgid "New name" msgstr "Nuevo nombre" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "New Path" msgstr "Nueva ruta" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "Se liberó una nueva versión" @@ -1461,7 +1518,7 @@ msgstr "Se liberó una nueva versión" msgid "Next" msgstr "Siguiente" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "Nginx" @@ -1477,6 +1534,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 msgid "Nginx Configuration Parse Error" @@ -1487,7 +1560,7 @@ msgstr "Error de análisis de configuración de Nginx" msgid "Nginx Configurations Directory" msgstr "Error de análisis de configuración de Nginx" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "Control de Nginx" @@ -1525,24 +1598,24 @@ msgstr "Nginx recargado con éxito" msgid "Nginx Restart Command" msgstr "Comando de inicio de terminal" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" msgstr "Nginx reiniciado con éxito" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "No" @@ -1581,11 +1654,11 @@ msgstr "" "configuraciones o certificados, sincronícelos con anticipación a los nodos " "remotos." -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 msgid "Notification" msgstr "Notificación" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 msgid "Notifications" msgstr "Notificaciones" @@ -1615,27 +1688,27 @@ msgstr "" msgid "Offline" msgstr "Desconectado" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "Ok" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "OK" @@ -1650,19 +1723,19 @@ msgstr "Una vez que se complete la verificación, los registros se eliminarán." msgid "Online" msgstr "En línea" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "OpenAI" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "O" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "Nombre original" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 msgid "OS" msgstr "SO" @@ -1670,12 +1743,17 @@ msgstr "SO" msgid "OS:" msgstr "SO:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +#, fuzzy +msgid "Otp or recovery code empty" +msgstr "Usar código de recuperación" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "Sobrescribir" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "Sobrescribir archivo existente" @@ -1684,11 +1762,11 @@ msgstr "Sobrescribir archivo existente" msgid "Params" msgstr "Parámetros" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "Llave de acceso" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " @@ -1699,25 +1777,38 @@ msgstr "" "dispositivo o un PIN. Se pueden utilizar como reemplazo de contraseña o como " "método de autenticación de dos factores." -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "Contraseña" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "Contraseña (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "El nombre de usuario o contraseña son incorrectos" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "Ruta" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "Realizar" @@ -1729,7 +1820,11 @@ msgstr "Error al ejecutar la actualización del kernel" msgid "Performing core upgrade" msgstr "Realizando la actualizaciónd el kernel" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." @@ -1737,7 +1832,7 @@ msgstr "" "Ingrese un nombre para la llave de acceso que desea crear y a continuación " "haga clic en el botón Aceptar." -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 #, fuzzy msgid "Please enter the OTP code:" msgstr "Por favor, ingrese el código 2FA:" @@ -1750,7 +1845,7 @@ msgstr "" "Por favor, complete las credenciales de autenticación API proporcionadas por " "su proveedor de DNS." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "Por favor, complete los campos requeridos" @@ -1763,12 +1858,12 @@ msgstr "" "luego seleccione una de las credenciales de aquí debajo para llamar a la API " "del proveedor de DNS." -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 msgid "Please input a filename" msgstr "Por favor, ingrese un nombre de archivo" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 msgid "Please input a folder name" msgstr "Por favor, introduzca un nombre de carpeta" @@ -1807,7 +1902,7 @@ msgstr "" "Tenga en cuenta que las siguientes configuraciones de unidades de tiempo " "están todas en segundos." -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 msgid "Please select at least one node to upgrade" msgstr "Seleccione al menos un nodo para actualizar" @@ -1829,13 +1924,13 @@ msgstr "" "favor actualiza la interfaz de usuario de Nginx en el servidor remoto a la " "última versión" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "Prelanzamiento" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "Configuración" @@ -1883,24 +1978,24 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "Recuperar" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 msgid "Recovered Successfully" msgstr "Recuperado con éxito" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "Recuperación" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "Código de Recuperación" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "Código de Recuperación:" @@ -1933,7 +2028,7 @@ msgstr "Fallo en el registro" msgid "Register On Startup" msgstr "Esto de registración" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 #, fuzzy msgid "Register passkey successfully" msgstr "Registrado con éxito" @@ -1950,20 +2045,20 @@ msgstr "Registrando Usuario" msgid "Registration Status" msgstr "Esto de registración" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 msgid "Reinstall" msgstr "Reinstalar" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "Nota de versión" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "Recargar" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "Recargando" @@ -1971,7 +2066,7 @@ msgstr "Recargando" msgid "Reloading nginx" msgstr "Recargando Nginx" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "Eliminar" @@ -1986,19 +2081,19 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "Duplicado con éxito de %{conf_name} a %{node_name}" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 msgid "Remove successfully" msgstr "Eliminado con éxito" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 msgid "Removed successfully" msgstr "Eliminado con éxito" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 msgid "Rename" msgstr "Renombrar" @@ -2072,31 +2167,31 @@ msgstr "Renovado con éxito" msgid "Requested with wrong parameters" msgstr "Pedido con parámetros incorrectos" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "Limpiar" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 msgid "Reset 2FA" msgstr "Restablecer 2FA" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "Reiniciar" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "Reiniciando" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "Nombre RP" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "Orígenes RP" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "RPID" @@ -2104,20 +2199,20 @@ msgstr "RPID" msgid "Run Mode" msgstr "Modo de ejecución" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "Corriendo" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2127,7 +2222,7 @@ msgstr "Guardar" msgid "Save Directive" msgstr "Guardar Directiva" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2162,14 +2257,14 @@ msgstr "Duplicado con éxito de %{conf_name} a %{node_name}" msgid "Save successfully" msgstr "Guardado con éxito" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "Guardado con éxito" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "" "Escanee el código QR con su teléfono móvil para agregar la cuenta a la " @@ -2179,7 +2274,7 @@ msgstr "" msgid "SDK" msgstr "SDK" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "El secreto ha sido copiado" @@ -2196,28 +2291,7 @@ msgstr "" msgid "Send" msgstr "Enviado" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "Error del servidor" @@ -2233,6 +2307,15 @@ msgstr "No se encuentra server_name en las directivas" msgid "server_name parameter is required" msgstr "Se requiere el parámetro server_name" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +#, fuzzy +msgid "Session not found" +msgstr "Archivo no Encontrado" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2253,11 +2336,23 @@ msgstr "Configuración de variables de entorno" msgid "Setting HTTP01 challenge provider" msgstr "Usando el proveedor de desafíos HTTP01" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "Mostrar" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "Iniciar sesión con una llave de acceso" @@ -2269,10 +2364,20 @@ msgstr "Directiva de una sola línea" msgid "Site Categories" msgstr "Categorías del sitio" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "Certificado automático" + #: src/routes/index.ts:224 msgid "Site Logs" msgstr "Registros del sitio" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "Archivo no Encontrado" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2282,29 +2387,37 @@ msgstr "Directorio" msgid "Sites List" msgstr "Lista de sitios" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Content" msgstr "Contenido de certificado SSL" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 msgid "SSL Certificate Key Content" msgstr "Contenido de la llave del certificado SSL" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 msgid "SSL Certificate Key Path" msgstr "Ruta de la llave del certificado SSL" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 msgid "SSL Certificate Path" msgstr "Ruta del certificado SSL" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 msgid "SSO Login" msgstr "Acceso SSO" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 msgid "Stable" msgstr "Estable" @@ -2315,7 +2428,7 @@ msgstr "Estable" msgid "Status" msgstr "Estado" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "Detenido" @@ -2329,6 +2442,15 @@ msgstr "Almacenamiento" msgid "Streams Directory" msgstr "Directorio" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "Directorio" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "Éxito" @@ -2354,7 +2476,7 @@ msgstr "Cambiar al tema oscuro" msgid "Switch to light theme" msgstr "Cambiar al tema claro" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "Sincronizar" @@ -2417,7 +2539,7 @@ msgstr "Sincronizar con" msgid "Sync strategy" msgstr "Sincronizar Certificado" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "Sincronizar con" @@ -2437,6 +2559,11 @@ msgstr "Usuario inicial del sistema" msgid "Target" msgstr "Objetivo" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "Archivo no Encontrado" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "Terminal" @@ -2469,14 +2596,19 @@ msgstr "" "El nombre del modelo solo debe contener letras, unicode, números, guiones, " "rayas y puntos." -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "La entrada no es un Certificado SSL" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 msgid "The input is not a SSL Certificate Key" msgstr "La entrada no es una clave de certificado SSL" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 #, fuzzy msgid "" @@ -2495,11 +2627,11 @@ msgstr "" "El nombre del modelo solo debe contener letras, unicode, números, guiones, " "rayas y puntos." -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 msgid "The path exists, but the file is not a certificate" msgstr "La ruta existe, pero el archivo no es un certificado" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "La ruta existe, pero el archivo no es una clave privada" @@ -2512,7 +2644,7 @@ msgstr "" "El nombre del servidor solo debe contener letras, Unicode, números, guiones, " "rayas y puntos." -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "" @@ -2551,17 +2683,17 @@ msgstr "La URL no es válida." msgid "The username or password is incorrect" msgstr "El nombre de usuario o contraseña son incorrectos" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "Este elemento de Auto Cert es inválido, elimínelo por favor." -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "Este certificado es administrado por Nginx UI" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "Este campo es obligatorio" @@ -2592,19 +2724,19 @@ msgstr "" msgid "This value is already taken" msgstr "Este valor ya está elegido" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" "Esto actualizará o reinstalará la interfaz de usuario de Nginx en %" "{nodeNames} a %{version}." -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "Acelerador" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "Consejos" @@ -2613,7 +2745,7 @@ msgstr "Consejos" msgid "Title" msgstr "Título" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." @@ -2621,7 +2753,7 @@ msgstr "" "Para habilitarlo, necesitas instalar la aplicación Google Authenticator o " "Microsoft Authenticator en tu teléfono móvil." -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2658,23 +2790,17 @@ msgstr "" msgid "Token is not valid" msgstr "El token no es válido" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "" -"Demasiados intentos fallidos de inicio de sesión, por favor intente " -"nuevamente más tarde" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" msgstr[1] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "TOTP" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." @@ -2682,7 +2808,7 @@ msgstr "" "TOTP es un método de autenticación de dos factores que utiliza un algoritmo " "de contraseña de un solo uso basado en el tiempo." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "Basura" @@ -2696,14 +2822,14 @@ msgstr "Se requiere autenticación de dos factores" msgid "Type" msgstr "Tipo" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 #, fuzzy msgid "Update successfully" msgstr "Actualización exitosa" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2717,12 +2843,12 @@ msgstr "Actualizado a" msgid "Updated successfully" msgstr "Actualización exitosa" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "Actualizar" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "Interfaz de usuario de Nginx actualizada en %{node} con éxito 🎉" @@ -2730,7 +2856,7 @@ msgstr "Interfaz de usuario de Nginx actualizada en %{node} con éxito 🎉" msgid "Upgraded successfully" msgstr "Actualización exitosa" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "Actualizando Nginx UI, por favor espere..." @@ -2746,11 +2872,11 @@ msgstr "Tiempo encendido:" msgid "URL" msgstr "URL" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "Usar OTP" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "Usar código de recuperación" @@ -2758,15 +2884,20 @@ msgstr "Usar código de recuperación" msgid "User" msgstr "Usuario" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +#, fuzzy +msgid "User banned" msgstr "El usuario está bloqueado" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" +msgstr "" + +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "Nombre de usuario" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "Nombre de usuario (*)" @@ -2780,26 +2911,26 @@ msgstr "Válido" msgid "Version" msgstr "Versión" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "Ver" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 msgid "View all notifications" msgstr "Ver todas las notificaciones" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 msgid "View Details" msgstr "Ver detalles" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "View Mode" msgstr "Modo de vista" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "Advertencia" @@ -2820,10 +2951,14 @@ msgstr "" "Eliminaremos la configuración de HTTPChallenge de este archivo y " "recargaremos Nginx. ¿Estás seguro de que quieres continuar?" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "Webauthn" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2856,22 +2991,22 @@ msgstr "Escribir la clave privada del certificado a disco" msgid "Writing certificate to disk" msgstr "Escribir certificado a disco" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "Si" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "Estás usando la última versión" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "Puede consultar la actualización de Nginx UI en esta página." -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." @@ -2879,10 +3014,18 @@ msgstr "" "No ha configurado los ajustes de Webauthn, por lo que no puede agregar una " "llave de acceso." -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "Sus llaves de acceso" +#~ msgid "Incorrect username or password" +#~ msgstr "Nombre de usuario o contraseña incorrectos" + +#~ msgid "Too many login failed attempts, please try again later" +#~ msgstr "" +#~ "Demasiados intentos fallidos de inicio de sesión, por favor intente " +#~ "nuevamente más tarde" + #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" @@ -2890,9 +3033,6 @@ msgstr "Sus llaves de acceso" #~ "Renombrar %{orig_path} a %{new_path} en %{env_name} fallido, por favor " #~ "actualice la interfaz de Nginx remota a la última versión" -#~ msgid "File not found" -#~ msgstr "Archivo no Encontrado" - #~ msgid "Server Name" #~ msgstr "Nombre del servidor" @@ -2903,9 +3043,6 @@ msgstr "Sus llaves de acceso" #~ msgid "Rename " #~ msgstr "Renombrar" -#~ msgid "Certificate has expired" -#~ msgstr "El certificado expiró" - #~ msgid "Certificate is valid" #~ msgstr "El certificado es válido" @@ -2942,10 +3079,6 @@ msgstr "Sus llaves de acceso" #~ msgid "The path exists, but the file is not a public key" #~ msgstr "La ruta existe, pero el archivo no es una clave pública" -#, fuzzy -#~ msgid "Auto Cert is enabled" -#~ msgstr "Certificado automático" - #, fuzzy #~ msgid "Auto Cert Log" #~ msgstr "Registro del Certificado automático" diff --git a/app/src/language/fr_FR/app.po b/app/src/language/fr_FR/app.po index 81b075b91..17699c582 100644 --- a/app/src/language/fr_FR/app.po +++ b/app/src/language/fr_FR/app.po @@ -15,7 +15,7 @@ msgstr "" msgid "2FA" msgstr "" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "" @@ -46,23 +46,23 @@ msgstr "Nom d'utilisateur" msgid "Action" msgstr "Action" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "Ajouter" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 #, fuzzy msgid "Add Configuration" msgstr "Modifier la configuration" @@ -80,12 +80,12 @@ msgstr "Ajouter une localisation" msgid "Add Site" msgstr "Ajouter un site" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 #, fuzzy msgid "Add Stream" msgstr "Ajouter un site" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 #, fuzzy msgid "Added successfully" msgstr "Mis à jour avec succés" @@ -100,12 +100,12 @@ msgstr "Supplémentaire" msgid "Advance Mode" msgstr "Mode avancé" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "" @@ -131,7 +131,7 @@ msgstr "Jeton d'API" msgid "API Type" msgstr "Jeton d'API" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -140,28 +140,28 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "Dupliqué avec succès" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 #, fuzzy msgid "Arch" msgstr "Arch" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 #, fuzzy msgid "Are you sure to delete this banned IP immediately?" msgstr "Etes-vous sûr que vous voulez supprimer ?" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 #, fuzzy msgid "Are you sure to delete this passkey immediately?" msgstr "Etes-vous sûr que vous voulez supprimer ?" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "Etes-vous sûr que vous voulez supprimer ?" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 #, fuzzy msgid "Are you sure you want to clear all notifications?" msgstr "Voulez-vous vraiment effacer l'historique du chat ?" @@ -170,22 +170,22 @@ msgstr "Voulez-vous vraiment effacer l'historique du chat ?" msgid "Are you sure you want to clear the record of chat?" msgstr "Voulez-vous vraiment effacer l'historique du chat ?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 #, fuzzy msgid "Are you sure you want to delete this item permanently?" msgstr "Etes-vous sûr que vous voulez supprimer ?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "Etes-vous sûr que vous voulez supprimer ?" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "Etes-vous sûr que vous voulez supprimer ?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "Voulez-vous vraiment supprimer cette directive ?" @@ -220,16 +220,16 @@ msgstr "" msgid "Attempts" msgstr "" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 #, fuzzy msgid "Auth" msgstr "Autheur" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "" @@ -250,9 +250,9 @@ msgstr "Renouvellement automatique désactivé pour %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Renouvellement automatique activé pour %{name}" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -262,15 +262,15 @@ msgstr "Retour" msgid "Back Home" msgstr "Retour au menu principal" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "" @@ -282,8 +282,8 @@ msgstr "" msgid "Base information" msgstr "Information générale" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 msgid "Basic" @@ -294,26 +294,30 @@ msgstr "Basique" msgid "Basic Mode" msgstr "Mode simple" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "Action" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 #, fuzzy msgid "Batch Modify" msgstr "Batch Modify" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 #, fuzzy msgid "Batch Upgrade" msgstr "Mettre à niveau" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "Build avec" @@ -326,15 +330,15 @@ msgstr "" msgid "CADir" msgstr "" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -350,17 +354,31 @@ msgstr "Annuler" msgid "Category" msgstr "" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 #, fuzzy msgid "Cert" msgstr "Auto Cert" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "Changer de certificat" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "Le certificat a expiré" + #: src/views/preference/CertSettings.vue:24 #, fuzzy msgid "Certificate Renewal Interval" msgstr "Le certificat est valide" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 #, fuzzy msgid "Certificate Status" @@ -395,16 +413,16 @@ msgid_plural "Changed Certificates" msgstr[0] "Changer de certificat" msgstr[1] "Changer de certificat" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "Changed Path" msgstr "Changer de certificat" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "Revérifier" @@ -428,17 +446,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Nettoyage des variables d'environnement" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "Effacer" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 #, fuzzy msgid "Cleared successfully" @@ -499,7 +521,7 @@ msgstr "" msgid "Copy" msgstr "" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "Mise à jour du core" @@ -525,13 +547,13 @@ msgstr "Créer un autre" msgid "Create File" msgstr "Créé le" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 #, fuzzy msgid "Create Folder" msgstr "Créer un autre" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "Créé le" @@ -553,15 +575,15 @@ msgstr "Identifiant" msgid "Credentials" msgstr "Identifiants" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "" -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "" -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "Version actuelle" @@ -576,12 +598,12 @@ msgid "" "indicator." msgstr "" -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "Dashboard" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "Base de données (Facultatif, par défaut : database)" @@ -590,16 +612,16 @@ msgid "Days" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "Supprimer" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "" @@ -613,7 +635,7 @@ msgstr "Changer de certificat" msgid "Delete Remote Site Success" msgstr "Changer de certificat" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "Supprimer le site : %{site_name}" @@ -627,7 +649,7 @@ msgstr "Supprimer le site : %{site_name}" msgid "Deleted successfully" msgstr "Désactivé avec succès" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -651,6 +673,10 @@ msgstr "Sauvegarde réussie" msgid "Description" msgstr "Description" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "" @@ -663,6 +689,18 @@ msgstr "Mode développement" msgid "Directive" msgstr "Directive" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "Directives" @@ -672,8 +710,8 @@ msgstr "Directives" msgid "Directory" msgstr "Directive" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 #, fuzzy msgid "Disable" msgstr "Désactivé" @@ -712,7 +750,7 @@ msgid "Disabled" msgstr "Désactivé" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -797,7 +835,7 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "La configuration du domaine a été créée avec succès" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 #, fuzzy msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" @@ -812,20 +850,20 @@ msgstr "Erreur de téléchargement de la dernière version" msgid "Downloading latest release" msgstr "Téléchargement de la dernière version" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "Dupliquer" @@ -860,7 +898,7 @@ msgstr "Modifier %{n}" msgid "Edit %{n}" msgstr "Modifier %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "Modifier la configuration" @@ -878,13 +916,13 @@ msgstr "Modifier le site" msgid "Email" msgstr "Email (*)" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "Email (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 #, fuzzy msgid "Enable" msgstr "Activé" @@ -897,7 +935,7 @@ msgstr "" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 #, fuzzy msgid "Enable 2FA successfully" msgstr "Activé avec succès" @@ -939,7 +977,7 @@ msgstr "Activé avec succès" msgid "Enable TLS" msgstr "Activer TLS" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 #, fuzzy msgid "Enable TOTP" msgstr "Activer TLS" @@ -958,7 +996,7 @@ msgid "Enabled" msgstr "Activé" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -969,7 +1007,7 @@ msgstr "Activé avec succès" msgid "Encrypt website with Let's Encrypt" msgstr "Crypter le site Web avec Let's Encrypt" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "" @@ -992,7 +1030,7 @@ msgstr "Erreur" msgid "Error Logs" msgstr "Journaux d'erreurs" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "Chemin exécutable" @@ -1006,7 +1044,7 @@ msgstr "" msgid "Expired At: %{date}" msgstr "Date d'expiration : %{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "Exporter" @@ -1015,15 +1053,20 @@ msgstr "Exporter" msgid "Fail to obtain certificate" msgstr "Obtenir un certificat" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "Impossible d'activer %{msg}" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "Impossible de désactiver %{msg}" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -1033,6 +1076,14 @@ msgstr "Impossible d'activer %{msg}" msgid "Failed to get certificate information" msgstr "Échec de l'obtention des informations sur le certificat" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1052,6 +1103,10 @@ msgstr "Le fichier existe" msgid "File Not Found" msgstr "Fichier introuvable" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "Filtrer" @@ -1060,7 +1115,7 @@ msgstr "Filtrer" msgid "Finished" msgstr "Finie" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1076,15 +1131,15 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "Utilisateur chinois : https://mirror.ghproxy.com/" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "Code de formatage" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 msgid "Format error %{msg}" msgstr "Erreur de format %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 msgid "Format successfully" msgstr "Formaté avec succès" @@ -1101,7 +1156,7 @@ msgstr "Générer" msgid "Generating private key for registering account" msgstr "Génération de clé privée pour l'enregistrement du compte" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 msgid "Get release information error" msgstr "Erreur d'obtention des informations sur la version" @@ -1145,19 +1200,19 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." msgstr "" -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." msgstr "" -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" @@ -1172,16 +1227,11 @@ msgstr "" msgid "Import" msgstr "Exporter" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "État du certificat" -#: src/views/other/Login.vue:78 -#, fuzzy -msgid "Incorrect username or password" -msgstr "Le pseudo ou mot de passe est incorect" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1195,16 +1245,16 @@ msgstr "Erreur du programme de mise à niveau initial du core" msgid "Initialing core upgrader" msgstr "Initialisation du programme de mise à niveau du core" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "Installer" @@ -1220,23 +1270,27 @@ msgstr "" msgid "Invalid" msgstr "" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 msgid "Invalid filename" msgstr "" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "" +#: src/constants/errors/user.ts:4 +msgid "Invalid otp code" +msgstr "" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "" +#: src/constants/errors/user.ts:5 +msgid "Invalid recovery code" +msgstr "" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "" @@ -1269,11 +1323,11 @@ msgstr "Secret Jwt" msgid "Key Type" msgstr "Type" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "Dernière vérification le" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 #, fuzzy msgid "Last used at" msgstr "Dernière vérification le" @@ -1286,7 +1340,7 @@ msgstr "Laisser vide pour aucun changement" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Laissez vide pour la valeur par défaut : https://api.openai.com/" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 #, fuzzy msgid "Leave blank if do not want to modify" msgstr "Laisser vide pour aucun changement" @@ -1296,8 +1350,8 @@ msgstr "Laisser vide pour aucun changement" msgid "Leave blank if you don't need this." msgstr "Laisser vide pour aucun changement" -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 #, fuzzy msgid "Leave blank will not change anything" msgstr "Laisser vide pour aucun changement" @@ -1316,7 +1370,7 @@ msgstr "Licence" msgid "Link Start" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "" @@ -1325,7 +1379,7 @@ msgstr "" msgid "Load Average:" msgstr "Charges moyennes :" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "" @@ -1350,16 +1404,16 @@ msgstr "Localisation" msgid "Locations" msgstr "Localisations" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 #, fuzzy msgid "Log" msgstr "Connexion" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "Connexion" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "Connexion réussie" @@ -1367,7 +1421,7 @@ msgstr "Connexion réussie" msgid "Logout successful" msgstr "Déconnexion réussie" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "" @@ -1391,15 +1445,15 @@ msgstr "" "known vers HTTPChallengePort avant d'obtenir le certificat." #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "Gérer les configurations" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "Gérer les sites" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 #, fuzzy msgid "Manage Streams" msgstr "Gérer les sites" @@ -1413,7 +1467,7 @@ msgstr "Gérer les utilisateurs" msgid "Managed Certificate" msgstr "Changer de certificat" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "" @@ -1436,13 +1490,13 @@ msgid "Model" msgstr "Mode d'exécution" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 msgid "Modify" msgstr "Modifier" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "État du certificat" @@ -1451,7 +1505,7 @@ msgstr "État du certificat" msgid "Modify Config" msgstr "Modifier la configuration" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "Modify Mode" msgstr "Modifier" @@ -1461,20 +1515,20 @@ msgid "Multi-line Directive" msgstr "Directive multiligne" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "Nom" @@ -1494,17 +1548,17 @@ msgstr "Réception totale du réseau" msgid "Network Total Send" msgstr "Envoi total réseau" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 #, fuzzy msgid "New name" msgstr "Nom d'utilisateur" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "New Path" msgstr "Chemin" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "Nouvelle version publiée" @@ -1514,7 +1568,7 @@ msgstr "Nouvelle version publiée" msgid "Next" msgstr "Suivant" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 #, fuzzy msgid "Nginx" msgstr "Journal Nginx" @@ -1531,6 +1585,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 msgid "Nginx Configuration Parse Error" @@ -1541,7 +1611,7 @@ msgstr "Erreur d'analyse de configuration Nginx" msgid "Nginx Configurations Directory" msgstr "Erreur d'analyse de configuration Nginx" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "Contrôle Nginx" @@ -1579,24 +1649,24 @@ msgstr "Nginx a été rechargé avec succès" msgid "Nginx Restart Command" msgstr "Commande de démarrage du terminal" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" msgstr "Nginx a redémarré avec succès" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "Non" @@ -1633,12 +1703,12 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 #, fuzzy msgid "Notification" msgstr "Certification" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 #, fuzzy msgid "Notifications" msgstr "Certification" @@ -1667,27 +1737,27 @@ msgstr "" msgid "Offline" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "OK" @@ -1702,19 +1772,19 @@ msgstr "" msgid "Online" msgstr "" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "OpenAI" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 msgid "OS" msgstr "OS" @@ -1722,12 +1792,16 @@ msgstr "OS" msgid "OS:" msgstr "OS :" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +msgid "Otp or recovery code empty" +msgstr "" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "" @@ -1736,36 +1810,49 @@ msgstr "" msgid "Params" msgstr "Paramètres" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "Mot de passe" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "Mot de passe (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "Le pseudo ou mot de passe est incorect" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "Chemin" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "" @@ -1777,13 +1864,17 @@ msgstr "Erreur lors de la mise a niveau du core" msgid "Performing core upgrade" msgstr "Exécution de la mise à niveau du core" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 msgid "Please enter the OTP code:" msgstr "" @@ -1793,7 +1884,7 @@ msgid "" "provider." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "" @@ -1808,13 +1899,13 @@ msgstr "" "des informations d'identification ci-dessous pour demander l'API du " "fournisseur DNS." -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 #, fuzzy msgid "Please input a filename" msgstr "Veuillez saisir votre nom d'utilisateur !" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 #, fuzzy msgid "Please input a folder name" msgstr "Veuillez saisir votre nom d'utilisateur !" @@ -1853,7 +1944,7 @@ msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "" -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 msgid "Please select at least one node to upgrade" msgstr "" @@ -1872,13 +1963,13 @@ msgstr "" msgid "Please upgrade the remote Nginx UI to the latest version" msgstr "Dupliqué avec succès" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "Préférence" @@ -1929,25 +2020,25 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 #, fuzzy msgid "Recovered Successfully" msgstr "Enregistré avec succès" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "" @@ -1980,7 +2071,7 @@ msgstr "Enregistrement de l'utilisateur" msgid "Register On Startup" msgstr "Enregistrement de l'utilisateur" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 #, fuzzy msgid "Register passkey successfully" msgstr "Activé avec succès" @@ -1999,20 +2090,20 @@ msgstr "Enregistrement de l'utilisateur" msgid "Registration Status" msgstr "Enregistrement de l'utilisateur" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 msgid "Reinstall" msgstr "Réinstaller" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "Note de version" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "Recharger" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "Rechargement" @@ -2020,7 +2111,7 @@ msgstr "Rechargement" msgid "Reloading nginx" msgstr "Rechargement de nginx" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "" @@ -2035,21 +2126,21 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "Dupliqué avec succès" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 #, fuzzy msgid "Remove successfully" msgstr "Enregistré avec succès" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 #, fuzzy msgid "Removed successfully" msgstr "Enregistré avec succès" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 #, fuzzy msgid "Rename" msgstr "Nom d'utilisateur" @@ -2132,32 +2223,32 @@ msgstr "Activé avec succès" msgid "Requested with wrong parameters" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "Réinitialiser" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 #, fuzzy msgid "Reset 2FA" msgstr "Réinitialiser" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "Redémarrer" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "Redémarrage" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "" @@ -2165,20 +2256,20 @@ msgstr "" msgid "Run Mode" msgstr "Mode d'exécution" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "En cours d'éxécution" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2188,7 +2279,7 @@ msgstr "Enregistrer" msgid "Save Directive" msgstr "Enregistrer la directive" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2221,14 +2312,14 @@ msgstr "Dupliqué avec succès" msgid "Save successfully" msgstr "Sauvegarde réussie" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "Enregistré avec succès" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "" @@ -2236,7 +2327,7 @@ msgstr "" msgid "SDK" msgstr "" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "" @@ -2253,28 +2344,7 @@ msgstr "" msgid "Send" msgstr "Envoyer" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "Erreur du serveur" @@ -2290,6 +2360,15 @@ msgstr "server_name introuvable dans les directives" msgid "server_name parameter is required" msgstr "Le paramètre server_name est obligatoire" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +#, fuzzy +msgid "Session not found" +msgstr "Fichier introuvable" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2310,11 +2389,23 @@ msgstr "Définition des variables d'environnement" msgid "Setting HTTP01 challenge provider" msgstr "Utilisation du fournisseur de challenge HTTP01" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "" @@ -2326,10 +2417,20 @@ msgstr "Directive unique" msgid "Site Categories" msgstr "" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "Auto Cert" + #: src/routes/index.ts:224 msgid "Site Logs" msgstr "Journaux du site" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "Fichier introuvable" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2339,32 +2440,40 @@ msgstr "Directive" msgid "Sites List" msgstr "Liste des sites" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 #, fuzzy msgid "SSL Certificate Content" msgstr "Contenu de la certification SSL" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 #, fuzzy msgid "SSL Certificate Key Content" msgstr "Contenu de la clé de certification SSL" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 msgid "SSL Certificate Key Path" msgstr "Chemin de la clé du certificat SSL" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 msgid "SSL Certificate Path" msgstr "Chemin du certificat SSL" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 #, fuzzy msgid "SSO Login" msgstr "Connexion" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 #, fuzzy msgid "Stable" msgstr "Tableau" @@ -2376,7 +2485,7 @@ msgstr "Tableau" msgid "Status" msgstr "Statut" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "Arrêté" @@ -2390,6 +2499,15 @@ msgstr "Stockage" msgid "Streams Directory" msgstr "Directive" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "Directive" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "" @@ -2416,7 +2534,7 @@ msgstr "" msgid "Switch to light theme" msgstr "" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "" @@ -2482,7 +2600,7 @@ msgstr "" msgid "Sync strategy" msgstr "Changer de certificat" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "" @@ -2502,6 +2620,11 @@ msgstr "" msgid "Target" msgstr "" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "Fichier introuvable" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "Terminal" @@ -2530,15 +2653,20 @@ msgid "" "dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "Chemin de la clé du certificat SSL" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 msgid "" "The model name should only contain letters, unicode, numbers, hyphens, " @@ -2551,12 +2679,12 @@ msgid "" "dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "Chemin de la clé du certificat SSL" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "" @@ -2566,7 +2694,7 @@ msgid "" "hyphens, dashes, colons, and dots." msgstr "" -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "" @@ -2602,20 +2730,20 @@ msgstr "" msgid "The username or password is incorrect" msgstr "Le pseudo ou mot de passe est incorect" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 #, fuzzy msgid "This Auto Cert item is invalid, please remove it." msgstr "" "Cet élément de certification automatique n'est pas valide, veuillez le " "supprimer." -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "" @@ -2641,17 +2769,17 @@ msgstr "" msgid "This value is already taken" msgstr "" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "" @@ -2660,13 +2788,13 @@ msgstr "" msgid "Title" msgstr "" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." msgstr "" -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2696,27 +2824,23 @@ msgstr "" msgid "Token is not valid" msgstr "" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" msgstr[1] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "" @@ -2730,14 +2854,14 @@ msgstr "" msgid "Type" msgstr "Type" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 #, fuzzy msgid "Update successfully" msgstr "Mis à jour avec succés" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2751,12 +2875,12 @@ msgstr "Mis à jour le" msgid "Updated successfully" msgstr "Mis à jour avec succés" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "Mettre à niveau" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 #, fuzzy msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "Mise à niveau réussie" @@ -2765,7 +2889,7 @@ msgstr "Mise à niveau réussie" msgid "Upgraded successfully" msgstr "Mise à niveau réussie" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "Mise à jour de Nginx UI, veuillez patienter..." @@ -2781,11 +2905,11 @@ msgstr "Disponibilité :" msgid "URL" msgstr "" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "" @@ -2794,15 +2918,20 @@ msgstr "" msgid "User" msgstr "Nom d'utilisateur" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +#, fuzzy +msgid "User banned" +msgstr "Nom d'utilisateur" + +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" msgstr "" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "Nom d'utilisateur" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "Nom d'utilisateur (*)" @@ -2817,28 +2946,28 @@ msgstr "" msgid "Version" msgstr "Version actuelle" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "Voir" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 #, fuzzy msgid "View all notifications" msgstr "Certification" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 msgid "View Details" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "View Mode" msgstr "Mode simple" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "Avertissement" @@ -2857,10 +2986,14 @@ msgstr "" "Nous allons supprimer la configuration HTTPChallenge de ce fichier et " "recharger le Nginx. Êtes-vous sûr de vouloir continuer?" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2887,41 +3020,41 @@ msgstr "Écriture de la clé privée du certificat sur le disque" msgid "Writing certificate to disk" msgstr "Écriture du certificat sur le disque" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "Oui" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "Vous utilisez la dernière version" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "Vous pouvez vérifier la mise à niveau de Nginx UI sur cette page." -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "" -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "" +#, fuzzy +#~ msgid "Incorrect username or password" +#~ msgstr "Le pseudo ou mot de passe est incorect" + #, fuzzy #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" #~ msgstr "Dupliqué avec succès" -#, fuzzy -#~ msgid "File not found" -#~ msgstr "Fichier introuvable" - #, fuzzy #~ msgid "Server Name" #~ msgstr "Informations sur le serveur" @@ -2934,9 +3067,6 @@ msgstr "" #~ msgid "Rename " #~ msgstr "Nom d'utilisateur" -#~ msgid "Certificate has expired" -#~ msgstr "Le certificat a expiré" - #~ msgid "Certificate is valid" #~ msgstr "Le certificat est valide" @@ -2969,10 +3099,6 @@ msgstr "" #~ msgid "Table" #~ msgstr "Tableau" -#, fuzzy -#~ msgid "Auto Cert is enabled" -#~ msgstr "Auto Cert" - #, fuzzy #~ msgid "Auto Cert Log" #~ msgstr "Journal Auto-Cert" diff --git a/app/src/language/ko_KR/app.po b/app/src/language/ko_KR/app.po index 80a052ff2..2521d401c 100644 --- a/app/src/language/ko_KR/app.po +++ b/app/src/language/ko_KR/app.po @@ -18,7 +18,7 @@ msgstr "" msgid "2FA" msgstr "2FA" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "2FA 설정" @@ -48,23 +48,23 @@ msgstr "ACME 사용자" msgid "Action" msgstr "작업" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "추가" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 msgid "Add Configuration" msgstr "구성 추가" @@ -81,11 +81,11 @@ msgstr "위치 추가" msgid "Add Site" msgstr "사이트 추가" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 msgid "Add Stream" msgstr "스트림 추가" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 msgid "Added successfully" msgstr "성공적으로 추가됨" @@ -98,12 +98,12 @@ msgstr "추가적인" msgid "Advance Mode" msgstr "고급 모드" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "" @@ -128,7 +128,7 @@ msgstr "API 토큰" msgid "API Type" msgstr "API 토큰" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -137,26 +137,26 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "성공적으로 복제됨" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "아키텍처" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 msgid "Are you sure to delete this banned IP immediately?" msgstr "차단된 IP를 즉시 삭제하시겠습니까?" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 #, fuzzy msgid "Are you sure to delete this passkey immediately?" msgstr "차단된 IP를 즉시 삭제하시겠습니까?" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "정말 삭제하시겠습니까?" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 msgid "Are you sure you want to clear all notifications?" msgstr "모든 알림을 지우시겠습니까?" @@ -164,20 +164,20 @@ msgstr "모든 알림을 지우시겠습니까?" msgid "Are you sure you want to clear the record of chat?" msgstr "기록을 지우시겠습니까?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 msgid "Are you sure you want to delete this item permanently?" msgstr "이 항목을 영구적으로 삭제하시겠습니까?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 msgid "Are you sure you want to delete this item?" msgstr "이 항목을 삭제하시겠습니까?" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "정말 삭제하시겠습니까?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 msgid "Are you sure you want to recover this item?" msgstr "이 항목을 복구하시겠습니까?" @@ -210,15 +210,15 @@ msgstr "시도 횟수" msgid "Attempts" msgstr "시도 횟수" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "인증" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "" @@ -239,9 +239,9 @@ msgstr "%{name}에 대한 자동 갱신 비활성화됨" msgid "Auto-renewal enabled for %{name}" msgstr "%{name}에 대한 자동 갱신 활성화됨" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -251,15 +251,15 @@ msgstr "뒤로" msgid "Back Home" msgstr "홈으로" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "목록으로 돌아가기" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "차단 시간(분)" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "차단된 IP" @@ -271,8 +271,8 @@ msgstr "차단될 시간" msgid "Base information" msgstr "기본 정보" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 msgid "Basic" @@ -283,24 +283,28 @@ msgstr "기본" msgid "Basic Mode" msgstr "기본 모드" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "작업" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 msgid "Batch Modify" msgstr "일괄 수정" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "배치 업그레이드" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "빌드 환경" @@ -313,15 +317,15 @@ msgstr "CA 디렉토리" msgid "CADir" msgstr "CA 디렉토리" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -337,16 +341,30 @@ msgstr "취소" msgid "Category" msgstr "" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 #, fuzzy msgid "Cert" msgstr "자동 인증" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "인증서 갱신 오류" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "인증서가 만료되었습니다" + #: src/views/preference/CertSettings.vue:24 msgid "Certificate Renewal Interval" msgstr "인증서 갱신 간격" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 msgid "Certificate Status" msgid_plural "Certificates Status" @@ -378,16 +396,16 @@ msgid_plural "Changed Certificates" msgstr[0] "인증서 변경" msgstr[1] "인증서 변경" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "Changed Path" msgstr "인증서 변경" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "채널" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "다시 확인" @@ -411,17 +429,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "환경 변수 정리" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "클리어" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 msgid "Cleared successfully" msgstr "성공적으로 제거됨" @@ -480,7 +502,7 @@ msgstr "" msgid "Copy" msgstr "" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "코어 업그레이드" @@ -505,13 +527,13 @@ msgstr "다른 것 생성하기" msgid "Create File" msgstr "생성" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 #, fuzzy msgid "Create Folder" msgstr "다른 것 생성하기" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "생성 시간" @@ -533,15 +555,15 @@ msgstr "인증 정보" msgid "Credentials" msgstr "인증 정보들" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "" -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "" -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "현재 버전" @@ -556,12 +578,12 @@ msgid "" "indicator." msgstr "" -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "대시보드" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "데이터베이스 (선택사항, 기본값: database)" @@ -570,16 +592,16 @@ msgid "Days" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "삭제" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "" @@ -593,7 +615,7 @@ msgstr "인증서 갱신 오류" msgid "Delete Remote Site Success" msgstr "인증서 갱신 성공" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "사이트 삭제: %{site_name}" @@ -605,7 +627,7 @@ msgstr "스트림 삭제: %{stream_name}" msgid "Deleted successfully" msgstr "성공적으로 삭제됨" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -628,6 +650,10 @@ msgstr "성공적으로 배포됨" msgid "Description" msgstr "설명" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "세부 사항" @@ -640,6 +666,18 @@ msgstr "개발 모드" msgid "Directive" msgstr "지시문" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "지시문들" @@ -648,8 +686,8 @@ msgstr "지시문들" msgid "Directory" msgstr "디렉토리" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 msgid "Disable" msgstr "비활성화" @@ -687,7 +725,7 @@ msgid "Disabled" msgstr "비활성화됨" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -768,7 +806,7 @@ msgstr "도메인" msgid "Domain Config Created Successfully" msgstr "도메인 구성이 성공적으로 생성되었습니다" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "도메인 목록이 비어 있습니다. %{config}에 대한 자동 인증서를 다시 열어보세요" @@ -781,20 +819,20 @@ msgstr "최신 릴리스 다운로드 오류" msgid "Downloading latest release" msgstr "최신 릴리스 다운로드 중" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "드라이런 모드 활성화됨" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "복제" @@ -826,7 +864,7 @@ msgstr "%{n} 편집" msgid "Edit %{n}" msgstr "%{n} 편집" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "구성 편집" @@ -843,13 +881,13 @@ msgstr "스트림 편집" msgid "Email" msgstr "이메일 (*)" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "이메일 (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 msgid "Enable" msgstr "활성화" @@ -861,7 +899,7 @@ msgstr "%{node_name}에서 %{conf_name} 활성화 실패" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "%{node_name}에서 %{conf_name} 성공적으로 활성화됨" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 #, fuzzy msgid "Enable 2FA successfully" msgstr "성공적으로 활성화" @@ -902,7 +940,7 @@ msgstr "성공적으로 활성화" msgid "Enable TLS" msgstr "TLS 활성화" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 #, fuzzy msgid "Enable TOTP" msgstr "TLS 활성화" @@ -921,7 +959,7 @@ msgid "Enabled" msgstr "활성화됨" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -932,7 +970,7 @@ msgstr "성공적으로 활성화됨" msgid "Encrypt website with Let's Encrypt" msgstr "Let's Encrypt로 웹사이트 암호화" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "환경" @@ -954,7 +992,7 @@ msgstr "오류" msgid "Error Logs" msgstr "오류 로그" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "실행 가능 경로" @@ -968,7 +1006,7 @@ msgstr "만료됨" msgid "Expired At: %{date}" msgstr "%{date}에 만료됨" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "내보내기" @@ -977,15 +1015,20 @@ msgstr "내보내기" msgid "Fail to obtain certificate" msgstr "인증서 획득 실패" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "%{msg} 활성화 실패" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "%{msg} 비활성화 실패" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -995,6 +1038,14 @@ msgstr "%{msg} 활성화 실패" msgid "Failed to get certificate information" msgstr "인증서 정보 가져오기 실패" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1012,6 +1063,10 @@ msgstr "파일이 존재함" msgid "File Not Found" msgstr "파일을 찾을 수 없음" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "필터" @@ -1020,7 +1075,7 @@ msgstr "필터" msgid "Finished" msgstr "완료됨" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1035,16 +1090,16 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "중국 사용자를 위해: https://mirror.ghproxy.com/" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "코드 형식" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 #, fuzzy msgid "Format error %{msg}" msgstr "형식 오류 %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 #, fuzzy msgid "Format successfully" msgstr "성공적으로 형식 지정됨" @@ -1062,7 +1117,7 @@ msgstr "생성" msgid "Generating private key for registering account" msgstr "계정 등록을 위한 개인 키 생성 중" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 #, fuzzy msgid "Get release information error" msgstr "릴리스 정보 가져오기 오류" @@ -1107,19 +1162,19 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." msgstr "" -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." msgstr "" -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" @@ -1133,16 +1188,11 @@ msgstr "" msgid "Import" msgstr "가져오기" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "인증서 상태" -#: src/views/other/Login.vue:78 -#, fuzzy -msgid "Incorrect username or password" -msgstr "사용자 이름 또는 비밀번호가 올바르지 않습니다" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1156,16 +1206,16 @@ msgstr "초기 코어 업그레이더 오류" msgid "Initialing core upgrader" msgstr "코어 업그레이더 초기화" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "설치" @@ -1183,24 +1233,29 @@ msgstr "간격" msgid "Invalid" msgstr "유효함" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 #, fuzzy msgid "Invalid filename" msgstr "Invalid E-mail!" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "" +#: src/constants/errors/user.ts:4 +#, fuzzy +msgid "Invalid otp code" +msgstr "유효함" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "" +#: src/constants/errors/user.ts:5 +msgid "Invalid recovery code" +msgstr "" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "" @@ -1233,11 +1288,11 @@ msgstr "Jwt 토큰" msgid "Key Type" msgstr "키 유형" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "마지막 확인 시간" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 #, fuzzy msgid "Last used at" msgstr "마지막 확인 시간" @@ -1250,7 +1305,7 @@ msgstr "변경사항이 없으면 비워두세요" msgid "Leave blank for the default: https://api.openai.com/" msgstr "기본값을 사용하려면 비워 두세요: https://api.openai.com/" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 #, fuzzy msgid "Leave blank if do not want to modify" msgstr "Leave blank for no change" @@ -1260,8 +1315,8 @@ msgstr "Leave blank for no change" msgid "Leave blank if you don't need this." msgstr "Leave blank for no change" -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 #, fuzzy msgid "Leave blank will not change anything" msgstr "변경사항이 없으면 비워두세요" @@ -1280,7 +1335,7 @@ msgstr "라이센스" msgid "Link Start" msgstr "링크 시작" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "" @@ -1289,7 +1344,7 @@ msgstr "" msgid "Load Average:" msgstr "부하 평균:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "" @@ -1312,16 +1367,16 @@ msgstr "위치" msgid "Locations" msgstr "위치들" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 #, fuzzy msgid "Log" msgstr "로그인" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "로그인" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "로그인 성공" @@ -1329,7 +1384,7 @@ msgstr "로그인 성공" msgid "Logout successful" msgstr "로그아웃 성공" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "로그관리" @@ -1358,15 +1413,15 @@ msgstr "" "HTTPChallengePort(기본값: 9180)로 구성했는지 확인하세요." #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "구성 관리" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "사이트 관리" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 #, fuzzy msgid "Manage Streams" msgstr "스트림 관리" @@ -1380,7 +1435,7 @@ msgstr "사용자 관리" msgid "Managed Certificate" msgstr "인증서 유효" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "" @@ -1403,14 +1458,14 @@ msgid "Model" msgstr "실행 모드" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 #, fuzzy msgid "Modify" msgstr "설정 수정" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "인증서 상태" @@ -1419,7 +1474,7 @@ msgstr "인증서 상태" msgid "Modify Config" msgstr "설정 수정" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "Modify Mode" msgstr "설정 수정" @@ -1430,20 +1485,20 @@ msgid "Multi-line Directive" msgstr "단일 지시문" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "이름" @@ -1463,17 +1518,17 @@ msgstr "네트워크 총 수신" msgid "Network Total Send" msgstr "네트워크 총 송신" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 #, fuzzy msgid "New name" msgstr "이름 변경" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "New Path" msgstr "경로" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "새 버전 출시" @@ -1483,7 +1538,7 @@ msgstr "새 버전 출시" msgid "Next" msgstr "다음" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "Nginx" @@ -1499,6 +1554,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 #, fuzzy @@ -1510,7 +1581,7 @@ msgstr "Nginx 구성 오류름" msgid "Nginx Configurations Directory" msgstr "Nginx 구성 오류름" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "Nginx 제어" @@ -1549,25 +1620,25 @@ msgstr "Nginx가 성공적으로 리로드됨" msgid "Nginx Restart Command" msgstr "터미널 시작 명령" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 #, fuzzy msgid "Nginx restarted successfully" msgstr "Nginx가 성공적으로 재시작됨" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "아니요" @@ -1603,12 +1674,12 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 #, fuzzy msgid "Notification" msgstr "알림" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 #, fuzzy msgid "Notifications" msgstr "알림" @@ -1638,27 +1709,27 @@ msgstr "" msgid "Offline" msgstr "오프라인" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "확인" @@ -1673,19 +1744,19 @@ msgstr "검증이 완료되면, 레코드는 제거됩니다." msgid "Online" msgstr "온라인" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "오픈AI" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 #, fuzzy msgid "OS" msgstr "OS" @@ -1694,12 +1765,16 @@ msgstr "OS" msgid "OS:" msgstr "OS:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +msgid "Otp or recovery code empty" +msgstr "" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "덮어쓰기" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "기존 파일 덮어쓰기" @@ -1708,36 +1783,49 @@ msgstr "기존 파일 덮어쓰기" msgid "Params" msgstr "파라미터" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "비밀번호" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "비밀번호 (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "사용자 이름 또는 비밀번호가 올바르지 않습니다" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "경로" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "" @@ -1749,13 +1837,17 @@ msgstr "핵심 업그레이드 오류 수행" msgid "Performing core upgrade" msgstr "핵심 업그레이드 수행 중" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 msgid "Please enter the OTP code:" msgstr "" @@ -1765,7 +1857,7 @@ msgid "" "provider." msgstr "DNS 제공자가 제공한 API 인증 자격 증명을 입력해주세요." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "" @@ -1777,13 +1869,13 @@ msgstr "" "먼저 인증서 > DNS 자격 증명에 자격 증명을 추가한 다음,DNS 제공자의 API를 요청" "하려면 아래 자격 증명 중 하나를 선택해주세요." -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 #, fuzzy msgid "Please input a filename" msgstr "사용자 이름을 입력해주세요!" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 #, fuzzy msgid "Please input a folder name" msgstr "사용자 이름을 입력해주세요!" @@ -1818,7 +1910,7 @@ msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "아래의 시간 설정 단위는 모두 초 단위임을 유의해주세요." -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 #, fuzzy msgid "Please select at least one node to upgrade" msgstr "적어도 하나의 노드를 선택해주세요!" @@ -1838,13 +1930,13 @@ msgstr "적어도 하나의 노드를 선택해주세요!" msgid "Please upgrade the remote Nginx UI to the latest version" msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "사전 출시" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "환경설정" @@ -1893,25 +1985,25 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 #, fuzzy msgid "Recovered Successfully" msgstr "성공적으로 제거됨" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "" @@ -1944,7 +2036,7 @@ msgstr "사용자 등록 중" msgid "Register On Startup" msgstr "사용자 등록 중" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 #, fuzzy msgid "Register passkey successfully" msgstr "성공적으로 갱신됨" @@ -1963,21 +2055,21 @@ msgstr "사용자 등록 중" msgid "Registration Status" msgstr "사용자 등록 중" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 #, fuzzy msgid "Reinstall" msgstr "재설치" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "릴리스 노트" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "리로드" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "리로딩 중" @@ -1985,7 +2077,7 @@ msgstr "리로딩 중" msgid "Reloading nginx" msgstr "Nginx 리로딩 중" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "" @@ -2000,21 +2092,21 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 #, fuzzy msgid "Remove successfully" msgstr "성공적으로 제거됨" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 #, fuzzy msgid "Removed successfully" msgstr "성공적으로 제거됨" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 #, fuzzy msgid "Rename" msgstr "이름 변경" @@ -2097,32 +2189,32 @@ msgstr "성공적으로 갱신됨" msgid "Requested with wrong parameters" msgstr "잘못된 매개변수로 요청됨" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "재설정" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 #, fuzzy msgid "Reset 2FA" msgstr "재설정" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "재시작" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "재시작 중" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "" @@ -2131,20 +2223,20 @@ msgstr "" msgid "Run Mode" msgstr "실행 모드" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "실행 중" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2154,7 +2246,7 @@ msgstr "저장" msgid "Save Directive" msgstr "지시문 저장" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2188,14 +2280,14 @@ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" msgid "Save successfully" msgstr "성공적으로 저장됨" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "성공적으로 저장됨" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "" @@ -2203,7 +2295,7 @@ msgstr "" msgid "SDK" msgstr "" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "" @@ -2220,28 +2312,7 @@ msgstr "" msgid "Send" msgstr "보내기" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "서버 오류" @@ -2257,6 +2328,15 @@ msgstr "directives에서 server_name을 찾을 수 없습니다" msgid "server_name parameter is required" msgstr "server_name 매개변수가 필요합니다" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +#, fuzzy +msgid "Session not found" +msgstr "파일을 찾을 수 없음" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2275,11 +2355,23 @@ msgstr "환경 변수 설정" msgid "Setting HTTP01 challenge provider" msgstr "HTTP01 공급자 설정" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "" @@ -2291,11 +2383,21 @@ msgstr "단일 지시문" msgid "Site Categories" msgstr "" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "비활성화됨" + #: src/routes/index.ts:224 #, fuzzy msgid "Site Logs" msgstr "사이트 로그" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "파일을 찾을 수 없음" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2305,33 +2407,41 @@ msgstr "디렉토리" msgid "Sites List" msgstr "사이트 목록" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 #, fuzzy msgid "SSL Certificate Content" msgstr "인증서 상태" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 msgid "SSL Certificate Key Content" msgstr "SSL 인증서키 콘텐츠" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 #, fuzzy msgid "SSL Certificate Key Path" msgstr "SSL 인증서 키 경로" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 #, fuzzy msgid "SSL Certificate Path" msgstr "SSL 인증서 경로" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 #, fuzzy msgid "SSO Login" msgstr "SSO 로그인" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 #, fuzzy msgid "Stable" msgstr "활성화됨" @@ -2343,7 +2453,7 @@ msgstr "활성화됨" msgid "Status" msgstr "상태" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "정지됨" @@ -2357,6 +2467,15 @@ msgstr "저장소" msgid "Streams Directory" msgstr "디렉토리" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "디렉토리" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "성공" @@ -2382,7 +2501,7 @@ msgstr "다크 테마로 변경" msgid "Switch to light theme" msgstr "라이트 테마로 변경" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "" @@ -2448,7 +2567,7 @@ msgstr "" msgid "Sync strategy" msgstr "인증서 갱신" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "" @@ -2468,6 +2587,11 @@ msgstr "" msgid "Target" msgstr "대상" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "파일을 찾을 수 없음" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "터미널" @@ -2496,15 +2620,20 @@ msgid "" "dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "입력이 SSL 인증서가 아닙니다" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "Certificate Status" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 msgid "" "The model name should only contain letters, unicode, numbers, hyphens, " @@ -2517,12 +2646,12 @@ msgid "" "dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "Certificate Status" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "경로는 존재하지만 파일은 개인 키가 아닙니다" @@ -2532,7 +2661,7 @@ msgid "" "hyphens, dashes, colons, and dots." msgstr "" -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "" @@ -2569,17 +2698,17 @@ msgstr "유효한 URL이 아닙니다" msgid "The username or password is incorrect" msgstr "사용자 이름 또는 비밀번호가 올바르지 않습니다" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "이 자동 인증 항목이 유효하지 않습니다. 제거해주세요." -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "이 인증서는 Nginx UI에서 관리됩니다" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "이 필드는 필수입니다" @@ -2607,17 +2736,17 @@ msgstr "" msgid "This value is already taken" msgstr "" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "팁" @@ -2626,13 +2755,13 @@ msgstr "팁" msgid "Title" msgstr "제목" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." msgstr "" -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2661,27 +2790,23 @@ msgstr "" msgid "Token is not valid" msgstr "토큰이 유효하지 않습니다" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" msgstr[1] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "" @@ -2695,14 +2820,14 @@ msgstr "" msgid "Type" msgstr "유형" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 #, fuzzy msgid "Update successfully" msgstr "성공적으로 저장되었습니다" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2717,12 +2842,12 @@ msgstr "업데이트됨" msgid "Updated successfully" msgstr "성공적으로 저장되었습니다" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "업그레이드" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 #, fuzzy msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "성공적으로 저장되었습니다" @@ -2732,7 +2857,7 @@ msgstr "성공적으로 저장되었습니다" msgid "Upgraded successfully" msgstr "성공적으로 저장되었습니다" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "Nginx UI를 업그레이드하는 중입니다. 잠시 기다려주세요..." @@ -2748,11 +2873,11 @@ msgstr "가동 시간:" msgid "URL" msgstr "URL" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "" @@ -2761,15 +2886,20 @@ msgstr "" msgid "User" msgstr "사용자 이름" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +#, fuzzy +msgid "User banned" +msgstr "사용자 이름" + +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" msgstr "" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "사용자 이름" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "사용자 이름 (*)" @@ -2784,29 +2914,29 @@ msgstr "유효함" msgid "Version" msgstr "현재 버전" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "보기" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 #, fuzzy msgid "View all notifications" msgstr "Certificate is valid" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 #, fuzzy msgid "View Details" msgstr "세부 사항" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "View Mode" msgstr "기본 모드" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "경고" @@ -2827,10 +2957,14 @@ msgstr "" "이 파일에서 HTTPChallenge 구성을 제거하고 Nginx를 다시 로드할 예정입니다. 계" "속하시겠습니까?" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2857,41 +2991,41 @@ msgstr "인증서 개인 키를 디스크에 쓰기" msgid "Writing certificate to disk" msgstr "인증서를 디스크에 쓰기" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "예" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "최신 버전을 사용하고 있습니다" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "이 페이지에서 Nginx UI 업그레이드를 확인할 수 있습니다." -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "" -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "" +#, fuzzy +#~ msgid "Incorrect username or password" +#~ msgstr "사용자 이름 또는 비밀번호가 올바르지 않습니다" + #, fuzzy #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" -#, fuzzy -#~ msgid "File not found" -#~ msgstr "파일을 찾을 수 없음" - #, fuzzy #~ msgid "Server Name" #~ msgstr "Server Info" @@ -2908,9 +3042,6 @@ msgstr "" #~ msgid "Rename " #~ msgstr "이름 변경" -#~ msgid "Certificate has expired" -#~ msgstr "인증서가 만료되었습니다" - #~ msgid "Certificate is valid" #~ msgstr "인증서가 유효합니다" diff --git a/app/src/language/messages.pot b/app/src/language/messages.pot index 1a8bd3f98..5d44eef77 100644 --- a/app/src/language/messages.pot +++ b/app/src/language/messages.pot @@ -6,7 +6,7 @@ msgstr "" msgid "2FA" msgstr "" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "" @@ -39,24 +39,24 @@ msgstr "" msgid "Action" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "" #: src/routes/index.ts:118 -#: src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 msgid "Add Configuration" msgstr "" @@ -74,11 +74,11 @@ msgstr "" msgid "Add Site" msgstr "" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 msgid "Add Stream" msgstr "" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 msgid "Added successfully" msgstr "" @@ -91,12 +91,12 @@ msgstr "" msgid "Advance Mode" msgstr "" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "" @@ -120,7 +120,7 @@ msgstr "" msgid "API Type" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -128,24 +128,24 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 msgid "Are you sure to delete this banned IP immediately?" msgstr "" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 msgid "Are you sure to delete this passkey immediately?" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 msgid "Are you sure you want to apply to all selected?" msgstr "" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 msgid "Are you sure you want to clear all notifications?" msgstr "" @@ -153,20 +153,20 @@ msgstr "" msgid "Are you sure you want to clear the record of chat?" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 msgid "Are you sure you want to delete this item permanently?" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 msgid "Are you sure you want to delete this item?" msgstr "" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 msgid "Are you sure you want to recover this item?" msgstr "" @@ -198,15 +198,15 @@ msgstr "" msgid "Attempts" msgstr "" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "" @@ -227,10 +227,10 @@ msgstr "" msgid "Auto-renewal enabled for %{name}" msgstr "" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 #: src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 +#: src/views/config/ConfigList.vue:179 #: src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 @@ -241,15 +241,15 @@ msgstr "" msgid "Back Home" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "" @@ -261,8 +261,8 @@ msgstr "" msgid "Base information" msgstr "" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 msgid "Basic" @@ -273,23 +273,27 @@ msgstr "" msgid "Basic Mode" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 msgid "Batch Actions" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 msgid "Batch Modify" msgstr "" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "" @@ -302,15 +306,15 @@ msgstr "" msgid "CADir" msgstr "" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -326,15 +330,27 @@ msgstr "" msgid "Category" msgstr "" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 msgid "Cert" msgstr "" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +msgid "Certificate decode error" +msgstr "" + +#: src/constants/errors/cert.ts:5 +msgid "Certificate parse error" +msgstr "" + #: src/views/preference/CertSettings.vue:24 msgid "Certificate Renewal Interval" msgstr "" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 msgid "Certificate Status" msgid_plural "Certificates Status" @@ -365,16 +381,16 @@ msgid_plural "Changed Certificates" msgstr[0] "" msgstr[1] "" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "Changed Path" msgstr "" -#: src/views/environment/BatchUpgrader.vue:162 -#: src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 +#: src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "" @@ -394,17 +410,21 @@ msgstr "" msgid "Check if the streams-available and streams-enabled directories are under the nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 msgid "Cleared successfully" msgstr "" @@ -463,7 +483,7 @@ msgstr "" msgid "Copy" msgstr "" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "" @@ -487,13 +507,13 @@ msgstr "" msgid "Create File" msgstr "" -#: src/views/config/components/Mkdir.vue:49 +#: src/views/config/components/Mkdir.vue:47 #: src/views/config/ConfigList.vue:123 msgid "Create Folder" msgstr "" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 #: src/views/user/userColumns.tsx:48 msgid "Created at" @@ -515,15 +535,15 @@ msgstr "" msgid "Credentials" msgstr "" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "" -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "" -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "" @@ -537,13 +557,13 @@ msgid "Customize the name of local node to be displayed in the environment indic msgstr "" #: src/routes/index.ts:38 -#: src/views/config/ConfigEditor.vue:136 +#: src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 #: src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "" @@ -552,16 +572,16 @@ msgid "Days" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "" @@ -573,7 +593,7 @@ msgstr "" msgid "Delete Remote Site Success" msgstr "" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "" @@ -585,7 +605,7 @@ msgstr "" msgid "Deleted successfully" msgstr "" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -608,6 +628,10 @@ msgstr "" msgid "Description" msgstr "" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "" @@ -620,6 +644,18 @@ msgstr "" msgid "Directive" msgstr "" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "" @@ -628,8 +664,8 @@ msgstr "" msgid "Directory" msgstr "" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 msgid "Disable" msgstr "" @@ -665,7 +701,7 @@ msgid "Disabled" msgstr "" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -746,7 +782,7 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" @@ -758,19 +794,19 @@ msgstr "" msgid "Downloading latest release" msgstr "" -#: src/views/environment/BatchUpgrader.vue:191 -#: src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 +#: src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "Due to the security policies of some browsers, you cannot use passkeys on non-HTTPS websites, except when running on localhost." msgstr "" -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "" @@ -801,7 +837,7 @@ msgid "Edit %{n}" msgstr "" #: src/routes/index.ts:128 -#: src/views/config/ConfigEditor.vue:206 +#: src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "" @@ -817,13 +853,13 @@ msgstr "" msgid "Email" msgstr "" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 msgid "Enable" msgstr "" @@ -835,7 +871,7 @@ msgstr "" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 msgid "Enable 2FA successfully" msgstr "" @@ -871,7 +907,7 @@ msgstr "" msgid "Enable TLS" msgstr "" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 msgid "Enable TOTP" msgstr "" @@ -890,7 +926,7 @@ msgid "Enabled" msgstr "" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 +#: src/views/site/site_list/SiteList.vue:46 #: src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 @@ -903,7 +939,7 @@ msgid "Encrypt website with Let's Encrypt" msgstr "" #: src/routes/index.ts:234 -#: src/views/environment/Environment.vue:34 +#: src/views/environment/Environment.vue:32 msgid "Environment" msgstr "" @@ -926,7 +962,7 @@ msgstr "" msgid "Error Logs" msgstr "" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "" @@ -939,7 +975,7 @@ msgstr "" msgid "Expired At: %{date}" msgstr "" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "" @@ -947,15 +983,19 @@ msgstr "" msgid "Fail to obtain certificate" msgstr "" +#: src/constants/errors/self_check.ts:9 +msgid "Failed to create backup" +msgstr "" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -965,6 +1005,14 @@ msgstr "" msgid "Failed to get certificate information" msgstr "" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -982,6 +1030,10 @@ msgstr "" msgid "File Not Found" msgstr "" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "" @@ -991,7 +1043,7 @@ msgstr "" msgid "Finished" msgstr "" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "Follow the instructions in the dialog to complete the passkey registration process." msgstr "" @@ -1004,15 +1056,15 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 msgid "Format error %{msg}" msgstr "" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 msgid "Format successfully" msgstr "" @@ -1028,8 +1080,8 @@ msgstr "" msgid "Generating private key for registering account" msgstr "" -#: src/views/environment/BatchUpgrader.vue:180 -#: src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 +#: src/views/system/Upgrade.vue:169 msgid "Get release information error" msgstr "" @@ -1073,15 +1125,15 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "If the number of login failed attempts from a ip reach the max attempts in ban threshold minutes, the ip will be banned for a period of time." msgstr "" -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "If you lose your mobile phone, you can use the recovery code to reset your 2FA." msgstr "" -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" @@ -1094,14 +1146,10 @@ msgid "Import" msgstr "" #: src/routes/index.ts:174 -#: src/views/certificate/CertificateEditor.vue:86 +#: src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "" -#: src/views/other/Login.vue:78 -msgid "Incorrect username or password" -msgstr "" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 #: src/views/notification/notificationColumns.tsx:29 @@ -1116,17 +1164,17 @@ msgstr "" msgid "Initialing core upgrader" msgstr "" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "" #: src/routes/index.ts:312 -#: src/views/other/Install.vue:136 +#: src/views/other/Install.vue:134 msgid "Install" msgstr "" @@ -1142,23 +1190,27 @@ msgstr "" msgid "Invalid" msgstr "" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 msgid "Invalid filename" msgstr "" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "" +#: src/constants/errors/user.ts:4 +msgid "Invalid otp code" +msgstr "" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "" +#: src/constants/errors/user.ts:5 +msgid "Invalid recovery code" +msgstr "" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "" @@ -1188,11 +1240,11 @@ msgstr "" msgid "Key Type" msgstr "" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 msgid "Last used at" msgstr "" @@ -1204,7 +1256,7 @@ msgstr "" msgid "Leave blank for the default: https://api.openai.com/" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 msgid "Leave blank if do not want to modify" msgstr "" @@ -1212,8 +1264,8 @@ msgstr "" msgid "Leave blank if you don't need this." msgstr "" -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 msgid "Leave blank will not change anything" msgstr "" @@ -1230,7 +1282,7 @@ msgstr "" msgid "Link Start" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "" @@ -1238,7 +1290,7 @@ msgstr "" msgid "Load Average:" msgstr "" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "" @@ -1259,16 +1311,16 @@ msgstr "" msgid "Locations" msgstr "" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 msgid "Log" msgstr "" #: src/routes/index.ts:318 -#: src/views/other/Login.vue:246 +#: src/views/other/Login.vue:222 msgid "Login" msgstr "" -#: src/views/other/Login.vue:132 +#: src/views/other/Login.vue:114 #: src/views/other/Login.vue:65 msgid "Login successful" msgstr "" @@ -1277,7 +1329,7 @@ msgstr "" msgid "Logout successful" msgstr "" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "" @@ -1291,18 +1343,18 @@ msgstr "" #: src/routes/index.ts:108 #: src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 +#: src/views/config/ConfigEditor.vue:139 #: src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "" #: src/routes/index.ts:47 -#: src/views/site/site_list/SiteList.vue:98 +#: src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "" #: src/routes/index.ts:89 -#: src/views/stream/StreamList.vue:119 +#: src/views/stream/StreamList.vue:115 msgid "Manage Streams" msgstr "" @@ -1315,7 +1367,7 @@ msgstr "" msgid "Managed Certificate" msgstr "" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "" @@ -1337,14 +1389,14 @@ msgid "Model" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 msgid "Modify" msgstr "" #: src/routes/index.ts:164 -#: src/views/certificate/CertificateEditor.vue:86 +#: src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "" @@ -1352,7 +1404,7 @@ msgstr "" msgid "Modify Config" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "Modify Mode" msgstr "" @@ -1361,23 +1413,23 @@ msgid "Multi-line Directive" msgstr "" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 +#: src/views/config/components/Mkdir.vue:64 #: src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 +#: src/views/config/ConfigEditor.vue:256 #: src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 #: src/views/stream/StreamList.vue:13 -#: src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:181 msgid "Name" msgstr "" @@ -1397,15 +1449,15 @@ msgstr "" msgid "Network Total Send" msgstr "" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 msgid "New name" msgstr "" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "New Path" msgstr "" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "" @@ -1415,7 +1467,7 @@ msgstr "" msgid "Next" msgstr "" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "" @@ -1431,6 +1483,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 msgid "Nginx Configuration Parse Error" @@ -1440,7 +1508,7 @@ msgstr "" msgid "Nginx Configurations Directory" msgstr "" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "" @@ -1477,24 +1545,24 @@ msgstr "" msgid "Nginx Restart Command" msgstr "" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "" @@ -1527,11 +1595,11 @@ msgstr "" msgid "Note, if the configuration file include other configurations or certificates, please synchronize them to the remote nodes in advance." msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 msgid "Notification" msgstr "" -#: src/components/Notification/Notification.vue:131 +#: src/components/Notification/Notification.vue:126 #: src/routes/index.ts:248 msgid "Notifications" msgstr "" @@ -1558,27 +1626,27 @@ msgstr "" msgid "Offline" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "" @@ -1593,20 +1661,20 @@ msgstr "" msgid "Online" msgstr "" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "" -#: src/components/TwoFA/Authorization.vue:117 -#: src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 +#: src/views/other/Login.vue:231 msgid "Or" msgstr "" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 msgid "OS" msgstr "" @@ -1614,12 +1682,16 @@ msgstr "" msgid "OS:" msgstr "" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +msgid "Otp or recovery code empty" +msgstr "" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "" @@ -1628,34 +1700,47 @@ msgstr "" msgid "Params" msgstr "" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "Passkeys are webauthn credentials that validate your identity using touch, facial recognition, a device password, or a PIN. They can be used as a password replacement or as a 2FA method." msgstr "" -#: src/views/other/Login.vue:207 +#: src/views/other/Login.vue:183 #: src/views/user/userColumns.tsx:18 msgid "Password" msgstr "" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "" +#: src/constants/errors/user.ts:2 +msgid "Password incorrect" +msgstr "" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 +#: src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "" @@ -1667,11 +1752,15 @@ msgstr "" msgid "Performing core upgrade" msgstr "" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "Please enter a name for the passkey you wish to create and click the OK button below." msgstr "" -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 msgid "Please enter the OTP code:" msgstr "" @@ -1679,7 +1768,7 @@ msgstr "" msgid "Please fill in the API authentication credentials provided by your DNS provider." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "" @@ -1687,12 +1776,12 @@ msgstr "" msgid "Please first add credentials in Certification > DNS Credentials, and then select one of the credentialsbelow to request the API of the DNS provider." msgstr "" -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 msgid "Please input a filename" msgstr "" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 msgid "Please input a folder name" msgstr "" @@ -1722,7 +1811,7 @@ msgstr "" msgid "Please note that the unit of time configurations below are all in seconds." msgstr "" -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 msgid "Please select at least one node to upgrade" msgstr "" @@ -1740,15 +1829,15 @@ msgstr "" msgid "Please upgrade the remote Nginx UI to the latest version" msgstr "" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 -#: src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 +#: src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "" #: src/routes/index.ts:266 -#: src/views/preference/Preference.vue:144 +#: src/views/preference/Preference.vue:141 msgid "Preference" msgstr "" @@ -1795,24 +1884,24 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 msgid "Recovered Successfully" msgstr "" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "" @@ -1840,7 +1929,7 @@ msgstr "" msgid "Register On Startup" msgstr "" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 msgid "Register passkey successfully" msgstr "" @@ -1856,20 +1945,20 @@ msgstr "" msgid "Registration Status" msgstr "" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 msgid "Reinstall" msgstr "" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "" @@ -1877,7 +1966,7 @@ msgstr "" msgid "Reloading nginx" msgstr "" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "" @@ -1890,19 +1979,19 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 msgid "Remove successfully" msgstr "" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 msgid "Removed successfully" msgstr "" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 msgid "Rename" msgstr "" @@ -1969,31 +2058,31 @@ msgstr "" msgid "Requested with wrong parameters" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 msgid "Reset 2FA" msgstr "" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "" @@ -2001,20 +2090,20 @@ msgstr "" msgid "Run Mode" msgstr "" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2024,7 +2113,7 @@ msgstr "" msgid "Save Directive" msgstr "" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2053,7 +2142,7 @@ msgstr "" msgid "Save successfully" msgstr "" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 #: src/views/site/SiteAdd.vue:37 @@ -2061,7 +2150,7 @@ msgstr "" msgid "Saved successfully" msgstr "" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "" @@ -2069,7 +2158,7 @@ msgstr "" msgid "SDK" msgstr "" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "" @@ -2087,32 +2176,7 @@ msgstr "" msgid "Send" msgstr "" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 #: src/lib/http/index.ts:128 -#: src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 -#: src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 -#: src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 -#: src/views/system/Upgrade.vue:42 msgid "Server error" msgstr "" @@ -2128,6 +2192,14 @@ msgstr "" msgid "server_name parameter is required" msgstr "" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +msgid "Session not found" +msgstr "" + #: src/views/preference/CertSettings.vue:33 msgid "Set the recursive nameservers to override the systems nameservers for the step of DNS challenge." msgstr "" @@ -2144,11 +2216,19 @@ msgstr "" msgid "Setting HTTP01 challenge provider" msgstr "" +#: src/constants/errors/nginx_log.ts:8 +msgid "Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "" @@ -2161,10 +2241,18 @@ msgstr "" msgid "Site Categories" msgstr "" +#: src/constants/errors/site.ts:4 +msgid "Site is enabled" +msgstr "" + #: src/routes/index.ts:224 msgid "Site Logs" msgstr "" +#: src/constants/errors/site.ts:2 +msgid "Site not found" +msgstr "" + #: src/views/system/SelfCheck/tasks.ts:3 msgid "Sites Directory" msgstr "" @@ -2173,30 +2261,38 @@ msgstr "" msgid "Sites List" msgstr "" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Content" msgstr "" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 msgid "SSL Certificate Key Content" msgstr "" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 msgid "SSL Certificate Key Path" msgstr "" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 msgid "SSL Certificate Path" msgstr "" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 msgid "SSO Login" msgstr "" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 -#: src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 +#: src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 msgid "Stable" msgstr "" @@ -2208,7 +2304,7 @@ msgstr "" msgid "Status" msgstr "" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "" @@ -2221,6 +2317,14 @@ msgstr "" msgid "Streams Directory" msgstr "" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +msgid "Streams-enabled directory not exist" +msgstr "" + #: src/constants/index.ts:19 #: src/views/notification/notificationColumns.tsx:36 msgid "Success" @@ -2243,7 +2347,7 @@ msgstr "" msgid "Switch to light theme" msgstr "" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "" @@ -2296,7 +2400,7 @@ msgstr "" msgid "Sync strategy" msgstr "" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "" @@ -2316,6 +2420,10 @@ msgstr "" msgid "Target" msgstr "" +#: src/constants/errors/self_check.ts:2 +msgid "Task not found" +msgstr "" + #: src/routes/index.ts:194 #: src/views/terminal/Terminal.vue:114 msgid "Terminal" @@ -2337,14 +2445,18 @@ msgstr "" msgid "The ICP Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 msgid "The input is not a SSL Certificate Key" msgstr "" +#: src/constants/errors/nginx_log.ts:2 +msgid "The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 msgid "The model name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots." msgstr "" @@ -2353,11 +2465,11 @@ msgstr "" msgid "The node name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 msgid "The path exists, but the file is not a certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "" @@ -2365,7 +2477,7 @@ msgstr "" msgid "The Public Security Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots." msgstr "" -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "The recovery code is only displayed once, please save it in a safe place." msgstr "" @@ -2391,17 +2503,17 @@ msgstr "" msgid "The username or password is incorrect" msgstr "" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "" -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "" @@ -2426,16 +2538,16 @@ msgstr "" msgid "This value is already taken" msgstr "" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "" @@ -2444,11 +2556,11 @@ msgstr "" msgid "Title" msgstr "" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "To enable it, you need to install the Google or Microsoft Authenticator app on your mobile phone." msgstr "" -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "To ensure security, Webauthn configuration cannot be added through the UI. Please manually configure the following in the app.ini configuration file and restart Nginx UI." msgstr "" @@ -2464,25 +2576,21 @@ msgstr "" msgid "Token is not valid" msgstr "" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" msgstr[1] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "TOTP is a two-factor authentication method that uses a time-based one-time password algorithm." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "" @@ -2496,14 +2604,14 @@ msgstr "" msgid "Type" msgstr "" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 msgid "Update successfully" msgstr "" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 #: src/views/config/configColumns.ts:31 -#: src/views/config/ConfigEditor.vue:278 +#: src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2519,13 +2627,13 @@ msgid "Updated successfully" msgstr "" #: src/routes/index.ts:297 -#: src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 -#: src/views/system/Upgrade.vue:228 +#: src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 +#: src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "" @@ -2533,8 +2641,8 @@ msgstr "" msgid "Upgraded successfully" msgstr "" -#: src/views/environment/BatchUpgrader.vue:91 -#: src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 +#: src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "" @@ -2550,11 +2658,11 @@ msgstr "" msgid "URL" msgstr "" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "" @@ -2562,16 +2670,20 @@ msgstr "" msgid "User" msgstr "" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +msgid "User banned" msgstr "" -#: src/views/other/Login.vue:197 +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" +msgstr "" + +#: src/views/other/Login.vue:173 #: src/views/user/userColumns.tsx:9 msgid "Username" msgstr "" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "" @@ -2585,27 +2697,27 @@ msgstr "" msgid "Version" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 msgid "View all notifications" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 msgid "View Details" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "View Mode" msgstr "" #: src/constants/index.ts:17 #: src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "" @@ -2618,10 +2730,14 @@ msgstr "" msgid "We will remove the HTTPChallenge configuration from this file and reload the Nginx. Are you sure you want to continue?" msgstr "" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "When Enabled, Nginx UI will automatically re-register users upon startup. Generally, do not enable this unless you are in a dev environment and using Pebble as CA." msgstr "" @@ -2643,25 +2759,25 @@ msgstr "" msgid "Writing certificate to disk" msgstr "" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "" -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "You have not configured the settings of Webauthn, so you cannot add a passkey." msgstr "" -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "" diff --git a/app/src/language/ru_RU/app.po b/app/src/language/ru_RU/app.po index c81337cb2..0cde40000 100644 --- a/app/src/language/ru_RU/app.po +++ b/app/src/language/ru_RU/app.po @@ -19,7 +19,7 @@ msgstr "" msgid "2FA" msgstr "2FA" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "Настройки 2FA" @@ -49,23 +49,23 @@ msgstr "Пользователь ACME" msgid "Action" msgstr "Действие" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "Добавить" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "Добавить ключ доступа" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 msgid "Add Configuration" msgstr "Добавить конфигурацию" @@ -82,11 +82,11 @@ msgstr "Добавить Location" msgid "Add Site" msgstr "Добавть Сайт" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 msgid "Add Stream" msgstr "Добавить поток" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 msgid "Added successfully" msgstr "Добавлено успешно" @@ -99,12 +99,12 @@ msgstr "Дополнительно" msgid "Advance Mode" msgstr "Расширенный режим" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "Затем, обновите эту страницу и снова нажмите «Добавить ключ доступа»." -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "Все" @@ -129,7 +129,7 @@ msgstr "API токен" msgid "API Type" msgstr "API токен" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "Применить" @@ -138,26 +138,26 @@ msgstr "Применить" msgid "Apply bulk action successfully" msgstr "Продублированно" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "Архитектура" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 msgid "Are you sure to delete this banned IP immediately?" msgstr "Вы уверены, что хотите немедленно удалить этот заблокированный IP?" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 #, fuzzy msgid "Are you sure to delete this passkey immediately?" msgstr "Вы уверены, что хотите немедленно удалить этот заблокированный IP?" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "Вы уверены, что хотите удалить?" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 msgid "Are you sure you want to clear all notifications?" msgstr "Вы уверены, что хотите очистить все уведомления?" @@ -166,20 +166,20 @@ msgstr "Вы уверены, что хотите очистить все уве msgid "Are you sure you want to clear the record of chat?" msgstr "Вы уверены, что хотите очистить сообщения чата?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 msgid "Are you sure you want to delete this item permanently?" msgstr "Вы уверены, что хотите удалить этот элемент навсегда?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 msgid "Are you sure you want to delete this item?" msgstr "Вы уверены, что хотите удалить этот элемент?" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "Вы уверены, что хотите удалить?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 msgid "Are you sure you want to recover this item?" msgstr "Вы уверены, что хотите восстановить этот элемент?" @@ -212,15 +212,15 @@ msgstr "Попытки" msgid "Attempts" msgstr "Попытки" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "Авторизация" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "Аутентификация с помощью ключа доступа" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "Настройки аутентификации" @@ -241,9 +241,9 @@ msgstr "Автообновление отключено для %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Автообновление включено для %{name}" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -253,15 +253,15 @@ msgstr "Назад" msgid "Back Home" msgstr "Вернуться на главную" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "Возврат к списку" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "Порог блокировки в минутах" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "Заблокированные IP-адреса" @@ -273,8 +273,8 @@ msgstr "Заблокирован до" msgid "Base information" msgstr "Основная информация" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 #, fuzzy @@ -286,24 +286,28 @@ msgstr "Простой режим" msgid "Basic Mode" msgstr "Простой режим" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "Действие" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 msgid "Batch Modify" msgstr "Массовое изменение" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "Пакетное обновление" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "Ниже приведены выбранные элементы, которые вы хотите изменить" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "Собрать с" @@ -316,15 +320,15 @@ msgstr "Директория корневого сертификата" msgid "CADir" msgstr "" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -340,16 +344,30 @@ msgstr "Отмена" msgid "Category" msgstr "Категория" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 #, fuzzy msgid "Cert" msgstr "Авто Сертификат" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "Ошибка синхронизации сертификата" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "Срок действия сертификата истек" + #: src/views/preference/CertSettings.vue:24 msgid "Certificate Renewal Interval" msgstr "Интервал обновления сертификата" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 msgid "Certificate Status" msgid_plural "Certificates Status" @@ -380,15 +398,15 @@ msgid_plural "Changed Certificates" msgstr[0] "Сертификат изменен" msgstr[1] "Сертификаты изменены" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "Changed Path" msgstr "Путь изменён" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "Канал" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "Проверить повторно" @@ -412,17 +430,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Очистка переменных среды" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "Очистить" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 msgid "Cleared successfully" msgstr "Очищено успешно" @@ -481,7 +503,7 @@ msgstr "Скопировано" msgid "Copy" msgstr "Копировать" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "Обновление ядра" @@ -505,12 +527,12 @@ msgstr "Создать еще" msgid "Create File" msgstr "Создать файл" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 msgid "Create Folder" msgstr "Создать папку" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "Создан в" @@ -531,18 +553,18 @@ msgstr "Учетные данные" msgid "Credentials" msgstr "Учетные данные" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 #, fuzzy msgid "Current account is enabled TOTP." msgstr "Текущая учетная запись имеет включенную 2ФА." -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 #, fuzzy msgid "Current account is not enabled TOTP." msgstr "" "Текущая учетная запись не имеет включенной двухфакторной аутентификации." -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "Текущяя версия" @@ -558,12 +580,12 @@ msgid "" "indicator." msgstr "Настройте имя локального сервера для отображения в индикаторе среды." -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "Доска" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "База данных (Опционально, по умолчанию: database)" @@ -572,16 +594,16 @@ msgid "Days" msgstr "Дни" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "Удалить" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "Удалить навсегда" @@ -595,7 +617,7 @@ msgstr "Ошибка переименования удаленной конфи msgid "Delete Remote Site Success" msgstr "Переименование удаленной конфигурации прошло успешно" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "Удалить сайт: %{site_name}" @@ -607,7 +629,7 @@ msgstr "Удалить поток: %{stream_name}" msgid "Deleted successfully" msgstr "Удалено успешно" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -630,6 +652,10 @@ msgstr "Успешное развертывание" msgid "Description" msgstr "Описание" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "Детали" @@ -642,6 +668,18 @@ msgstr "Режим разработки" msgid "Directive" msgstr "Деректива" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "Дерективы" @@ -650,8 +688,8 @@ msgstr "Дерективы" msgid "Directory" msgstr "Каталог" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 msgid "Disable" msgstr "Отключить" @@ -689,7 +727,7 @@ msgid "Disabled" msgstr "Отключено" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -771,7 +809,7 @@ msgstr "Домен" msgid "Domain Config Created Successfully" msgstr "Конфигурация домена успешно создана" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "Список доменов пуст, попробуйте заново открыть авто-сертификат для %{config}" @@ -784,11 +822,11 @@ msgstr "Ошибка загрузки последней версии" msgid "Downloading latest release" msgstr "Загрузка последней версии" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "Включен пробный режим" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." @@ -797,10 +835,10 @@ msgstr "" "ключи доступа на сайтах без HTTPS, за исключением случаев, когда они " "запускаются на localhost." -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "Дублировать" @@ -833,7 +871,7 @@ msgstr "Редактировать %{n}" msgid "Edit %{n}" msgstr "Редактировать %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "Редактировать Конфигурацию" @@ -849,13 +887,13 @@ msgstr "Редактировать поток" msgid "Email" msgstr "Электронная почта" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "Email (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 msgid "Enable" msgstr "Включить" @@ -867,7 +905,7 @@ msgstr "Включение %{conf_name} in %{node_name} нипалучилася msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "Включение %{conf_name} in %{node_name} успешно" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 msgid "Enable 2FA successfully" msgstr "Двухфакторная аутентификация успешно включена" @@ -907,7 +945,7 @@ msgstr "Включено успешно" msgid "Enable TLS" msgstr "Включить TLS" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 #, fuzzy msgid "Enable TOTP" msgstr "Включить TLS" @@ -926,7 +964,7 @@ msgid "Enabled" msgstr "Включено" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -937,7 +975,7 @@ msgstr "Активировано успешно" msgid "Encrypt website with Let's Encrypt" msgstr "Использовать для сайта Let's Encrypt" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "Окружение" @@ -958,7 +996,7 @@ msgstr "Ошибка" msgid "Error Logs" msgstr "Ошибка логирования" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "Исполняемый путь" @@ -971,7 +1009,7 @@ msgstr "Истекший" msgid "Expired At: %{date}" msgstr "Истекает: %{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "Экспорт" @@ -979,15 +1017,20 @@ msgstr "Экспорт" msgid "Fail to obtain certificate" msgstr "Не удалось получить сертификат" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "Не удалось включить %{msg}" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "Не удалось отключить %{msg}" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -997,6 +1040,14 @@ msgstr "Не удалось включить %{msg}" msgid "Failed to get certificate information" msgstr "Не удалось получить информацию о сертификате" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1014,6 +1065,10 @@ msgstr "Файл существует" msgid "File Not Found" msgstr "Файл не найден" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "Фильтр" @@ -1022,7 +1077,7 @@ msgstr "Фильтр" msgid "Finished" msgstr "Готово" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1039,15 +1094,15 @@ msgstr "Для китайскоязычных пользователей" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "Для китайских пользователей: https://mirror.ghproxy.com/" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "Форматировать код" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 msgid "Format error %{msg}" msgstr "Ошибка формата %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 msgid "Format successfully" msgstr "Форматирование успешно" @@ -1063,7 +1118,7 @@ msgstr "Сгенерировать" msgid "Generating private key for registering account" msgstr "Генерация приватного ключа для регистрации учетной записи" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 msgid "Get release information error" msgstr "Ошибка получения информации о выпуске" @@ -1107,7 +1162,7 @@ msgstr "ICP номер" msgid "If left blank, the default CA Dir will be used." msgstr "Если оставить пустым, будет использоваться каталог CA по умолчанию." -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." @@ -1116,7 +1171,7 @@ msgstr "" "количества попыток в течение пороговых минут блокировки, IP будет " "заблокирован на определенный период времени." -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." @@ -1124,7 +1179,7 @@ msgstr "" "Если вы потеряете свой мобильный телефон, вы можете использовать код " "восстановления для сброса 2FA." -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" "Если ваш браузер поддерживает WebAuthn Passkey, появится диалоговое окно." @@ -1141,14 +1196,10 @@ msgstr "" msgid "Import" msgstr "Импорт" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "Импортировать сертификат" -#: src/views/other/Login.vue:78 -msgid "Incorrect username or password" -msgstr "Неверное имя пользователя или пароль" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1162,16 +1213,16 @@ msgstr "Ошибка первоначального обновления ядр msgid "Initialing core upgrader" msgstr "Инициализация программы обновления ядра" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "Введите код из приложения:" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "Введите код восстановления:" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "Установить" @@ -1187,23 +1238,29 @@ msgstr "Интервал" msgid "Invalid" msgstr "Недействительно" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "Неверный 2FA или код восстановления" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 msgid "Invalid filename" msgstr "Неверное имя файла" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "Недопустимое имя папки" +#: src/constants/errors/user.ts:4 +#, fuzzy +msgid "Invalid otp code" +msgstr "Неверный 2FA или код восстановления" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "Неверный пароль или код восстановления" +#: src/constants/errors/user.ts:5 +#, fuzzy +msgid "Invalid recovery code" +msgstr "Неверный 2FA или код восстановления" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "IP" @@ -1233,11 +1290,11 @@ msgstr "Jwt секрет" msgid "Key Type" msgstr "Тип ключа" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "Последняя проверка в" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 #, fuzzy msgid "Last used at" msgstr "Последняя проверка в" @@ -1250,7 +1307,7 @@ msgstr "Оставьте пустым без изменений" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Оставьте пустым для значения по умолчанию: https://api.openai.com/" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 #, fuzzy msgid "Leave blank if do not want to modify" msgstr "Оставьте пустым без изменений" @@ -1259,8 +1316,8 @@ msgstr "Оставьте пустым без изменений" msgid "Leave blank if you don't need this." msgstr "Оставьте пустым без изменений." -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 msgid "Leave blank will not change anything" msgstr "Если оставить пустым, ничего не изменится" @@ -1277,7 +1334,7 @@ msgstr "Лицензия" msgid "Link Start" msgstr "Начало ссылки" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "Список" @@ -1285,7 +1342,7 @@ msgstr "Список" msgid "Load Average:" msgstr "Средняя нагрузка:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "Загрузить из настроек" @@ -1306,15 +1363,15 @@ msgstr "Локация" msgid "Locations" msgstr "Локации" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 msgid "Log" msgstr "Журнал" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "Логин" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "Авторизация успешна" @@ -1322,7 +1379,7 @@ msgstr "Авторизация успешна" msgid "Logout successful" msgstr "Выход выполнен успешно" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "Прокрутка" @@ -1351,15 +1408,15 @@ msgstr "" "HTTPChallengePort перед получением сертификата." #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "Конфигурации" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "Сайты" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 msgid "Manage Streams" msgstr "Управление потоками" @@ -1371,7 +1428,7 @@ msgstr "Пользователи" msgid "Managed Certificate" msgstr "Управление сертификатом" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "Максимальное количество попыток" @@ -1393,13 +1450,13 @@ msgid "Model" msgstr "Модель" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 msgid "Modify" msgstr "Изменить" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "Изменить сертификат" @@ -1407,7 +1464,7 @@ msgstr "Изменить сертификат" msgid "Modify Config" msgstr "Изменить конфигурацию" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "Modify Mode" msgstr "Изменить режим" @@ -1416,20 +1473,20 @@ msgid "Multi-line Directive" msgstr "Многострочная директива" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "Имя" @@ -1449,15 +1506,15 @@ msgstr "Всего получено" msgid "Network Total Send" msgstr "Всего отправлено" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 msgid "New name" msgstr "Новое имя" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "New Path" msgstr "Новый путь" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "Вышла новая версия" @@ -1467,7 +1524,7 @@ msgstr "Вышла новая версия" msgid "Next" msgstr "Дальше" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "Nginx" @@ -1483,6 +1540,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 msgid "Nginx Configuration Parse Error" @@ -1493,7 +1566,7 @@ msgstr "Ошибка разбора конфигурации Nginx" msgid "Nginx Configurations Directory" msgstr "Ошибка разбора конфигурации Nginx" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "Управление Nginx" @@ -1531,24 +1604,24 @@ msgstr "Nginx успешно перезагружен" msgid "Nginx Restart Command" msgstr "Терминальная команда запуска" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" msgstr "Nginx успешно перезапущен" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "Нет" @@ -1584,11 +1657,11 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 msgid "Notification" msgstr "Уведомление" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 msgid "Notifications" msgstr "Уведомления" @@ -1618,27 +1691,27 @@ msgstr "" msgid "Offline" msgstr "Оффлайн" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "Ок" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "ОК" @@ -1653,19 +1726,19 @@ msgstr "После завершения проверки записи будут msgid "Online" msgstr "Онлайн" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "OpenAI" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "Оригинальное имя" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 msgid "OS" msgstr "ОС" @@ -1673,12 +1746,17 @@ msgstr "ОС" msgid "OS:" msgstr "OS:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +#, fuzzy +msgid "Otp or recovery code empty" +msgstr "Использовать код восстановления" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "Перезаписать" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "Перезаписать существующий файл" @@ -1687,36 +1765,49 @@ msgstr "Перезаписать существующий файл" msgid "Params" msgstr "Параметры" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "Пароль" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "Пароль (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "Имя пользователя или пароль неверны" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "Путь" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "Выполнить" @@ -1728,13 +1819,17 @@ msgstr "Ошибка обновления ядра" msgid "Performing core upgrade" msgstr "Выполнение обновления ядра" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 #, fuzzy msgid "Please enter the OTP code:" msgstr "Пожалуйста, введите код 2FA:" @@ -1747,7 +1842,7 @@ msgstr "" "Пожалуйста, заполните учетные данные API, предоставленные вашим DNS-" "провайдером." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "Пожалуйста, заполните обязательные поля" @@ -1760,12 +1855,12 @@ msgstr "" "Credentials, а затем выберите одну из учетных данных ниже, чтобы запросить " "API провайдера DNS." -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 msgid "Please input a filename" msgstr "Пожалуйста, введите имя файла" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 msgid "Please input a folder name" msgstr "Пожалуйста, введите имя папки" @@ -1804,7 +1899,7 @@ msgstr "" "Обратите внимание, что единица измерения времени в конфигурациях ниже " "указана в секундах." -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 msgid "Please select at least one node to upgrade" msgstr "Пожалуйста, выберите хотя бы один узел" @@ -1825,13 +1920,13 @@ msgstr "" "Синхронизация конфигурации %{cert_name} с %{env_name} не удалась, " "пожалуйста, обновите удаленный Nginx UI до последней версии" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "Предварительный выпуск" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "Настройки" @@ -1878,24 +1973,24 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "Восстановить" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 msgid "Recovered Successfully" msgstr "Восстановлено успешно" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "Восстановление" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "Код восстановления" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "Код восстановления:" @@ -1926,7 +2021,7 @@ msgstr "Регистрация не удалась" msgid "Register On Startup" msgstr "Статус регистрации" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 #, fuzzy msgid "Register passkey successfully" msgstr "Зарегистрировано успешно" @@ -1943,20 +2038,20 @@ msgstr "Регистрация пользователя" msgid "Registration Status" msgstr "Статус регистрации" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 msgid "Reinstall" msgstr "Переустановить" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "Что нового" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "Перегрузить" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "Перезагружается" @@ -1964,7 +2059,7 @@ msgstr "Перезагружается" msgid "Reloading nginx" msgstr "Перезагружается nginx" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "Удалить" @@ -1979,19 +2074,19 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "Продублированно %{conf_name} в %{node_name}" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 msgid "Remove successfully" msgstr "Удалено успешно" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 msgid "Removed successfully" msgstr "Успешно удалено" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 msgid "Rename" msgstr "Переименовать" @@ -2066,31 +2161,31 @@ msgstr "Успешно обновлено" msgid "Requested with wrong parameters" msgstr "Запрос с неправильными параметрами" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "Сброс" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 msgid "Reset 2FA" msgstr "Сброс 2FA" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "Перезапуск" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "Перезапускается" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "" @@ -2098,20 +2193,20 @@ msgstr "" msgid "Run Mode" msgstr "Режим работы" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "Выполняется" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2121,7 +2216,7 @@ msgstr "Сохранить" msgid "Save Directive" msgstr "Сохранить директиву" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2156,14 +2251,14 @@ msgstr "Продублированно %{conf_name} в %{node_name}" msgid "Save successfully" msgstr "Сохранено успешно" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "Успешно сохранено" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "" "Отсканируйте QR-код с помощью мобильного телефона, чтобы добавить учетную " @@ -2173,7 +2268,7 @@ msgstr "" msgid "SDK" msgstr "SDK" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "" @@ -2190,28 +2285,7 @@ msgstr "" msgid "Send" msgstr "Отправлено" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "Ошибка сервера" @@ -2227,6 +2301,15 @@ msgstr "server_name не нашел в директивах" msgid "server_name parameter is required" msgstr "server_name параметр обязателен" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +#, fuzzy +msgid "Session not found" +msgstr "Файл не найден" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2247,11 +2330,23 @@ msgstr "Настройка переменных сред" msgid "Setting HTTP01 challenge provider" msgstr "Настройка провайдера проверки HTTP01" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "Показать" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "" @@ -2263,10 +2358,20 @@ msgstr "Одиночная Директива" msgid "Site Categories" msgstr "" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "Авто Сертификат" + #: src/routes/index.ts:224 msgid "Site Logs" msgstr "Журналы сайта" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "Файл не найден" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2276,29 +2381,37 @@ msgstr "Каталог" msgid "Sites List" msgstr "Список сайтов" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Content" msgstr "Содержимое SSL-сертификата" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 msgid "SSL Certificate Key Content" msgstr "Содержимое ключа SSL-сертификата" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 msgid "SSL Certificate Key Path" msgstr "Путь к ключу SSL-сертификата" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 msgid "SSL Certificate Path" msgstr "Путь к SSL сертификату" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 msgid "SSO Login" msgstr "SSO Вход" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 msgid "Stable" msgstr "Стабильный" @@ -2309,7 +2422,7 @@ msgstr "Стабильный" msgid "Status" msgstr "Статус" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "Остановлен" @@ -2323,6 +2436,15 @@ msgstr "Хранилище" msgid "Streams Directory" msgstr "Каталог" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "Каталог" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "Успех" @@ -2348,7 +2470,7 @@ msgstr "Переключиться на темную тему" msgid "Switch to light theme" msgstr "Переключиться на светлую тему" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "Синхронизация" @@ -2411,7 +2533,7 @@ msgstr "Синхронизировать с" msgid "Sync strategy" msgstr "Синхронизировать сертификат" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "Синхронизировать с" @@ -2431,6 +2553,11 @@ msgstr "Первоначальный пользователь системы" msgid "Target" msgstr "Цель" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "Файл не найден" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "Терминал" @@ -2462,14 +2589,19 @@ msgstr "" "Имя модели должно содержать только буквы, юникод, цифры, дефисы, тире и " "точки." -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "Входные данные не являются SSL-сертификатом" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 msgid "The input is not a SSL Certificate Key" msgstr "Введенные данные не являются ключом SSL сертификата" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 #, fuzzy msgid "" @@ -2488,11 +2620,11 @@ msgstr "" "Имя модели должно содержать только буквы, юникод, цифры, дефисы, тире и " "точки." -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 msgid "The path exists, but the file is not a certificate" msgstr "Путь существует, но файл не является сертификатом" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "Путь существует, но файл не является приватным ключом" @@ -2505,7 +2637,7 @@ msgstr "" "Имя сервера должно содержать только буквы, юникод, цифры, дефисы, тире и " "точки." -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "" @@ -2544,17 +2676,17 @@ msgstr "URL недействителен." msgid "The username or password is incorrect" msgstr "Имя пользователя или пароль неверны" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "Этот элемент автосертификата недействителен, удалите его.." -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "Этот сертификат под управлением Nginx UI" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "Это поле обязательно для заполнения" @@ -2585,19 +2717,19 @@ msgstr "" msgid "This value is already taken" msgstr "" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" "Это обновит или переустановит интерфейс Nginx на %{nodeNames} до версии %" "{version}." -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "Советы" @@ -2606,7 +2738,7 @@ msgstr "Советы" msgid "Title" msgstr "Заголовок" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." @@ -2614,7 +2746,7 @@ msgstr "" "Чтобы включить это, вам нужно установить приложение Google или Microsoft " "Authenticator на свой мобильный телефон." -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2644,21 +2776,17 @@ msgstr "" msgid "Token is not valid" msgstr "Токен недействителен" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "Слишком много неудачных попыток входа, попробуйте позже" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" msgstr[1] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." @@ -2666,7 +2794,7 @@ msgstr "" "TOTP — это метод двухфакторной аутентификации, который использует алгоритм " "одноразового пароля на основе времени." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "Корзина" @@ -2680,14 +2808,14 @@ msgstr "Требуется двухфакторная аутентификаци msgid "Type" msgstr "Тип" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 #, fuzzy msgid "Update successfully" msgstr "Успешно обновлено" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2701,12 +2829,12 @@ msgstr "Обновлено в" msgid "Updated successfully" msgstr "Успешно обновлено" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "Обновление" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "Интерфейс Nginx на %{node} успешно обновлен 🎉" @@ -2714,7 +2842,7 @@ msgstr "Интерфейс Nginx на %{node} успешно обновлен msgid "Upgraded successfully" msgstr "Обновлено успешно" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "Обновление Nginx UI, подождите..." @@ -2730,11 +2858,11 @@ msgstr "Аптайм:" msgid "URL" msgstr "URL" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "Использовать OTP" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "Использовать код восстановления" @@ -2742,15 +2870,20 @@ msgstr "Использовать код восстановления" msgid "User" msgstr "Пользователь" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +#, fuzzy +msgid "User banned" msgstr "Пользователь заблокирован" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" +msgstr "" + +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "Имя пользователя" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "Имя пользователя (*)" @@ -2764,27 +2897,27 @@ msgstr "Действительный" msgid "Version" msgstr "Версия" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "Просмотр" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 msgid "View all notifications" msgstr "Просмотреть все уведомления" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 msgid "View Details" msgstr "Подробно" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "View Mode" msgstr "Простой режим" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "Внимание" @@ -2805,10 +2938,14 @@ msgstr "" "Мы удалим конфигурацию HTTPChallenge из этого файла и перезагрузим Nginx. Вы " "уверены, что хотите продолжить?" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2835,31 +2972,37 @@ msgstr "Запись закрытого ключа сертификата на msgid "Writing certificate to disk" msgstr "Запись сертификата на диск" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "Да" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "Вы используете последнюю версию" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "Вы можете проверить обновление Nginx UI на этой странице." -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "" -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "" +#~ msgid "Incorrect username or password" +#~ msgstr "Неверное имя пользователя или пароль" + +#~ msgid "Too many login failed attempts, please try again later" +#~ msgstr "Слишком много неудачных попыток входа, попробуйте позже" + #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" @@ -2867,9 +3010,6 @@ msgstr "" #~ "Переименование %{orig_path} в %{new_path} на %{env_name} не удалось, " #~ "пожалуйста, обновите удаленный интерфейс Nginx до последней версии" -#~ msgid "File not found" -#~ msgstr "Файл не найден" - #~ msgid "Server Name" #~ msgstr "Имя сервера" @@ -2880,9 +3020,6 @@ msgstr "" #~ msgid "Rename " #~ msgstr "Имя пользователя" -#~ msgid "Certificate has expired" -#~ msgstr "Срок действия сертификата истек" - #~ msgid "Certificate is valid" #~ msgstr "Сертификат действителен" @@ -2904,10 +3041,6 @@ msgstr "" #~ msgid "Table" #~ msgstr "Таблица" -#, fuzzy -#~ msgid "Auto Cert is enabled" -#~ msgstr "Авто Сертификат" - #, fuzzy #~ msgid "Auto Cert Log" #~ msgstr "Логирование авто-сертификата" diff --git a/app/src/language/tr_TR/app.po b/app/src/language/tr_TR/app.po index 0b958217b..32dd144fc 100644 --- a/app/src/language/tr_TR/app.po +++ b/app/src/language/tr_TR/app.po @@ -16,7 +16,7 @@ msgstr "" msgid "2FA" msgstr "İki aşamalı kimlik doğrulaması(2FA)" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "2FA Ayarları" @@ -46,23 +46,23 @@ msgstr "ACME Kullanıcısı" msgid "Action" msgstr "Eylem" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "Ekle" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "Geçiş anahtarı ekleme" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 msgid "Add Configuration" msgstr "Yapılandırma Ekle" @@ -79,11 +79,11 @@ msgstr "Konum ekle" msgid "Add Site" msgstr "Site Ekle" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 msgid "Add Stream" msgstr "Akış Ekle" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 msgid "Added successfully" msgstr "Başarıyla eklendi" @@ -96,13 +96,13 @@ msgstr "İlave bilgi" msgid "Advance Mode" msgstr "Gelişmiş Mod" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" "Daha sonra, bu sayfayı yenileyin ve tekrar geçiş anahtarı ekle'ye tıklayın." -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "" @@ -127,7 +127,7 @@ msgstr "API Token" msgid "API Type" msgstr "API Token" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -136,25 +136,25 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "Başarıyla kopyalandı" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "Mimari" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 msgid "Are you sure to delete this banned IP immediately?" msgstr "Bu yasaklı IP'yi hemen sileceğinizden emin misiniz?" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 msgid "Are you sure to delete this passkey immediately?" msgstr "Bu geçiş anahtarını hemen silmek istediğinizden emin misiniz?" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "Silmek istediğine emin misin?" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 msgid "Are you sure you want to clear all notifications?" msgstr "Tüm bildirimleri temizlemek istediğinizden emin misiniz?" @@ -162,20 +162,20 @@ msgstr "Tüm bildirimleri temizlemek istediğinizden emin misiniz?" msgid "Are you sure you want to clear the record of chat?" msgstr "Sohbet kaydını silmek istediğinizden emin misiniz?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 msgid "Are you sure you want to delete this item permanently?" msgstr "Bu öğeyi kalıcı olarak silmek istediğinizden emin misiniz?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 msgid "Are you sure you want to delete this item?" msgstr "Bu öğeyi silmek istediğinizden emin misiniz?" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "Silmek istediğine emin misin?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 msgid "Are you sure you want to recover this item?" msgstr "Bu öğeyi kurtarmak istediğinizden emin misiniz?" @@ -208,15 +208,15 @@ msgstr "Girişimler" msgid "Attempts" msgstr "Girişimler" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "Kimlik Doğrulama" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "Geçiş anahtarıyla kimlik doğrulama" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "Kimlik Doğrulama Ayarları" @@ -237,9 +237,9 @@ msgstr "Otomatik yenileme %{name} için devre dışı" msgid "Auto-renewal enabled for %{name}" msgstr "Otomatik yenileme %{name} için etkinleştirildi" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -249,15 +249,15 @@ msgstr "Geri" msgid "Back Home" msgstr "Ana Sayfaya Dön" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "Listeye geri dön" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "Yasaklama Eşiği Süresi (Dakika)" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "Yasaklı IP'ler" @@ -269,8 +269,8 @@ msgstr "Şu Zamana Kadar Yasaklı" msgid "Base information" msgstr "Temel bilgiler" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 msgid "Basic" @@ -281,24 +281,28 @@ msgstr "Temel" msgid "Basic Mode" msgstr "Temel Mod" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "Eylem" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 msgid "Batch Modify" msgstr "Toplu Değiştirme" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "Toplu Yükseltme" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "İle Oluşturuldu" @@ -311,15 +315,15 @@ msgstr "CA Dizini" msgid "CADir" msgstr "CADizini" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "Tarayamıyor musunuz? Metin anahtar bağlamasını kullanın" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -335,15 +339,29 @@ msgstr "İptal" msgid "Category" msgstr "" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 msgid "Cert" msgstr "" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "Senkronizasyon Sertifikası Hatası" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "Senkronizasyon Sertifikası Hatası" + #: src/views/preference/CertSettings.vue:24 msgid "Certificate Renewal Interval" msgstr "Sertifika Yenileme Aralığı" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 msgid "Certificate Status" msgid_plural "Certificates Status" @@ -374,15 +392,15 @@ msgid_plural "Changed Certificates" msgstr[0] "Değişen Sertifika" msgstr[1] "Değişen Sertifikalar" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "Changed Path" msgstr "Değişen Dosya Yolu" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "Kanal" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "Tekrar kontrol et" @@ -406,17 +424,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Ortam değişkenlerini temizleme" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "Temizle" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 msgid "Cleared successfully" msgstr "Başarıyla temizlendi" @@ -475,7 +497,7 @@ msgstr "Kopyalandı" msgid "Copy" msgstr "Kopya" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "Çekirdek Yükseltme" @@ -499,12 +521,12 @@ msgstr "Bir Başka Oluştur" msgid "Create File" msgstr "Dosya Oluştur" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 msgid "Create Folder" msgstr "Klasör Ekle" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "Oluşturulma Tarihi" @@ -525,15 +547,15 @@ msgstr "Kimlik bilgisi" msgid "Credentials" msgstr "Kimlik bilgileri" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "Mevcut hesap için TOTP etkinleştirildi." -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "Mevcut hesap için TOTP etkin değil." -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "Mevcut sürüm" @@ -549,12 +571,12 @@ msgid "" "indicator." msgstr "Ortam göstergesinde görüntülenecek yerel sunucu adını özelleştirin." -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "Kontrol Paneli" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "Veritabanı (İsteğe bağlı, varsayılan: database)" @@ -563,16 +585,16 @@ msgid "Days" msgstr "Günler" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "Sil" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "Kalıcı Olarak Sil" @@ -586,7 +608,7 @@ msgstr "Uzak Yapılandırmayı Yeniden Adlandır Hatası" msgid "Delete Remote Site Success" msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "Siteyi sil: %{site_name}" @@ -598,7 +620,7 @@ msgstr "Akışı sil: %{stream_name}" msgid "Deleted successfully" msgstr "Başarıyla silindi" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -622,6 +644,10 @@ msgstr "Başarıyla Dağıtıldı" msgid "Description" msgstr "Açıklama" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "Detaylar" @@ -634,6 +660,18 @@ msgstr "Geliştirme modu" msgid "Directive" msgstr "Talimat" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "Yönergeler" @@ -642,8 +680,8 @@ msgstr "Yönergeler" msgid "Directory" msgstr "Dizin" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 msgid "Disable" msgstr "Devre Dışı" @@ -685,7 +723,7 @@ msgid "Disabled" msgstr "Devre dışı" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -766,7 +804,7 @@ msgstr "Alan Adı" msgid "Domain Config Created Successfully" msgstr "Alan Adı Yapılandırması Başarıyla Oluşturuldu" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "Alan adları listesi boş, %{config} için Otomatik Sertifikayı yeniden açmayı " @@ -780,11 +818,11 @@ msgstr "En son sürümü indirme hatası" msgid "Downloading latest release" msgstr "En son sürüm indiriliyor" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "Deneme modu etkinleştirildi(Dry-run)" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." @@ -793,10 +831,10 @@ msgstr "" "çalışmadığınız sürece HTTPS olmayan web sitelerinde anahtarları " "kullanamazsınız." -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "Kopyala" @@ -827,7 +865,7 @@ msgstr "Düzenle %{n}" msgid "Edit %{n}" msgstr "Düzenle %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "Yapılandırmayı Düzenle" @@ -843,13 +881,13 @@ msgstr "Akışı Düzenle" msgid "Email" msgstr "E-posta" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "E-posta(*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 msgid "Enable" msgstr "Etkinleştir" @@ -865,7 +903,7 @@ msgstr "" "%{conf_name} yapılandırmasını %{node_name} düğümünde etkinleştirme başarılı " "oldu" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 msgid "Enable 2FA successfully" msgstr "2FA'yı başarıyla etkinleştirildi" @@ -909,7 +947,7 @@ msgstr "Başarıyla etkinleştirildi" msgid "Enable TLS" msgstr "TLS'yi Etkinleştir" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 msgid "Enable TOTP" msgstr "TOTP'yi Etkinleştir" @@ -927,7 +965,7 @@ msgid "Enabled" msgstr "Etkin" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -938,7 +976,7 @@ msgstr "Başarıyla etkinleştirildi" msgid "Encrypt website with Let's Encrypt" msgstr "Let's Encrypt ile web sitesini şifreleyin" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "Ortam" @@ -959,7 +997,7 @@ msgstr "Hata" msgid "Error Logs" msgstr "Hata Günlükleri" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "Yürütülebilir Dosya Yolu" @@ -972,7 +1010,7 @@ msgstr "Süresi Doldu" msgid "Expired At: %{date}" msgstr "Son kullanma tarihi: %{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "Dışa Aktar" @@ -980,15 +1018,20 @@ msgstr "Dışa Aktar" msgid "Fail to obtain certificate" msgstr "Sertifika alınamadı" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "Etkinleştirilemedi %{msg}" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "Devre dışı bırakılamadı %{msg}" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -998,6 +1041,14 @@ msgstr "Etkinleştirilemedi %{msg}" msgid "Failed to get certificate information" msgstr "Sertifika bilgileri alınamadı" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1015,6 +1066,10 @@ msgstr "Dosya zaten var" msgid "File Not Found" msgstr "Dosya Bulunamadı" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "Filtre" @@ -1023,7 +1078,7 @@ msgstr "Filtre" msgid "Finished" msgstr "Bitmiş" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1040,15 +1095,15 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "Çinli kullanıcılar için: https://mirror.ghproxy.com/" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "Kodu Biçimlendir" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 msgid "Format error %{msg}" msgstr "Biçimlendirme hatası %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 msgid "Format successfully" msgstr "Başarıyla biçimlendirildi" @@ -1064,7 +1119,7 @@ msgstr "Oluştur" msgid "Generating private key for registering account" msgstr "Hesap kaydı için özel anahtar oluşturuluyor" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 msgid "Get release information error" msgstr "Sürüm bilgilerini alma hatası" @@ -1108,7 +1163,7 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "Boş bırakılırsa, varsayılan CA Dir kullanılır." -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." @@ -1117,7 +1172,7 @@ msgstr "" "yasaklama eşiği dakikaları içinde maksimum deneme sayısına ulaşırsa, IP " "adresi belirli bir süre için yasaklanacaktır." -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." @@ -1125,7 +1180,7 @@ msgstr "" "Cep telefonunuzu kaybederseniz, 2FA'nızı sıfırlamak için kurtarma kodunu " "kullanabilirsiniz." -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" "Tarayıcınız WebAuthn Passkey'i destekliyorsa, bir iletişim kutusu " @@ -1143,14 +1198,10 @@ msgstr "" msgid "Import" msgstr "İçe Aktar" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "Sertifika İçe Aktar" -#: src/views/other/Login.vue:78 -msgid "Incorrect username or password" -msgstr "Kullanıcı adı veya şifre yanlış" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1164,16 +1215,16 @@ msgstr "İlk çekirdek yükseltici hatası" msgid "Initialing core upgrader" msgstr "Çekirdek yükseltici başlatılıyor" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "Uygulamadan kodu girin:" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "Kurtarma kodunu girin:" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "Yükle" @@ -1189,23 +1240,29 @@ msgstr "Aralık" msgid "Invalid" msgstr "Geçersiz" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "Geçersiz 2FA veya kurtarma kodu" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 msgid "Invalid filename" msgstr "Geçersiz dosya adı" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "Geçersiz klasör adı" +#: src/constants/errors/user.ts:4 +#, fuzzy +msgid "Invalid otp code" +msgstr "Geçersiz 2FA veya kurtarma kodu" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "Geçersiz parola veya kurtarma kodu" +#: src/constants/errors/user.ts:5 +#, fuzzy +msgid "Invalid recovery code" +msgstr "Geçersiz 2FA veya kurtarma kodu" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "IP" @@ -1235,11 +1292,11 @@ msgstr "Jwt Secret" msgid "Key Type" msgstr "Anahtar Türü" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "En son şu tarihte kontrol edildi" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 msgid "Last used at" msgstr "En son kullanıldığı zaman" @@ -1251,7 +1308,7 @@ msgstr "Değişiklik olmaması için boş bırakın" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Varsayılan için boş bırakın: https://api.openai.com/" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 #, fuzzy msgid "Leave blank if do not want to modify" msgstr "Buna ihtiyacınız yoksa boş bırakın." @@ -1260,8 +1317,8 @@ msgstr "Buna ihtiyacınız yoksa boş bırakın." msgid "Leave blank if you don't need this." msgstr "Buna ihtiyacınız yoksa boş bırakın." -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 msgid "Leave blank will not change anything" msgstr "Boş bırakmak hiçbir şeyi değiştirmeyecektir" @@ -1278,7 +1335,7 @@ msgstr "Lisans" msgid "Link Start" msgstr "Bağlantı Başlat" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "Liste" @@ -1286,7 +1343,7 @@ msgstr "Liste" msgid "Load Average:" msgstr "Yük Ortalaması:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "Ayarlar'dan yükle" @@ -1307,15 +1364,15 @@ msgstr "Konum" msgid "Locations" msgstr "Konumlar" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 msgid "Log" msgstr "Günlük" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "Giriş" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "Giriş Başarılı" @@ -1323,7 +1380,7 @@ msgstr "Giriş Başarılı" msgid "Logout successful" msgstr "Çıkış başarılı" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "Logrotate" @@ -1353,17 +1410,17 @@ msgstr "" "ters proxy yapılandırdığınızdan emin olun." #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 #, fuzzy msgid "Manage Configs" msgstr "Yapılandırmaları Yönet" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 #, fuzzy msgid "Manage Sites" msgstr "Siteleri Yönet" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 #, fuzzy msgid "Manage Streams" msgstr "Akışları Yönet" @@ -1378,7 +1435,7 @@ msgstr "Kullanıcıları Yönet" msgid "Managed Certificate" msgstr "Yönetilen Sertifika" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 #, fuzzy msgid "Max Attempts" msgstr "Maksimum Deneme" @@ -1405,14 +1462,14 @@ msgid "Model" msgstr "Model" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 #, fuzzy msgid "Modify" msgstr "Değiştir" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "Sertifika Değiştirme" @@ -1422,7 +1479,7 @@ msgstr "Sertifika Değiştirme" msgid "Modify Config" msgstr "Yapılandırmayı Değiştir" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "Modify Mode" msgstr "Mod Değiştir" @@ -1433,20 +1490,20 @@ msgid "Multi-line Directive" msgstr "Çok Hatlı Direktif" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 #, fuzzy msgid "Name" msgstr "İsim" @@ -1471,17 +1528,17 @@ msgstr "Ağ Toplam Alım" msgid "Network Total Send" msgstr "Ağ Toplam Gönderme" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 #, fuzzy msgid "New name" msgstr "Yeni Ad" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "New Path" msgstr "Yeni Yol" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 #, fuzzy msgid "New version released" msgstr "Yeni sürüm yayınlandı" @@ -1493,7 +1550,7 @@ msgstr "Yeni sürüm yayınlandı" msgid "Next" msgstr "Sonraki" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 #, fuzzy msgid "Nginx" msgstr "Nginx" @@ -1511,6 +1568,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 #, fuzzy @@ -1522,7 +1595,7 @@ msgstr "Nginx Yapılandırma Ayrıştırma Hatası" msgid "Nginx Configurations Directory" msgstr "Nginx Yapılandırma Ayrıştırma Hatası" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 #, fuzzy msgid "Nginx Control" msgstr "Nginx Kontrolü" @@ -1565,25 +1638,25 @@ msgstr "Nginx başarıyla yeniden yüklendi" msgid "Nginx Restart Command" msgstr "Terminal Başlatma Komutu" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 #, fuzzy msgid "Nginx restarted successfully" msgstr "Nginx başarıyla yeniden başlatıldı" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 #, fuzzy msgid "No" msgstr "Hayır" @@ -1625,12 +1698,12 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 #, fuzzy msgid "Notification" msgstr "Bildirim" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 #, fuzzy msgid "Notifications" msgstr "Bildirimler" @@ -1666,28 +1739,28 @@ msgstr "" msgid "Offline" msgstr "Çevrimdışı" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 #, fuzzy msgid "Ok" msgstr "Tamam" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 #, fuzzy msgid "OK" msgstr "Tamam" @@ -1705,22 +1778,22 @@ msgstr "Doğrulama tamamlandıktan sonra kayıtlar kaldırılacaktır." msgid "Online" msgstr "Çevrimiçi" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 #, fuzzy msgid "OpenAI" msgstr "OpenAI" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 #, fuzzy msgid "Or" msgstr "Veya" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 #, fuzzy msgid "Original name" msgstr "Gerçek Adı" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 #, fuzzy msgid "OS" msgstr "OS" @@ -1730,13 +1803,18 @@ msgstr "OS" msgid "OS:" msgstr "İŞLETIM SISTEMI:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +#, fuzzy +msgid "Otp or recovery code empty" +msgstr "Kurtarma kodunu kullanın" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 #, fuzzy msgid "Overwrite" msgstr "Üzerine yaz" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 #, fuzzy msgid "Overwrite exist file" @@ -1747,12 +1825,12 @@ msgstr "Mevcut dosyanın üzerine yaz" msgid "Params" msgstr "Parametreler" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 #, fuzzy msgid "Passkey" msgstr "Passkey" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 #, fuzzy msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " @@ -1763,28 +1841,41 @@ msgstr "" "kimliğinizi doğrulayan webauthn kimlik bilgileridir. Parola yerine veya 2FA " "yöntemi olarak kullanılabilirler." -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 #, fuzzy msgid "Password" msgstr "Şifre" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 #, fuzzy msgid "Password (*)" msgstr "Şifre (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "Kullanıcı adı veya şifre yanlış" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 #, fuzzy msgid "Path" msgstr "Yol" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 #, fuzzy msgid "Perform" msgstr "Uygula" @@ -1799,7 +1890,11 @@ msgstr "Çekirdek yükseltme hatası gerçekleştirin" msgid "Performing core upgrade" msgstr "Çekirdek yükseltme gerçekleştirme" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 #, fuzzy msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -1808,7 +1903,7 @@ msgstr "" "Lütfen oluşturmak istediğiniz geçiş anahtarı için bir ad girin ve aşağıdaki " "Tamam düğmesine tıklayın." -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 #, fuzzy msgid "Please enter the OTP code:" msgstr "Lütfen OTP kodunu girin:" @@ -1822,7 +1917,7 @@ msgstr "" "Lütfen DNS sağlayıcınız tarafından sağlanan API kimlik doğrulama bilgilerini " "doldurun." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 #, fuzzy msgid "Please fill in the required fields" msgstr "Lütfen zorunlu alanları doldurup tekrar deneyiniz" @@ -1837,13 +1932,13 @@ msgstr "" "ekleyin ve ardından DNS sağlayıcısının API'sini istemek için aşağıdaki " "kimlik bilgilerinden birini seçin." -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 #, fuzzy msgid "Please input a filename" msgstr "Lütfen bir dosya adı girin" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 #, fuzzy msgid "Please input a folder name" msgstr "Lütfen bir klasör adı girin" @@ -1887,7 +1982,7 @@ msgstr "" "Lütfen aşağıdaki zaman birimi konfigürasyonlarının tümünün saniye cinsinden " "olduğunu unutmayın." -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 #, fuzzy msgid "Please select at least one node to upgrade" msgstr "Lütfen yükseltmek için en az bir düğüm seçin" @@ -1910,14 +2005,14 @@ msgstr "" "0] yapılandırmasını %{env_name} ile eşitleme başarısız oldu, lütfen uzak " "Nginx kullanıcı arayüzünü en son sürüme yükseltin" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 #, fuzzy msgid "Pre-release" msgstr "Ön sürüm" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 #, fuzzy msgid "Preference" msgstr "Tercih" @@ -1973,28 +2068,28 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 #, fuzzy msgid "Recover" msgstr "Kurtar" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 #, fuzzy msgid "Recovered Successfully" msgstr "Başarıyla Kurtarıldı" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 #, fuzzy msgid "Recovery" msgstr "Kurtarma" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 #, fuzzy msgid "Recovery Code" msgstr "Kurtarma Kodu" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 #, fuzzy msgid "Recovery Code:" msgstr "Kurtarma Kodu:" @@ -2033,7 +2128,7 @@ msgstr "Kayıt başarısız" msgid "Register On Startup" msgstr "Başlangıçta Kaydolun" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 #, fuzzy msgid "Register passkey successfully" msgstr "Geçiş anahtarını başarıyla kaydet" @@ -2053,23 +2148,23 @@ msgstr "Kullanıcı kaydetme" msgid "Registration Status" msgstr "Kayıt durumu" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 #, fuzzy msgid "Reinstall" msgstr "Tekrar Yükle" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 #, fuzzy msgid "Release Note" msgstr "Yayın Notu" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 #, fuzzy msgid "Reload" msgstr "Tekrar yükle" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 #, fuzzy msgid "Reloading" msgstr "Yeniden Yükleme" @@ -2079,7 +2174,7 @@ msgstr "Yeniden Yükleme" msgid "Reloading nginx" msgstr "Nginx'i yeniden yükleme" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 #, fuzzy msgid "Remove" msgstr "Kaldır" @@ -2095,21 +2190,21 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "%{conf_name} başarıyla %{node_name} düğümüne kopyalandı" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 #, fuzzy msgid "Remove successfully" msgstr "Başarıyla kaldırıldı" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 #, fuzzy msgid "Removed successfully" msgstr "Başarıyla kaldırıldı" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 #, fuzzy msgid "Rename" msgstr "Yeniden Adlandır" @@ -2198,35 +2293,35 @@ msgstr "Başarıyla yenileyin" msgid "Requested with wrong parameters" msgstr "Yanlış parametrelerle talep edildi" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 #, fuzzy msgid "Reset" msgstr "Sıfırla" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 #, fuzzy msgid "Reset 2FA" msgstr "2FA'yı Sıfırla" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 #, fuzzy msgid "Restart" msgstr "Yeniden başlat" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 #, fuzzy msgid "Restarting" msgstr "Yeniden Başlatma" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "" @@ -2235,21 +2330,21 @@ msgstr "" msgid "Run Mode" msgstr "Çalışma Modu" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 #, fuzzy msgid "Running" msgstr "Çalışıyor" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 #, fuzzy @@ -2261,7 +2356,7 @@ msgstr "Kaydet" msgid "Save Directive" msgstr "Direktifi Kaydet" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 #, fuzzy @@ -2298,7 +2393,7 @@ msgstr "%{conf_name} başarıyla %{node_name} düğümüne kopyalandı" msgid "Save successfully" msgstr "Başarıyla kaydedin" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 @@ -2306,7 +2401,7 @@ msgstr "Başarıyla kaydedin" msgid "Saved successfully" msgstr "Başarıyla Kaydedildi" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 #, fuzzy msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "Hesabı uygulamaya eklemek için QR kodunu cep telefonunuzla tarayın." @@ -2316,7 +2411,7 @@ msgstr "Hesabı uygulamaya eklemek için QR kodunu cep telefonunuzla tarayın." msgid "SDK" msgstr "SDK" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 #, fuzzy msgid "Secret has been copied" msgstr "Sır kopyalandı" @@ -2336,28 +2431,7 @@ msgstr "" msgid "Send" msgstr "Gönder" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 #, fuzzy msgid "Server error" msgstr "Server hatası" @@ -2377,6 +2451,15 @@ msgstr "server_name yönergelerde bulunamadı" msgid "server_name parameter is required" msgstr "server_name parametresi gereklidir" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +#, fuzzy +msgid "Session not found" +msgstr "Dosya bulunamadı" + #: src/views/preference/CertSettings.vue:33 #, fuzzy msgid "" @@ -2401,12 +2484,24 @@ msgstr "Ortam değişkenlerini ayarlama" msgid "Setting HTTP01 challenge provider" msgstr "HTTP01 meydan okuma sağlayıcısını ayarlama" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 #, fuzzy msgid "Show" msgstr "Göster" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 #, fuzzy msgid "Sign in with a passkey" msgstr "Bir geçiş anahtarı ile oturum açın" @@ -2420,11 +2515,21 @@ msgstr "Tek Direktif" msgid "Site Categories" msgstr "" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "Devre dışı" + #: src/routes/index.ts:224 #, fuzzy msgid "Site Logs" msgstr "Site Günlükleri" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "Dosya bulunamadı" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2435,34 +2540,42 @@ msgstr "Dizin" msgid "Sites List" msgstr "Site Listesi" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 #, fuzzy msgid "SSL Certificate Content" msgstr "SSL Sertifika İçeriği" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 #, fuzzy msgid "SSL Certificate Key Content" msgstr "SSL Sertifika Anahtarı İçeriği" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 #, fuzzy msgid "SSL Certificate Key Path" msgstr "SSL Sertifikası Anahtar Yolu" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 #, fuzzy msgid "SSL Certificate Path" msgstr "SSL Sertifika Yolu" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 #, fuzzy msgid "SSO Login" msgstr "SSO Girişi" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 #, fuzzy msgid "Stable" msgstr "Stabil" @@ -2475,7 +2588,7 @@ msgstr "Stabil" msgid "Status" msgstr "Durum" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 #, fuzzy msgid "Stopped" msgstr "Durduruldu" @@ -2491,6 +2604,15 @@ msgstr "Depolama" msgid "Streams Directory" msgstr "Dizin" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "Dizin" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 #, fuzzy msgid "Success" @@ -2520,7 +2642,7 @@ msgstr "Koyu temaya geçme" msgid "Switch to light theme" msgstr "Işık temasına geçin" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 #, fuzzy msgid "Sync" msgstr "Eşitle" @@ -2594,7 +2716,7 @@ msgstr "Şununla senkronize et" msgid "Sync strategy" msgstr "Senkronizasyon Sertifikası" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 #, fuzzy msgid "Sync to" msgstr "Şununla senkronize et" @@ -2618,6 +2740,11 @@ msgstr "Sistem İlk Kullanıcısı" msgid "Target" msgstr "Hedef" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "Dosya bulunamadı" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 #, fuzzy msgid "Terminal" @@ -2652,16 +2779,21 @@ msgid "" msgstr "" "Model adı yalnızca harf, unicode, sayı, tire, çizgi ve nokta içermelidir." -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 #, fuzzy msgid "The input is not a SSL Certificate" msgstr "Giriş bir SSL Sertifikası değil" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "Girdi bir SSL Sertifika Anahtarı değil" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 #, fuzzy msgid "" @@ -2678,12 +2810,12 @@ msgid "" msgstr "" "Model adı yalnızca harf, unicode, sayı, tire, çizgi ve nokta içermelidir." -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "Yol var, ancak dosya bir sertifika değil" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 #, fuzzy msgid "The path exists, but the file is not a private key" msgstr "Yol var, ancak dosya bir özel anahtar değil" @@ -2697,7 +2829,7 @@ msgstr "" "Sunucu adı yalnızca harf, unicode, sayı, kısa çizgi, tire ve nokta " "içermelidir." -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 #, fuzzy msgid "" "The recovery code is only displayed once, please save it in a safe place." @@ -2742,19 +2874,19 @@ msgstr "URL geçersiz." msgid "The username or password is incorrect" msgstr "Kullanıcı adı veya şifre yanlış" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 #, fuzzy msgid "This Auto Cert item is invalid, please remove it." msgstr "Bu Otomatik Sertifika öğesi geçersizdir, lütfen kaldırın." -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 #, fuzzy msgid "This certificate is managed by Nginx UI" msgstr "Bu sertifika Nginx UI tarafından yönetilir" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 #, fuzzy msgid "This field is required" msgstr "Bu alan gereklidir" @@ -2786,7 +2918,7 @@ msgstr "" msgid "This value is already taken" msgstr "" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 #, fuzzy msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." @@ -2794,12 +2926,12 @@ msgstr "" "Bu, %{nodeNames} üzerindeki Nginx kullanıcı arayüzünü %{version}'e " "yükseltecek veya yeniden yükleyecektir." -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 #, fuzzy msgid "Tips" @@ -2810,7 +2942,7 @@ msgstr "İpuçları" msgid "Title" msgstr "Başlık" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 #, fuzzy msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " @@ -2819,7 +2951,7 @@ msgstr "" "Bunu etkinleştirmek için cep telefonunuza Google veya Microsoft " "Authenticator uygulamasını yüklemeniz gerekir." -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 #, fuzzy msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " @@ -2859,25 +2991,18 @@ msgstr "" msgid "Token is not valid" msgstr "Belirteç geçerli değil" -#: src/views/other/Login.vue:81 -#, fuzzy -msgid "Too many login failed attempts, please try again later" -msgstr "" -"Çok fazla oturum açma denemesi başarısız oldu, lütfen daha sonra tekrar " -"deneyin" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" msgstr[1] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 #, fuzzy msgid "TOTP" msgstr "TOTP" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 #, fuzzy msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " @@ -2886,7 +3011,7 @@ msgstr "" "TOTP, zamana dayalı tek seferlik parola algoritması kullanan iki faktörlü " "bir kimlik doğrulama yöntemidir." -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 #, fuzzy msgid "Trash" msgstr "Çöp" @@ -2903,14 +3028,14 @@ msgstr "İki faktörlü kimlik doğrulama gerekiyor" msgid "Type" msgstr "Tip" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 #, fuzzy msgid "Update successfully" msgstr "Güncellendi" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2926,13 +3051,13 @@ msgstr "Güncelleme" msgid "Updated successfully" msgstr "Başarıyla güncellendi" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 #, fuzzy msgid "Upgrade" msgstr "Yükselt" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 #, fuzzy msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "Nginx kullanıcı arayüzü %{node} üzerinde başarıyla yükseltildi 🎉" @@ -2942,7 +3067,7 @@ msgstr "Nginx kullanıcı arayüzü %{node} üzerinde başarıyla yükseltildi msgid "Upgraded successfully" msgstr "Başarıyla yükseltildi" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 #, fuzzy msgid "Upgrading Nginx UI, please wait..." msgstr "Nginx kullanıcı arayüzü yükseltiliyor, lütfen bekleyin..." @@ -2962,12 +3087,12 @@ msgstr "Çalışma süresi:" msgid "URL" msgstr "URL" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 #, fuzzy msgid "Use OTP" msgstr "OTP kullanın" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 #, fuzzy msgid "Use recovery code" msgstr "Kurtarma kodunu kullanın" @@ -2977,17 +3102,21 @@ msgstr "Kurtarma kodunu kullanın" msgid "User" msgstr "Kullanıcı" -#: src/views/other/Login.vue:84 +#: src/constants/errors/user.ts:3 #, fuzzy -msgid "User is banned" +msgid "User banned" msgstr "Kullanıcı yasaklandı" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" +msgstr "" + +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 #, fuzzy msgid "Username" msgstr "Kullanıcı Adı" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 #, fuzzy msgid "Username (*)" msgstr "Kullanıcı adı (*)" @@ -3004,30 +3133,30 @@ msgstr "Geçerli" msgid "Version" msgstr "Versiyon" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 #, fuzzy msgid "View" msgstr "Görünüm" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 #, fuzzy msgid "View all notifications" msgstr "Tüm bildirimleri görüntüle" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 #, fuzzy msgid "View Details" msgstr "Detayları göster" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "View Mode" msgstr "Görünüm Modu" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 #, fuzzy msgid "Warning" @@ -3051,10 +3180,14 @@ msgstr "" "HTTPChallenge yapılandırmasını bu dosyadan kaldıracağız ve Nginx'i yeniden " "yükleyeceğiz. Devam etmek istediğinizden emin misiniz?" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 #, fuzzy msgid "" @@ -3088,7 +3221,7 @@ msgstr "Sertifika özel anahtarını diske yazma" msgid "Writing certificate to disk" msgstr "Sertifikayı diske yazma" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 @@ -3096,17 +3229,17 @@ msgstr "Sertifikayı diske yazma" msgid "Yes" msgstr "Evet" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 #, fuzzy msgid "You are using the latest version" msgstr "En son sürümü kullanıyorsunuz" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 #, fuzzy msgid "You can check Nginx UI upgrade at this page." msgstr "Nginx UI yükseltmesini bu sayfadan kontrol edebilirsiniz." -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 #, fuzzy msgid "" "You have not configured the settings of Webauthn, so you cannot add a " @@ -3115,11 +3248,20 @@ msgstr "" "Webauthn ayarlarını yapılandırmadınız, bu nedenle bir geçiş anahtarı " "ekleyemezsiniz." -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 #, fuzzy msgid "Your passkeys" msgstr "Geçiş anahtarlarınız" +#~ msgid "Incorrect username or password" +#~ msgstr "Kullanıcı adı veya şifre yanlış" + +#, fuzzy +#~ msgid "Too many login failed attempts, please try again later" +#~ msgstr "" +#~ "Çok fazla oturum açma denemesi başarısız oldu, lütfen daha sonra tekrar " +#~ "deneyin" + #, fuzzy #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " @@ -3129,9 +3271,6 @@ msgstr "Geçiş anahtarlarınız" #~ "başarısız oldu, lütfen uzak Nginx kullanıcı arayüzünü en son sürüme " #~ "yükseltin" -#~ msgid "File not found" -#~ msgstr "Dosya bulunamadı" - #, fuzzy #~ msgid "Server Name" #~ msgstr "Sunucu Adı" diff --git a/app/src/language/vi_VN/app.po b/app/src/language/vi_VN/app.po index 8879f902c..f2f4d9911 100644 --- a/app/src/language/vi_VN/app.po +++ b/app/src/language/vi_VN/app.po @@ -13,7 +13,7 @@ msgstr "" msgid "2FA" msgstr "" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "" @@ -44,23 +44,23 @@ msgstr "Người dùng" msgid "Action" msgstr "Hành động" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "Thêm" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 #, fuzzy msgid "Add Configuration" msgstr "Sửa cấu hình" @@ -78,12 +78,12 @@ msgstr "Thêm Location" msgid "Add Site" msgstr "Thêm Website" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 #, fuzzy msgid "Add Stream" msgstr "Thêm Website" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 #, fuzzy msgid "Added successfully" msgstr "Cập nhật thành công" @@ -98,12 +98,12 @@ msgstr "Tùy chọn bổ sung" msgid "Advance Mode" msgstr "Nâng cao" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "" @@ -128,7 +128,7 @@ msgstr "" msgid "API Type" msgstr "Loại" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -137,27 +137,27 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "Nhân bản thành công" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 #, fuzzy msgid "Are you sure to delete this banned IP immediately?" msgstr "Bạn chắc chắn muốn xóa nó " -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 #, fuzzy msgid "Are you sure to delete this passkey immediately?" msgstr "Bạn chắc chắn muốn xóa nó " -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "Bạn chắc chắn muốn xóa nó " -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 #, fuzzy msgid "Are you sure you want to clear all notifications?" msgstr "Bạn có chắc chắn muốn xóa tất cả thông báo không ?" @@ -167,23 +167,23 @@ msgstr "Bạn có chắc chắn muốn xóa tất cả thông báo không ?" msgid "Are you sure you want to clear the record of chat?" msgstr "Bạn có chắc chắn muốn xóa lịch sử trò chuyện không ?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 #, fuzzy msgid "Are you sure you want to delete this item permanently?" msgstr "Bạn chắc chắn muốn xóa nó " -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "Bạn chắc chắn muốn xóa nó " -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 #, fuzzy msgid "Are you sure you want to delete?" msgstr "Bạn chắc chắn muốn xóa nó " -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "Bạn chắc chắn muốn xoá directive này ?" @@ -218,16 +218,16 @@ msgstr "" msgid "Attempts" msgstr "" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 #, fuzzy msgid "Auth" msgstr "Tác giả" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "" @@ -248,9 +248,9 @@ msgstr "Đã tắt tự động gia hạn SSL cho %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Đã bật tự động gia hạn SSL cho %{name}" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -261,15 +261,15 @@ msgstr "Quay lại" msgid "Back Home" msgstr "Quay lại" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "" @@ -281,8 +281,8 @@ msgstr "" msgid "Base information" msgstr "Thông tin" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 #, fuzzy @@ -294,26 +294,30 @@ msgstr "Cơ bản" msgid "Basic Mode" msgstr "Cơ bản" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "Hành động" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 #, fuzzy msgid "Batch Modify" msgstr "Sửa đổi cấu hình" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 #, fuzzy msgid "Batch Upgrade" msgstr "Cập nhật" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "Xây dựng với" @@ -326,15 +330,15 @@ msgstr "" msgid "CADir" msgstr "" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -350,17 +354,31 @@ msgstr "Huỷ" msgid "Category" msgstr "" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 #, fuzzy msgid "Cert" msgstr "Tự động ký chứng chỉ SSL" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "Gia hạn chứng chỉ SSL thất bại" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "Chứng chỉ đã hết hạn" + #: src/views/preference/CertSettings.vue:24 #, fuzzy msgid "Certificate Renewal Interval" msgstr "Chứng chỉ SSL hợp lệ" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 #, fuzzy msgid "Certificate Status" @@ -396,16 +414,16 @@ msgid_plural "Changed Certificates" msgstr[0] "Thay đổi chứng chỉ" msgstr[1] "Thay đổi chứng chỉ" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "Changed Path" msgstr "Thay đổi chứng chỉ" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "Kênh" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "Kiểm tra lại" @@ -429,17 +447,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Xoá các biến môi trường" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "Xoá" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 #, fuzzy msgid "Cleared successfully" @@ -501,7 +523,7 @@ msgstr "" msgid "Copy" msgstr "" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "Cập nhật core" @@ -527,13 +549,13 @@ msgstr "Tạo thêm" msgid "Create File" msgstr "Ngày tạo" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 #, fuzzy msgid "Create Folder" msgstr "Tạo thêm" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "Ngày tạo" @@ -555,15 +577,15 @@ msgstr "Chứng chỉ" msgid "Credentials" msgstr "Chứng chỉ" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "" -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "" -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "Phiên bản hiện tại" @@ -578,12 +600,12 @@ msgid "" "indicator." msgstr "" -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "Bảng điều khiển" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "Tên cơ sở dữ liệu (Tuỳ chọn, Mặc định là: database)" @@ -592,16 +614,16 @@ msgid "Days" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "Xoá" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "" @@ -615,7 +637,7 @@ msgstr "Gia hạn chứng chỉ SSL thất bại" msgid "Delete Remote Site Success" msgstr "Gia hạn chứng chỉ SSL thành công" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "Xoá trang web: %{site_name}" @@ -629,7 +651,7 @@ msgstr "Xoá trang web: %{site_name}" msgid "Deleted successfully" msgstr "Đã xoá thành công" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -653,6 +675,10 @@ msgstr "Triển khai thành công" msgid "Description" msgstr "Mô tả" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "Chi tiết" @@ -665,6 +691,18 @@ msgstr "Chế độ phát triển" msgid "Directive" msgstr "Directive" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "Directives" @@ -674,8 +712,8 @@ msgstr "Directives" msgid "Directory" msgstr "Thư mục" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 #, fuzzy msgid "Disable" msgstr "Tắt" @@ -714,7 +752,7 @@ msgid "Disabled" msgstr "Đã tắt" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -803,7 +841,7 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "Tên miền đã được tạo" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "Danh sách tên miền rỗng, hãy thử mở lại chức năng Tạo chứng chỉ tự động cho %" @@ -817,20 +855,20 @@ msgstr "Đã có lỗi xảy ra khi tải về phiên bản mới nhất" msgid "Downloading latest release" msgstr "Đang tải phiên bản mới nhất" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "Đã bật chế độ Dry run" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "Nhân bản" @@ -865,7 +903,7 @@ msgstr "Sửa %{n}" msgid "Edit %{n}" msgstr "Sửa %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "Sửa cấu hình" @@ -883,13 +921,13 @@ msgstr "Sửa trang web" msgid "Email" msgstr "Email (*)" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "Email (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 #, fuzzy msgid "Enable" msgstr "Đã bật" @@ -902,7 +940,7 @@ msgstr "Không thể bật %{conf_name} trên %{node_name}" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "Đã bật %{conf_name} trên %{node_name}" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 #, fuzzy msgid "Enable 2FA successfully" msgstr "Đã bật" @@ -944,7 +982,7 @@ msgstr "Đã bật" msgid "Enable TLS" msgstr "Bật TLS" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 #, fuzzy msgid "Enable TOTP" msgstr "Bật TLS" @@ -963,7 +1001,7 @@ msgid "Enabled" msgstr "Đã bật" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -974,7 +1012,7 @@ msgstr "Đã bật" msgid "Encrypt website with Let's Encrypt" msgstr "Bảo mật trang web với Let's Encrypt" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "Environment" @@ -997,7 +1035,7 @@ msgstr "Lỗi" msgid "Error Logs" msgstr "Log lỗi" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "Đường dẫn thực thi" @@ -1011,7 +1049,7 @@ msgstr "Đã hết hạn" msgid "Expired At: %{date}" msgstr "Ngày hết hạn: %{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "Xuất" @@ -1020,15 +1058,20 @@ msgstr "Xuất" msgid "Fail to obtain certificate" msgstr "Nhận chứng chỉ" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "Không thể bật %{msg}" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "Không thể tắt %{msg}" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -1038,6 +1081,14 @@ msgstr "Không thể bật %{msg}" msgid "Failed to get certificate information" msgstr "Không thể truy xuất thông tin chứng chỉ" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1055,6 +1106,10 @@ msgstr "Tệp tin đã tồn tại" msgid "File Not Found" msgstr "Không tìm thấy tệp tin" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "Lọc" @@ -1063,7 +1118,7 @@ msgstr "Lọc" msgid "Finished" msgstr "Đã hoàn thành" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1079,16 +1134,16 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "Người dùng Trung Quốc: https://mirror.ghproxy.com/" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "Định dạng code" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 #, fuzzy msgid "Format error %{msg}" msgstr "Lưu lỗi %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 #, fuzzy msgid "Format successfully" msgstr "Định dạng thành công" @@ -1106,7 +1161,7 @@ msgstr "Tạo" msgid "Generating private key for registering account" msgstr "Tạo khóa riêng để đăng ký tài khoản" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 #, fuzzy msgid "Get release information error" msgstr "Nhận lỗi thông tin phát hành" @@ -1151,19 +1206,19 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." msgstr "" -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." msgstr "" -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" @@ -1178,16 +1233,11 @@ msgstr "" msgid "Import" msgstr "Xuất" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "Chứng chỉ" -#: src/views/other/Login.vue:78 -#, fuzzy -msgid "Incorrect username or password" -msgstr "Tên người dùng hoặc mật khẩu không chính xác" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1201,16 +1251,16 @@ msgstr "Không thể khởi tạo trình nâng cấp" msgid "Initialing core upgrader" msgstr "Đang khởi tạo trình nâng cấp" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "Cài đặt" @@ -1228,24 +1278,29 @@ msgstr "" msgid "Invalid" msgstr "Hợp lệ" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 #, fuzzy msgid "Invalid filename" msgstr "E-mail không chính xác!" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "" +#: src/constants/errors/user.ts:4 +#, fuzzy +msgid "Invalid otp code" +msgstr "Hợp lệ" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "" +#: src/constants/errors/user.ts:5 +msgid "Invalid recovery code" +msgstr "" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "" @@ -1279,11 +1334,11 @@ msgstr "" msgid "Key Type" msgstr "Loại" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "Kiểm tra lần cuối lúc" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 #, fuzzy msgid "Last used at" msgstr "Kiểm tra lần cuối lúc" @@ -1296,7 +1351,7 @@ msgstr "Bỏ trống nếu không thay đổi" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Bỏ trống để sử dụng địa chỉ mặc định: https://api.openai.com/" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 #, fuzzy msgid "Leave blank if do not want to modify" msgstr "Bỏ trống nếu không thay đổi" @@ -1306,8 +1361,8 @@ msgstr "Bỏ trống nếu không thay đổi" msgid "Leave blank if you don't need this." msgstr "Bỏ trống nếu không thay đổi" -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 #, fuzzy msgid "Leave blank will not change anything" msgstr "Bỏ trống nếu không thay đổi" @@ -1326,7 +1381,7 @@ msgstr "Giấy phép" msgid "Link Start" msgstr "Liên kết bắt đầu" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "" @@ -1335,7 +1390,7 @@ msgstr "" msgid "Load Average:" msgstr "Tải trung bình:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "" @@ -1358,16 +1413,16 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 #, fuzzy msgid "Log" msgstr "Log" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "Đăng nhập" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "Đăng nhập thành công" @@ -1375,7 +1430,7 @@ msgstr "Đăng nhập thành công" msgid "Logout successful" msgstr "Đã đăng xuất" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "" @@ -1399,15 +1454,15 @@ msgstr "" "known tới HTTPChallengePort (default: 9180) trước khi ký chứng chỉ SSL." #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "Quản lý cấu hình" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "Quản lý Website" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 #, fuzzy msgid "Manage Streams" msgstr "Quản lý Website" @@ -1420,7 +1475,7 @@ msgstr "Người dùng" msgid "Managed Certificate" msgstr "" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "" @@ -1443,14 +1498,14 @@ msgid "Model" msgstr "Run Mode" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 #, fuzzy msgid "Modify" msgstr "Sửa" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "Sửa chứng chỉ" @@ -1459,7 +1514,7 @@ msgstr "Sửa chứng chỉ" msgid "Modify Config" msgstr "Sửa cấu hình" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "Modify Mode" msgstr "Sửa" @@ -1470,20 +1525,20 @@ msgid "Multi-line Directive" msgstr "Single Directive" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "Tên" @@ -1503,17 +1558,17 @@ msgstr "Tổng lưu lượng mạng đã nhận" msgid "Network Total Send" msgstr "Tổng lưu lượng mạng đã gửi" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 #, fuzzy msgid "New name" msgstr "Username" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 #, fuzzy msgid "New Path" msgstr "Đường dẫn" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "Đã có phiên bản mới" @@ -1523,7 +1578,7 @@ msgstr "Đã có phiên bản mới" msgid "Next" msgstr "Tiếp theo" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "" @@ -1539,6 +1594,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 #, fuzzy @@ -1550,7 +1621,7 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx" msgid "Nginx Configurations Directory" msgstr "Lỗi phân tích cú pháp cấu hình Nginx" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "" @@ -1588,25 +1659,25 @@ msgstr "Reload Nginx thành công" msgid "Nginx Restart Command" msgstr "" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 #, fuzzy msgid "Nginx restarted successfully" msgstr "Restart Nginx thành công" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "Không" @@ -1642,12 +1713,12 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 #, fuzzy msgid "Notification" msgstr "Thông báo" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 #, fuzzy msgid "Notifications" msgstr "Thông báo" @@ -1677,27 +1748,27 @@ msgstr "" msgid "Offline" msgstr "Ngoại tuyến" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "" @@ -1712,19 +1783,19 @@ msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa." msgid "Online" msgstr "Trực tuyến" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 #, fuzzy msgid "OS" msgstr "Hệ điều hành" @@ -1733,12 +1804,16 @@ msgstr "Hệ điều hành" msgid "OS:" msgstr "Hệ điều hành:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +msgid "Otp or recovery code empty" +msgstr "" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "Ghi đè" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "Ghi đè tập tin đã tồn tại" @@ -1747,36 +1822,49 @@ msgstr "Ghi đè tập tin đã tồn tại" msgid "Params" msgstr "Tham số" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "Mật khẩu" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "Mật khẩu (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "Tên người dùng hoặc mật khẩu không chính xác" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "Đường dẫn" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "" @@ -1788,13 +1876,17 @@ msgstr "Nâng cấp core không thành công" msgid "Performing core upgrade" msgstr "Nâng cấp core" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 msgid "Please enter the OTP code:" msgstr "" @@ -1805,7 +1897,7 @@ msgid "" msgstr "" "Vui lòng điền thông tin xác thực API do nhà cung cấp DNS của bạn cung cấp" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "" @@ -1817,13 +1909,13 @@ msgstr "" "Trước tiên, vui lòng thêm thông tin xác thực trong Chứng chỉ > Thông tin xác " "thực DNS, sau đó chọn nhà cung cấp DNS" -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 #, fuzzy msgid "Please input a filename" msgstr "Vui lòng nhập username!" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 #, fuzzy msgid "Please input a folder name" msgstr "Vui lòng nhập username!" @@ -1860,7 +1952,7 @@ msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "Lưu ý đơn vị cấu hình thời gian bên dưới được tính bằng giây." -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 msgid "Please select at least one node to upgrade" msgstr "" @@ -1879,13 +1971,13 @@ msgstr "" msgid "Please upgrade the remote Nginx UI to the latest version" msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "Cài đặt" @@ -1933,25 +2025,25 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 #, fuzzy msgid "Recovered Successfully" msgstr "Xoá thành công" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "" @@ -1984,7 +2076,7 @@ msgstr "Đăng ký người dùng" msgid "Register On Startup" msgstr "Đăng ký người dùng" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 #, fuzzy msgid "Register passkey successfully" msgstr "Gia hạn chứng chỉ SSL" @@ -2003,21 +2095,21 @@ msgstr "Đăng ký người dùng" msgid "Registration Status" msgstr "Đăng ký người dùng" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 #, fuzzy msgid "Reinstall" msgstr "Cài lại" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "Ghi chú phát hành" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "Tải lại" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "Đang tải lại" @@ -2025,7 +2117,7 @@ msgstr "Đang tải lại" msgid "Reloading nginx" msgstr "Tải lại nginx" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "" @@ -2040,21 +2132,21 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 #, fuzzy msgid "Remove successfully" msgstr "Xoá thành công" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 #, fuzzy msgid "Removed successfully" msgstr "Xoá thành công" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 #, fuzzy msgid "Rename" msgstr "Username" @@ -2137,32 +2229,32 @@ msgstr "Gia hạn chứng chỉ SSL" msgid "Requested with wrong parameters" msgstr "Yêu cầu có chứa tham số sai" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "Đặt lại" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 #, fuzzy msgid "Reset 2FA" msgstr "Đặt lại" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "Khởi động lại" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "Đang khởi động lại" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "" @@ -2171,20 +2263,20 @@ msgstr "" msgid "Run Mode" msgstr "Run Mode" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "Running" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2194,7 +2286,7 @@ msgstr "Lưu" msgid "Save Directive" msgstr "Lưu Directive" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2228,14 +2320,14 @@ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" msgid "Save successfully" msgstr "Lưu thành công" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "Lưu thành công" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "" @@ -2243,7 +2335,7 @@ msgstr "" msgid "SDK" msgstr "" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "" @@ -2260,28 +2352,7 @@ msgstr "" msgid "Send" msgstr "Gửi" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "Lỗi máy chủ" @@ -2297,6 +2368,15 @@ msgstr "không tìm thấy server_name trong directives" msgid "server_name parameter is required" msgstr "Tham số server_name là bắt buộc" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +#, fuzzy +msgid "Session not found" +msgstr "Không tìm thấy tệp tin" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2316,11 +2396,23 @@ msgstr "Đặt biến môi trường" msgid "Setting HTTP01 challenge provider" msgstr "Sử dụng HTTP01 để xác thực SSL" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "" @@ -2332,11 +2424,21 @@ msgstr "Single Directive" msgid "Site Categories" msgstr "" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "Đã tắt" + #: src/routes/index.ts:224 #, fuzzy msgid "Site Logs" msgstr "Logs" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "Không tìm thấy tệp tin" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2346,29 +2448,37 @@ msgstr "Thư mục" msgid "Sites List" msgstr "Danh sách Website" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Content" msgstr "" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 msgid "SSL Certificate Key Content" msgstr "" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 msgid "SSL Certificate Key Path" msgstr "" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 msgid "SSL Certificate Path" msgstr "" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 msgid "SSO Login" msgstr "" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 #, fuzzy msgid "Stable" msgstr "Ổn định" @@ -2380,7 +2490,7 @@ msgstr "Ổn định" msgid "Status" msgstr "Trạng thái" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "Đã dừng" @@ -2394,6 +2504,15 @@ msgstr "Storage" msgid "Streams Directory" msgstr "Thư mục" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "Thư mục" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "Thành công" @@ -2419,7 +2538,7 @@ msgstr "Sử dụng Dark theme" msgid "Switch to light theme" msgstr "Sử dụng Light theme" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "" @@ -2485,7 +2604,7 @@ msgstr "" msgid "Sync strategy" msgstr "Gia hạn chứng chỉ SSL" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "" @@ -2505,6 +2624,11 @@ msgstr "" msgid "Target" msgstr "Mục tiêu" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "Không tìm thấy tệp tin" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "Terminal" @@ -2533,14 +2657,19 @@ msgid "" "dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 msgid "The input is not a SSL Certificate Key" msgstr "" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 msgid "" "The model name should only contain letters, unicode, numbers, hyphens, " @@ -2553,11 +2682,11 @@ msgid "" "dashes, colons, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 msgid "The path exists, but the file is not a certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "" @@ -2567,7 +2696,7 @@ msgid "" "hyphens, dashes, colons, and dots." msgstr "" -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "" @@ -2601,17 +2730,17 @@ msgstr "" msgid "The username or password is incorrect" msgstr "Tên người dùng hoặc mật khẩu không chính xác" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "Mục Chứng chỉ tự động này không hợp lệ, vui lòng xóa nó" -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "Chứng chỉ này được quản lý bởi Nginx UI" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "" @@ -2639,17 +2768,17 @@ msgstr "" msgid "This value is already taken" msgstr "" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "" @@ -2658,13 +2787,13 @@ msgstr "" msgid "Title" msgstr "Tiêu đề" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." msgstr "" -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2694,27 +2823,23 @@ msgstr "" msgid "Token is not valid" msgstr "" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" msgstr[1] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "" @@ -2728,14 +2853,14 @@ msgstr "" msgid "Type" msgstr "Loại" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 #, fuzzy msgid "Update successfully" msgstr "Cập nhật thành công" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2750,12 +2875,12 @@ msgstr "Ngày cập nhật" msgid "Updated successfully" msgstr "Cập nhật thành công" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "Cập nhật" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 #, fuzzy msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "Cập nhật thành công" @@ -2765,7 +2890,7 @@ msgstr "Cập nhật thành công" msgid "Upgraded successfully" msgstr "Cập nhật thành công" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "Đang cập nhật Nginx UI, vui lòng đợi..." @@ -2781,11 +2906,11 @@ msgstr "Thời gian hoạt động:" msgid "URL" msgstr "" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "" @@ -2794,15 +2919,20 @@ msgstr "" msgid "User" msgstr "Người dùng" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +#, fuzzy +msgid "User banned" +msgstr "Username" + +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" msgstr "" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "Username" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "Username (*)" @@ -2817,29 +2947,29 @@ msgstr "Hợp lệ" msgid "Version" msgstr "Phiên bản hiện tại" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "Xem" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 #, fuzzy msgid "View all notifications" msgstr "Xem tất cả thông báo" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 #, fuzzy msgid "View Details" msgstr "Chi tiết" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 #, fuzzy msgid "View Mode" msgstr "Cơ bản" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "Lưu ý" @@ -2860,10 +2990,14 @@ msgstr "" "Chúng tôi sẽ xóa cấu hình HTTPChallenge khỏi tệp này và tải lại Nginx. Bạn " "có muốn tiếp tục không?" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2890,41 +3024,41 @@ msgstr "Ghi Private Key vào disk" msgid "Writing certificate to disk" msgstr "Ghi chứng chỉ vào disk" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "Có" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "Bạn đang sử dụng phiên bản mới nhất" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "Bạn có thể kiểm tra nâng cấp Nginx UI tại trang này" -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "" -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "" +#, fuzzy +#~ msgid "Incorrect username or password" +#~ msgstr "Tên người dùng hoặc mật khẩu không chính xác" + #, fuzzy #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" -#, fuzzy -#~ msgid "File not found" -#~ msgstr "Không tìm thấy tệp tin" - #, fuzzy #~ msgid "Server Name" #~ msgstr "Thông tin máy chủ" @@ -2937,9 +3071,6 @@ msgstr "" #~ msgid "Rename " #~ msgstr "Username" -#~ msgid "Certificate has expired" -#~ msgstr "Chứng chỉ đã hết hạn" - #~ msgid "Certificate is valid" #~ msgstr "Chứng chỉ SSL hợp lệ" diff --git a/app/src/language/zh_CN/app.po b/app/src/language/zh_CN/app.po index e1234ab70..33e32f181 100644 --- a/app/src/language/zh_CN/app.po +++ b/app/src/language/zh_CN/app.po @@ -17,7 +17,7 @@ msgstr "" msgid "2FA" msgstr "2FA" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "2FA 设置" @@ -47,23 +47,23 @@ msgstr "ACME 用户" msgid "Action" msgstr "操作" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "添加" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "添加 Passkey" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 msgid "Add Configuration" msgstr "添加配置" @@ -80,11 +80,11 @@ msgstr "添加 Location" msgid "Add Site" msgstr "添加站点" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 msgid "Add Stream" msgstr "添加 Stream" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 msgid "Added successfully" msgstr "添加成功" @@ -97,12 +97,12 @@ msgstr "额外选项" msgid "Advance Mode" msgstr "高级模式" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "然后,刷新此页面并再次点击添加 Passkey。" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "全部" @@ -126,7 +126,7 @@ msgstr "API Token" msgid "API Type" msgstr "API 类型" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "应用" @@ -134,24 +134,24 @@ msgstr "应用" msgid "Apply bulk action successfully" msgstr "批量操作应用成功" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "架构" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 msgid "Are you sure to delete this banned IP immediately?" msgstr "您确定要立即删除这个被禁用的 IP 吗?" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 msgid "Are you sure to delete this passkey immediately?" msgstr "您确定要立即删除这个 Passkey 吗?" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 msgid "Are you sure you want to apply to all selected?" msgstr "您确定要应用于所有选定的对象吗?" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 msgid "Are you sure you want to clear all notifications?" msgstr "您确定要清除所有通知吗?" @@ -159,20 +159,20 @@ msgstr "您确定要清除所有通知吗?" msgid "Are you sure you want to clear the record of chat?" msgstr "你确定你要清除聊天记录吗?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 msgid "Are you sure you want to delete this item permanently?" msgstr "您确定要永久删除此项目吗?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 msgid "Are you sure you want to delete this item?" msgstr "你确定要删除这个项目吗?" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "您确定要删除吗?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 msgid "Are you sure you want to recover this item?" msgstr "您确定要恢复这个项目吗?" @@ -204,15 +204,15 @@ msgstr "尝试修复" msgid "Attempts" msgstr "尝试次数" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "认证" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "通过 Passkey 认证" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "认证设置" @@ -233,9 +233,9 @@ msgstr "成功关闭 %{name} 自动续签" msgid "Auto-renewal enabled for %{name}" msgstr "成功启用 %{name} 自动续签" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -245,15 +245,15 @@ msgstr "返回" msgid "Back Home" msgstr "返回首页" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "返回列表" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "禁止阈值(分钟)" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "禁止 IP 列表" @@ -265,8 +265,8 @@ msgstr "禁用至" msgid "Base information" msgstr "基本信息" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 msgid "Basic" @@ -277,23 +277,27 @@ msgstr "基本" msgid "Basic Mode" msgstr "基本模式" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 msgid "Batch Actions" msgstr "批量操作" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 msgid "Batch Modify" msgstr "批量修改" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "批量升级" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "以下是您选定的需要批量修改的项目" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "区块为空" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "构建基于" @@ -306,15 +310,15 @@ msgstr "CA Dir" msgid "CADir" msgstr "CADir" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "无法扫描?使用文本密钥绑定" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -330,15 +334,27 @@ msgstr "取消" msgid "Category" msgstr "分类" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 msgid "Cert" msgstr "证书" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "证书路径不在 Nginx 配置目录下" + +#: src/constants/errors/cert.ts:4 +msgid "Certificate decode error" +msgstr "证书解码错误" + +#: src/constants/errors/cert.ts:5 +msgid "Certificate parse error" +msgstr "证书解析错误" + #: src/views/preference/CertSettings.vue:24 msgid "Certificate Renewal Interval" msgstr "证书续期间隔" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 msgid "Certificate Status" msgid_plural "Certificates Status" @@ -367,15 +383,15 @@ msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "变更证书" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "Changed Path" msgstr "变更后的路径" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "通道" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "重新检查" @@ -400,17 +416,21 @@ msgid "" msgstr "" "检查 nginx 配置目录下是否有 streams-available 和 streams-enabled 目录。" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "密码文本太短" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "正在清理环境变量" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "清空" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 msgid "Cleared successfully" msgstr "清除成功" @@ -469,7 +489,7 @@ msgstr "已拷贝" msgid "Copy" msgstr "拷贝" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "核心升级" @@ -493,12 +513,12 @@ msgstr "再创建一个" msgid "Create File" msgstr "创建文件" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 msgid "Create Folder" msgstr "创建文件夹" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "创建时间" @@ -519,15 +539,15 @@ msgstr "DNS 凭证" msgid "Credentials" msgstr "凭证" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 msgid "Current account is enabled TOTP." msgstr "当前账户已启用 TOTP 验证。" -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 msgid "Current account is not enabled TOTP." msgstr "当前用户未启用 TOTP 验证。" -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "当前版本" @@ -542,12 +562,12 @@ msgid "" "indicator." msgstr "自定义显示在环境指示器中的本地服务器名称。" -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "仪表盘" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "数据库 (可选,默认: database)" @@ -556,16 +576,16 @@ msgid "Days" msgstr "天" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "删除" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "彻底删除" @@ -577,7 +597,7 @@ msgstr "删除远程站点错误" msgid "Delete Remote Site Success" msgstr "删除远程站点成功" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "删除站点: %{site_name}" @@ -589,7 +609,7 @@ msgstr "删除 Stream: %{stream_name}" msgid "Deleted successfully" msgstr "删除成功" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -612,6 +632,10 @@ msgstr "部署成功" msgid "Description" msgstr "描述" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "目标文件已存在" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "详情" @@ -624,6 +648,18 @@ msgstr "开发模式" msgid "Directive" msgstr "指令" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "指令的参数为空" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "Directive.Params 既不是 access_log 也不是 error_log" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "指令 index 超出范围" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "指令" @@ -632,8 +668,8 @@ msgstr "指令" msgid "Directory" msgstr "目录" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 msgid "Disable" msgstr "禁用" @@ -667,7 +703,7 @@ msgid "Disabled" msgstr "禁用" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -745,7 +781,7 @@ msgstr "域名" msgid "Domain Config Created Successfully" msgstr "域名配置文件创建成功" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "域名列表为空,请尝试为 %{config} 重新打开证书自动续期。" @@ -757,11 +793,11 @@ msgstr "下载最新版本错误" msgid "Downloading latest release" msgstr "下载最新版本" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "试运行模式已启动" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." @@ -769,10 +805,10 @@ msgstr "" "由于某些浏览器的安全策略,除非在 localhost 上使用,否则不能在非 HTTPS 网站上" "使用 Passkey。" -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "复制" @@ -802,7 +838,7 @@ msgstr "编辑" msgid "Edit %{n}" msgstr "编辑 %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "编辑配置" @@ -818,13 +854,13 @@ msgstr "编辑 Stream" msgid "Email" msgstr "邮箱" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "邮箱 (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 msgid "Enable" msgstr "启用" @@ -836,7 +872,7 @@ msgstr "在%{node_name}中启用%{conf_name}失败" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "成功启用%{node_name}中的%{conf_name}" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 msgid "Enable 2FA successfully" msgstr "二步验证启用成功" @@ -872,7 +908,7 @@ msgstr "启用成功" msgid "Enable TLS" msgstr "启用 TLS" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 msgid "Enable TOTP" msgstr "启用 TOTP" @@ -890,7 +926,7 @@ msgid "Enabled" msgstr "启用" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -901,7 +937,7 @@ msgstr "启用成功" msgid "Encrypt website with Let's Encrypt" msgstr "用 Let's Encrypt 对网站进行加密" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "环境" @@ -922,7 +958,7 @@ msgstr "错误" msgid "Error Logs" msgstr "错误日志" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "可执行文件路径" @@ -935,7 +971,7 @@ msgstr "已过期" msgid "Expired At: %{date}" msgstr "过期时间: %{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "导出" @@ -943,15 +979,19 @@ msgstr "导出" msgid "Fail to obtain certificate" msgstr "获取证书失败" +#: src/constants/errors/self_check.ts:9 +msgid "Failed to create backup" +msgstr "创建备份失败" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "禁用失败 %{msg}" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -961,6 +1001,14 @@ msgstr "启用失败 %{msg}" msgid "Failed to get certificate information" msgstr "获取证书信息失败" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "解析 nginx.conf 失败" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "读取 nginx.conf 失败" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -978,6 +1026,10 @@ msgstr "文件已存在" msgid "File Not Found" msgstr "未找到文件" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "文件名为空" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "过滤" @@ -986,7 +1038,7 @@ msgstr "过滤" msgid "Finished" msgstr "完成" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1001,15 +1053,15 @@ msgstr "中国用户" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "中国用户:https://mirror.ghproxy.com/" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "代码格式化" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 msgid "Format error %{msg}" msgstr "保存错误 %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 msgid "Format successfully" msgstr "格式化成功" @@ -1025,7 +1077,7 @@ msgstr "生成" msgid "Generating private key for registering account" msgstr "正在生成私钥用于注册账户" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 msgid "Get release information error" msgstr "获取发布信息错误" @@ -1069,7 +1121,7 @@ msgstr "ICP备案号" msgid "If left blank, the default CA Dir will be used." msgstr "如果留空,则使用默认 CA Dir。" -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." @@ -1077,13 +1129,13 @@ msgstr "" "如果某个 IP 的登录失败次数达到禁用阈值分钟内的最大尝试次数,该 IP 将被禁止登" "录一段时间。" -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." msgstr "如果丢失了手机,可以使用恢复代码重置二步验证。" -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "如果您的浏览器支持 WebAuthn Passkey,则会出现一个对话框。" @@ -1097,14 +1149,10 @@ msgstr "如果您的域名有 CNAME 记录且无法获取证书,则需要启 msgid "Import" msgstr "导入" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "导入证书" -#: src/views/other/Login.vue:78 -msgid "Incorrect username or password" -msgstr "用户名或密码错误" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1118,16 +1166,16 @@ msgstr "初始化核心升级程序错误" msgid "Initialing core upgrader" msgstr "初始化核心升级器" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "输入应用程序中的代码:" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "输入恢复代码:" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "安装" @@ -1143,23 +1191,27 @@ msgstr "间隔" msgid "Invalid" msgstr "无效的" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "无效的二步验证码或恢复密码" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 msgid "Invalid filename" msgstr "文件名无效" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "无效文件夹名" +#: src/constants/errors/user.ts:4 +msgid "Invalid otp code" +msgstr "无效的 OTP 代码" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "二次验证码或恢复代码无效" +#: src/constants/errors/user.ts:5 +msgid "Invalid recovery code" +msgstr "无效的恢复代码" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "IP" @@ -1189,11 +1241,11 @@ msgstr "Jwt 密钥" msgid "Key Type" msgstr "密钥类型" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "最后检查时间" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 msgid "Last used at" msgstr "上次使用" @@ -1205,7 +1257,7 @@ msgstr "留空表示不修改" msgid "Leave blank for the default: https://api.openai.com/" msgstr "留空为默认:https://api.openai.com/" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 msgid "Leave blank if do not want to modify" msgstr "如果不想修改,请留空" @@ -1213,8 +1265,8 @@ msgstr "如果不想修改,请留空" msgid "Leave blank if you don't need this." msgstr "如果不需要,请留空。" -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 msgid "Leave blank will not change anything" msgstr "留空不做任何更改" @@ -1231,7 +1283,7 @@ msgstr "开源许可" msgid "Link Start" msgstr "链接" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "列表" @@ -1239,7 +1291,7 @@ msgstr "列表" msgid "Load Average:" msgstr "系统负载:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "从设置中加载" @@ -1260,15 +1312,15 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 msgid "Log" msgstr "日志" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "登录" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "登录成功" @@ -1276,7 +1328,7 @@ msgstr "登录成功" msgid "Logout successful" msgstr "登出成功" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "Logrotate" @@ -1303,15 +1355,15 @@ msgstr "" "HTTPChallengePort。" #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "配置管理" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "网站管理" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 msgid "Manage Streams" msgstr "管理 Stream" @@ -1323,7 +1375,7 @@ msgstr "用户管理" msgid "Managed Certificate" msgstr "托管证书" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "最大尝试次数" @@ -1345,13 +1397,13 @@ msgid "Model" msgstr "模型" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 msgid "Modify" msgstr "修改" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "修改证书" @@ -1359,7 +1411,7 @@ msgstr "修改证书" msgid "Modify Config" msgstr "修改配置文件" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "Modify Mode" msgstr "修改模式" @@ -1368,20 +1420,20 @@ msgid "Multi-line Directive" msgstr "多行指令" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "名称" @@ -1401,15 +1453,15 @@ msgstr "下载流量" msgid "Network Total Send" msgstr "上传流量" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 msgid "New name" msgstr "新名称" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "New Path" msgstr "新路径" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "新版本发布" @@ -1419,7 +1471,7 @@ msgstr "新版本发布" msgid "Next" msgstr "下一步" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "Nginx" @@ -1435,6 +1487,22 @@ msgstr "Nginx Conf 中引用启用站点目录" msgid "Nginx Conf Include Streams Enabled" msgstr "Nginx Conf 中引用启用 Streams 目录" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "Nginx 配置无 http 块" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "Nginx 配置无 Stream 块" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "Nginx Conf 中未引用 sites-enabled" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "Nginx Conf 中未引用 stream-enabled" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 msgid "Nginx Configuration Parse Error" @@ -1444,7 +1512,7 @@ msgstr "Nginx 配置解析错误" msgid "Nginx Configurations Directory" msgstr "Nginx 配置目录" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "控制 Nginx" @@ -1480,24 +1548,24 @@ msgstr "Nginx 重载成功" msgid "Nginx Restart Command" msgstr "Nginx 重启命令" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" msgstr "Nginx 重启成功" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "取消" @@ -1532,11 +1600,11 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "注意,如果配置文件中包含其他配置或证书,请提前将它们同步到远程节点。" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 msgid "Notification" msgstr "通知" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 msgid "Notifications" msgstr "通知" @@ -1564,27 +1632,27 @@ msgstr "某些用户在使用 Firefox 首次访问时,OCSP Must Staple 可能 msgid "Offline" msgstr "离线" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "确定" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "确定" @@ -1599,19 +1667,19 @@ msgstr "一旦验证完成,这些记录将被删除。" msgid "Online" msgstr "在线" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "OpenAI" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "或" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "原名" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 msgid "OS" msgstr "OS" @@ -1619,12 +1687,16 @@ msgstr "OS" msgid "OS:" msgstr "OS:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +msgid "Otp or recovery code empty" +msgstr "OTP 或恢复代码为空" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "覆盖" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "覆盖现有文件" @@ -1633,11 +1705,11 @@ msgstr "覆盖现有文件" msgid "Params" msgstr "参数" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "Passkey" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " @@ -1646,25 +1718,37 @@ msgstr "" "Passkey 是一种网络认证凭据,可通过指纹、面部识别、设备密码或 PIN 码验证身份。" "它们可用作密码替代品或二步验证方法。" -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "密码" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "密码 (*)" +#: src/constants/errors/user.ts:2 +msgid "Password incorrect" +msgstr "用户名和密码错误" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "密码长度不能超过 20 个字符" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "路径" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "路径:{0} 不在 nginx 配置目录下:{1}" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "有效载荷资源为空" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "执行" @@ -1676,13 +1760,17 @@ msgstr "执行核心升级错误" msgid "Performing core upgrade" msgstr "正在进行核心升级" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "原文为空" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "请为您要创建的 Passkey 输入一个名称,然后单击下面的 \"确定 \"按钮。" -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 msgid "Please enter the OTP code:" msgstr "请输入 OTP:" @@ -1692,7 +1780,7 @@ msgid "" "provider." msgstr "请填写 DNS 提供商提供的 API 验证凭据。" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "请填写必填字段" @@ -1704,12 +1792,12 @@ msgstr "" "请首先在 “证书”> “DNS 凭证” 中添加凭证,然后在下方选择一个凭证,请求 DNS 提供" "商的 API。" -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 msgid "Please input a filename" msgstr "请输入文件名" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 msgid "Please input a folder name" msgstr "请输入文件夹名称" @@ -1742,7 +1830,7 @@ msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "请注意,下面的时间单位配置均以秒为单位。" -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 msgid "Please select at least one node to upgrade" msgstr "请至少选择一个节点进行升级" @@ -1760,13 +1848,13 @@ msgstr "请至少选择一个节点!" msgid "Please upgrade the remote Nginx UI to the latest version" msgstr "请将远程 Nginx UI 升级到最新版本" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "预发布" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "偏好设置" @@ -1813,24 +1901,24 @@ msgid "Recheck" msgstr "重新检查" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "恢复" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 msgid "Recovered Successfully" msgstr "恢复成功" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "恢复" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "恢复代码" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "恢复代码:" @@ -1860,7 +1948,7 @@ msgstr "注册失败" msgid "Register On Startup" msgstr "启动时注册" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 msgid "Register passkey successfully" msgstr "Passkey 注册成功" @@ -1876,20 +1964,20 @@ msgstr "正在注册用户" msgid "Registration Status" msgstr "注册状态" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 msgid "Reinstall" msgstr "重新安装" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "发行日志" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "重载" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "重载中" @@ -1897,7 +1985,7 @@ msgstr "重载中" msgid "Reloading nginx" msgstr "正在重载 Nginx" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "删除" @@ -1910,19 +1998,19 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "成功从 %{node} 中删除站点 %{site}" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 msgid "Remove successfully" msgstr "移除成功" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 msgid "Removed successfully" msgstr "删除成功" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 msgid "Rename" msgstr "重命名" @@ -1991,31 +2079,31 @@ msgstr "更新成功" msgid "Requested with wrong parameters" msgstr "请求参数错误" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "重置" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 msgid "Reset 2FA" msgstr "重置二步验证" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "重启" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "重启中" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "依赖方显示名称" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "依赖方的源" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "依赖方 ID" @@ -2023,20 +2111,20 @@ msgstr "依赖方 ID" msgid "Run Mode" msgstr "运行模式" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "运行中" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2046,7 +2134,7 @@ msgstr "保存" msgid "Save Directive" msgstr "保存指令" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2075,14 +2163,14 @@ msgstr "成功将站点 %{site} 保存到 %{node} 中" msgid "Save successfully" msgstr "保存成功" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "保存成功" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "用手机扫描二维码,将账户添加到应用程序中。" @@ -2090,7 +2178,7 @@ msgstr "用手机扫描二维码,将账户添加到应用程序中。" msgid "SDK" msgstr "SDK" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "密钥已复制" @@ -2107,28 +2195,7 @@ msgstr "自我检查" msgid "Send" msgstr "上传" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "服务器错误" @@ -2144,6 +2211,14 @@ msgstr "未在指令集合中找到 server_name" msgid "server_name parameter is required" msgstr "必须为 server_name 指令指明参数" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "Server Index 超出范围" + +#: src/constants/errors/user.ts:9 +msgid "Session not found" +msgstr "未找到会话" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2162,11 +2237,27 @@ msgstr "正在设置环境变量" msgid "Setting HTTP01 challenge provider" msgstr "使用 HTTP01 challenge provider" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." +"com/guide/config-nginx.html for more information" +msgstr "" +"Settings.NginxLogSettings.AccessLogPath 为空,更多信息请参阅 https://nginxui." +"com/guide/config-nginx.html" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." +"com/guide/config-nginx.html for more information" +msgstr "" +"Settings.NginxLogSettings.ErrorLogPath为空,更多信息请参阅 https://nginxui." +"com/guide/config-nginx.html" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "显示" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "使用 Passkey 登录" @@ -2178,10 +2269,18 @@ msgstr "单行指令" msgid "Site Categories" msgstr "网站分类" +#: src/constants/errors/site.ts:4 +msgid "Site is enabled" +msgstr "网站已启用" + #: src/routes/index.ts:224 msgid "Site Logs" msgstr "站点列表" +#: src/constants/errors/site.ts:2 +msgid "Site not found" +msgstr "网站未找到" + #: src/views/system/SelfCheck/tasks.ts:3 msgid "Sites Directory" msgstr "网站目录" @@ -2190,29 +2289,37 @@ msgstr "网站目录" msgid "Sites List" msgstr "站点列表" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "Sites-available 目录不存在" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "Sites-enabled 目录不存在" + +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Content" msgstr "SSL 证书内容" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 msgid "SSL Certificate Key Content" msgstr "SSL 证书密钥内容" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 msgid "SSL Certificate Key Path" msgstr "SSL证书密钥路径" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 msgid "SSL Certificate Path" msgstr "SSL证书路径" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 msgid "SSO Login" msgstr "SSO 登录" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 msgid "Stable" msgstr "稳定" @@ -2223,7 +2330,7 @@ msgstr "稳定" msgid "Status" msgstr "状态" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "已停止" @@ -2236,6 +2343,14 @@ msgstr "存储" msgid "Streams Directory" msgstr "Streams 目录" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "Streams-available 目录不存在" + +#: src/constants/errors/self_check.ts:13 +msgid "Streams-enabled directory not exist" +msgstr "Streams-enabled 目录不存在" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "成功" @@ -2263,7 +2378,7 @@ msgstr "切换到深色主题" msgid "Switch to light theme" msgstr "切换到浅色" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "同步" @@ -2320,7 +2435,7 @@ msgstr "同步节点" msgid "Sync strategy" msgstr "同步策略" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "同步到" @@ -2340,6 +2455,10 @@ msgstr "系统初始用户" msgid "Target" msgstr "目标" +#: src/constants/errors/self_check.ts:2 +msgid "Task not found" +msgstr "未找到任务" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "终端" @@ -2367,14 +2486,19 @@ msgid "" "dashes, colons, and dots." msgstr "ICP 备案号只能包含字母、单码、数字、连字符、破折号、冒号和点。" -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "输入的内容不是 SSL 证书" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 msgid "The input is not a SSL Certificate Key" msgstr "输入的内容不是 SSL 证书密钥" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "日志路径不在 settings.NginxSettings.LogDirWhiteList 中的路径之下" + #: src/views/preference/OpenAISettings.vue:35 msgid "" "The model name should only contain letters, unicode, numbers, hyphens, " @@ -2387,11 +2511,11 @@ msgid "" "dashes, colons, and dots." msgstr "节点名称只能包含字母、统一码、数字、连字符、破折号、冒号和点。" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 msgid "The path exists, but the file is not a certificate" msgstr "路径存在,但文件不是证书" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "路径存在,但文件不是私钥" @@ -2401,7 +2525,7 @@ msgid "" "hyphens, dashes, colons, and dots." msgstr "公安备案号只能包含字母、单码、数字、连字符、破折号、冒号和点。" -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "恢复密码只会显示一次,请妥善保存。" @@ -2435,17 +2559,17 @@ msgstr "URL 无效." msgid "The username or password is incorrect" msgstr "用户名或密码错误" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "这个证书自动续期项目是无效的,请删除。" -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "该证书由 Nginx UI 托管" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "此字段必填" @@ -2471,17 +2595,17 @@ msgstr "该字段只能包含字母、unicode 字符、数字和 -_。" msgid "This value is already taken" msgstr "该字段的值已经存在" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "将 %{nodeNames} 上的 Nginx UI 升级或重新安装到 %{version} 版本。" -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "限流" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "提示" @@ -2490,14 +2614,14 @@ msgstr "提示" msgid "Title" msgstr "标题" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." msgstr "" "要启用该功能,您需要在手机上安装 Google 或 Microsoft Authenticator 应用程序。" -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2529,26 +2653,22 @@ msgstr "" msgid "Token is not valid" msgstr "Token 无效" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "登录失败次数过多,请稍后再试" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "共 %{total} 个项目" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "TOTP" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." msgstr "TOTP 是一种使用基于时间的一次性密码算法的双因素身份验证方法。" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "回收站" @@ -2562,13 +2682,13 @@ msgstr "需要两步验证" msgid "Type" msgstr "类型" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 msgid "Update successfully" msgstr "更新成功" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2582,12 +2702,12 @@ msgstr "修改时间" msgid "Updated successfully" msgstr "更新成功" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "升级" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "成功升级 %{node} 上的 Nginx UI 🎉" @@ -2595,7 +2715,7 @@ msgstr "成功升级 %{node} 上的 Nginx UI 🎉" msgid "Upgraded successfully" msgstr "升级成功" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "正在升级 Nginx UI,请等待..." @@ -2611,11 +2731,11 @@ msgstr "运行时间:" msgid "URL" msgstr "URL" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "使用二步验证码" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "使用恢复代码" @@ -2623,15 +2743,19 @@ msgstr "使用恢复代码" msgid "User" msgstr "用户" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +msgid "User banned" msgstr "用户被禁止" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" +msgstr "用户未启用 OTP 作为 2FA" + +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "用户名" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "用户名 (*)" @@ -2645,26 +2769,26 @@ msgstr "有效的" msgid "Version" msgstr "版本" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "查看" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 msgid "View all notifications" msgstr "查看全部通知" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 msgid "View Details" msgstr "查看详情" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "View Mode" msgstr "预览模式" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "警告" @@ -2682,10 +2806,14 @@ msgid "" msgstr "" "我们将从这个文件中删除HTTPChallenge的配置,并重新加载Nginx。你确定要继续吗?" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "Webauthn" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "WebAuthn 未配置" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2716,31 +2844,37 @@ msgstr "正在将证书私钥写入磁盘" msgid "Writing certificate to disk" msgstr "正在将证书写入磁盘" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "是的" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "您使用的是最新版本" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "你可以在这个页面检查Nginx UI的升级。" -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "您尚未配置 Webauthn 的设置,因此无法添加 Passkey。" -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "你的 Passkeys" +#~ msgid "Incorrect username or password" +#~ msgstr "用户名或密码错误" + +#~ msgid "Too many login failed attempts, please try again later" +#~ msgstr "登录失败次数过多,请稍后再试" + #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" @@ -2748,9 +2882,6 @@ msgstr "你的 Passkeys" #~ "将 %{env_name} 上的 %{orig_path} 重命名为 %{new_path} 失败,请将远程 " #~ "Nginx UI 升级到最新版本" -#~ msgid "File not found" -#~ msgstr "文件未找到" - #~ msgid "Server Name" #~ msgstr "服务器名称" @@ -2764,9 +2895,6 @@ msgstr "你的 Passkeys" #~ msgid "Rename " #~ msgstr "重命名" -#~ msgid "Certificate has expired" -#~ msgstr "此证书已过期" - #~ msgid "Certificate is valid" #~ msgstr "此证书有效" @@ -2812,9 +2940,6 @@ msgstr "你的 Passkeys" #~ msgid "Rename Upstream" #~ msgstr "重新命名 Upstream" -#~ msgid "Auto Cert is enabled" -#~ msgstr "自动更新已启用" - #~ msgid "Auto Cert Log" #~ msgstr "证书自动续期日志" diff --git a/app/src/language/zh_TW/app.po b/app/src/language/zh_TW/app.po index 7c7535ed5..e0abf4fbf 100644 --- a/app/src/language/zh_TW/app.po +++ b/app/src/language/zh_TW/app.po @@ -21,7 +21,7 @@ msgstr "" msgid "2FA" msgstr "多重要素驗證" -#: src/views/preference/AuthSettings.vue:57 +#: src/views/preference/AuthSettings.vue:55 msgid "2FA Settings" msgstr "多重要素驗證設定" @@ -51,23 +51,23 @@ msgstr "ACME 用戶" msgid "Action" msgstr "操作" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186 #: src/views/preference/CertSettings.vue:42 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117 #: src/views/site/ngx_conf/NgxServer.vue:162 #: src/views/site/ngx_conf/NgxUpstream.vue:154 -#: src/views/stream/StreamList.vue:121 +#: src/views/stream/StreamList.vue:117 msgid "Add" msgstr "新增" -#: src/views/preference/components/AddPasskey.vue:51 -#: src/views/preference/components/AddPasskey.vue:55 +#: src/views/preference/components/AddPasskey.vue:45 +#: src/views/preference/components/AddPasskey.vue:49 msgid "Add a passkey" msgstr "" -#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:146 -#: src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:118 src/views/config/ConfigEditor.vue:144 +#: src/views/config/ConfigEditor.vue:204 msgid "Add Configuration" msgstr "添加配置" @@ -84,11 +84,11 @@ msgstr "新增 Location" msgid "Add Site" msgstr "新增網站" -#: src/views/stream/StreamList.vue:182 +#: src/views/stream/StreamList.vue:176 msgid "Add Stream" msgstr "新增 Stream" -#: src/views/stream/StreamList.vue:111 +#: src/views/stream/StreamList.vue:109 msgid "Added successfully" msgstr "添加成功" @@ -101,12 +101,12 @@ msgstr "其他設定" msgid "Advance Mode" msgstr "進階模式" -#: src/views/preference/components/AddPasskey.vue:105 +#: src/views/preference/components/AddPasskey.vue:99 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:425 -#: src/views/site/site_list/SiteList.vue:102 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419 +#: src/views/site/site_list/SiteList.vue:98 msgid "All" msgstr "" @@ -131,7 +131,7 @@ msgstr "API Token" msgid "API Type" msgstr "API Token" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:105 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103 msgid "Apply" msgstr "" @@ -140,26 +140,26 @@ msgstr "" msgid "Apply bulk action successfully" msgstr "複製成功" -#: src/views/system/Upgrade.vue:178 +#: src/views/system/Upgrade.vue:176 msgid "Arch" msgstr "架構" -#: src/views/preference/AuthSettings.vue:136 +#: src/views/preference/AuthSettings.vue:134 msgid "Are you sure to delete this banned IP immediately?" msgstr "您確定要刪除這個被禁用的 IP 嗎?" -#: src/views/preference/components/Passkey.vue:119 +#: src/views/preference/components/Passkey.vue:113 #, fuzzy msgid "Are you sure to delete this passkey immediately?" msgstr "您確定要刪除這個被禁用的 IP 嗎?" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:98 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 #, fuzzy msgid "Are you sure you want to apply to all selected?" msgstr "您確定要刪除嗎?" -#: src/components/Notification/Notification.vue:135 -#: src/views/notification/Notification.vue:40 +#: src/components/Notification/Notification.vue:130 +#: src/views/notification/Notification.vue:38 msgid "Are you sure you want to clear all notifications?" msgstr "您確定要清除所有通知嗎?" @@ -167,20 +167,20 @@ msgstr "您確定要清除所有通知嗎?" msgid "Are you sure you want to clear the record of chat?" msgstr "您確定要清除聊天記錄嗎?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:552 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540 msgid "Are you sure you want to delete this item permanently?" msgstr "您確定要永久刪除此項目嗎?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512 msgid "Are you sure you want to delete this item?" msgstr "您確定要刪除此項目嗎?" -#: src/views/site/site_list/SiteList.vue:150 -#: src/views/stream/StreamList.vue:166 +#: src/views/site/site_list/SiteList.vue:144 +#: src/views/stream/StreamList.vue:160 msgid "Are you sure you want to delete?" msgstr "您確定要刪除嗎?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526 msgid "Are you sure you want to recover this item?" msgstr "您確定要恢復此項目嗎?" @@ -213,15 +213,15 @@ msgstr "嘗試次數" msgid "Attempts" msgstr "嘗試次數" -#: src/views/preference/Preference.vue:155 +#: src/views/preference/Preference.vue:152 msgid "Auth" msgstr "身份驗證" -#: src/components/TwoFA/Authorization.vue:126 +#: src/components/TwoFA/Authorization.vue:121 msgid "Authenticate with a passkey" msgstr "" -#: src/views/preference/AuthSettings.vue:62 +#: src/views/preference/AuthSettings.vue:60 msgid "Authentication Settings" msgstr "" @@ -242,9 +242,9 @@ msgstr "已關閉 %{name} 的自動續簽" msgid "Auto-renewal enabled for %{name}" msgstr "已啟用 %{name} 的自動續簽" -#: src/views/certificate/CertificateEditor.vue:256 -#: src/views/config/ConfigEditor.vue:215 src/views/config/ConfigList.vue:106 -#: src/views/config/ConfigList.vue:180 src/views/nginx_log/NginxLog.vue:173 +#: src/views/certificate/CertificateEditor.vue:255 +#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:106 +#: src/views/config/ConfigList.vue:179 src/views/nginx_log/NginxLog.vue:173 #: src/views/site/site_edit/SiteEdit.vue:264 #: src/views/stream/StreamEdit.vue:245 msgid "Back" @@ -254,15 +254,15 @@ msgstr "返回" msgid "Back Home" msgstr "返回首頁" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:211 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206 msgid "Back to list" msgstr "返回列表" -#: src/views/preference/AuthSettings.vue:103 +#: src/views/preference/AuthSettings.vue:101 msgid "Ban Threshold Minutes" msgstr "封禁閾值分鐘數" -#: src/views/preference/AuthSettings.vue:124 +#: src/views/preference/AuthSettings.vue:122 msgid "Banned IPs" msgstr "被禁止的 IP" @@ -274,8 +274,8 @@ msgstr "禁止至" msgid "Base information" msgstr "基本資訊" -#: src/views/config/ConfigEditor.vue:243 -#: src/views/preference/Preference.vue:149 +#: src/views/config/ConfigEditor.vue:241 +#: src/views/preference/Preference.vue:146 #: src/views/site/site_edit/RightSettings.vue:79 #: src/views/stream/components/RightSettings.vue:74 msgid "Basic" @@ -286,24 +286,28 @@ msgstr "基本" msgid "Basic Mode" msgstr "基本模式" -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:85 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83 #, fuzzy msgid "Batch Actions" msgstr "操作" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:66 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:454 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 msgid "Batch Modify" msgstr "批次修改" -#: src/views/environment/BatchUpgrader.vue:155 +#: src/views/environment/BatchUpgrader.vue:153 msgid "Batch Upgrade" msgstr "批次升級" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:74 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70 msgid "Belows are selected items that you want to batch modify" msgstr "" +#: src/constants/errors/nginx.ts:2 +msgid "Block is nil" +msgstr "" + #: src/views/system/About.vue:55 msgid "Build with" msgstr "構建基於" @@ -316,15 +320,15 @@ msgstr "CA Dir" msgid "CADir" msgstr "CADir" -#: src/views/preference/components/TOTP.vue:150 +#: src/views/preference/components/TOTP.vue:145 msgid "Can't scan? Use text key binding" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:260 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:251 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:180 #: src/components/StdDesign/StdDetail/StdDetail.vue:101 -#: src/views/preference/components/Passkey.vue:147 +#: src/views/preference/components/Passkey.vue:141 #: src/views/site/cert/components/ObtainCert.vue:140 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51 #: src/views/site/ngx_conf/NgxServer.vue:80 @@ -340,16 +344,30 @@ msgstr "取消" msgid "Category" msgstr "" -#: src/views/preference/Preference.vue:161 +#: src/views/preference/Preference.vue:158 #, fuzzy msgid "Cert" msgstr "自動憑證" +#: src/constants/errors/cert.ts:3 +msgid "Cert path is not under the nginx conf dir" +msgstr "" + +#: src/constants/errors/cert.ts:4 +#, fuzzy +msgid "Certificate decode error" +msgstr "同步憑證錯誤" + +#: src/constants/errors/cert.ts:5 +#, fuzzy +msgid "Certificate parse error" +msgstr "此憑證已過期" + #: src/views/preference/CertSettings.vue:24 msgid "Certificate Renewal Interval" msgstr "憑證更新間隔" -#: src/views/certificate/CertificateEditor.vue:129 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/site/cert/Cert.vue:32 msgid "Certificate Status" msgid_plural "Certificates Status" @@ -378,15 +396,15 @@ msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "變更後憑證" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "Changed Path" msgstr "變更後路徑" -#: src/views/environment/BatchUpgrader.vue:162 src/views/system/Upgrade.vue:190 +#: src/views/environment/BatchUpgrader.vue:160 src/views/system/Upgrade.vue:188 msgid "Channel" msgstr "通道" -#: src/views/system/Upgrade.vue:187 +#: src/views/system/Upgrade.vue:185 msgid "Check again" msgstr "再次檢查" @@ -410,17 +428,21 @@ msgid "" "nginx configuration directory." msgstr "" +#: src/constants/errors/crypto.ts:3 +msgid "Cipher text is too short" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "清理環境變數" #: src/components/ChatGPT/ChatGPT.vue:283 -#: src/components/Notification/Notification.vue:140 -#: src/views/notification/Notification.vue:45 +#: src/components/Notification/Notification.vue:135 +#: src/views/notification/Notification.vue:43 msgid "Clear" msgstr "清除" -#: src/components/Notification/Notification.vue:90 +#: src/components/Notification/Notification.vue:88 #: src/views/notification/Notification.vue:13 msgid "Cleared successfully" msgstr "清除成功" @@ -479,7 +501,7 @@ msgstr "已複製" msgid "Copy" msgstr "複製" -#: src/views/system/Upgrade.vue:148 +#: src/views/system/Upgrade.vue:146 msgid "Core Upgrade" msgstr "核心升級" @@ -503,12 +525,12 @@ msgstr "再建立一個" msgid "Create File" msgstr "創建檔案" -#: src/views/config/components/Mkdir.vue:49 src/views/config/ConfigList.vue:123 +#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:123 msgid "Create Folder" msgstr "創建資料夾" #: src/views/notification/notificationColumns.tsx:56 -#: src/views/preference/components/Passkey.vue:101 +#: src/views/preference/components/Passkey.vue:95 #: src/views/site/site_category/columns.ts:14 src/views/user/userColumns.tsx:48 msgid "Created at" msgstr "建立時間" @@ -529,17 +551,17 @@ msgstr "認證" msgid "Credentials" msgstr "認證資訊" -#: src/views/preference/components/TOTP.vue:98 +#: src/views/preference/components/TOTP.vue:93 #, fuzzy msgid "Current account is enabled TOTP." msgstr "當前帳戶已啟用多因素身份驗證。" -#: src/views/preference/components/TOTP.vue:95 +#: src/views/preference/components/TOTP.vue:90 #, fuzzy msgid "Current account is not enabled TOTP." msgstr "當前帳戶未啟用多因素身份驗證。" -#: src/views/system/Upgrade.vue:167 +#: src/views/system/Upgrade.vue:165 msgid "Current Version" msgstr "目前版本" @@ -555,12 +577,12 @@ msgid "" "indicator." msgstr "自訂本地伺服器名稱以顯示在環境指示器中。" -#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:136 +#: src/routes/index.ts:38 src/views/config/ConfigEditor.vue:134 #: src/views/config/ConfigEditor.vue:97 src/views/config/ConfigList.vue:64 msgid "Dashboard" msgstr "儀表板" -#: src/views/other/Install.vue:121 +#: src/views/other/Install.vue:119 msgid "Database (Optional, default: database)" msgstr "資料庫 (可選,預設: database)" @@ -569,16 +591,16 @@ msgid "Days" msgstr "天" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519 #: src/views/site/ngx_conf/NgxServer.vue:110 #: src/views/site/ngx_conf/NgxUpstream.vue:128 -#: src/views/site/site_list/SiteList.vue:159 -#: src/views/stream/StreamList.vue:175 +#: src/views/site/site_list/SiteList.vue:153 +#: src/views/stream/StreamList.vue:169 msgid "Delete" msgstr "刪除" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:559 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547 msgid "Delete Permanently" msgstr "永久刪除" @@ -592,7 +614,7 @@ msgstr "重命名遠端配置錯誤" msgid "Delete Remote Site Success" msgstr "重新命名遠端配置成功" -#: src/views/site/site_list/SiteList.vue:69 +#: src/views/site/site_list/SiteList.vue:67 msgid "Delete site: %{site_name}" msgstr "刪除網站:%{site_name}" @@ -604,7 +626,7 @@ msgstr "刪除 Stream:%{stream_name}" msgid "Deleted successfully" msgstr "刪除成功" -#: src/views/config/ConfigEditor.vue:287 +#: src/views/config/ConfigEditor.vue:285 #: src/views/stream/components/Deploy.vue:100 #: src/views/stream/components/RightSettings.vue:92 msgid "Deploy" @@ -627,6 +649,10 @@ msgstr "部署成功" msgid "Description" msgstr "描述" +#: src/constants/errors/site.ts:3 +msgid "Destination file already exists" +msgstr "" + #: src/views/notification/notificationColumns.tsx:51 msgid "Details" msgstr "詳細資料" @@ -639,6 +665,18 @@ msgstr "開發模式" msgid "Directive" msgstr "指令" +#: src/constants/errors/nginx_log.ts:6 +msgid "Directive params is empty" +msgstr "" + +#: src/constants/errors/nginx_log.ts:5 +msgid "Directive.Params neither access_log nor error_log" +msgstr "" + +#: src/constants/errors/nginx_log.ts:4 +msgid "DirectiveIdx out of range" +msgstr "" + #: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28 msgid "Directives" msgstr "指令" @@ -647,8 +685,8 @@ msgstr "指令" msgid "Directory" msgstr "目錄" -#: src/views/site/site_list/SiteList.vue:128 -#: src/views/stream/StreamList.vue:144 +#: src/views/site/site_list/SiteList.vue:124 +#: src/views/stream/StreamList.vue:140 msgid "Disable" msgstr "停用" @@ -686,7 +724,7 @@ msgid "Disabled" msgstr "停用" #: src/views/site/site_edit/RightSettings.vue:42 -#: src/views/site/site_list/SiteList.vue:58 +#: src/views/site/site_list/SiteList.vue:56 #: src/views/stream/components/RightSettings.vue:38 #: src/views/stream/StreamList.vue:67 msgid "Disabled successfully" @@ -765,7 +803,7 @@ msgstr "網域" msgid "Domain Config Created Successfully" msgstr "網域設定檔成功建立" -#: src/views/certificate/CertificateEditor.vue:113 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "網域列表為空,請嘗試重新開啟 %{config} 的自動憑證" @@ -777,20 +815,20 @@ msgstr "下載最新版本錯誤" msgid "Downloading latest release" msgstr "正在下載最新版本" -#: src/views/environment/BatchUpgrader.vue:191 src/views/system/Upgrade.vue:217 +#: src/views/environment/BatchUpgrader.vue:189 src/views/system/Upgrade.vue:215 msgid "Dry run mode enabled" msgstr "試運轉模式已啟用" -#: src/views/preference/components/AddPasskey.vue:107 +#: src/views/preference/components/AddPasskey.vue:101 msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -#: src/views/site/site_list/SiteDuplicate.vue:74 -#: src/views/site/site_list/SiteList.vue:144 +#: src/views/site/site_list/SiteDuplicate.vue:72 +#: src/views/site/site_list/SiteList.vue:139 #: src/views/stream/components/StreamDuplicate.vue:121 -#: src/views/stream/StreamList.vue:160 +#: src/views/stream/StreamList.vue:155 msgid "Duplicate" msgstr "複製" @@ -820,7 +858,7 @@ msgstr "編輯" msgid "Edit %{n}" msgstr "編輯 %{n}" -#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:206 +#: src/routes/index.ts:128 src/views/config/ConfigEditor.vue:204 msgid "Edit Configuration" msgstr "編輯設定" @@ -836,13 +874,13 @@ msgstr "編輯 Stream" msgid "Email" msgstr "電子郵件" -#: src/views/other/Install.vue:90 +#: src/views/other/Install.vue:88 msgid "Email (*)" msgstr "電子郵件 (*)" -#: src/views/site/site_list/SiteList.vue:136 +#: src/views/site/site_list/SiteList.vue:132 #: src/views/stream/components/Deploy.vue:80 -#: src/views/stream/StreamList.vue:152 +#: src/views/stream/StreamList.vue:148 msgid "Enable" msgstr "啟用" @@ -854,7 +892,7 @@ msgstr "在 %{node_name} 啟用 %{conf_name} 失敗" msgid "Enable %{conf_name} in %{node_name} successfully" msgstr "成功在 %{node_name} 啟用 %{conf_name}" -#: src/views/preference/components/TOTP.vue:54 +#: src/views/preference/components/TOTP.vue:52 msgid "Enable 2FA successfully" msgstr "啟用多因素身份驗證成功" @@ -894,7 +932,7 @@ msgstr "啟用成功" msgid "Enable TLS" msgstr "啟用 TLS" -#: src/views/preference/components/TOTP.vue:124 +#: src/views/preference/components/TOTP.vue:119 #, fuzzy msgid "Enable TOTP" msgstr "啟用 TLS" @@ -913,7 +951,7 @@ msgid "Enabled" msgstr "已啟用" #: src/views/site/site_edit/RightSettings.vue:33 -#: src/views/site/site_list/SiteList.vue:48 src/views/site/SiteAdd.vue:40 +#: src/views/site/site_list/SiteList.vue:46 src/views/site/SiteAdd.vue:40 #: src/views/stream/components/RightSettings.vue:29 #: src/views/stream/components/StreamDuplicate.vue:93 #: src/views/stream/StreamList.vue:57 @@ -924,7 +962,7 @@ msgstr "成功啟用" msgid "Encrypt website with Let's Encrypt" msgstr "用 Let's Encrypt 對網站進行加密" -#: src/routes/index.ts:234 src/views/environment/Environment.vue:34 +#: src/routes/index.ts:234 src/views/environment/Environment.vue:32 msgid "Environment" msgstr "環境" @@ -945,7 +983,7 @@ msgstr "錯誤" msgid "Error Logs" msgstr "錯誤日誌" -#: src/views/system/Upgrade.vue:179 +#: src/views/system/Upgrade.vue:177 msgid "Executable Path" msgstr "可執行檔路徑" @@ -958,7 +996,7 @@ msgstr "已過期" msgid "Expired At: %{date}" msgstr "過期時間:%{date}" -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:66 +#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64 msgid "Export" msgstr "匯出" @@ -966,15 +1004,20 @@ msgstr "匯出" msgid "Fail to obtain certificate" msgstr "獲取憑證失敗" +#: src/constants/errors/self_check.ts:9 +#, fuzzy +msgid "Failed to create backup" +msgstr "啟用 %{msg} 失敗" + #: src/views/site/site_edit/RightSettings.vue:45 -#: src/views/site/site_list/SiteList.vue:62 +#: src/views/site/site_list/SiteList.vue:60 #: src/views/stream/components/RightSettings.vue:41 #: src/views/stream/StreamList.vue:71 msgid "Failed to disable %{msg}" msgstr "停用 %{msg} 失敗" #: src/views/site/site_edit/RightSettings.vue:36 -#: src/views/site/site_list/SiteList.vue:52 +#: src/views/site/site_list/SiteList.vue:50 #: src/views/stream/components/RightSettings.vue:32 #: src/views/stream/StreamList.vue:61 msgid "Failed to enable %{msg}" @@ -984,6 +1027,14 @@ msgstr "啟用 %{msg} 失敗" msgid "Failed to get certificate information" msgstr "取得憑證資訊失敗" +#: src/constants/errors/self_check.ts:4 +msgid "Failed to parse nginx.conf" +msgstr "" + +#: src/constants/errors/self_check.ts:3 +msgid "Failed to read nginx.conf" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:135 #: src/views/stream/StreamEdit.vue:122 msgid "Failed to save, syntax error(s) was detected in the configuration." @@ -1001,6 +1052,10 @@ msgstr "檔案已存在" msgid "File Not Found" msgstr "找不到檔案" +#: src/constants/errors/cert.ts:2 +msgid "Filename is empty" +msgstr "" + #: src/views/nginx_log/NginxLog.vue:155 msgid "Filter" msgstr "篩選" @@ -1009,7 +1064,7 @@ msgstr "篩選" msgid "Finished" msgstr "完成" -#: src/views/preference/components/AddPasskey.vue:77 +#: src/views/preference/components/AddPasskey.vue:71 msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." @@ -1024,15 +1079,15 @@ msgstr "" msgid "For Chinese user: https://mirror.ghproxy.com/" msgstr "中國使用者:https://mirror.ghproxy.com/" -#: src/views/config/ConfigEditor.vue:218 +#: src/views/config/ConfigEditor.vue:216 msgid "Format Code" msgstr "格式化程式碼" -#: src/views/config/ConfigEditor.vue:185 +#: src/views/config/ConfigEditor.vue:183 msgid "Format error %{msg}" msgstr "格式錯誤 %{msg}" -#: src/views/config/ConfigEditor.vue:183 +#: src/views/config/ConfigEditor.vue:181 msgid "Format successfully" msgstr "成功格式化" @@ -1048,7 +1103,7 @@ msgstr "產生" msgid "Generating private key for registering account" msgstr "產生註冊帳號的私鑰" -#: src/views/environment/BatchUpgrader.vue:180 src/views/system/Upgrade.vue:171 +#: src/views/environment/BatchUpgrader.vue:178 src/views/system/Upgrade.vue:169 msgid "Get release information error" msgstr "取得發布資訊錯誤" @@ -1092,7 +1147,7 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "如果留空,將使用默認的 CA Dir。" -#: src/views/preference/AuthSettings.vue:119 +#: src/views/preference/AuthSettings.vue:117 msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." @@ -1100,13 +1155,13 @@ msgstr "" "如果來自某個 IP 的登錄失敗次數在禁止閾值分鐘內達到最大嘗試次數,該 IP 將被禁" "止一段時間。" -#: src/views/preference/components/TOTP.vue:110 +#: src/views/preference/components/TOTP.vue:105 msgid "" "If you lose your mobile phone, you can use the recovery code to reset your " "2FA." msgstr "如果您丟失了手機,可以使用恢復碼重置您的多重因素驗證驗證。" -#: src/views/preference/components/AddPasskey.vue:76 +#: src/views/preference/components/AddPasskey.vue:70 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." msgstr "" @@ -1120,14 +1175,10 @@ msgstr "如果您的域名有 CNAME 記錄且無法獲取證書,您需要啟 msgid "Import" msgstr "導入" -#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:174 src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "導入憑證" -#: src/views/other/Login.vue:78 -msgid "Incorrect username or password" -msgstr "使用者名稱或密碼不正確" - #: src/components/StdDesign/StdDetail/StdDetail.vue:81 #: src/constants/index.ts:18 src/views/notification/notificationColumns.tsx:29 msgid "Info" @@ -1141,16 +1192,16 @@ msgstr "初始化核心升級程式錯誤" msgid "Initialing core upgrader" msgstr "正在初始化核心升級程式" -#: src/views/preference/components/TOTP.vue:157 +#: src/views/preference/components/TOTP.vue:152 msgid "Input the code from the app:" msgstr "請輸入應用程式中的代碼:" -#: src/components/TwoFA/Authorization.vue:87 -#: src/views/preference/components/TOTP.vue:170 +#: src/components/TwoFA/Authorization.vue:82 +#: src/views/preference/components/TOTP.vue:165 msgid "Input the recovery code:" msgstr "輸入恢復碼:" -#: src/routes/index.ts:312 src/views/other/Install.vue:136 +#: src/routes/index.ts:312 src/views/other/Install.vue:134 msgid "Install" msgstr "安裝" @@ -1166,23 +1217,29 @@ msgstr "間隔" msgid "Invalid" msgstr "無效" -#: src/views/other/Login.vue:88 -msgid "Invalid 2FA or recovery code" -msgstr "無效的多重因素驗證或恢復碼" - -#: src/views/config/components/Rename.vue:66 -#: src/views/config/ConfigEditor.vue:252 +#: src/views/config/components/Rename.vue:64 +#: src/views/config/ConfigEditor.vue:250 msgid "Invalid filename" msgstr "無效的檔案名" -#: src/views/config/components/Mkdir.vue:59 +#: src/views/config/components/Mkdir.vue:57 msgid "Invalid folder name" msgstr "無效的資料夾名稱" +#: src/constants/errors/user.ts:4 +#, fuzzy +msgid "Invalid otp code" +msgstr "無效的多重因素驗證或恢復碼" + #: src/components/TwoFA/use2FAModal.ts:61 msgid "Invalid passcode or recovery code" msgstr "無效的密碼或恢復碼" +#: src/constants/errors/user.ts:5 +#, fuzzy +msgid "Invalid recovery code" +msgstr "無效的多重因素驗證或恢復碼" + #: src/views/preference/AuthSettings.vue:14 msgid "IP" msgstr "IP" @@ -1212,11 +1269,11 @@ msgstr "Jwt Secret" msgid "Key Type" msgstr "密鑰類型" -#: src/views/system/Upgrade.vue:181 +#: src/views/system/Upgrade.vue:179 msgid "Last checked at" msgstr "上次檢查時間" -#: src/views/preference/components/Passkey.vue:102 +#: src/views/preference/components/Passkey.vue:96 #, fuzzy msgid "Last used at" msgstr "上次檢查時間" @@ -1229,7 +1286,7 @@ msgstr "留空表示不修改" msgid "Leave blank for the default: https://api.openai.com/" msgstr "預設留空:https://api.openai.com/" -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:83 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79 #, fuzzy msgid "Leave blank if do not want to modify" msgstr "留空表示不修改" @@ -1239,8 +1296,8 @@ msgstr "留空表示不修改" msgid "Leave blank if you don't need this." msgstr "留空表示不修改" -#: src/views/certificate/CertificateEditor.vue:221 -#: src/views/certificate/CertificateEditor.vue:234 +#: src/views/certificate/CertificateEditor.vue:220 +#: src/views/certificate/CertificateEditor.vue:233 msgid "Leave blank will not change anything" msgstr "留空將不會改變任何內容" @@ -1257,7 +1314,7 @@ msgstr "開源授權" msgid "Link Start" msgstr "連結開始" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:178 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173 msgid "List" msgstr "列表" @@ -1265,7 +1322,7 @@ msgstr "列表" msgid "Load Average:" msgstr "負載平均值:" -#: src/views/environment/Environment.vue:39 +#: src/views/environment/Environment.vue:37 msgid "Load from settings" msgstr "從設置加載" @@ -1286,15 +1343,15 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:244 +#: src/views/certificate/CertificateEditor.vue:243 msgid "Log" msgstr "日誌" -#: src/routes/index.ts:318 src/views/other/Login.vue:246 +#: src/routes/index.ts:318 src/views/other/Login.vue:222 msgid "Login" msgstr "登入" -#: src/views/other/Login.vue:132 src/views/other/Login.vue:65 +#: src/views/other/Login.vue:114 src/views/other/Login.vue:65 msgid "Login successful" msgstr "登入成功" @@ -1302,7 +1359,7 @@ msgstr "登入成功" msgid "Logout successful" msgstr "登出成功" -#: src/views/preference/Preference.vue:179 +#: src/views/preference/Preference.vue:176 msgid "Logrotate" msgstr "Logrotate" @@ -1328,15 +1385,15 @@ msgstr "" "在取得憑證前,請確保您已將 .well-known 目錄反向代理到 HTTPChallengePort。" #: src/routes/index.ts:108 src/views/config/ConfigEditor.vue:102 -#: src/views/config/ConfigEditor.vue:141 src/views/config/ConfigList.vue:69 +#: src/views/config/ConfigEditor.vue:139 src/views/config/ConfigList.vue:69 msgid "Manage Configs" msgstr "管理設定" -#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:98 +#: src/routes/index.ts:47 src/views/site/site_list/SiteList.vue:94 msgid "Manage Sites" msgstr "管理網站" -#: src/routes/index.ts:89 src/views/stream/StreamList.vue:119 +#: src/routes/index.ts:89 src/views/stream/StreamList.vue:115 msgid "Manage Streams" msgstr "管理 Stream" @@ -1348,7 +1405,7 @@ msgstr "管理使用者" msgid "Managed Certificate" msgstr "受管理的憑證" -#: src/views/preference/AuthSettings.vue:109 +#: src/views/preference/AuthSettings.vue:107 msgid "Max Attempts" msgstr "最大嘗試次數" @@ -1370,13 +1427,13 @@ msgid "Model" msgstr "模型" #: src/components/ChatGPT/ChatGPT.vue:256 -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498 #: src/views/config/ConfigList.vue:158 msgid "Modify" msgstr "修改" -#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:86 +#: src/routes/index.ts:164 src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "修改憑證" @@ -1384,7 +1441,7 @@ msgstr "修改憑證" msgid "Modify Config" msgstr "修改設定" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "Modify Mode" msgstr "修改模式" @@ -1393,20 +1450,20 @@ msgid "Multi-line Directive" msgstr "多行指令" #: src/views/certificate/ACMEUser.vue:13 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/CertificateEditor.vue:160 #: src/views/certificate/CertificateList/certColumns.tsx:10 #: src/views/certificate/DNSCredential.vue:11 -#: src/views/config/components/Mkdir.vue:66 src/views/config/configColumns.ts:8 -#: src/views/config/ConfigEditor.vue:258 src/views/environment/envColumns.tsx:9 -#: src/views/preference/components/AddPasskey.vue:81 +#: src/views/config/components/Mkdir.vue:64 src/views/config/configColumns.ts:8 +#: src/views/config/ConfigEditor.vue:256 src/views/environment/envColumns.tsx:9 +#: src/views/preference/components/AddPasskey.vue:75 #: src/views/site/ngx_conf/NgxUpstream.vue:177 #: src/views/site/site_category/columns.ts:7 #: src/views/site/site_edit/RightSettings.vue:88 #: src/views/site/site_list/columns.tsx:13 -#: src/views/site/site_list/SiteDuplicate.vue:81 +#: src/views/site/site_list/SiteDuplicate.vue:79 #: src/views/stream/components/RightSettings.vue:82 #: src/views/stream/components/StreamDuplicate.vue:128 -#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:187 +#: src/views/stream/StreamList.vue:13 src/views/stream/StreamList.vue:181 msgid "Name" msgstr "名稱" @@ -1426,15 +1483,15 @@ msgstr "下載流量" msgid "Network Total Send" msgstr "上傳流量" -#: src/views/config/components/Rename.vue:74 +#: src/views/config/components/Rename.vue:72 msgid "New name" msgstr "新名稱" -#: src/views/config/ConfigEditor.vue:271 +#: src/views/config/ConfigEditor.vue:269 msgid "New Path" msgstr "新路徑" -#: src/views/system/Upgrade.vue:210 +#: src/views/system/Upgrade.vue:208 msgid "New version released" msgstr "新版本發布" @@ -1444,7 +1501,7 @@ msgstr "新版本發布" msgid "Next" msgstr "下一步" -#: src/views/preference/Preference.vue:167 +#: src/views/preference/Preference.vue:164 msgid "Nginx" msgstr "Nginx" @@ -1460,6 +1517,22 @@ msgstr "" msgid "Nginx Conf Include Streams Enabled" msgstr "" +#: src/constants/errors/self_check.ts:5 +msgid "Nginx conf no http block" +msgstr "" + +#: src/constants/errors/self_check.ts:7 +msgid "Nginx conf no stream block" +msgstr "" + +#: src/constants/errors/self_check.ts:6 +msgid "Nginx conf not include sites-enabled" +msgstr "" + +#: src/constants/errors/self_check.ts:8 +msgid "Nginx conf not include stream-enabled" +msgstr "" + #: src/views/site/site_edit/SiteEdit.vue:223 #: src/views/stream/StreamEdit.vue:207 msgid "Nginx Configuration Parse Error" @@ -1470,7 +1543,7 @@ msgstr "Nginx 設定解析錯誤" msgid "Nginx Configurations Directory" msgstr "Nginx 設定解析錯誤" -#: src/components/NginxControl/NginxControl.vue:68 +#: src/components/NginxControl/NginxControl.vue:64 msgid "Nginx Control" msgstr "Nginx 控制元件" @@ -1508,24 +1581,24 @@ msgstr "Nginx 重新載入成功" msgid "Nginx Restart Command" msgstr "終端機啟動指令" -#: src/components/NginxControl/NginxControl.vue:42 +#: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" msgstr "Nginx 重啟成功" #: src/components/ChatGPT/ChatGPT.vue:277 -#: src/components/Notification/Notification.vue:133 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:67 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 -#: src/views/notification/Notification.vue:38 -#: src/views/preference/AuthSettings.vue:138 +#: src/components/Notification/Notification.vue:128 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538 +#: src/views/notification/Notification.vue:36 +#: src/views/preference/AuthSettings.vue:136 #: src/views/preference/CertSettings.vue:70 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97 #: src/views/site/ngx_conf/LocationEditor.vue:90 -#: src/views/site/site_list/SiteList.vue:148 -#: src/views/stream/StreamList.vue:164 +#: src/views/site/site_list/SiteList.vue:142 +#: src/views/stream/StreamList.vue:158 msgid "No" msgstr "取消" @@ -1561,11 +1634,11 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:27 msgid "Notification" msgstr "通知" -#: src/components/Notification/Notification.vue:131 src/routes/index.ts:248 +#: src/components/Notification/Notification.vue:126 src/routes/index.ts:248 msgid "Notifications" msgstr "通知" @@ -1593,27 +1666,27 @@ msgstr "OCSP 必須裝訂可能會導致某些用戶在首次使用 Firefox 訪 msgid "Offline" msgstr "離線" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:181 msgid "Ok" msgstr "確定" #: src/components/ChatGPT/ChatGPT.vue:278 -#: src/components/Notification/Notification.vue:134 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:97 -#: src/views/notification/Notification.vue:39 +#: src/components/Notification/Notification.vue:129 +#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95 +#: src/views/notification/Notification.vue:37 #: src/views/site/cert/components/ObtainCert.vue:139 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50 #: src/views/site/ngx_conf/NgxServer.vue:79 #: src/views/site/ngx_conf/NgxUpstream.vue:33 #: src/views/site/site_edit/RightSettings.vue:54 -#: src/views/site/site_list/SiteList.vue:149 +#: src/views/site/site_list/SiteList.vue:143 #: src/views/stream/components/Deploy.vue:19 #: src/views/stream/components/RightSettings.vue:50 -#: src/views/stream/StreamList.vue:165 +#: src/views/stream/StreamList.vue:159 msgid "OK" msgstr "確定" @@ -1628,19 +1701,19 @@ msgstr "驗證完成後,記錄將被刪除。" msgid "Online" msgstr "線上" -#: src/views/preference/Preference.vue:173 +#: src/views/preference/Preference.vue:170 msgid "OpenAI" msgstr "OpenAI" -#: src/components/TwoFA/Authorization.vue:117 src/views/other/Login.vue:255 +#: src/components/TwoFA/Authorization.vue:112 src/views/other/Login.vue:231 msgid "Or" msgstr "" -#: src/views/config/components/Rename.vue:70 +#: src/views/config/components/Rename.vue:68 msgid "Original name" msgstr "原始名稱" -#: src/views/system/Upgrade.vue:177 +#: src/views/system/Upgrade.vue:175 msgid "OS" msgstr "作業系統" @@ -1648,12 +1721,17 @@ msgstr "作業系統" msgid "OS:" msgstr "作業系統:" -#: src/views/config/ConfigEditor.vue:296 +#: src/constants/errors/user.ts:8 +#, fuzzy +msgid "Otp or recovery code empty" +msgstr "使用恢復碼" + +#: src/views/config/ConfigEditor.vue:294 #: src/views/stream/components/Deploy.vue:84 msgid "Overwrite" msgstr "覆蓋" -#: src/views/config/ConfigEditor.vue:300 +#: src/views/config/ConfigEditor.vue:298 #: src/views/stream/components/Deploy.vue:88 msgid "Overwrite exist file" msgstr "覆蓋現有檔案" @@ -1662,36 +1740,49 @@ msgstr "覆蓋現有檔案" msgid "Params" msgstr "參數" -#: src/views/preference/components/Passkey.vue:65 +#: src/views/preference/components/Passkey.vue:59 msgid "Passkey" msgstr "" -#: src/views/preference/components/Passkey.vue:68 +#: src/views/preference/components/Passkey.vue:62 msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -#: src/views/other/Login.vue:207 src/views/user/userColumns.tsx:18 +#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18 msgid "Password" msgstr "密碼" -#: src/views/other/Install.vue:110 +#: src/views/other/Install.vue:108 msgid "Password (*)" msgstr "密碼 (*)" +#: src/constants/errors/user.ts:2 +#, fuzzy +msgid "Password incorrect" +msgstr "使用者名稱或密碼不正確" + #: src/views/other/Install.vue:48 msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/config/ConfigEditor.vue:265 +#: src/views/config/ConfigEditor.vue:263 #: src/views/site/ngx_conf/LocationEditor.vue:111 #: src/views/site/ngx_conf/LocationEditor.vue:139 msgid "Path" msgstr "路徑" -#: src/views/environment/BatchUpgrader.vue:235 +#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2 +msgid "Path: {0} is not under the nginx conf dir: {1}" +msgstr "" + +#: src/constants/errors/cert.ts:6 +msgid "Payload resource is nil" +msgstr "" + +#: src/views/environment/BatchUpgrader.vue:233 msgid "Perform" msgstr "執行" @@ -1703,13 +1794,17 @@ msgstr "執行核心升級錯誤" msgid "Performing core upgrade" msgstr "正在執行核心升級" -#: src/views/preference/components/AddPasskey.vue:75 +#: src/constants/errors/crypto.ts:2 +msgid "Plain text is empty" +msgstr "" + +#: src/views/preference/components/AddPasskey.vue:69 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" -#: src/components/TwoFA/Authorization.vue:75 +#: src/components/TwoFA/Authorization.vue:70 #, fuzzy msgid "Please enter the OTP code:" msgstr "請輸入多重因素驗證碼:" @@ -1720,7 +1815,7 @@ msgid "" "provider." msgstr "請填寫您的 DNS 提供商提供的 API 認證憑據。" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:107 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106 msgid "Please fill in the required fields" msgstr "請填寫必填欄位" @@ -1732,12 +1827,12 @@ msgstr "" "請先在「憑證」 > 「DNS 認證」中新增認證,然後選擇以下認證之一以請求 DNS 供應" "商的 API。" -#: src/views/config/components/Rename.vue:65 -#: src/views/config/ConfigEditor.vue:251 +#: src/views/config/components/Rename.vue:63 +#: src/views/config/ConfigEditor.vue:249 msgid "Please input a filename" msgstr "請輸入檔案名稱" -#: src/views/config/components/Mkdir.vue:58 +#: src/views/config/components/Mkdir.vue:56 msgid "Please input a folder name" msgstr "請輸入資料夾名稱" @@ -1771,7 +1866,7 @@ msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "請注意,以下時間配置單位均為秒。" -#: src/views/environment/Environment.vue:47 +#: src/views/environment/Environment.vue:45 #, fuzzy msgid "Please select at least one node to upgrade" msgstr "請至少選擇一個節點!" @@ -1792,13 +1887,13 @@ msgid "Please upgrade the remote Nginx UI to the latest version" msgstr "" "同步配置 %{cert_name} 到 %{env_name} 失敗,請將遠程 Nginx UI 升級到最新版本" -#: src/views/environment/BatchUpgrader.vue:170 -#: src/views/environment/BatchUpgrader.vue:223 src/views/system/Upgrade.vue:196 -#: src/views/system/Upgrade.vue:247 +#: src/views/environment/BatchUpgrader.vue:168 +#: src/views/environment/BatchUpgrader.vue:221 src/views/system/Upgrade.vue:194 +#: src/views/system/Upgrade.vue:245 msgid "Pre-release" msgstr "預先發布" -#: src/routes/index.ts:266 src/views/preference/Preference.vue:144 +#: src/routes/index.ts:266 src/views/preference/Preference.vue:141 msgid "Preference" msgstr "偏好設定" @@ -1846,24 +1941,24 @@ msgid "Recheck" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533 msgid "Recover" msgstr "恢復" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:191 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189 msgid "Recovered Successfully" msgstr "恢復成功" -#: src/components/TwoFA/Authorization.vue:94 -#: src/views/preference/components/TOTP.vue:177 +#: src/components/TwoFA/Authorization.vue:89 +#: src/views/preference/components/TOTP.vue:172 msgid "Recovery" msgstr "恢復" -#: src/views/preference/components/TOTP.vue:103 +#: src/views/preference/components/TOTP.vue:98 msgid "Recovery Code" msgstr "恢復碼" -#: src/views/preference/components/TOTP.vue:112 +#: src/views/preference/components/TOTP.vue:107 msgid "Recovery Code:" msgstr "恢復碼:" @@ -1894,7 +1989,7 @@ msgstr "註冊失敗" msgid "Register On Startup" msgstr "註冊狀態" -#: src/views/preference/components/AddPasskey.vue:26 +#: src/views/preference/components/AddPasskey.vue:25 #, fuzzy msgid "Register passkey successfully" msgstr "註冊成功" @@ -1911,20 +2006,20 @@ msgstr "註冊使用者中" msgid "Registration Status" msgstr "註冊狀態" -#: src/views/system/Upgrade.vue:228 +#: src/views/system/Upgrade.vue:226 msgid "Reinstall" msgstr "重新安裝" -#: src/views/system/Upgrade.vue:251 +#: src/views/system/Upgrade.vue:249 msgid "Release Note" msgstr "發行公告" #: src/components/ChatGPT/ChatGPT.vue:266 -#: src/components/NginxControl/NginxControl.vue:103 +#: src/components/NginxControl/NginxControl.vue:99 msgid "Reload" msgstr "重新載入" -#: src/components/NginxControl/NginxControl.vue:77 +#: src/components/NginxControl/NginxControl.vue:73 msgid "Reloading" msgstr "重新載入中" @@ -1932,7 +2027,7 @@ msgstr "重新載入中" msgid "Reloading nginx" msgstr "正在重新載入 Nginx" -#: src/views/preference/AuthSettings.vue:143 +#: src/views/preference/AuthSettings.vue:141 msgid "Remove" msgstr "移除" @@ -1947,19 +2042,19 @@ msgid "Remove Site %{site} from %{node} successfully" msgstr "成功複製 %{conf_name} 到 %{node_name}" #: src/views/preference/AuthSettings.vue:47 -#: src/views/preference/components/Passkey.vue:50 +#: src/views/preference/components/Passkey.vue:46 msgid "Remove successfully" msgstr "移除成功" -#: src/components/Notification/Notification.vue:100 +#: src/components/Notification/Notification.vue:97 msgid "Removed successfully" msgstr "移除成功" -#: src/views/config/components/ConfigName.vue:50 -#: src/views/config/components/Rename.vue:56 -#: src/views/config/ConfigList.vue:166 +#: src/views/config/components/ConfigName.vue:48 +#: src/views/config/components/Rename.vue:54 +#: src/views/config/ConfigList.vue:165 #: src/views/site/ngx_conf/NgxUpstream.vue:125 -#: src/views/site/site_edit/components/ConfigName.vue:46 +#: src/views/site/site_edit/components/ConfigName.vue:44 msgid "Rename" msgstr "重命名" @@ -2033,31 +2128,31 @@ msgstr "更新成功" msgid "Requested with wrong parameters" msgstr "請求參數錯誤" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442 msgid "Reset" msgstr "重設" -#: src/views/preference/components/TOTP.vue:132 +#: src/views/preference/components/TOTP.vue:127 msgid "Reset 2FA" msgstr "重置多重因素驗證" -#: src/components/NginxControl/NginxControl.vue:96 +#: src/components/NginxControl/NginxControl.vue:92 msgid "Restart" msgstr "重新啟動" -#: src/components/NginxControl/NginxControl.vue:82 +#: src/components/NginxControl/NginxControl.vue:78 msgid "Restarting" msgstr "正在重新啟動" -#: src/views/preference/AuthSettings.vue:81 +#: src/views/preference/AuthSettings.vue:79 msgid "RP Display Name" msgstr "" -#: src/views/preference/AuthSettings.vue:87 +#: src/views/preference/AuthSettings.vue:85 msgid "RP Origins" msgstr "" -#: src/views/preference/AuthSettings.vue:75 +#: src/views/preference/AuthSettings.vue:73 msgid "RPID" msgstr "" @@ -2065,20 +2160,20 @@ msgstr "" msgid "Run Mode" msgstr "執行模式" -#: src/components/NginxControl/NginxControl.vue:72 +#: src/components/NginxControl/NginxControl.vue:68 msgid "Running" msgstr "執行中" #: src/components/ChatGPT/ChatGPT.vue:259 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:68 +#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64 #: src/components/StdDesign/StdDetail/StdDetail.vue:93 -#: src/views/certificate/CertificateEditor.vue:263 -#: src/views/config/components/ConfigName.vue:58 -#: src/views/config/ConfigEditor.vue:224 -#: src/views/preference/components/Passkey.vue:136 -#: src/views/preference/Preference.vue:190 +#: src/views/certificate/CertificateEditor.vue:262 +#: src/views/config/components/ConfigName.vue:56 +#: src/views/config/ConfigEditor.vue:222 +#: src/views/preference/components/Passkey.vue:130 +#: src/views/preference/Preference.vue:187 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127 -#: src/views/site/site_edit/components/ConfigName.vue:54 +#: src/views/site/site_edit/components/ConfigName.vue:52 #: src/views/site/site_edit/SiteEdit.vue:271 #: src/views/stream/StreamEdit.vue:252 msgid "Save" @@ -2088,7 +2183,7 @@ msgstr "儲存" msgid "Save Directive" msgstr "儲存指令" -#: src/views/config/ConfigEditor.vue:173 +#: src/views/config/ConfigEditor.vue:171 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41 #: src/views/site/SiteAdd.vue:46 msgid "Save error %{msg}" @@ -2121,14 +2216,14 @@ msgstr "成功複製 %{conf_name} 到 %{node_name}" msgid "Save successfully" msgstr "儲存成功" -#: src/views/config/ConfigEditor.vue:169 +#: src/views/config/ConfigEditor.vue:167 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39 #: src/views/site/site_edit/SiteEdit.vue:152 src/views/site/SiteAdd.vue:37 #: src/views/stream/StreamEdit.vue:138 msgid "Saved successfully" msgstr "儲存成功" -#: src/views/preference/components/TOTP.vue:93 +#: src/views/preference/components/TOTP.vue:88 msgid "Scan the QR code with your mobile phone to add the account to the app." msgstr "用手機掃描二維碼將賬戶添加到應用程序中。" @@ -2136,7 +2231,7 @@ msgstr "用手機掃描二維碼將賬戶添加到應用程序中。" msgid "SDK" msgstr "SDK" -#: src/views/preference/components/TOTP.vue:149 +#: src/views/preference/components/TOTP.vue:144 msgid "Secret has been copied" msgstr "" @@ -2153,28 +2248,7 @@ msgstr "" msgid "Send" msgstr "傳送" -#: src/components/NginxControl/NginxControl.vue:32 -#: src/components/NginxControl/NginxControl.vue:48 -#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:44 -#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:124 -#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:53 -#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:70 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:194 -#: src/lib/http/index.ts:128 src/views/config/components/Mkdir.vue:38 -#: src/views/config/components/Rename.vue:45 -#: src/views/config/ConfigEditor.vue:111 -#: src/views/environment/BatchUpgrader.vue:59 -#: src/views/environment/Environment.vue:15 src/views/other/Install.vue:70 -#: src/views/preference/AuthSettings.vue:49 -#: src/views/preference/components/Passkey.vue:26 -#: src/views/preference/components/Passkey.vue:43 -#: src/views/preference/components/Passkey.vue:56 -#: src/views/preference/components/TOTP.vue:44 -#: src/views/preference/components/TOTP.vue:57 -#: src/views/preference/Preference.vue:117 -#: src/views/site/site_list/SiteList.vue:40 -#: src/views/site/site_list/SiteList.vue:72 src/views/stream/StreamList.vue:113 -#: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42 +#: src/lib/http/index.ts:128 msgid "Server error" msgstr "伺服器錯誤" @@ -2190,6 +2264,15 @@ msgstr "在指令中未找到 server_name" msgid "server_name parameter is required" msgstr "必須提供 server_name 參數" +#: src/constants/errors/nginx_log.ts:3 +msgid "ServerIdx out of range" +msgstr "" + +#: src/constants/errors/user.ts:9 +#, fuzzy +msgid "Session not found" +msgstr "找不到檔案" + #: src/views/preference/CertSettings.vue:33 msgid "" "Set the recursive nameservers to override the systems nameservers for the " @@ -2208,11 +2291,23 @@ msgstr "設定環境變數中" msgid "Setting HTTP01 challenge provider" msgstr "使用 HTTP01 挑戰提供者" +#: src/constants/errors/nginx_log.ts:8 +msgid "" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + +#: src/constants/errors/nginx_log.ts:7 +msgid "" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://" +"nginxui.com/guide/config-nginx.html for more information" +msgstr "" + #: src/components/SensitiveString/SensitiveString.vue:40 msgid "Show" msgstr "顯示" -#: src/views/other/Login.vue:264 +#: src/views/other/Login.vue:240 msgid "Sign in with a passkey" msgstr "" @@ -2224,10 +2319,20 @@ msgstr "單一指令" msgid "Site Categories" msgstr "" +#: src/constants/errors/site.ts:4 +#, fuzzy +msgid "Site is enabled" +msgstr "自動憑證" + #: src/routes/index.ts:224 msgid "Site Logs" msgstr "網站日誌" +#: src/constants/errors/site.ts:2 +#, fuzzy +msgid "Site not found" +msgstr "找不到檔案" + #: src/views/system/SelfCheck/tasks.ts:3 #, fuzzy msgid "Sites Directory" @@ -2237,29 +2342,37 @@ msgstr "目錄" msgid "Sites List" msgstr "網站列表" -#: src/views/certificate/CertificateEditor.vue:212 +#: src/constants/errors/self_check.ts:10 +msgid "Sites-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:11 +msgid "Sites-enabled directory not exist" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Content" msgstr "SSL 憑證內容" -#: src/views/certificate/CertificateEditor.vue:225 +#: src/views/certificate/CertificateEditor.vue:224 msgid "SSL Certificate Key Content" msgstr "SSL 憑證金鑰內容" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:190 msgid "SSL Certificate Key Path" msgstr "SSL 憑證金鑰路徑" -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/CertificateEditor.vue:175 msgid "SSL Certificate Path" msgstr "SSL 憑證路徑" -#: src/views/other/Login.vue:222 +#: src/views/other/Login.vue:198 msgid "SSO Login" msgstr "SSO 登錄" -#: src/views/environment/BatchUpgrader.vue:167 -#: src/views/environment/BatchUpgrader.vue:217 src/views/system/Upgrade.vue:193 -#: src/views/system/Upgrade.vue:241 +#: src/views/environment/BatchUpgrader.vue:165 +#: src/views/environment/BatchUpgrader.vue:215 src/views/system/Upgrade.vue:191 +#: src/views/system/Upgrade.vue:239 msgid "Stable" msgstr "穩定" @@ -2270,7 +2383,7 @@ msgstr "穩定" msgid "Status" msgstr "狀態" -#: src/components/NginxControl/NginxControl.vue:87 +#: src/components/NginxControl/NginxControl.vue:83 msgid "Stopped" msgstr "已停止" @@ -2284,6 +2397,15 @@ msgstr "儲存空間" msgid "Streams Directory" msgstr "目錄" +#: src/constants/errors/self_check.ts:12 +msgid "Streams-available directory not exist" +msgstr "" + +#: src/constants/errors/self_check.ts:13 +#, fuzzy +msgid "Streams-enabled directory not exist" +msgstr "目錄" + #: src/constants/index.ts:19 src/views/notification/notificationColumns.tsx:36 msgid "Success" msgstr "成功" @@ -2309,7 +2431,7 @@ msgstr "切換到深色主題" msgid "Switch to light theme" msgstr "切換到淺色主題" -#: src/views/config/components/Rename.vue:81 +#: src/views/config/components/Rename.vue:79 msgid "Sync" msgstr "同步" @@ -2367,7 +2489,7 @@ msgstr "同步到" msgid "Sync strategy" msgstr "同步憑證" -#: src/views/certificate/CertificateEditor.vue:205 +#: src/views/certificate/CertificateEditor.vue:204 msgid "Sync to" msgstr "同步到" @@ -2387,6 +2509,11 @@ msgstr "系統初始使用者" msgid "Target" msgstr "目標" +#: src/constants/errors/self_check.ts:2 +#, fuzzy +msgid "Task not found" +msgstr "找不到檔案" + #: src/routes/index.ts:194 src/views/terminal/Terminal.vue:114 msgid "Terminal" msgstr "終端機" @@ -2415,14 +2542,19 @@ msgid "" "dashes, colons, and dots." msgstr "模型名稱應僅包含字母、Unicode、數字、連字號、破折號和點。" -#: src/views/certificate/CertificateEditor.vue:215 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate" msgstr "輸入的不是 SSL 憑證" -#: src/views/certificate/CertificateEditor.vue:228 +#: src/views/certificate/CertificateEditor.vue:227 msgid "The input is not a SSL Certificate Key" msgstr "輸入的不是 SSL 憑證金鑰" +#: src/constants/errors/nginx_log.ts:2 +msgid "" +"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +msgstr "" + #: src/views/preference/OpenAISettings.vue:35 #, fuzzy msgid "" @@ -2437,11 +2569,11 @@ msgid "" "dashes, colons, and dots." msgstr "模型名稱應僅包含字母、Unicode、數字、連字號、破折號和點。" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:179 msgid "The path exists, but the file is not a certificate" msgstr "路徑存在,但檔案不是憑證" -#: src/views/certificate/CertificateEditor.vue:195 +#: src/views/certificate/CertificateEditor.vue:194 msgid "The path exists, but the file is not a private key" msgstr "路徑存在,但檔案不是金鑰" @@ -2452,7 +2584,7 @@ msgid "" "hyphens, dashes, colons, and dots." msgstr "伺服器名稱應僅包含字母、Unicode、數字、連字符、破折號和點。" -#: src/views/preference/components/TOTP.vue:111 +#: src/views/preference/components/TOTP.vue:106 msgid "" "The recovery code is only displayed once, please save it in a safe place." msgstr "恢復碼僅顯示一次,請將其保存在安全的地方。" @@ -2486,17 +2618,17 @@ msgstr "網址無效。" msgid "The username or password is incorrect" msgstr "使用者名稱或密碼不正確" -#: src/views/certificate/CertificateEditor.vue:103 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "此自動憑證項目無效,請將其移除。" -#: src/views/certificate/CertificateEditor.vue:93 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "此憑證由 Nginx UI 管理" -#: src/views/certificate/CertificateEditor.vue:164 -#: src/views/certificate/CertificateEditor.vue:178 -#: src/views/certificate/CertificateEditor.vue:193 +#: src/views/certificate/CertificateEditor.vue:163 +#: src/views/certificate/CertificateEditor.vue:177 +#: src/views/certificate/CertificateEditor.vue:192 msgid "This field is required" msgstr "此字段為必填項" @@ -2525,17 +2657,17 @@ msgstr "模型名稱應僅包含字母、Unicode、數字、連字號、破折 msgid "This value is already taken" msgstr "" -#: src/views/environment/BatchUpgrader.vue:185 +#: src/views/environment/BatchUpgrader.vue:183 msgid "" "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "這將在 %{nodeNames} 上升級或重新安裝 Nginx UI 到 %{version}。" -#: src/views/preference/AuthSettings.vue:98 +#: src/views/preference/AuthSettings.vue:96 msgid "Throttle" msgstr "" -#: src/views/preference/AuthSettings.vue:118 -#: src/views/preference/components/AddPasskey.vue:71 +#: src/views/preference/AuthSettings.vue:116 +#: src/views/preference/components/AddPasskey.vue:65 #: src/views/preference/LogrotateSettings.vue:11 msgid "Tips" msgstr "提示" @@ -2544,14 +2676,14 @@ msgstr "提示" msgid "Title" msgstr "標題" -#: src/views/preference/components/TOTP.vue:92 +#: src/views/preference/components/TOTP.vue:87 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." msgstr "" "要啟用它,您需要在手機上安裝 Google 或 Microsoft Authenticator 應用程序。" -#: src/views/preference/components/AddPasskey.vue:95 +#: src/views/preference/components/AddPasskey.vue:89 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " @@ -2579,26 +2711,22 @@ msgstr "" msgid "Token is not valid" msgstr "令牌無效" -#: src/views/other/Login.vue:81 -msgid "Too many login failed attempts, please try again later" -msgstr "登錄失敗次數過多,請稍後再試" - #: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40 msgid "Total %{total} item" msgid_plural "Total %{total} items" msgstr[0] "" -#: src/views/preference/components/TOTP.vue:90 +#: src/views/preference/components/TOTP.vue:85 msgid "TOTP" msgstr "" -#: src/views/preference/components/TOTP.vue:91 +#: src/views/preference/components/TOTP.vue:86 msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." msgstr "TOTP 是一種使用基於時間的一次性密碼算法的多重因素驗證方法。" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197 msgid "Trash" msgstr "垃圾桶" @@ -2612,14 +2740,14 @@ msgstr "需要多重因素驗證" msgid "Type" msgstr "類型" -#: src/views/preference/components/Passkey.vue:41 +#: src/views/preference/components/Passkey.vue:39 #, fuzzy msgid "Update successfully" msgstr "更新成功" #: src/views/certificate/ACMEUser.vue:88 #: src/views/certificate/DNSCredential.vue:27 -#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:278 +#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:276 #: src/views/environment/envColumns.tsx:119 #: src/views/site/site_category/columns.ts:20 #: src/views/site/site_edit/RightSettings.vue:100 @@ -2633,12 +2761,12 @@ msgstr "更新時間" msgid "Updated successfully" msgstr "更新成功" -#: src/routes/index.ts:297 src/views/environment/Environment.vue:55 -#: src/views/system/Upgrade.vue:145 src/views/system/Upgrade.vue:228 +#: src/routes/index.ts:297 src/views/environment/Environment.vue:53 +#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226 msgid "Upgrade" msgstr "升級" -#: src/views/environment/BatchUpgrader.vue:140 +#: src/views/environment/BatchUpgrader.vue:138 msgid "Upgraded Nginx UI on %{node} successfully 🎉" msgstr "成功升級 %{node} 上的 Nginx UI 🎉" @@ -2646,7 +2774,7 @@ msgstr "成功升級 %{node} 上的 Nginx UI 🎉" msgid "Upgraded successfully" msgstr "升級成功" -#: src/views/environment/BatchUpgrader.vue:91 src/views/system/Upgrade.vue:79 +#: src/views/environment/BatchUpgrader.vue:89 src/views/system/Upgrade.vue:77 msgid "Upgrading Nginx UI, please wait..." msgstr "正在升級 Nginx UI,請稍候..." @@ -2662,11 +2790,11 @@ msgstr "運作時間:" msgid "URL" msgstr "URL" -#: src/components/TwoFA/Authorization.vue:107 +#: src/components/TwoFA/Authorization.vue:102 msgid "Use OTP" msgstr "使用一次性密碼" -#: src/components/TwoFA/Authorization.vue:103 +#: src/components/TwoFA/Authorization.vue:98 msgid "Use recovery code" msgstr "使用恢復碼" @@ -2674,15 +2802,20 @@ msgstr "使用恢復碼" msgid "User" msgstr "使用者名稱" -#: src/views/other/Login.vue:84 -msgid "User is banned" +#: src/constants/errors/user.ts:3 +#, fuzzy +msgid "User banned" msgstr "用戶被禁止" -#: src/views/other/Login.vue:197 src/views/user/userColumns.tsx:9 +#: src/constants/errors/user.ts:7 +msgid "User not enabled otp as 2fa" +msgstr "" + +#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9 msgid "Username" msgstr "使用者名稱" -#: src/views/other/Install.vue:100 +#: src/views/other/Install.vue:98 msgid "Username (*)" msgstr "使用者名稱 (*)" @@ -2696,26 +2829,26 @@ msgstr "有效" msgid "Version" msgstr "版本" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:494 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "檢視" -#: src/components/Notification/Notification.vue:192 +#: src/components/Notification/Notification.vue:187 msgid "View all notifications" msgstr "查看所有通知" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:156 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151 msgid "View Details" msgstr "查看詳情" -#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:267 +#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262 msgid "View Mode" msgstr "查看模式" #: src/constants/index.ts:17 src/views/config/InspectConfig.vue:33 #: src/views/notification/notificationColumns.tsx:22 -#: src/views/preference/components/AddPasskey.vue:88 +#: src/views/preference/components/AddPasskey.vue:82 #: src/views/site/SiteAdd.vue:115 msgid "Warning" msgstr "警告" @@ -2734,10 +2867,14 @@ msgstr "" "我們將從該檔案中刪除 HTTPChallenge 設定並重新載入 Nginx 設定檔案。你確定你要" "繼續嗎?" -#: src/views/preference/AuthSettings.vue:71 +#: src/views/preference/AuthSettings.vue:69 msgid "Webauthn" msgstr "" +#: src/constants/errors/user.ts:6 +msgid "WebAuthn settings are not configured" +msgstr "" + #: src/views/certificate/ACMEUser.vue:83 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -2764,31 +2901,37 @@ msgstr "將憑證私鑰寫入磁碟" msgid "Writing certificate to disk" msgstr "將憑證寫入磁碟" -#: src/views/preference/AuthSettings.vue:137 +#: src/views/preference/AuthSettings.vue:135 #: src/views/preference/CertSettings.vue:69 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96 #: src/views/site/ngx_conf/LocationEditor.vue:89 msgid "Yes" msgstr "是的" -#: src/views/system/Upgrade.vue:204 +#: src/views/system/Upgrade.vue:202 msgid "You are using the latest version" msgstr "您正在使用最新版本" -#: src/views/system/Upgrade.vue:166 +#: src/views/system/Upgrade.vue:164 msgid "You can check Nginx UI upgrade at this page." msgstr "您可以在此頁面檢查 Nginx UI 的升級。" -#: src/views/preference/components/AddPasskey.vue:93 +#: src/views/preference/components/AddPasskey.vue:87 msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "" -#: src/views/preference/components/Passkey.vue:81 +#: src/views/preference/components/Passkey.vue:75 msgid "Your passkeys" msgstr "" +#~ msgid "Incorrect username or password" +#~ msgstr "使用者名稱或密碼不正確" + +#~ msgid "Too many login failed attempts, please try again later" +#~ msgstr "登錄失敗次數過多,請稍後再試" + #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" @@ -2796,9 +2939,6 @@ msgstr "" #~ "將 %{orig_path} 重命名為 %{new_path} 在 %{env_name} 失敗,請將遠程 Nginx " #~ "UI 升級到最新版本" -#~ msgid "File not found" -#~ msgstr "找不到檔案" - #~ msgid "Server Name" #~ msgstr "伺服器名稱" @@ -2809,9 +2949,6 @@ msgstr "" #~ msgid "Rename " #~ msgstr "使用者名稱" -#~ msgid "Certificate has expired" -#~ msgstr "此憑證已過期" - #~ msgid "Certificate is valid" #~ msgstr "此憑證有效" @@ -2847,10 +2984,6 @@ msgstr "" #~ msgid "Table" #~ msgstr "表格" -#, fuzzy -#~ msgid "Auto Cert is enabled" -#~ msgstr "自動憑證" - #, fuzzy #~ msgid "Auto Cert Log" #~ msgstr "自動憑證日誌" diff --git a/app/src/views/certificate/CertificateEditor.vue b/app/src/views/certificate/CertificateEditor.vue index e598e6c3e..757533b95 100644 --- a/app/src/views/certificate/CertificateEditor.vue +++ b/app/src/views/certificate/CertificateEditor.vue @@ -52,7 +52,6 @@ async function save() { // eslint-disable-next-line ts/no-explicit-any catch (e: any) { errors.value = e.errors - message.error($gettext(e?.message ?? 'Server error')) throw e } } diff --git a/app/src/views/config/ConfigEditor.vue b/app/src/views/config/ConfigEditor.vue index 038e2d0e4..8051c2578 100644 --- a/app/src/views/config/ConfigEditor.vue +++ b/app/src/views/config/ConfigEditor.vue @@ -107,8 +107,6 @@ async function init() { translatedName: () => origName.value, hasChildren: false, }] - }).catch(r => { - message.error(r.message ?? $gettext('Server error')) }) } else { diff --git a/app/src/views/config/components/ConfigName.vue b/app/src/views/config/components/ConfigName.vue index ccb7fcefe..28606ae51 100644 --- a/app/src/views/config/components/ConfigName.vue +++ b/app/src/views/config/components/ConfigName.vue @@ -31,8 +31,6 @@ function save() { router.push({ path: `/config/${r.path}/edit`, }) - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) }).finally(() => { loading.value = false }) diff --git a/app/src/views/config/components/Mkdir.vue b/app/src/views/config/components/Mkdir.vue index db21cdc93..091199915 100644 --- a/app/src/views/config/components/Mkdir.vue +++ b/app/src/views/config/components/Mkdir.vue @@ -34,8 +34,6 @@ function ok() { message.success($gettext('Created successfully')) emit('created') - }).catch(e => { - message.error(`${$gettext('Server error')} ${e?.message}`) }) }) }) diff --git a/app/src/views/config/components/Rename.vue b/app/src/views/config/components/Rename.vue index 58dfb5183..794039bdd 100644 --- a/app/src/views/config/components/Rename.vue +++ b/app/src/views/config/components/Rename.vue @@ -41,8 +41,6 @@ function ok() { visible.value = false message.success($gettext('Rename successfully')) emit('renamed') - }).catch(e => { - message.error(`${$gettext('Server error')} ${e?.message}`) }) }) }) diff --git a/app/src/views/environment/BatchUpgrader.vue b/app/src/views/environment/BatchUpgrader.vue index 453ef28cd..ee4aea0cb 100644 --- a/app/src/views/environment/BatchUpgrader.vue +++ b/app/src/views/environment/BatchUpgrader.vue @@ -3,7 +3,6 @@ import type { Environment } from '@/api/environment' import type { Ref } from 'vue' import upgrade, { type RuntimeInfo } from '@/api/upgrade' import websocket from '@/lib/websocket' -import { message } from 'ant-design-vue' import _ from 'lodash' import { marked } from 'marked' import { useRoute } from 'vue-router' @@ -56,7 +55,6 @@ function getLatestRelease() { data.value = r }).catch(e => { getReleaseError.value = e?.message - message.error(e?.message ?? $gettext('Server error')) }).finally(() => { loading.value = false }) diff --git a/app/src/views/environment/Environment.vue b/app/src/views/environment/Environment.vue index 4cca149e8..7bcc37659 100644 --- a/app/src/views/environment/Environment.vue +++ b/app/src/views/environment/Environment.vue @@ -11,8 +11,6 @@ function loadFromSettings() { environment.load_from_settings().then(() => { curd.value.get_list() message.success($gettext('Load successfully')) - }).catch(e => { - message.error(`${$gettext('Server error')} ${e?.message}`) }) } const selectedNodeIds = ref([]) diff --git a/app/src/views/notification/Notification.vue b/app/src/views/notification/Notification.vue index 8c4b1ca52..34eef1301 100644 --- a/app/src/views/notification/Notification.vue +++ b/app/src/views/notification/Notification.vue @@ -13,8 +13,6 @@ function clear() { message.success($gettext('Cleared successfully')) curd.value?.get_list() unreadCount.value = 0 - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) }) } diff --git a/app/src/views/other/Install.vue b/app/src/views/other/Install.vue index 47dd67b1b..ba63f2832 100644 --- a/app/src/views/other/Install.vue +++ b/app/src/views/other/Install.vue @@ -66,8 +66,6 @@ function onSubmit() { install.install_nginx_ui(modelRef).then(async () => { message.success($gettext('Install successfully')) await router.push('/login') - }).catch(e => { - message.error(e.message ?? $gettext('Server error')) }).finally(() => { loading.value = false }) diff --git a/app/src/views/other/Login.vue b/app/src/views/other/Login.vue index cdabcd8dd..2407da9df 100644 --- a/app/src/views/other/Login.vue +++ b/app/src/views/other/Login.vue @@ -73,23 +73,8 @@ function onSubmit() { break } }).catch(e => { - switch (e.code) { - case 4031: - message.error($gettext('Incorrect username or password')) - break - case 4291: - message.error($gettext('Too many login failed attempts, please try again later')) - break - case 4033: - message.error($gettext('User is banned')) - break - case 4034: - refOTP.value?.clearInput() - message.error($gettext('Invalid 2FA or recovery code')) - break - default: - message.error($gettext(e.message ?? 'Server error')) - break + if (e.code === 4043) { + refOTP.value?.clearInput() } }) loading.value = false @@ -118,9 +103,6 @@ auth.get_casdoor_uri() casdoor_uri.value = r.uri } }) - .catch(e => { - message.error($gettext(e.message ?? 'Server error')) - }) function loginWithCasdoor() { window.location.href = casdoor_uri.value @@ -134,8 +116,6 @@ if (route.query?.code !== undefined && route.query?.state !== undefined) { const next = (route.query?.next || '').toString() || '/' await router.push(next) - }).catch(e => { - message.error($gettext(e.message ?? 'Server error')) }) loading.value = false } @@ -156,27 +136,23 @@ passkey.get_config_status().then(r => { const passkeyLoginLoading = ref(false) async function handlePasskeyLogin() { passkeyLoginLoading.value = true - try { - const begin = await auth.begin_passkey_login() - const asseResp = await startAuthentication({ optionsJSON: begin.options.publicKey }) - const r = await auth.finish_passkey_login({ - session_id: begin.session_id, - options: asseResp, - }) + const begin = await auth.begin_passkey_login() + const asseResp = await startAuthentication({ optionsJSON: begin.options.publicKey }) - if (r.token) { - const next = (route.query?.next || '').toString() || '/' + const r = await auth.finish_passkey_login({ + session_id: begin.session_id, + options: asseResp, + }) - passkeyLogin(asseResp.rawId, r.token) - secureSessionId.value = r.secure_session_id - await router.push(next) - } - } - // eslint-disable-next-line ts/no-explicit-any - catch (e: any) { - message.error($gettext(e.message ?? 'Server error')) + if (r.token) { + const next = (route.query?.next || '').toString() || '/' + + passkeyLogin(asseResp.rawId, r.token) + secureSessionId.value = r.secure_session_id + await router.push(next) } + passkeyLoginLoading.value = false } diff --git a/app/src/views/preference/AuthSettings.vue b/app/src/views/preference/AuthSettings.vue index e33366968..72be672d6 100644 --- a/app/src/views/preference/AuthSettings.vue +++ b/app/src/views/preference/AuthSettings.vue @@ -45,8 +45,6 @@ function removeBannedIP(ip: string) { setting.remove_banned_ip(ip).then(() => { bannedIPs.value = bannedIPs.value.filter(v => v.ip !== ip) message.success($gettext('Remove successfully')) - }).catch((e: { message?: string }) => { - message.error(e?.message ?? $gettext('Server error')) }) } diff --git a/app/src/views/preference/Preference.vue b/app/src/views/preference/Preference.vue index da53b627a..7f2300d05 100644 --- a/app/src/views/preference/Preference.vue +++ b/app/src/views/preference/Preference.vue @@ -112,9 +112,6 @@ async function save() { refAuthSettings.value?.getBannedIPs?.() message.success($gettext('Save successfully')) errors.value = {} - }).catch(e => { - errors.value = e.errors - message.error(e?.message ?? $gettext('Server error')) }) }) } diff --git a/app/src/views/preference/components/AddPasskey.vue b/app/src/views/preference/components/AddPasskey.vue index 50b51da8c..6e0300e38 100644 --- a/app/src/views/preference/components/AddPasskey.vue +++ b/app/src/views/preference/components/AddPasskey.vue @@ -14,24 +14,18 @@ const passkeyEnabled = ref(false) const regLoading = ref(false) async function registerPasskey() { regLoading.value = true - try { - const optionsJSON = await passkey.begin_registration() + const optionsJSON = await passkey.begin_registration() - const attestationResponse = await startRegistration({ optionsJSON }) + const attestationResponse = await startRegistration({ optionsJSON }) - await passkey.finish_registration(attestationResponse, passkeyName.value) + await passkey.finish_registration(attestationResponse, passkeyName.value) - emit('created') + emit('created') - message.success($gettext('Register passkey successfully')) - addPasskeyModelOpen.value = false + message.success($gettext('Register passkey successfully')) + addPasskeyModelOpen.value = false - user.passkeyRawId = attestationResponse.rawId - } - // eslint-disable-next-line ts/no-explicit-any - catch (e: any) { - message.error($gettext(e.message ?? 'Server error')) - } + user.passkeyRawId = attestationResponse.rawId regLoading.value = false } diff --git a/app/src/views/preference/components/Passkey.vue b/app/src/views/preference/components/Passkey.vue index 4b467d045..84b1c7bfe 100644 --- a/app/src/views/preference/components/Passkey.vue +++ b/app/src/views/preference/components/Passkey.vue @@ -22,8 +22,6 @@ function getList() { getListLoading.value = true passkey.get_list().then(r => { data.value = r - }).catch((e: { message?: string }) => { - message.error(e?.message ?? $gettext('Server error')) }).finally(() => { getListLoading.value = false }) @@ -39,8 +37,6 @@ function update(id: number, record: Passkey) { getList() modifyIdx.value = -1 message.success($gettext('Update successfully')) - }).catch((e: { message?: string }) => { - message.error(e?.message ?? $gettext('Server error')) }) } @@ -52,8 +48,6 @@ function remove(item: Passkey) { // if current passkey is removed, clear it from user store if (user.passkeyLoginAvailable && user.passkeyRawId === item.raw_id) user.passkeyRawId = '' - }).catch((e: { message?: string }) => { - message.error(e?.message ?? $gettext('Server error')) }) } diff --git a/app/src/views/preference/components/TOTP.vue b/app/src/views/preference/components/TOTP.vue index f1cea705c..422b6fcd6 100644 --- a/app/src/views/preference/components/TOTP.vue +++ b/app/src/views/preference/components/TOTP.vue @@ -40,8 +40,6 @@ function generateSecret() { secret.value = r.secret qrCode.value = r.qr_code refOtp.value?.clearInput() - }).catch((e: { message?: string }) => { - message.error(e.message ?? $gettext('Server error')) }) } @@ -52,9 +50,8 @@ function enroll(code: string) { clearGenerateSecretInterval() get2FAStatus() message.success($gettext('Enable 2FA successfully')) - }).catch((e: { message?: string }) => { + }).catch(() => { refOtp.value?.clearInput() - message.error(e.message ?? $gettext('Server error')) }) } @@ -79,8 +76,6 @@ function reset2FA() { recoveryCode.value = '' get2FAStatus() clickEnable2FA() - }).catch((e: { message?: string }) => { - message.error($gettext(e.message ?? 'Server error')) }) } diff --git a/app/src/views/site/site_edit/components/ConfigName.vue b/app/src/views/site/site_edit/components/ConfigName.vue index 718126d92..8a8b160b9 100644 --- a/app/src/views/site/site_edit/components/ConfigName.vue +++ b/app/src/views/site/site_edit/components/ConfigName.vue @@ -28,8 +28,6 @@ function save() { router.push({ path: `/sites/${buffer.value}`, }) - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) }).finally(() => { loading.value = false }) diff --git a/app/src/views/site/site_list/SiteDuplicate.vue b/app/src/views/site/site_list/SiteDuplicate.vue index 8add99667..1fb4be6d2 100644 --- a/app/src/views/site/site_list/SiteDuplicate.vue +++ b/app/src/views/site/site_list/SiteDuplicate.vue @@ -48,8 +48,6 @@ function onSubmit() { message.success($gettext('Duplicate to local successfully')) show.value = false emit('duplicated') - }).catch(e => { - message.error($gettext(e?.message ?? 'Server error')) }) loading.value = false diff --git a/app/src/views/site/site_list/SiteList.vue b/app/src/views/site/site_list/SiteList.vue index b32034fe4..8b52a3547 100644 --- a/app/src/views/site/site_list/SiteList.vue +++ b/app/src/views/site/site_list/SiteList.vue @@ -35,9 +35,7 @@ onMounted(async () => { return } } - // eslint-disable-next-line ts/no-explicit-any - catch (e: any) { - message.error(e?.message ?? $gettext('Server error')) + catch { return } } @@ -68,8 +66,6 @@ function destroy(site_name: string) { table.value.get_list() message.success($gettext('Delete site: %{site_name}', { site_name })) inspect_config.value?.test() - }).catch(e => { - message.error(e?.message ?? $gettext('Server error')) }) } diff --git a/app/src/views/stream/StreamList.vue b/app/src/views/stream/StreamList.vue index 6b71ab329..343d11716 100644 --- a/app/src/views/stream/StreamList.vue +++ b/app/src/views/stream/StreamList.vue @@ -77,8 +77,6 @@ function destroy(stream_name: string) { table.value.get_list() message.success($gettext('Delete stream: %{stream_name}', { stream_name })) inspect_config.value?.test() - }).catch(e => { - message.error(e?.message ?? $gettext('Server error')) }) } @@ -109,8 +107,6 @@ function handleAddStream() { showAddStream.value = false table.value?.get_list() message.success($gettext('Added successfully')) - }).catch(e => { - message.error(e?.message ?? $gettext('Server error')) }) } diff --git a/app/src/views/system/Upgrade.vue b/app/src/views/system/Upgrade.vue index b768b1427..9d7207a99 100644 --- a/app/src/views/system/Upgrade.vue +++ b/app/src/views/system/Upgrade.vue @@ -5,7 +5,6 @@ import upgrade from '@/api/upgrade' import websocket from '@/lib/websocket' import version from '@/version.json' -import { message } from 'ant-design-vue' import dayjs from 'dayjs' import { marked } from 'marked' import { useRoute } from 'vue-router' @@ -39,7 +38,6 @@ function getLatestRelease() { lastCheck.value = dayjs().format('YYYY-MM-DD HH:mm:ss') }).catch(e => { getReleaseError.value = e?.message - message.error(e?.message ?? $gettext('Server error')) }).finally(() => { loading.value = false }) diff --git a/cmd/errdef/generate.go b/cmd/errdef/generate.go new file mode 100644 index 000000000..c1a422421 --- /dev/null +++ b/cmd/errdef/generate.go @@ -0,0 +1,7 @@ +package main + +import "github.com/uozi-tech/cosy/errdef" + +func main() { + errdef.Generate() +} diff --git a/cmd/parse_ngx_index/parse_ngx_index.go b/cmd/ngx_dir_index/ngx_dir_index.go similarity index 83% rename from cmd/parse_ngx_index/parse_ngx_index.go rename to cmd/ngx_dir_index/ngx_dir_index.go index d6889c690..84e41ae5f 100644 --- a/cmd/parse_ngx_index/parse_ngx_index.go +++ b/cmd/ngx_dir_index/ngx_dir_index.go @@ -2,7 +2,7 @@ package main import ( "encoding/json" - "fmt" + "log" "net/http" "os" "strings" @@ -15,10 +15,14 @@ type Directive struct { } func main() { + if len(os.Args) < 2 { + log.Println("Usage: go run . ") + } + outputPath := os.Args[1] // Fetch page content resp, err := http.Get("https://nginx.org/en/docs/dirindex.html") if err != nil { - fmt.Println("Error fetching page:", err) + log.Println("[Error] fetching page:", err) return } defer resp.Body.Close() @@ -26,7 +30,7 @@ func main() { // Parse HTML doc, err := html.Parse(resp.Body) if err != nil { - fmt.Println("Error parsing HTML:", err) + log.Println("[Error] parsing HTML:", err) return } @@ -99,15 +103,15 @@ func main() { // Write results to JSON file jsonData, err := json.MarshalIndent(directives, "", " ") if err != nil { - fmt.Println("Error marshaling JSON:", err) + log.Println("[Error] marshaling JSON:", err) return } - err = os.WriteFile("../../internal/nginx/nginx_directives.json", jsonData, 0644) + err = os.WriteFile(outputPath, jsonData, 0644) if err != nil { - fmt.Println("Error writing file:", err) + log.Println("[Error] writing file:", err) return } - fmt.Printf("Successfully parsed %d directives and saved to nginx_directives.json\n", len(directives)) + log.Printf("[OK] Successfully parsed %d directives and saved to %s\n", len(directives), outputPath) } diff --git a/gen.sh b/gen.sh index 6d8c8192b..b1087b778 100755 --- a/gen.sh +++ b/gen.sh @@ -1,3 +1,10 @@ +# generate gen code pushd ./cmd/gen || exit go run generate.go -config ../../app.ini popd || exit + +# generate error definitions +go run cmd/errdef/generate.go . ts ./app/src/constants/errors + +# parse nginx directive indexs +go run cmd/ngx_dir_index/ngx_dir_index.go ./internal/nginx/nginx_directives.json diff --git a/go.mod b/go.mod index 5c23826df..b598084e1 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/gin-contrib/static v1.1.3 github.com/gin-gonic/gin v1.10.0 github.com/go-acme/lego/v4 v4.21.0 - github.com/go-co-op/gocron/v2 v2.14.2 + github.com/go-co-op/gocron/v2 v2.15.0 github.com/go-playground/validator/v10 v10.24.0 github.com/go-resty/resty/v2 v2.16.4 github.com/go-webauthn/webauthn v0.11.2 @@ -35,7 +35,7 @@ require ( github.com/spf13/cast v1.7.1 github.com/stretchr/testify v1.10.0 github.com/tufanbarisyildirim/gonginx v0.0.0-20250120210832-12a9c7ae0c8a - github.com/uozi-tech/cosy v1.14.1 + github.com/uozi-tech/cosy v1.14.2 github.com/uozi-tech/cosy-driver-sqlite v0.2.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.32.0 diff --git a/go.sum b/go.sum index 55541affb..83c4c8802 100644 --- a/go.sum +++ b/go.sum @@ -1027,6 +1027,8 @@ github.com/go-co-op/gocron/v2 v2.14.1 h1:bwWMkX2rNfS6RqBmUAfkDuOPKl/BRCRCrmuAv8f github.com/go-co-op/gocron/v2 v2.14.1/go.mod h1:ZF70ZwEqz0OO4RBXE1sNxnANy/zvwLcattWEFsqpKig= github.com/go-co-op/gocron/v2 v2.14.2 h1:S6CbI7MVfD3S/aPJNLoSg2YcGyEqzEMwUopDejuT4Oc= github.com/go-co-op/gocron/v2 v2.14.2/go.mod h1:ZF70ZwEqz0OO4RBXE1sNxnANy/zvwLcattWEFsqpKig= +github.com/go-co-op/gocron/v2 v2.15.0 h1:Kpvo71VSihE+RImmpA+3ta5CcMhoRzMGw4dJawrj4zo= +github.com/go-co-op/gocron/v2 v2.15.0/go.mod h1:ZF70ZwEqz0OO4RBXE1sNxnANy/zvwLcattWEFsqpKig= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk= github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= @@ -1941,6 +1943,8 @@ github.com/uozi-tech/cosy v1.13.0 h1:dDnU8f3z3AA2KamqEcpa0ObqY4YVXXsNbdxR9Hv7f0A github.com/uozi-tech/cosy v1.13.0/go.mod h1:DSKLtoVaGLUlJ8KiQ1vWEsnv85epRrAAMXSijuq+asM= github.com/uozi-tech/cosy v1.14.1 h1:Qat6Av9XhYMypeBCcagl3Pfp6LWgDRK0+lHBN/1jFY0= github.com/uozi-tech/cosy v1.14.1/go.mod h1:DSKLtoVaGLUlJ8KiQ1vWEsnv85epRrAAMXSijuq+asM= +github.com/uozi-tech/cosy v1.14.2 h1:nWTiBSAYn1yTtQeTZluK/G2OjERGs/SRaK4yVjq1IQ8= +github.com/uozi-tech/cosy v1.14.2/go.mod h1:DSKLtoVaGLUlJ8KiQ1vWEsnv85epRrAAMXSijuq+asM= github.com/uozi-tech/cosy-driver-mysql v0.2.2 h1:22S/XNIvuaKGqxQPsYPXN8TZ8hHjCQdcJKVQ83Vzxoo= github.com/uozi-tech/cosy-driver-mysql v0.2.2/go.mod h1:EZnRIbSj1V5U0gEeTobrXai/d1SV11lkl4zP9NFEmyE= github.com/uozi-tech/cosy-driver-postgres v0.2.1 h1:OICakGuT+omva6QOJCxTJ5Lfr7CGXLmk/zD+aS51Z2o= diff --git a/internal/cert/auto_cert.go b/internal/cert/auto_cert.go index 8a5c73d75..98136b56e 100644 --- a/internal/cert/auto_cert.go +++ b/internal/cert/auto_cert.go @@ -35,7 +35,7 @@ func autoCert(certModel *model.Cert) { defer log.Exit() if len(certModel.Filename) == 0 { - log.Error(errors.New("filename is empty")) + log.Error(ErrCertModelFilenameEmpty) return } diff --git a/internal/cert/cert_info.go b/internal/cert/cert_info.go index 9ad105d63..744ad3990 100644 --- a/internal/cert/cert_info.go +++ b/internal/cert/cert_info.go @@ -5,7 +5,6 @@ import ( "encoding/pem" "github.com/0xJacky/Nginx-UI/internal/helper" "github.com/0xJacky/Nginx-UI/internal/nginx" - "github.com/pkg/errors" "os" "time" ) @@ -19,24 +18,24 @@ type Info struct { func GetCertInfo(sslCertificatePath string) (info *Info, err error) { if !helper.IsUnderDirectory(sslCertificatePath, nginx.GetConfPath()) { - err = errors.New("ssl certificate path is not under the nginx conf path") + err = ErrCertPathIsNotUnderTheNginxConfDir return } + certData, err := os.ReadFile(sslCertificatePath) if err != nil { - err = errors.Wrap(err, "error read certificate") return } block, _ := pem.Decode(certData) if block == nil || block.Type != "CERTIFICATE" { - err = errors.New("certificate decoding error") + err = ErrCertDecode return } cert, err := x509.ParseCertificate(block.Bytes) if err != nil { - err = errors.Wrap(err, "certificate parsing error") + err = ErrCertParse return } diff --git a/internal/cert/errors.go b/internal/cert/errors.go new file mode 100644 index 000000000..2a700d8d2 --- /dev/null +++ b/internal/cert/errors.go @@ -0,0 +1,13 @@ +package cert + +import "github.com/uozi-tech/cosy" + +var ( + e = cosy.NewErrorScope("cert") + ErrCertModelFilenameEmpty = e.New(50001, "filename is empty") + ErrCertPathIsNotUnderTheNginxConfDir = e.New(50002, "cert path is not under the nginx conf dir") + ErrCertDecode = e.New(50003, "certificate decode error") + ErrCertParse = e.New(50004, "certificate parse error") + ErrPayloadResourceIsNil = e.New(50005, "payload resource is nil") + ErrPathIsNotUnderTheNginxConfDir = e.New(50006, "path: {0} is not under the nginx conf dir: {1}") +) diff --git a/internal/cert/renew.go b/internal/cert/renew.go index 5e4aaaf43..52667d4b3 100644 --- a/internal/cert/renew.go +++ b/internal/cert/renew.go @@ -10,7 +10,7 @@ import ( func renew(payload *ConfigPayload, client *lego.Client, l *log.Logger, errChan chan error) { if payload.Resource == nil { - errChan <- errors.New("resource is nil") + errChan <- ErrPayloadResourceIsNil return } diff --git a/internal/cert/sync.go b/internal/cert/sync.go index c23fdf935..1c38f6246 100644 --- a/internal/cert/sync.go +++ b/internal/cert/sync.go @@ -3,7 +3,6 @@ package cert import ( "bytes" "encoding/json" - "fmt" "github.com/0xJacky/Nginx-UI/internal/helper" "github.com/0xJacky/Nginx-UI/internal/nginx" "github.com/0xJacky/Nginx-UI/internal/notification" @@ -33,13 +32,11 @@ func SyncToRemoteServer(c *model.Cert) (err error) { nginxConfPath := nginx.GetConfPath() if !helper.IsUnderDirectory(c.SSLCertificatePath, nginxConfPath) { - return fmt.Errorf("ssl_certificate_path: %s is not under the nginx conf path: %s", - c.SSLCertificatePath, nginxConfPath) + return e.NewWithParams(50006, ErrPathIsNotUnderTheNginxConfDir.Error(), c.SSLCertificatePath, nginxConfPath) } if !helper.IsUnderDirectory(c.SSLCertificateKeyPath, nginxConfPath) { - return fmt.Errorf("ssl_certificate_key_path: %s is not under the nginx conf path: %s", - c.SSLCertificateKeyPath, nginxConfPath) + return e.NewWithParams(50006, ErrPathIsNotUnderTheNginxConfDir.Error(), c.SSLCertificateKeyPath, nginxConfPath) } certBytes, err := os.ReadFile(c.SSLCertificatePath) diff --git a/internal/cert/write_file.go b/internal/cert/write_file.go index 9f114f46d..97199783a 100644 --- a/internal/cert/write_file.go +++ b/internal/cert/write_file.go @@ -1,7 +1,6 @@ package cert import ( - "fmt" "github.com/0xJacky/Nginx-UI/internal/helper" "github.com/0xJacky/Nginx-UI/internal/nginx" "os" @@ -22,13 +21,11 @@ func (c *Content) WriteFile() (err error) { nginxConfPath := nginx.GetConfPath() if !helper.IsUnderDirectory(c.SSLCertificatePath, nginxConfPath) { - return fmt.Errorf("ssl_certificate_path: %s is not under the nginx conf path: %s", - c.SSLCertificatePath, nginxConfPath) + return e.NewWithParams(50006, ErrPathIsNotUnderTheNginxConfDir.Error(), c.SSLCertificatePath, nginxConfPath) } if !helper.IsUnderDirectory(c.SSLCertificateKeyPath, nginxConfPath) { - return fmt.Errorf("ssl_certificate_key_path: %s is not under the nginx conf path: %s", - c.SSLCertificateKeyPath, nginxConfPath) + return e.NewWithParams(50006, ErrPathIsNotUnderTheNginxConfDir.Error(), c.SSLCertificateKeyPath, nginxConfPath) } // MkdirAll creates a directory named path, along with any necessary parents, diff --git a/internal/config/errors.go b/internal/config/errors.go new file mode 100644 index 000000000..feec1b01f --- /dev/null +++ b/internal/config/errors.go @@ -0,0 +1,8 @@ +package config + +import "github.com/uozi-tech/cosy" + +var ( + e = cosy.NewErrorScope("config") + ErrPathIsNotUnderTheNginxConfDir = e.New(50006, "path: {0} is not under the nginx conf dir: {1}") +) diff --git a/internal/config/sync.go b/internal/config/sync.go index 4a99bb4aa..9a170354e 100644 --- a/internal/config/sync.go +++ b/internal/config/sync.go @@ -4,7 +4,6 @@ import ( "bytes" "crypto/tls" "encoding/json" - "fmt" "github.com/0xJacky/Nginx-UI/internal/helper" "github.com/0xJacky/Nginx-UI/internal/nginx" "github.com/0xJacky/Nginx-UI/internal/notification" @@ -35,8 +34,7 @@ func SyncToRemoteServer(c *model.Config) (err error) { nginxConfPath := nginx.GetConfPath() if !helper.IsUnderDirectory(c.Filepath, nginxConfPath) { - return fmt.Errorf("config: %s is not under the nginx conf path: %s", - c.Filepath, nginxConfPath) + return e.NewWithParams(50006, ErrPathIsNotUnderTheNginxConfDir.Error(), c.Filepath, nginxConfPath) } configBytes, err := os.ReadFile(c.Filepath) @@ -76,13 +74,11 @@ func SyncRenameOnRemoteServer(origPath, newPath string, syncNodeIds []uint64) (e nginxConfPath := nginx.GetConfPath() if !helper.IsUnderDirectory(origPath, nginxConfPath) { - return fmt.Errorf("config: %s is not under the nginx conf path: %s", - origPath, nginxConfPath) + return e.NewWithParams(50006, ErrPathIsNotUnderTheNginxConfDir.Error(), origPath, nginxConfPath) } if !helper.IsUnderDirectory(newPath, nginxConfPath) { - return fmt.Errorf("config: %s is not under the nginx conf path: %s", - newPath, nginxConfPath) + return e.NewWithParams(50006, ErrPathIsNotUnderTheNginxConfDir.Error(), newPath, nginxConfPath) } payload := &RenameConfigPayload{ diff --git a/internal/crypto/aes.go b/internal/crypto/aes.go index 1e76d2df8..fdbf44283 100644 --- a/internal/crypto/aes.go +++ b/internal/crypto/aes.go @@ -5,27 +5,25 @@ import ( "crypto/cipher" "crypto/rand" "encoding/base64" - "fmt" "github.com/0xJacky/Nginx-UI/settings" - "github.com/pkg/errors" "io" ) // AesEncrypt encrypts text and given key with AES. func AesEncrypt(text []byte) ([]byte, error) { if len(text) == 0 { - return nil, errors.New("AesEncrypt text is empty") + return nil, ErrPlainTextEmpty } block, err := aes.NewCipher(settings.CryptoSettings.GetSecretMd5()) if err != nil { - return nil, fmt.Errorf("AesEncrypt invalid key: %v", err) + return nil, err } b := base64.StdEncoding.EncodeToString(text) ciphertext := make([]byte, aes.BlockSize+len(b)) iv := ciphertext[:aes.BlockSize] if _, err = io.ReadFull(rand.Reader, iv); err != nil { - return nil, fmt.Errorf("AesEncrypt unable to read IV: %w", err) + return nil, err } cfb := cipher.NewCFBEncrypter(block, iv) @@ -42,7 +40,7 @@ func AesDecrypt(text []byte) ([]byte, error) { } if len(text) < aes.BlockSize { - return nil, errors.New("AesDecrypt ciphertext too short") + return nil, ErrCipherTextTooShort } iv := text[:aes.BlockSize] @@ -52,7 +50,7 @@ func AesDecrypt(text []byte) ([]byte, error) { data, err := base64.StdEncoding.DecodeString(string(text)) if err != nil { - return nil, fmt.Errorf("AesDecrypt invalid decrypted base64 string: %w", err) + return nil, err } return data, nil diff --git a/internal/crypto/errors.go b/internal/crypto/errors.go new file mode 100644 index 000000000..4cbac4141 --- /dev/null +++ b/internal/crypto/errors.go @@ -0,0 +1,9 @@ +package crypto + +import "github.com/uozi-tech/cosy" + +var ( + e = cosy.NewErrorScope("crypto") + ErrPlainTextEmpty = e.New(50001, "plain text is empty") + ErrCipherTextTooShort = e.New(50002, "cipher text is too short") +) diff --git a/internal/helper/websocket_error.go b/internal/helper/websocket_error.go index 76bd492d8..cb9b600a1 100644 --- a/internal/helper/websocket_error.go +++ b/internal/helper/websocket_error.go @@ -3,7 +3,7 @@ package helper import ( "strings" "github.com/gorilla/websocket" - "github.com/pkg/errors" + "errors" "syscall" ) diff --git a/internal/kernel/skip_install.go b/internal/kernel/skip_install.go index 364b6a247..4bab068de 100644 --- a/internal/kernel/skip_install.go +++ b/internal/kernel/skip_install.go @@ -6,7 +6,7 @@ import ( "github.com/0xJacky/Nginx-UI/settings" "github.com/caarlos0/env/v11" "github.com/google/uuid" - "github.com/pkg/errors" + "errors" "github.com/uozi-tech/cosy/logger" cSettings "github.com/uozi-tech/cosy/settings" "golang.org/x/crypto/bcrypt" diff --git a/internal/nginx/errors.go b/internal/nginx/errors.go new file mode 100644 index 000000000..d0223305e --- /dev/null +++ b/internal/nginx/errors.go @@ -0,0 +1,8 @@ +package nginx + +import "github.com/uozi-tech/cosy" + +var ( + e = cosy.NewErrorScope("nginx") + ErrBlockIsNil = e.New(50001, "block is nil") +) diff --git a/internal/nginx/parse.go b/internal/nginx/parse.go index 1cafc74fd..0a8682bfd 100644 --- a/internal/nginx/parse.go +++ b/internal/nginx/parse.go @@ -155,7 +155,7 @@ func buildComment(c []string) string { func parse(block config.IBlock, ngxConfig *NgxConfig) (err error) { if block == nil { - err = errors.New("block is nil") + err = ErrBlockIsNil return } for _, v := range block.GetDirectives() { diff --git a/internal/nginx_log/errors.go b/internal/nginx_log/errors.go new file mode 100644 index 000000000..e1e0d70c7 --- /dev/null +++ b/internal/nginx_log/errors.go @@ -0,0 +1,14 @@ +package nginx_log + +import "github.com/uozi-tech/cosy" + +var ( + e = cosy.NewErrorScope("nginx_log") + ErrLogPathIsNotUnderTheLogDirWhiteList = e.New(50001, "the log path is not under the paths in settings.NginxSettings.LogDirWhiteList") + ErrServerIdxOutOfRange = e.New(50002, "serverIdx out of range") + ErrDirectiveIdxOutOfRange = e.New(50003, "directiveIdx out of range") + ErrLogDirective = e.New(50004, "directive.Params neither access_log nor error_log") + ErrDirectiveParamsIsEmpty = e.New(50005, "directive params is empty") + ErrErrorLogPathIsEmpty = e.New(50006, "settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information") + ErrAccessLogPathIsEmpty = e.New(50007, "settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information") +) diff --git a/internal/nginx_log/nginx_log.go b/internal/nginx_log/nginx_log.go new file mode 100644 index 000000000..34a21bb71 --- /dev/null +++ b/internal/nginx_log/nginx_log.go @@ -0,0 +1,41 @@ +package nginx_log + +import ( + "fmt" + "github.com/0xJacky/Nginx-UI/internal/cache" + "github.com/0xJacky/Nginx-UI/internal/helper" + "github.com/0xJacky/Nginx-UI/internal/nginx" + "github.com/0xJacky/Nginx-UI/settings" + "path/filepath" +) + +// IsLogPathUnderWhiteList checks if the log path is under one of the paths in LogDirWhiteList +func IsLogPathUnderWhiteList(path string) bool { + cacheKey := fmt.Sprintf("isLogPathUnderWhiteList:%s", path) + res, ok := cache.Get(cacheKey) + + // deep copy + logDirWhiteList := append([]string{}, settings.NginxSettings.LogDirWhiteList...) + + accessLogPath := nginx.GetAccessLogPath() + errorLogPath := nginx.GetErrorLogPath() + + if accessLogPath != "" { + logDirWhiteList = append(logDirWhiteList, filepath.Dir(accessLogPath)) + } + if errorLogPath != "" { + logDirWhiteList = append(logDirWhiteList, filepath.Dir(errorLogPath)) + } + + // no cache, check it + if !ok { + for _, whitePath := range logDirWhiteList { + if helper.IsUnderDirectory(path, whitePath) { + cache.Set(cacheKey, true, 0) + return true + } + } + return false + } + return res.(bool) +} diff --git a/internal/self_check/errors.go b/internal/self_check/errors.go index 4293ef82e..202857ba0 100644 --- a/internal/self_check/errors.go +++ b/internal/self_check/errors.go @@ -11,9 +11,9 @@ var ( ErrNginxConfNotIncludeSitesEnabled = e.New(4043, "Nginx conf not include sites-enabled") ErrorNginxConfNoStreamBlock = e.New(4044, "Nginx conf no stream block") ErrNginxConfNotIncludeStreamEnabled = e.New(4045, "Nginx conf not include stream-enabled") - ErrFailedToCreateBackup = e.New(5001, "Failed to create backup") + ErrFailedToCreateBackup = e.New(5002, "Failed to create backup") ErrSitesAvailableNotExist = e.New(4046, "Sites-available directory not exist") ErrSitesEnabledNotExist = e.New(4047, "Sites-enabled directory not exist") - ErrStreamAvailableNotExist = e.New(4048, "Stream-available directory not exist") - ErrStreamEnabledNotExist = e.New(4049, "Stream-enabled directory not exist") + ErrStreamAvailableNotExist = e.New(4048, "Streams-available directory not exist") + ErrStreamEnabledNotExist = e.New(4049, "Streams-enabled directory not exist") ) diff --git a/internal/self_check/nginx_conf.go b/internal/self_check/nginx_conf.go index cd16f81ca..1d7e27788 100644 --- a/internal/self_check/nginx_conf.go +++ b/internal/self_check/nginx_conf.go @@ -6,7 +6,6 @@ import ( "time" "github.com/0xJacky/Nginx-UI/internal/nginx" - "github.com/spf13/cast" "github.com/tufanbarisyildirim/gonginx/config" "github.com/tufanbarisyildirim/gonginx/dumper" "github.com/tufanbarisyildirim/gonginx/parser" @@ -88,7 +87,7 @@ func FixNginxConfIncludeSites() error { } // create a backup file (+.bak.timestamp) - backupPath := path + ".bak." + cast.ToString(time.Now().Unix()) + backupPath := fmt.Sprintf("%s.bak.%d", path, time.Now().Unix()) err = os.WriteFile(backupPath, content, 0644) if err != nil { return ErrFailedToCreateBackup @@ -133,7 +132,7 @@ func FixNginxConfIncludeStreams() error { } // create a backup file (+.bak.timestamp) - backupPath := path + ".bak." + cast.ToString(time.Now().Unix()) + backupPath := fmt.Sprintf("%s.bak.%d", path, time.Now().Unix()) err = os.WriteFile(backupPath, content, 0644) if err != nil { return ErrFailedToCreateBackup diff --git a/internal/site/delete.go b/internal/site/delete.go index 000275381..06c9f5b06 100644 --- a/internal/site/delete.go +++ b/internal/site/delete.go @@ -29,11 +29,11 @@ func Delete(name string) (err error) { enabledPath := nginx.GetConfPath("sites-enabled", name) if !helper.FileExists(availablePath) { - return fmt.Errorf("site not found") + return ErrSiteNotFound } if helper.FileExists(enabledPath) { - return fmt.Errorf("site is enabled") + return ErrSiteIsEnabled } certModel := model.Cert{Filename: name} diff --git a/internal/site/duplicate.go b/internal/site/duplicate.go index 6329ffd3b..bdc708624 100644 --- a/internal/site/duplicate.go +++ b/internal/site/duplicate.go @@ -3,7 +3,6 @@ package site import ( "github.com/0xJacky/Nginx-UI/internal/helper" "github.com/0xJacky/Nginx-UI/internal/nginx" - "github.com/pkg/errors" ) // Duplicate duplicates a site by copying the file @@ -12,7 +11,7 @@ func Duplicate(src, dst string) (err error) { dst = nginx.GetConfPath("sites-available", dst) if helper.FileExists(dst) { - return errors.New("file exists") + return ErrDstFileExists } _, err = helper.CopyFile(src, dst) diff --git a/internal/site/errors.go b/internal/site/errors.go new file mode 100644 index 000000000..a04544832 --- /dev/null +++ b/internal/site/errors.go @@ -0,0 +1,10 @@ +package site + +import "github.com/uozi-tech/cosy" + +var ( + e = cosy.NewErrorScope("site") + ErrSiteNotFound = e.New(40401, "site not found") + ErrDstFileExists = e.New(50001, "destination file already exists") + ErrSiteIsEnabled = e.New(50002, "site is enabled") +) diff --git a/internal/site/rename.go b/internal/site/rename.go index 3e88145c2..ed4e53846 100644 --- a/internal/site/rename.go +++ b/internal/site/rename.go @@ -24,7 +24,7 @@ func Rename(oldName string, newName string) (err error) { // check if dst file exists, do not rename if helper.FileExists(newPath) { - return fmt.Errorf("file exists") + return ErrDstFileExists } s := query.Site @@ -84,9 +84,9 @@ func syncRename(oldName, newName string) { client.SetBaseURL(node.URL) resp, err := client.R(). SetHeader("X-Node-Secret", node.Token). - SetBody(map[string]string{ - "new_name": newName, - }). + SetBody(map[string]string{ + "new_name": newName, + }). Post(fmt.Sprintf("/api/sites/%s/rename", oldName)) if err != nil { notification.Error("Rename Remote Site Error", err.Error()) diff --git a/internal/site/save.go b/internal/site/save.go index 587e699ae..1cbcc05ff 100644 --- a/internal/site/save.go +++ b/internal/site/save.go @@ -19,7 +19,7 @@ import ( func Save(name string, content string, overwrite bool, siteCategoryId uint64, syncNodeIds []uint64) (err error) { path := nginx.GetConfPath("sites-available", name) if !overwrite && helper.FileExists(path) { - return fmt.Errorf("file exists") + return ErrDstFileExists } err = os.WriteFile(path, []byte(content), 0644) diff --git a/internal/user/errors.go b/internal/user/errors.go new file mode 100644 index 000000000..ed7ff5332 --- /dev/null +++ b/internal/user/errors.go @@ -0,0 +1,15 @@ +package user + +import "github.com/uozi-tech/cosy" + +var ( + e = cosy.NewErrorScope("user") + ErrPasswordIncorrect = e.New(40301, "password incorrect") + ErrUserBanned = e.New(40303, "user banned") + ErrOTPCode = e.New(40304, "invalid otp code") + ErrRecoveryCode = e.New(40305, "invalid recovery code") + ErrWebAuthnNotConfigured = e.New(50000, "WebAuthn settings are not configured") + ErrUserNotEnabledOTPAs2FA = e.New(50001, "user not enabled otp as 2fa") + ErrOTPOrRecoveryCodeEmpty = e.New(50002, "otp or recovery code empty") + ErrSessionNotFound = e.New(40401, "session not found") +) diff --git a/internal/user/login.go b/internal/user/login.go index 26b0bb931..a57f2760b 100644 --- a/internal/user/login.go +++ b/internal/user/login.go @@ -1,7 +1,6 @@ package user import ( - "errors" "github.com/0xJacky/Nginx-UI/model" "github.com/0xJacky/Nginx-UI/query" "github.com/0xJacky/Nginx-UI/settings" @@ -9,11 +8,6 @@ import ( "time" ) -var ( - ErrPasswordIncorrect = errors.New("password incorrect") - ErrUserBanned = errors.New("user banned") -) - func Login(name string, password string) (user *model.User, err error) { u := query.User diff --git a/internal/user/otp.go b/internal/user/otp.go index 5f4cf8653..763c33fe4 100644 --- a/internal/user/otp.go +++ b/internal/user/otp.go @@ -9,16 +9,10 @@ import ( "github.com/0xJacky/Nginx-UI/internal/crypto" "github.com/0xJacky/Nginx-UI/model" "github.com/google/uuid" - "github.com/pkg/errors" "github.com/pquerna/otp/totp" "time" ) -var ( - ErrOTPCode = errors.New("invalid otp code") - ErrRecoveryCode = errors.New("invalid recovery code") -) - func VerifyOTP(user *model.User, otp, recoveryCode string) (err error) { if otp != "" { decrypted, err := crypto.AesDecrypt(user.OTPSecret) diff --git a/main.go b/main.go index 38d929999..6afec97ff 100644 --- a/main.go +++ b/main.go @@ -9,7 +9,7 @@ import ( "github.com/0xJacky/Nginx-UI/settings" "github.com/gin-gonic/gin" "github.com/jpillora/overseer" - "github.com/pkg/errors" + "errors" "github.com/uozi-tech/cosy" cKernel "github.com/uozi-tech/cosy/kernel" "github.com/uozi-tech/cosy/logger" diff --git a/model/chatgpt_log.go b/model/chatgpt_log.go index 91abf0249..7d5b2015e 100644 --- a/model/chatgpt_log.go +++ b/model/chatgpt_log.go @@ -4,7 +4,7 @@ import ( "database/sql/driver" "encoding/json" "fmt" - "github.com/pkg/errors" + "errors" "github.com/sashabaranov/go-openai" ) diff --git a/router/routers.go b/router/routers.go index 70e7f9294..cee3d0678 100644 --- a/router/routers.go +++ b/router/routers.go @@ -6,6 +6,7 @@ import ( "github.com/0xJacky/Nginx-UI/api/cluster" "github.com/0xJacky/Nginx-UI/api/config" "github.com/0xJacky/Nginx-UI/api/nginx" + nginxLog "github.com/0xJacky/Nginx-UI/api/nginx_log" "github.com/0xJacky/Nginx-UI/api/notification" "github.com/0xJacky/Nginx-UI/api/openai" "github.com/0xJacky/Nginx-UI/api/public" @@ -75,7 +76,7 @@ func InitRouter() { { terminal.InitRouter(o) } - nginx.InitNginxLogRouter(w) + nginxLog.InitRouter(w) upstream.InitRouter(w) system.InitWebSocketRouter(w) } diff --git a/test/chatgpt_test.go b/test/chatgpt_test.go index d494c0ac7..c69b4ca3d 100644 --- a/test/chatgpt_test.go +++ b/test/chatgpt_test.go @@ -4,7 +4,7 @@ import ( "context" "fmt" "github.com/0xJacky/Nginx-UI/settings" - "github.com/pkg/errors" + "errors" "github.com/sashabaranov/go-openai" "github.com/uozi-tech/cosy/sandbox" "io"