From 2c84665e8bb59819ae75fa80581b24e2fe55e8e9 Mon Sep 17 00:00:00 2001 From: ssongliu Date: Thu, 2 Jul 2026 21:13:22 +0800 Subject: [PATCH] chore: organize i18n language files (#13183) --- agent/i18n/lang/en.yaml | 85 +++++---- agent/i18n/lang/es-ES.yaml | 110 +++++++++--- agent/i18n/lang/fa.yaml | 97 ++++++----- agent/i18n/lang/ja.yaml | 112 +++++++++--- agent/i18n/lang/ko.yaml | 112 +++++++++--- agent/i18n/lang/ms.yaml | 110 +++++++++--- agent/i18n/lang/pt-BR.yaml | 110 +++++++++--- agent/i18n/lang/ru.yaml | 112 +++++++++--- agent/i18n/lang/tr.yaml | 110 +++++++++--- agent/i18n/lang/zh-Hant.yaml | 111 +++++++++--- agent/i18n/lang/zh.yaml | 95 +++++----- core/i18n/lang/en.yaml | 295 ++++++++++++++++--------------- core/i18n/lang/es-ES.yaml | 297 ++++++++++++++++--------------- core/i18n/lang/fa.yaml | 270 +++++++++++++++------------- core/i18n/lang/ja.yaml | 291 +++++++++++++++++-------------- core/i18n/lang/ko.yaml | 290 ++++++++++++++++-------------- core/i18n/lang/ms.yaml | 326 +++++++++++++++++++--------------- core/i18n/lang/pt-BR.yaml | 290 ++++++++++++++++-------------- core/i18n/lang/ru.yaml | 291 +++++++++++++++++-------------- core/i18n/lang/tr.yaml | 329 +++++++++++++++++++---------------- core/i18n/lang/zh-Hant.yaml | 294 +++++++++++++++++-------------- core/i18n/lang/zh.yaml | 302 +++++++++++++++++--------------- 22 files changed, 2656 insertions(+), 1783 deletions(-) diff --git a/agent/i18n/lang/en.yaml b/agent/i18n/lang/en.yaml index 29f1f74b6..826d48d56 100644 --- a/agent/i18n/lang/en.yaml +++ b/agent/i18n/lang/en.yaml @@ -1,32 +1,47 @@ +# base errors ErrInvalidParams: 'Bad request: {{ .detail }}' ErrTokenParse: 'Token error: {{ .detail }}' ErrInitialPassword: 'Original password is incorrect' ErrInternalServer: 'Internal server error: {{ .detail }}' +ErrRecordExist: 'Record already exists' +ErrRecordNotFound: 'Record not found' +ErrStructTransform: 'Type conversion failed: {{ .err }}' +ErrNotSupportType: 'Unsupported type: {{ .name }}' + +# file AI ErrFileAINotEnabled: 'File-management AI summary requires an enabled AI account in File Management. Content-only search still works when AI is off.' ErrFileAISearchBadPattern: 'Invalid file search pattern (regex or whole word): {{ .detail }}' +FileAISearchEmptyDir: 'No files or directories found under this path (or all entries were filtered).' + +# remote download ErrWgetRemoteFailed: 'Remote download failed or URL is unreachable: {{ .detail }}' ErrWgetInvalidContentType: 'Remote URL did not return a file (possibly an error page), {{ .detail }}' ErrWgetProxyNotConfigured: 'Configure a proxy server in panel settings first' ErrWgetProxyInvalid: 'Invalid proxy server address: {{ .detail }}' -ErrRecordExist: 'Record already exists' -ErrRecordNotFound: 'Record not found' -ErrStructTransform: 'Type conversion failed: {{ .err }}' + +# login and security ErrNotLogin: 'Not logged in: {{ .detail }}' ErrPasswordExpired: 'Password expired: {{ .detail }}' -ErrNotSupportType: 'Unsupported type: {{ .name }}' -ErrAlertMethodNotSupported: 'This version does not support this alert method' + +# request and API ErrProxy: 'Request failed: {{ .detail }}' ErrApiConfigStatusInvalid: 'API access disabled: {{ .detail }}' ErrApiConfigKeyInvalid: 'Invalid API key: {{ .detail }}' ErrApiConfigIPInvalid: 'IP not in API allowlist: {{ .detail }}' ErrApiConfigDisable: 'Endpoint not allowed via API: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'Invalid API timestamp: {{ .detail }}' -ErrShutDown: 'Command stopped manually' +ErrCreateHttpClient: 'Failed to create HTTP request: {{ .err }}' +ErrHttpReqTimeOut: 'HTTP request timed out: {{ .err }}' +ErrHttpReqFailed: 'HTTP request failed: {{ .err }}' +ErrNoSuchHost: 'Host resolve failed: {{ .err }}' +ErrHttpReqNotFound: 'Requested resource not found: {{ .err }}' +# quick jump ErrMinQuickJump: 'Set at least one quick jump entry' ErrMaxQuickJump: 'At most 4 quick jump entries' -#common +# common +ErrShutDown: 'Command stopped manually' ErrUsernameIsExist: 'Username already exists' ErrNameIsExist: 'Name already exists' ErrDemoEnvironment: 'Disabled in demo environment' @@ -45,7 +60,7 @@ ErrGroupIsDefault: 'Default group, cannot be deleted' ErrGroupIsInWebsiteUse: 'Group is in use by a website' Decrypt: "Decrypt" -#agent +# agent ErrAgentAccountBound: 'Account is bound to an agent and cannot be deleted' ErrTerminalAIAccountInUse: 'This model account is currently used by Terminal AI. Switch the account in Terminal AI settings or disable Terminal AI and try again.' ErrAgentAccountUnavailable: 'Account connection unavailable: {{ .err }}' @@ -71,7 +86,7 @@ ErrAgentWebsiteUnbindUnsupported: 'Deployment websites cannot be unbound manuall ErrHermesPairingCodeUnavailable: 'The pairing code is temporarily unavailable in Hermes, possibly due to network issues. Please try again later.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'When the Feishu group policy is Allowlist, the DM policy cannot be Pairing Code.' -#backup +# backup and alert settings Localhost: 'Local' ErrBackupInUsed: 'Backup account is in use by a scheduled task' ErrBackupCheck: 'Backup account connectivity test failed: {{ .err }}' @@ -80,7 +95,7 @@ ErrBackupLocalCreate: 'Local backup accounts cannot be created' ErrAlertConfigInUse: 'Alert configuration is in use and cannot be deleted' ErrAlertConfigPhoneExist: 'Phone number already exists' -#app +# app ErrPortInUsed: '{{ .detail }} port is already occupied!' ErrAppLimit: 'App install limit reached' ErrNotInstall: 'Application not installed' @@ -98,11 +113,6 @@ ErrFileParseApp: 'Failed to parse {{ .name }}: {{ .err }}' ErrAppDirNull: 'The version folder does not exist' LocalAppErr: 'Failed to sync app {{ .name }}: {{ .err }}' ErrContainerName: 'Container name already exists' -ErrCreateHttpClient: 'Failed to create HTTP request: {{ .err }}' -ErrHttpReqTimeOut: 'HTTP request timed out: {{ .err }}' -ErrHttpReqFailed: 'HTTP request failed: {{ .err }}' -ErrNoSuchHost: 'Host resolve failed: {{ .err }}' -ErrHttpReqNotFound: 'Requested resource not found: {{ .err }}' ErrContainerNotFound: '{{ .name }} container does not exist' ErrContainerMsg: 'Container {{ .name }} is abnormal; check logs' ErrAppBackup: 'App backup failed: {{ .name }} {{ .err }}' @@ -134,7 +144,7 @@ ErrDockerComposeCmdNotFound: 'Docker Compose not found on host' UseExistImage: 'Image exists; using existing image' ErrDatabaseNotFound: 'Database not found: {{ .name }}' -#ssh +# SSH ExportIP: "Login IP" ExportArea: "Location" ExportPort: "Port" @@ -143,7 +153,7 @@ ExportUser: "User" ExportStatus: "Login Status" ExportDate: "Time" -#file +# file ErrFileCanNotRead: 'File preview is not supported' ErrSensitiveFileRead: 'Reading sensitive files is not allowed' ErrFileToLarge: 'File is larger than 10 MB' @@ -171,7 +181,7 @@ FileDropSuccess: 'Cleaned {{ .name }}; files: {{ .count }}, freed: {{ .size }}' FileDropSum: 'Cleanup done; files: {{ .count }}, freed: {{ .size }}' ErrBadDecrypt: 'Wrong archive password; extract failed' -#website +# website ErrAliasIsExist: 'Alias already exists' ErrBackupMatch: 'Backup data mismatch: {{ .detail }}' ErrBackupExist: 'Backup source data missing: {{ .detail }}' @@ -202,7 +212,7 @@ ErrDefaultWebsite: 'Default website already set; unset it first' SSL: 'Certificate' Set: 'Settings' -#ssl +# SSL certificate ErrSSLCannotDelete: 'Certificate {{ .name }} is in use by a website' ErrAccountCannotDelete: 'Account is linked to a certificate and cannot be deleted' ErrSSLApply: 'Certificate renewed; OpenResty reload failed' @@ -238,7 +248,7 @@ StartPushSSLToNode: 'Push certificate to node' PushSSLToNodeFailed: "Failed to push certificate to node: {{ .err }}" PushSSLToNodeSuccess: 'Certificate pushed to node' -#mysql +# MySQL ErrUserIsExist: 'User already exists' ErrDatabaseIsExist: 'Database already exists' ErrExecTimeOut: 'SQL execution timed out' @@ -248,10 +258,10 @@ RemoteBackup: 'Start local DB container with image {{ .name }} before backing up RemoteRecover: 'Start local DB container with image {{ .name }} before restoring remote DB' Arg: "Argument" -#redis +# Redis ErrTypeOfRedis: 'Backup file type does not match current persistence mode' -#container +# container ErrInUsed: "{{ .detail }} is in use and cannot be deleted!" ErrObjectInUsed: "This object is in use and cannot be deleted!" ErrObjectBeDependent: "This image is referenced by other images and cannot be deleted!" @@ -294,7 +304,7 @@ ComposeRecoverContainers: 'Restore compose containers' ComposeRecoverRecord: 'Save compose record' ComposeRecoverCleanup: 'Cleanup compose restore workspace' -#runtime +# runtime ErrFileNotExist: 'Source file not found: {{ .detail }}' ErrImageBuildErr: 'Image build failed' ErrImageExist: "Image already exists. Use a different image name." @@ -308,7 +318,7 @@ ErrContainerNameIsNull: 'Container name is empty' ErrPHPPortIsDefault: 'Port 9000 is reserved as default; use another port' ErrPHPRuntimePortFailed: 'Port {{ .name }} is already used by this runtime' -#tool +# tool ErrConfigNotFound: 'Configuration file does not exist' ErrConfigParse: 'Invalid configuration file format' ErrConfigIsNull: 'Configuration file cannot be empty' @@ -316,7 +326,7 @@ ErrConfigDirNotFound: 'Run directory not found' ErrConfigAlreadyExist: 'Configuration file with the same name already exists' ErrUserFindErr: 'Failed to find user {{ .name }}: {{ .err }}' -#cronjob +# cron job CutWebsiteLogSuccess: 'Website log rotated: {{ .name }} (backup: {{ .path }})' HandleShell: 'Run script {{ .name }}' HandleCurl: 'Request URL {{ .name }}' @@ -336,7 +346,7 @@ CleanLog: 'Clean logs' CleanLogByName: 'Clean {{ .name }} logs' WafIpGroupNotFound: "WAF IP group not found. Go to [Advanced Features -> WAF -> Black/White List -> IP Group] and add one using Remote Download." -#toolbox +# toolbox ErrNotExistUser: 'User does not exist' ErrBanAction: 'Config failed: service {{ .name }} unavailable' ErrClamdscanNotFound: 'clamdscan command not found' @@ -346,14 +356,14 @@ CreateSwap: 'Create swap file' FormatSwap: 'Format swap file' EnableSwap: 'Enable swap' -#tamper +# tamper protection CleanTamperSetting: 'Clean historical protection settings' SetTamperWithRules: 'Enable directory protection by rules' ProtectDir: "Protect directory {{ .name }}" IgnoreFile: "Protect file {{ .name }}" TamperSetSuccessful: 'Protection set. Monitoring these directories:' -#waf +# WAF ErrScope: 'This config cannot be changed' ErrStateChange: 'Failed to change state' ErrRuleExist: 'Rule already exists' @@ -409,7 +419,7 @@ remoteIpIsNull: "IP list is empty" OpenrestyVersionErr: 'OpenResty version too low; upgrade to 1.27.1.2-2-2-focal' ErrFileTooLarge: 'File is larger than 1 MB and cannot be uploaded' -#task +# task TaskStart: '{{ .name }} [START]' TaskEnd: '{{ .name }} [DONE]' TaskFailed: '{{ .name }} task failed' @@ -471,16 +481,16 @@ TaskExec: 'Execute' TaskBatch: "Batch Operation" FileConvert: 'File Conversion' -# task - clam +# task - ClamAV Clamscan: "Scan {{ .name }}" TaskScan: "Scan" -# task - ai +# task - AI OllamaModelPull: 'Pull Ollama model {{ .name }}' OllamaModelSize: 'Get Ollama model size: {{ .name }}' AIBenchmarkRun: 'Run AI benchmark' -# task-snapshot +# task - snapshot Snapshot: 'Snapshot' SnapDBInfo: 'Write 1Panel DB info' SnapCopy: 'Copy files/directories {{ .name }}' @@ -506,7 +516,6 @@ SnapCompressSize: 'Snapshot size {{ .name }}' SnapUpload: 'Upload snapshot file' SnapUploadTo: 'Upload snapshot to {{ .name }}' SnapUploadRes: 'Upload snapshot to {{ .name }}' - SnapshotRecover: 'Recover snapshot' RecoverDownload: 'Download snapshot file' Download: 'Download' @@ -563,10 +572,11 @@ RecoverFailedStartRollBack: 'Recovery failed; starting rollback' AppBackupFileIncomplete: 'Backup is incomplete: missing app.json or app.tar.gz' AppAttributesNotMatch: 'Application type or name does not match' -#alert +# alert +ErrAlertMethodNotSupported: 'This version does not support this alert method' ErrAlertSync: 'Failed to sync alert message' -#task - runtime +# task - runtime ErrInstallExtension: 'Another extension install task is running' # alert mail template @@ -587,7 +597,7 @@ NodeExceptionAlert: "Panel {{ .node }}{{ .ip }}: {{ .num }} nodes are abnormal. LicenseExceptionAlert: "Panel {{ .node }}{{ .ip }}: {{ .num }} licenses are abnormal. Log in to view details." SSHAndPanelLoginAlert: "Panel {{ .node }}{{ .ip }}: abnormal {{ .name }} login from {{ .loginIp }}. Log in to view details." -#disk +# disk DeviceNotFound: "Device {{ .name }} not found" DeviceIsMounted: 'Device {{ .name }} is mounted; unmount first' PartitionDiskErr: 'Partition failed: {{ .err }}' @@ -600,9 +610,8 @@ TerminalAIBlockedRiskyCommand: 'blocked risky command: {{ .command }}' TerminalAIThinking: 'AI is thinking...' TerminalAIReadyToExecute: 'Thinking complete, press Enter to execute (duration: {{ .duration }}, tokens: {{ .tokens }})' TerminalAIRequestFailed: 'AI request failed: {{ .err }}' -FileAISearchEmptyDir: 'No files or directories found under this path (or all entries were filtered).' -# ai proxy +# AI gateway ErrAIProxyServiceNotInstalled: '{{ .name }} service is not installed' ErrAIProxyModelAccountNotFound: 'Model account {{ .id }} not found' ErrAIProxyModelMapRequired: 'This field is required.' diff --git a/agent/i18n/lang/es-ES.yaml b/agent/i18n/lang/es-ES.yaml index 61a297ddf..c5e3b658c 100644 --- a/agent/i18n/lang/es-ES.yaml +++ b/agent/i18n/lang/es-ES.yaml @@ -1,29 +1,47 @@ +# errores básicos ErrInvalidParams: 'Solicitud inválida: {{ .detail }}' ErrTokenParse: 'Token inválido: {{ .detail }}' ErrInitialPassword: 'Contraseña original incorrecta' ErrInternalServer: 'Error interno: {{ .detail }}' +ErrRecordExist: 'Registro ya existe' +ErrRecordNotFound: 'Registro no encontrado' +ErrStructTransform: 'Error de conversión: {{ .err }}' +ErrNotSupportType: 'Tipo no soportado: {{ .name }}' + +# IA de archivos ErrFileAINotEnabled: 'La búsqueda con IA de archivos está desactivada o sin cuenta. En Gestión de archivos, use Cuenta de IA, active y elija una cuenta.' ErrFileAISearchBadPattern: 'Patrón de búsqueda no válido (regex u otra opción): {{ .detail }}' +FileAISearchEmptyDir: 'No hay archivos ni carpetas bajo esta ruta (o todos fueron filtrados).' + +# descarga remota ErrWgetRemoteFailed: 'La descarga remota falló o la URL no es accesible: {{ .detail }}' ErrWgetInvalidContentType: 'La URL remota no devolvió un archivo (posiblemente una página de error), {{ .detail }}' ErrWgetProxyNotConfigured: 'Configure primero un servidor proxy en los ajustes del panel' ErrWgetProxyInvalid: 'Dirección del servidor proxy no válida: {{ .detail }}' -ErrRecordExist: 'Registro ya existe' -ErrRecordNotFound: 'Registro no encontrado' -ErrStructTransform: 'Error de conversión: {{ .err }}' + +# inicio de sesión y seguridad ErrNotLogin: 'No has iniciado sesión: {{ .detail }}' ErrPasswordExpired: 'Contraseña expirada: {{ .detail }}' -ErrNotSupportType: 'Tipo no soportado: {{ .name }}' -ErrAlertMethodNotSupported: 'Esta versión no admite este método de alerta' + +# solicitud y API ErrProxy: 'Solicitud fallida: {{ .detail }}' ErrApiConfigStatusInvalid: 'API desactivada: {{ .detail }}' ErrApiConfigKeyInvalid: 'Clave API inválida: {{ .detail }}' ErrApiConfigIPInvalid: 'IP no permitida: {{ .detail }}' ErrApiConfigDisable: 'API no permitida: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'Timestamp inválido: {{ .detail }}' -ErrShutDown: 'Comando detenido manualmente' +ErrCreateHttpClient: 'Fallo al crear la solicitud {{ .err }}' +ErrHttpReqTimeOut: 'La solicitud superó el tiempo de espera {{ .err }}' +ErrHttpReqFailed: 'La solicitud falló {{ .err }}' +ErrNoSuchHost: 'No se pudo encontrar el servidor solicitado {{ .err }}' +ErrHttpReqNotFound: 'No se pudo encontrar el recurso solicitado {{ .err }}' + +# salto rápido ErrMinQuickJump: 'Agrega al menos una entrada rápida' ErrMaxQuickJump: 'Máximo 4 entradas rápidas' + +# común +ErrShutDown: 'Comando detenido manualmente' ErrUsernameIsExist: 'Usuario ya existe' ErrNameIsExist: 'Nombre ya existe' ErrDemoEnvironment: 'No disponible en demo' @@ -41,6 +59,8 @@ SystemRestart: 'La tarea fue interrumpida debido a un reinicio del sistema' ErrGroupIsDefault: 'Grupo predeterminado, no se puede eliminar' ErrGroupIsInWebsiteUse: 'El grupo está siendo usado por otro sitio web y no se puede eliminar.' Decrypt: 'Descifrar' + +# agente ErrAgentAccountBound: 'Cuenta vinculada a agente' ErrTerminalAIAccountInUse: 'Esta cuenta de modelo esta siendo usada por Terminal AI. Cambia la cuenta en la configuracion de Terminal AI o desactiva Terminal AI y vuelve a intentarlo.' ErrAgentAccountUnavailable: 'Conexión de cuenta no disponible: {{ .err }}' @@ -65,14 +85,8 @@ ErrAgentWebsiteInUse: 'Este sitio web ya está vinculado a otro agente' ErrAgentWebsiteUnbindUnsupported: 'Los sitios web de despliegue no se pueden desvincular manualmente' ErrHermesPairingCodeUnavailable: 'El código de emparejamiento no está disponible temporalmente en Hermes, posiblemente por un problema de red. Inténtalo de nuevo más tarde.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'Cuando la política de grupo de Feishu es Lista permitida, la política de MD no puede ser Código de emparejamiento.' -ErrAIProxyServiceNotInstalled: 'El servicio {{ .name }} no está instalado' -ErrAIProxyModelAccountNotFound: 'Cuenta de modelo {{ .id }} no encontrada' -ErrAIProxyModelMapRequired: 'Este campo es obligatorio.' -ErrAIProxyModelMapInvalid: 'El mapeo de modelos debe ser un objeto JSON válido: {{ .err }}' -ErrAIProxyModelMapEmpty: 'El mapeo de modelos no puede estar vacío' -ErrAIProxyModelMapEmptyExternalModel: 'El mapeo de modelos contiene un modelo solicitado vacío' -ErrAIProxyModelMapEmptyUpstreamModel: 'El modelo upstream de {{ .model }} no puede estar vacío' -AIProxyUserFallback: 'Usuario eliminado (ID: {{ .id }})' + +# copia de seguridad y configuración de alertas Localhost: 'Máquina local' ErrBackupInUsed: 'Cuenta de respaldo en uso por tarea programada' ErrBackupCheck: 'Conexión de respaldo falló: {{ .err }}' @@ -80,6 +94,8 @@ ErrBackupLocalDelete: 'No se puede eliminar cuentas de respaldo locales' ErrBackupLocalCreate: 'No se pueden crear cuentas de respaldo locales' ErrAlertConfigInUse: 'La configuración de alertas está en uso y no se puede eliminar' ErrAlertConfigPhoneExist: 'El numero de telefono ya existe' + +# aplicación ErrPortInUsed: 'El puerto {{ .detail }} ya está ocupado' ErrAppLimit: 'El número de aplicaciones instaladas ha superado el límite' ErrNotInstall: 'Aplicación no instalada' @@ -97,11 +113,6 @@ ErrFileParseApp: 'El archivo {{ .name }} falló al analizarse {{ .err }}' ErrAppDirNull: 'La carpeta de la versión no existe' LocalAppErr: 'La sincronización de la aplicación {{ .name }} falló {{ .err }}' ErrContainerName: 'El nombre del contenedor ya existe' -ErrCreateHttpClient: 'Fallo al crear la solicitud {{ .err }}' -ErrHttpReqTimeOut: 'La solicitud superó el tiempo de espera {{ .err }}' -ErrHttpReqFailed: 'La solicitud falló {{ .err }}' -ErrNoSuchHost: 'No se pudo encontrar el servidor solicitado {{ .err }}' -ErrHttpReqNotFound: 'No se pudo encontrar el recurso solicitado {{ .err }}' ErrContainerNotFound: 'El contenedor {{ .name }} no existe' ErrContainerMsg: 'El contenedor {{ .name }} presenta anomalías. Revise el log en la página de contenedores para más detalles' ErrAppBackup: 'Falló el respaldo de la aplicación {{ .name }} {{ .err }}' @@ -132,6 +143,8 @@ ErrDockerFailed: 'El estado de Docker es anómalo, revise el servicio' ErrDockerComposeCmdNotFound: 'El comando Docker Compose no existe instálelo primero en el host' UseExistImage: 'La imagen ya existe, usando imagen existente' ErrDatabaseNotFound: 'La base de datos {{ .name }} no existe' + +# SSH ExportIP: 'IP de inicio de sesión' ExportArea: 'Ubicación' ExportPort: 'Puerto' @@ -139,6 +152,8 @@ ExportAuthMode: 'Método de inicio de sesión' ExportUser: 'Usuario' ExportStatus: 'Estado de inicio de sesión' ExportDate: 'Fecha y hora' + +# archivo ErrFileCanNotRead: 'Este archivo no soporta vista previa' ErrSensitiveFileRead: 'No se permite leer archivos sensibles' ErrFileToLarge: 'El archivo es mayor a 10M y no puede abrirse' @@ -165,6 +180,8 @@ FileDropFailed: 'Error al limpiar el archivo {{ .name }}: {{ .err }}' FileDropSuccess: 'Archivo {{ .name }} limpiado correctamente, {{ .count }} archivos eliminados, {{ .size }} de espacio liberado' FileDropSum: 'Limpieza de archivos completada, total {{ .count }} archivos eliminados, {{ .size }} de espacio liberado' ErrBadDecrypt: 'Error de contraseña de descifrado del paquete comprimido, descompresión fallida, compruebe e inténtelo de nuevo' + +# sitio web ErrAliasIsExist: 'El alias ya existe' ErrBackupMatch: 'El archivo de respaldo no coincide con parte de los datos actuales del sitio web {{ .detail }}' ErrBackupExist: 'Parte de los datos fuente del respaldo no existe {{ .detail }}' @@ -194,6 +211,8 @@ delete: 'Eliminar' ErrDefaultWebsite: 'El sitio web predeterminado ya está configurado, cancélelo antes de configurar' SSL: 'Certificado' Set: 'Configuración' + +# certificado SSL ErrSSLCannotDelete: 'El certificado {{ .name }} está siendo utilizado por un sitio web y no puede eliminarse' ErrAccountCannotDelete: 'La cuenta está asociada a un certificado y no puede eliminarse' ErrSSLApply: 'Renovación del certificado exitosa, recarga de openresty fallida, revise la configuración' @@ -228,6 +247,8 @@ ErrApplySSLCanNotDelete: 'El certificado {{ .name }} en proceso de solicitud no StartPushSSLToNode: 'Iniciando envío de certificado al nodo' PushSSLToNodeFailed: 'Error al enviar el certificado al nodo: {{ .err }}' PushSSLToNodeSuccess: 'Certificado enviado correctamente al nodo' + +# MySQL ErrUserIsExist: 'El usuario actual ya existe, intente con otro' ErrDatabaseIsExist: 'La base de datos actual ya existe, intente con otro nombre' ErrExecTimeOut: 'Tiempo de espera en la ejecución SQL, revise la base de datos' @@ -236,7 +257,11 @@ ErrLocalExist: 'El nombre ya existe en la base de datos local, modifíquelo e in RemoteBackup: 'Para hacer una copia de seguridad de la base de datos remota, primero debe iniciarse el servicio de base de datos del contenedor local utilizando la imagen {{ .name }}, espere...' RemoteRecover: 'Para restaurar la base de datos remota, primero debe iniciarse el servicio de base de datos del contenedor local utilizando la imagen {{ .name }}, espere...' Arg: 'Argumento' + +# Redis ErrTypeOfRedis: 'El tipo de archivo de recuperación no coincide con el método de persistencia actual, modifíquelo e intente' + +# contenedor ErrInUsed: '{{ .detail }} está en uso y no se puede eliminar' ErrObjectInUsed: 'Este objeto está en uso y no se puede eliminar' ErrObjectBeDependent: 'Esta imagen es dependida por otras imágenes y no se puede eliminar' @@ -278,6 +303,8 @@ ComposeRecoverFiles: 'Restaurar archivos de compose' ComposeRecoverContainers: 'Restaurar contenedores del compose' ComposeRecoverRecord: 'Guardar registro de compose' ComposeRecoverCleanup: 'Limpiar espacio de restauracion de compose' + +# entorno de ejecución ErrFileNotExist: 'El archivo {{ .detail }} no existe, verifique la integridad' ErrImageBuildErr: 'Fallo al construir la imagen' ErrImageExist: 'La imagen ya existe Modifique el nombre de la imagen.' @@ -290,12 +317,16 @@ ErrNodeModulesNotFound: 'La carpeta node_modules no existe, edite o espere a que ErrContainerNameIsNull: 'El nombre del contenedor no existe' ErrPHPPortIsDefault: 'El puerto 9000 es el predeterminado, modifique e intente de nuevo' ErrPHPRuntimePortFailed: 'El puerto {{ .name }} ya está en uso por el entorno actual, modifique e intente' + +# herramienta ErrConfigNotFound: 'El archivo de configuración no existe' ErrConfigParse: 'El formato del archivo de configuración es incorrecto' ErrConfigIsNull: 'El archivo de configuración no puede estar vacío' ErrConfigDirNotFound: 'El directorio de ejecución no existe' ErrConfigAlreadyExist: 'Ya existe un archivo de configuración con ese nombre' ErrUserFindErr: 'Búsqueda del usuario {{ .name }} fallida {{ .err }}' + +# tarea programada CutWebsiteLogSuccess: 'Log del sitio web {{ .name }} cortado con éxito, ruta de respaldo {{ .path }}' HandleShell: 'Ejecutar script {{ .name }}' HandleCurl: 'URL {{ .name }} にアクセス' @@ -314,6 +345,8 @@ NoSuchResource: 'No se encontraron contenidos de respaldo en la base de datos, o CleanLog: 'Limpiar registro' CleanLogByName: 'Limpiar registro de {{ .name }}' WafIpGroupNotFound: 'Grupo de IP de WAF no encontrado., vaya a [Funciones Avanzadas - WAF - Lista Blanca/Negra - Grupo de IP] para agregar un grupo de IP mediante el método de descarga remota.' + +# caja de herramientas ErrNotExistUser: 'El usuario actual no existe, modifíquelo e intente de nuevo' ErrBanAction: 'Fallo al configurar. El servicio {{ .name }} no está disponible, revise e intente de nuevo' ErrClamdscanNotFound: 'El comando clamdscan no fue detectado, siga la documentación para instalarlo' @@ -322,11 +355,15 @@ SetSwap: 'Configurar Swap {{ .path }} - {{ .size }}' CreateSwap: 'Crear Archivo Swap' FormatSwap: 'Formatear Archivo Swap' EnableSwap: 'Habilitar Swap' + +# protección contra manipulación CleanTamperSetting: 'Limpiar configuraciones de protección históricas' SetTamperWithRules: 'Iniciar protección de directorio según reglas' ProtectDir: 'Proteger directorio {{ .name }}' IgnoreFile: 'Proteger archivo {{ .name }}' TamperSetSuccessful: 'Configuración de protección completada, comenzando monitoreo de los siguientes directorios:' + +# WAF ErrScope: 'No se admite la modificación de esta configuración' ErrStateChange: 'Fallo al cambiar de estado' ErrRuleExist: 'La regla ya existe' @@ -381,6 +418,8 @@ OpenrestyNotFound: 'OpenResty no está instalado' remoteIpIsNull: 'La lista de IP está vacía' OpenrestyVersionErr: 'La versión de OpenResty es demasiado antigua. Actualízalo a 1.27.1.2-2-2-focal' ErrFileTooLarge: 'El archivo supera 1 MB y no se puede cargar' + +# tarea TaskStart: 'La tarea {{ .name }} inicia [INICIO]' TaskEnd: 'La tarea {{ .name }} completada [COMPLETADA]' TaskFailed: 'La tarea {{ .name }} falló' @@ -441,10 +480,17 @@ CustomAppstore: 'Almacén de aplicaciones personalizado' TaskExec: 'Ejecutar' TaskBatch: 'Operación por Lotes' FileConvert: 'Conversión de Formato de Archivo' + +# tarea - ClamAV Clamscan: 'Escanear {{ .name }}' TaskScan: 'Escaneo' + +# tarea - IA OllamaModelPull: 'Descargar modelo Ollama {{ .name }}' OllamaModelSize: 'Obtener tamaño del modelo Ollama {{ .name }}' +AIBenchmarkRun: "Ejecutar prueba de referencia de IA" + +# tarea - instantánea Snapshot: 'Instantánea' SnapDBInfo: 'Escribir información de base de datos de 1Panel' SnapCopy: 'Copiar archivos y directorios {{ .name }}' @@ -494,6 +540,8 @@ RecoverDaemonJson: 'Restaurar archivo daemon.json de configuración de contenedo RecoverDBData: 'Restaurar datos de base de datos' RecoverBackups: 'Restaurar directorio local de respaldo' RecoverPanelData: 'Recuperar directorio de datos' + +# tarea - contenedor ContainerImagePull: 'Descargar imagen de contenedor {{ .name }}' ContainerRemoveOld: 'Eliminar el contenedor original {{ .name }}' ContainerImageCheck: 'Comprobar si la imagen se descargó correctamente' @@ -502,6 +550,8 @@ ContainerRecreate: 'Actualización del contenedor fallida, restaurando el conten ContainerCreate: 'Crear nuevo contenedor {{ .name }}' ContainerCreateFailed: 'Falló la creación del contenedor, eliminando el contenedor fallido' ContainerStartCheck: 'Verificar si el contenedor ha iniciado' + +# tarea - imagen ImageBuild: 'Construcción de imagen' ImagePull: 'Descargar imagen' ImageRepoAuthFromDB: 'Obtener información de autenticación del repositorio desde la base de datos' @@ -509,6 +559,8 @@ ImagePush: 'Subir imagen' ImageRenameTag: 'Modificar etiqueta de imagen' ImageNewTag: 'Nueva etiqueta de imagen {{ .name }}' ComposeCreate: 'Crear orquestación' + +# tarea - sitio web BackupNginxConfig: 'Respaldar archivo de configuración OpenResty' CompressFileSuccess: 'Directorio comprimido con éxito, guardado en {{ .name }}' CompressDir: 'Directorio comprimido' @@ -519,8 +571,15 @@ websiteDir: 'Directorio del sitio web' RecoverFailedStartRollBack: 'Restauración fallida, iniciando reversión' AppBackupFileIncomplete: 'El archivo de respaldo está incompleto, falta app.json o app.tar.gz' AppAttributesNotMatch: 'El tipo o nombre de la aplicación no coincide' + +# alerta +ErrAlertMethodNotSupported: 'Esta versión no admite este método de alerta' ErrAlertSync: 'Error en la sincronización de la alerta, revise e intente de nuevo' + +# tarea - entorno de ejecución ErrInstallExtension: 'Ya hay una tarea de instalación en curso, espere a que termine' + +# plantilla de correo de alerta PanelAlertTitle: 'Notificación de alerta del panel' TestAlertTitle: 'Correo de prueba - Verificar conectividad de correo' TestAlert: 'Este es un correo de prueba para verificar que la configuración de envío de correos es correcta.' @@ -537,6 +596,8 @@ CommonAlert: 'Su Panel {{ .node }}{{ .ip }}, {{ .msg }}. Inicie sesión en el pa NodeExceptionAlert: 'Su Panel {{ .node }}{{ .ip }}, {{ .num }} nodos son anómalos. Inicie sesión en el panel para ver los detalles.' LicenseExceptionAlert: 'Su Panel {{ .node }}{{ .ip }}, {{ .num }} licencias son anómalas. Inicie sesión en el panel para ver los detalles.' SSHAndPanelLoginAlert: 'Su Panel {{ .node }}{{ .ip }}, el inicio de sesión {{ .name }} desde {{ .loginIp }} es anómalo. Inicie sesión en el panel para ver los detalles.' + +# disco DeviceNotFound: 'Dispositivo {{ .name }} no encontrado' DeviceIsMounted: 'El dispositivo {{ .name }} está montado, desmóntelo primero' PartitionDiskErr: 'Error al particionar, {{ .err }}' @@ -549,4 +610,13 @@ TerminalAIBlockedRiskyCommand: 'Comando de riesgo bloqueado: {{ .command }}' TerminalAIThinking: 'La IA está pensando...' TerminalAIReadyToExecute: 'Pensamiento completado, pulsa Enter para ejecutar (duración: {{ .duration }}, token: {{ .tokens }})' TerminalAIRequestFailed: 'La solicitud de AI ha fallado: {{ .err }}' -FileAISearchEmptyDir: 'No hay archivos ni carpetas bajo esta ruta (o todos fueron filtrados).' + +# puerta de enlace de IA +ErrAIProxyServiceNotInstalled: 'El servicio {{ .name }} no está instalado' +ErrAIProxyModelAccountNotFound: 'Cuenta de modelo {{ .id }} no encontrada' +ErrAIProxyModelMapRequired: 'Este campo es obligatorio.' +ErrAIProxyModelMapInvalid: 'El mapeo de modelos debe ser un objeto JSON válido: {{ .err }}' +ErrAIProxyModelMapEmpty: 'El mapeo de modelos no puede estar vacío' +ErrAIProxyModelMapEmptyExternalModel: 'El mapeo de modelos contiene un modelo solicitado vacío' +ErrAIProxyModelMapEmptyUpstreamModel: 'El modelo upstream de {{ .model }} no puede estar vacío' +AIProxyUserFallback: 'Usuario eliminado (ID: {{ .id }})' diff --git a/agent/i18n/lang/fa.yaml b/agent/i18n/lang/fa.yaml index f18472fbe..86f40cfaa 100644 --- a/agent/i18n/lang/fa.yaml +++ b/agent/i18n/lang/fa.yaml @@ -1,32 +1,47 @@ +# خطاهای پایه ErrInvalidParams: 'درخواست نامعتبر: {{ .detail }}' ErrTokenParse: 'خطا در توکن: {{ .detail }}' ErrInitialPassword: 'رمز عبور اصلی اشتباه است' ErrInternalServer: 'خطای داخلی سرور: {{ .detail }}' +ErrRecordExist: 'رکورد از قبل وجود دارد' +ErrRecordNotFound: 'رکورد یافت نشد' +ErrStructTransform: 'تبدیل نوع ناموفق بود: {{ .err }}' +ErrNotSupportType: 'نوع پشتیبانی نمی‌شود: {{ .name }}' + +# هوش مصنوعی فایل ErrFileAINotEnabled: 'خلاصه‌سازی هوش مصنوعی مدیریت فایل نیاز به فعال بودن حساب هوش مصنوعی در مدیریت فایل دارد. جستجوی صرفاً محتوایی زمانی که هوش مصنوعی خاموش است همچنان کار می‌کند.' ErrFileAISearchBadPattern: 'الگوی جستجوی فایل نامعتبر است (عبارت منظم یا کل کلمه): {{ .detail }}' +FileAISearchEmptyDir: 'هیچ فایل یا دایرکتوری در این مسیر یافت نشد (یا همه ورودی‌ها فیلتر شدند).' + +# دانلود از راه دور ErrWgetRemoteFailed: 'دانلود از راه دور ناموفق بود یا URL قابل دسترس نیست: {{ .detail }}' ErrWgetInvalidContentType: 'URL از راه دور فایلی را برنگرداند (احتمالاً صفحه خطا)، {{ .detail }}' ErrWgetProxyNotConfigured: 'ابتدا یک سرور پروکسی در تنظیمات پنل پیکربندی کنید' ErrWgetProxyInvalid: 'آدرس سرور پروکسی نامعتبر است: {{ .detail }}' -ErrRecordExist: 'رکورد از قبل وجود دارد' -ErrRecordNotFound: 'رکورد یافت نشد' -ErrStructTransform: 'تبدیل نوع ناموفق بود: {{ .err }}' + +# ورود و امنیت ErrNotLogin: 'وارد نشده‌اید: {{ .detail }}' ErrPasswordExpired: 'رمز عبور منقضی شده است: {{ .detail }}' -ErrNotSupportType: 'نوع پشتیبانی نمی‌شود: {{ .name }}' -ErrAlertMethodNotSupported: 'این نسخه از این روش هشدار پشتیبانی نمی‌کند' + +# درخواست و API ErrProxy: 'درخواست ناموفق بود: {{ .detail }}' ErrApiConfigStatusInvalid: 'دسترسی API غیرفعال است: {{ .detail }}' ErrApiConfigKeyInvalid: 'کلید API نامعتبر است: {{ .detail }}' ErrApiConfigIPInvalid: 'IP در لیست سفید API نیست: {{ .detail }}' ErrApiConfigDisable: 'نقطه پایانی از طریق API مجاز نیست: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'مهر زمانی API نامعتبر است: {{ .detail }}' -ErrShutDown: 'دستور به صورت دستی متوقف شد' +ErrCreateHttpClient: 'ایجاد درخواست HTTP ناموفق بود: {{ .err }}' +ErrHttpReqTimeOut: 'زمان درخواست HTTP به پایان رسید: {{ .err }}' +ErrHttpReqFailed: 'درخواست HTTP ناموفق بود: {{ .err }}' +ErrNoSuchHost: 'تفکیک میزبان ناموفق بود: {{ .err }}' +ErrHttpReqNotFound: 'منبع درخواستی یافت نشد: {{ .err }}' +# پرش سریع ErrMinQuickJump: 'حداقل یک ورودی پرش سریع تنظیم کنید' ErrMaxQuickJump: 'حداکثر ۴ ورودی پرش سریع' -#common +# عمومی +ErrShutDown: 'دستور به صورت دستی متوقف شد' ErrUsernameIsExist: 'نام کاربری از قبل وجود دارد' ErrNameIsExist: 'نام از قبل وجود دارد' ErrDemoEnvironment: 'در محیط آزمایشی غیرفعال است' @@ -45,7 +60,7 @@ ErrGroupIsDefault: 'گروه پیش‌فرض، قابل حذف نیست' ErrGroupIsInWebsiteUse: 'گروه توسط یک وب‌سایت در حال استفاده است' Decrypt: "رمزگشایی" -#agent +# عامل ErrAgentAccountBound: 'حساب به یک عامل متصل است و قابل حذف نیست' ErrTerminalAIAccountInUse: 'این حساب مدل در حال حاضر توسط ترمینال هوش مصنوعی استفاده می‌شود. حساب را در تنظیمات ترمینال هوش مصنوعی تغییر دهید یا ترمینال هوش مصنوعی را غیرفعال کرده و دوباره تلاش کنید.' ErrAgentAccountUnavailable: 'اتصال حساب در دسترس نیست: {{ .err }}' @@ -71,7 +86,7 @@ ErrAgentWebsiteUnbindUnsupported: 'وب‌سایت‌های استقرار یا ErrHermesPairingCodeUnavailable: 'کد جفت‌سازی به طور موقت در هرمس در دسترس نیست، احتمالاً به دلیل مشکلات شبکه. لطفاً بعداً دوباره تلاش کنید.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'وقتی خط مشی گروه فیشو لیست سفید باشد، خط مشی DM نمی‌تواند کد جفت‌سازی باشد.' -#backup +# پشتیبان‌گیری و تنظیمات هشدار Localhost: 'محلی' ErrBackupInUsed: 'حساب پشتیبان توسط یک وظیفه زمان‌بندی در حال استفاده است' ErrBackupCheck: 'تست اتصال حساب پشتیبان ناموفق بود: {{ .err }}' @@ -80,7 +95,7 @@ ErrBackupLocalCreate: 'حساب‌های پشتیبان محلی قابل ایج ErrAlertConfigInUse: 'پیکربندی هشدار در حال استفاده است و قابل حذف نیست' ErrAlertConfigPhoneExist: 'شماره تلفن از قبل وجود دارد' -#app +# برنامه ErrPortInUsed: 'پورت {{ .detail }} قبلاً اشغال شده است!' ErrAppLimit: 'محدودیت نصب برنامه رسیده است' ErrNotInstall: 'برنامه نصب نشده است' @@ -98,11 +113,6 @@ ErrFileParseApp: 'تجزیه {{ .name }} ناموفق بود: {{ .err }}' ErrAppDirNull: 'پوشه نسخه وجود ندارد' LocalAppErr: 'همگام‌سازی برنامه {{ .name }} ناموفق بود: {{ .err }}' ErrContainerName: 'نام کانتینر از قبل وجود دارد' -ErrCreateHttpClient: 'ایجاد درخواست HTTP ناموفق بود: {{ .err }}' -ErrHttpReqTimeOut: 'زمان درخواست HTTP به پایان رسید: {{ .err }}' -ErrHttpReqFailed: 'درخواست HTTP ناموفق بود: {{ .err }}' -ErrNoSuchHost: 'تفکیک میزبان ناموفق بود: {{ .err }}' -ErrHttpReqNotFound: 'منبع درخواستی یافت نشد: {{ .err }}' ErrContainerNotFound: 'کانتینر {{ .name }} وجود ندارد' ErrContainerMsg: 'کانتینر {{ .name }} غیرعادی است؛ لاگ‌ها را بررسی کنید' ErrAppBackup: 'پشتیبان‌گیری از برنامه ناموفق بود: {{ .name }} {{ .err }}' @@ -134,7 +144,7 @@ ErrDockerComposeCmdNotFound: 'Docker Compose روی میزبان یافت نشد UseExistImage: 'تصویر وجود دارد؛ استفاده از تصویر موجود' ErrDatabaseNotFound: 'پایگاه داده یافت نشد: {{ .name }}' -#ssh +# SSH ExportIP: "IP ورود" ExportArea: "مکان" ExportPort: "پورت" @@ -143,7 +153,7 @@ ExportUser: "کاربر" ExportStatus: "وضعیت ورود" ExportDate: "زمان" -#file +# فایل ErrFileCanNotRead: 'پیش‌نمایش فایل پشتیبانی نمی‌شود' ErrSensitiveFileRead: 'خواندن فایل‌های حساس مجاز نیست' ErrFileToLarge: 'فایل بزرگتر از ۱۰ مگابایت است' @@ -171,7 +181,7 @@ FileDropSuccess: 'پاک‌سازی {{ .name }}؛ فایل‌ها: {{ .count }} FileDropSum: 'پاک‌سازی انجام شد؛ فایل‌ها: {{ .count }}، آزاد شده: {{ .size }}' ErrBadDecrypt: 'رمز عبور آرشیو اشتباه است؛ استخراج ناموفق بود' -#website +# وب‌سایت ErrAliasIsExist: 'نام مستعار از قبل وجود دارد' ErrBackupMatch: 'داده‌های پشتیبان مطابقت ندارند: {{ .detail }}' ErrBackupExist: 'داده‌های منبع پشتیبان وجود ندارند: {{ .detail }}' @@ -202,7 +212,7 @@ ErrDefaultWebsite: 'وب‌سایت پیش‌فرض از قبل تنظیم شد SSL: 'گواهی' Set: 'تنظیمات' -#ssl +# گواهی SSL ErrSSLCannotDelete: 'گواهی {{ .name }} توسط یک وب‌سایت در حال استفاده است' ErrAccountCannotDelete: 'حساب به یک گواهی متصل است و قابل حذف نیست' ErrSSLApply: 'گواهی تمدید شد؛ بارگذاری مجدد OpenResty ناموفق بود' @@ -238,7 +248,7 @@ StartPushSSLToNode: 'ارسال گواهی به گره' PushSSLToNodeFailed: "ارسال گواهی به گره ناموفق بود: {{ .err }}" PushSSLToNodeSuccess: 'گواهی به گره ارسال شد' -#mysql +# MySQL ErrUserIsExist: 'کاربر از قبل وجود دارد' ErrDatabaseIsExist: 'پایگاه داده از قبل وجود دارد' ErrExecTimeOut: 'زمان اجرای SQL به پایان رسید' @@ -248,10 +258,10 @@ RemoteBackup: 'قبل از پشتیبان‌گیری از پایگاه داده RemoteRecover: 'قبل از بازیابی پایگاه داده از راه دور، کانتینر پایگاه داده محلی را با تصویر {{ .name }} راه‌اندازی کنید' Arg: "آرگومان" -#redis +# Redis ErrTypeOfRedis: 'نوع فایل پشتیبان با حالت ماندگاری فعلی مطابقت ندارد' -#container +# کانتینر ErrInUsed: "{{ .detail }} در حال استفاده است و قابل حذف نیست!" ErrObjectInUsed: "این شی در حال استفاده است و قابل حذف نیست!" ErrObjectBeDependent: "این تصویر توسط تصاویر دیگر ارجاع داده شده است و قابل حذف نیست!" @@ -294,7 +304,7 @@ ComposeRecoverContainers: 'بازیابی کانتینرهای Compose' ComposeRecoverRecord: 'ذخیره رکورد Compose' ComposeRecoverCleanup: 'پاک‌سازی فضای کاری بازیابی Compose' -#runtime +# محیط اجرا ErrFileNotExist: 'فایل منبع یافت نشد: {{ .detail }}' ErrImageBuildErr: 'ساخت تصویر ناموفق بود' ErrImageExist: "تصویر از قبل وجود دارد. از نام تصویر دیگری استفاده کنید." @@ -308,7 +318,7 @@ ErrContainerNameIsNull: 'نام کانتینر خالی است' ErrPHPPortIsDefault: 'پورت ۹۰۰۰ به عنوان پیش‌فرض رزرو شده است؛ از پورت دیگری استفاده کنید' ErrPHPRuntimePortFailed: 'پورت {{ .name }} قبلاً توسط این محیط اجرا استفاده می‌شود' -#tool +# ابزار ErrConfigNotFound: 'فایل پیکربندی وجود ندارد' ErrConfigParse: 'فرمت فایل پیکربندی نامعتبر است' ErrConfigIsNull: 'فایل پیکربندی نمی‌تواند خالی باشد' @@ -316,7 +326,7 @@ ErrConfigDirNotFound: 'دایرکتوری اجرا یافت نشد' ErrConfigAlreadyExist: 'فایل پیکربندی با همین نام از قبل وجود دارد' ErrUserFindErr: 'یافتن کاربر {{ .name }} ناموفق بود: {{ .err }}' -#cronjob +# وظیفه زمان‌بندی‌شده CutWebsiteLogSuccess: 'لاگ وب‌سایت چرخش یافت: {{ .name }} (پشتیبان: {{ .path }})' HandleShell: 'اجرای اسکریپت {{ .name }}' HandleCurl: 'درخواست به URL {{ .name }}' @@ -336,7 +346,7 @@ CleanLog: 'پاک‌سازی لاگ' CleanLogByName: 'پاک‌سازی لاگ‌های {{ .name }}' WafIpGroupNotFound: "گروه IP WAF یافت نشد. به [ویژگی‌های پیشرفته -> WAF -> لیست سیاه/سفید -> گروه IP] بروید و با استفاده از دانلود از راه دور یکی را اضافه کنید." -#toolbox +# جعبه‌ابزار ErrNotExistUser: 'کاربر وجود ندارد' ErrBanAction: 'پیکربندی ناموفق بود: سرویس {{ .name }} در دسترس نیست' ErrClamdscanNotFound: 'دستور clamdscan یافت نشد' @@ -346,14 +356,14 @@ CreateSwap: 'ایجاد فایل swap' FormatSwap: 'فرمت فایل swap' EnableSwap: 'فعال‌سازی swap' -#tamper +# محافظت در برابر دستکاری CleanTamperSetting: 'پاک‌سازی تنظیمات حفاظتی قدیمی' SetTamperWithRules: 'فعال‌سازی محافظت دایرکتوری بر اساس قوانین' ProtectDir: "محافظت از دایرکتوری {{ .name }}" IgnoreFile: "محافظت از فایل {{ .name }}" TamperSetSuccessful: 'محافظت تنظیم شد. نظارت بر این دایرکتوری‌ها:' -#waf +# WAF ErrScope: 'این پیکربندی قابل تغییر نیست' ErrStateChange: 'تغییر وضعیت ناموفق بود' ErrRuleExist: 'قانون از قبل وجود دارد' @@ -409,7 +419,7 @@ remoteIpIsNull: "لیست IP خالی است" OpenrestyVersionErr: 'نسخه OpenResty بسیار پایین است؛ به ۱.۲۷.۱.۲-۲-۲-focal ارتقاء دهید' ErrFileTooLarge: 'فایل بزرگتر از ۱ مگابایت است و قابل بارگذاری نیست' -#task +# وظیفه TaskStart: '{{ .name }} [شروع]' TaskEnd: '{{ .name }} [انجام شد]' TaskFailed: 'وظیفه {{ .name }} ناموفق بود' @@ -471,16 +481,16 @@ TaskExec: 'اجرا' TaskBatch: "عملیات دسته‌ای" FileConvert: 'تبدیل فایل' -# task - clam +# وظیفه - ClamAV Clamscan: "اسکن {{ .name }}" TaskScan: "اسکن" -# task - ai +# وظیفه - هوش مصنوعی OllamaModelPull: 'دریافت مدل Ollama {{ .name }}' OllamaModelSize: 'دریافت اندازه مدل Ollama: {{ .name }}' AIBenchmarkRun: 'اجرای معیار سنجش هوش مصنوعی' -# task-snapshot +# وظیفه - اسنپ‌شات Snapshot: 'تصویر لحظه‌ای' SnapDBInfo: 'نوشتن اطلاعات پایگاه داده 1Panel' SnapCopy: 'کپی فایل‌ها/دایرکتوری‌ها {{ .name }}' @@ -506,7 +516,6 @@ SnapCompressSize: 'اندازه تصویر لحظه‌ای {{ .name }}' SnapUpload: 'بارگذاری فایل تصویر لحظه‌ای' SnapUploadTo: 'بارگذاری تصویر لحظه‌ای به {{ .name }}' SnapUploadRes: 'بارگذاری تصویر لحظه‌ای به {{ .name }}' - SnapshotRecover: 'بازیابی تصویر لحظه‌ای' RecoverDownload: 'دانلود فایل تصویر لحظه‌ای' Download: 'دانلود' @@ -532,7 +541,7 @@ RecoverDBData: 'بازیابی داده‌های پایگاه داده' RecoverBackups: 'بازیابی دایرکتوری پشتیبان محلی' RecoverPanelData: 'بازیابی دایرکتوری داده' -# task - container +# وظیفه - کانتینر ContainerImagePull: 'دریافت تصویر کانتینر {{ .name }}' ContainerRemoveOld: 'حذف کانتینر اصلی {{ .name }}' ContainerImageCheck: 'بررسی نتیجه دریافت تصویر' @@ -542,7 +551,7 @@ ContainerCreate: 'ایجاد کانتینر جدید {{ .name }}' ContainerCreateFailed: 'ایجاد کانتینر ناموفق بود؛ حذف کانتینر ناموفق' ContainerStartCheck: 'بررسی شروع کانتینر' -# task - image +# وظیفه - تصویر ImageBuild: 'ساخت تصویر' ImagePull: 'دریافت تصویر' ImageRepoAuthFromDB: 'بارگذاری احراز هویت مخزن از پایگاه داده' @@ -551,7 +560,7 @@ ImageRenameTag: 'به‌روزرسانی برچسب تصویر' ImageNewTag: 'برچسب تصویر جدید {{ .name }}' ComposeCreate: 'ایجاد پروژه Compose' -# task - website +# وظیفه - وب‌سایت BackupNginxConfig: 'پشتیبان‌گیری از پیکربندی OpenResty وب‌سایت' CompressFileSuccess: 'دایرکتوری به {{ .name }} فشرده شد' CompressDir: 'فشرده‌سازی دایرکتوری' @@ -563,13 +572,14 @@ RecoverFailedStartRollBack: 'بازیابی ناموفق بود؛ شروع با AppBackupFileIncomplete: 'پشتیبان ناقص است: app.json یا app.tar.gz وجود ندارد' AppAttributesNotMatch: 'نوع یا نام برنامه مطابقت ندارد' -#alert +# هشدار +ErrAlertMethodNotSupported: 'این نسخه از این روش هشدار پشتیبانی نمی‌کند' ErrAlertSync: 'همگام‌سازی پیام هشدار ناموفق بود' -#task - runtime +# وظیفه - محیط اجرا ErrInstallExtension: 'وظیفه نصب پسوند دیگری در حال اجراست' -# alert mail template +# قالب ایمیل هشدار PanelAlertTitle: "اعلان هشدار پنل" TestAlertTitle: "ایمیل آزمایشی - تأیید اتصال ایمیل" TestAlert: "این یک ایمیل آزمایشی برای تأیید صحت پیکربندی ارسال ایمیل شما است." @@ -587,7 +597,7 @@ NodeExceptionAlert: "پنل {{ .node }}{{ .ip }}: {{ .num }} گره غیرعاد LicenseExceptionAlert: "پنل {{ .node }}{{ .ip }}: {{ .num }} مجوز غیرعادی است. برای مشاهده جزئیات وارد شوید." SSHAndPanelLoginAlert: "پنل {{ .node }}{{ .ip }}: ورود غیرعادی {{ .name }} از {{ .loginIp }}. برای مشاهده جزئیات وارد شوید." -#disk +# دیسک DeviceNotFound: "دستگاه {{ .name }} یافت نشد" DeviceIsMounted: 'دستگاه {{ .name }} متصل است؛ ابتدا قطع اتصال کنید' PartitionDiskErr: 'پارتیشن‌بندی ناموفق بود: {{ .err }}' @@ -595,14 +605,13 @@ FormatDiskErr: 'فرمت کردن ناموفق بود: {{ .err }}' MountDiskErr: 'اتصال ناموفق بود: {{ .err }}' XfsNotFound: 'xfs یافت نشد؛ ابتدا xfsprogs را نصب کنید' -# terminal +# ترمینال TerminalAIBlockedRiskyCommand: 'دستور پرخطر مسدود شد: {{ .command }}' TerminalAIThinking: 'هوش مصنوعی در حال فکر کردن است...' TerminalAIReadyToExecute: 'تفکر کامل شد، برای اجرا Enter را فشار دهید (مدت زمان: {{ .duration }}، توکن‌ها: {{ .tokens }})' TerminalAIRequestFailed: 'درخواست هوش مصنوعی ناموفق بود: {{ .err }}' -FileAISearchEmptyDir: 'هیچ فایل یا دایرکتوری در این مسیر یافت نشد (یا همه ورودی‌ها فیلتر شدند).' -# ai proxy +# دروازه هوش مصنوعی ErrAIProxyServiceNotInstalled: 'سرویس {{ .name }} نصب نشده است' ErrAIProxyModelAccountNotFound: 'حساب مدل {{ .id }} یافت نشد' ErrAIProxyModelMapRequired: 'این فیلد الزامی است.' @@ -610,4 +619,4 @@ ErrAIProxyModelMapInvalid: 'نگاشت مدل باید یک شی JSON معتبر ErrAIProxyModelMapEmpty: 'نگاشت مدل نمی‌تواند خالی باشد' ErrAIProxyModelMapEmptyExternalModel: 'نگاشت مدل شامل یک مدل درخواست خالی است' ErrAIProxyModelMapEmptyUpstreamModel: 'مدل بالادست برای {{ .model }} نمی‌تواند خالی باشد' -AIProxyUserFallback: 'کاربر حذف شده (شناسه: {{ .id }})' \ No newline at end of file +AIProxyUserFallback: 'کاربر حذف شده (شناسه: {{ .id }})' diff --git a/agent/i18n/lang/ja.yaml b/agent/i18n/lang/ja.yaml index a044be66d..7da25949e 100644 --- a/agent/i18n/lang/ja.yaml +++ b/agent/i18n/lang/ja.yaml @@ -1,29 +1,47 @@ +# 基本エラー ErrInvalidParams: '不正なリクエスト: {{ .detail }}' ErrTokenParse: 'トークンエラー: {{ .detail }}' ErrInitialPassword: '元のパスワードが違います' ErrInternalServer: '内部エラー: {{ .detail }}' +ErrRecordExist: 'レコードが既に存在します' +ErrRecordNotFound: 'レコードが見つかりません' +ErrStructTransform: '型変換エラー: {{ .err }}' +ErrNotSupportType: '未対応のタイプ: {{ .name }}' + +# ファイルAI ErrFileAINotEnabled: 'ファイル管理の「AI アカウント」でファイル AI 検索を有効にし、アカウントを選んでください。' ErrFileAISearchBadPattern: '検索パターンが無効です(正規表現など): {{ .detail }}' +FileAISearchEmptyDir: 'このパス以下に一覧できるファイルまたはフォルダーがありません(またはすべて除外されました)。' + +# リモートダウンロード ErrWgetRemoteFailed: 'リモートのダウンロード URL が無効か、到達できません:{{ .detail }}' ErrWgetInvalidContentType: 'リモート URL がファイルではなくエラーページ等を返しました、{{ .detail }}' ErrWgetProxyNotConfigured: '先にパネル設定でプロキシサーバーを設定してください' ErrWgetProxyInvalid: 'プロキシサーバーのアドレスが無効です:{{ .detail }}' -ErrRecordExist: 'レコードが既に存在します' -ErrRecordNotFound: 'レコードが見つかりません' -ErrStructTransform: '型変換エラー: {{ .err }}' + +# ログインとセキュリティ ErrNotLogin: 'ログインしていません: {{ .detail }}' ErrPasswordExpired: 'パスワード期限切れ: {{ .detail }}' -ErrNotSupportType: '未対応のタイプ: {{ .name }}' -ErrAlertMethodNotSupported: 'このバージョンではこの通知方法は利用できません' + +# リクエストとAPI ErrProxy: 'リクエストに失敗しました: {{ .detail }}' ErrApiConfigStatusInvalid: 'API利用不可: {{ .detail }}' ErrApiConfigKeyInvalid: 'APIキーが無効です: {{ .detail }}' ErrApiConfigIPInvalid: 'IPが許可されていません: {{ .detail }}' ErrApiConfigDisable: 'APIは無効です: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'タイムスタンプが無効です: {{ .detail }}' -ErrShutDown: 'コマンドは手動で停止されました' +ErrCreateHttpClient: 'リクエスト {{ .err }} の作成に失敗しました' +ErrHttpReqTimeOut: 'リクエストがタイムアウトしました {{ .err }}' +ErrHttpReqFailed: 'リクエストが失敗しました {{ .err }}' +ErrNoSuchHost: '要求されたサーバー {{ .err }} が見つかりません' +ErrHttpReqNotFound: '要求されたリソース {{ .err }} が見つかりませんでした' + +# クイックジャンプ ErrMinQuickJump: 'クイックアクセスを1件以上追加' ErrMaxQuickJump: '最大4件のクイックアクセス' + +# 共通 +ErrShutDown: 'コマンドは手動で停止されました' ErrUsernameIsExist: 'ユーザー名はすでに使われています' ErrNameIsExist: '名称はすでに使われています' ErrDemoEnvironment: 'デモ環境では利用できません' @@ -41,6 +59,8 @@ SystemRestart: 'システムの再起動によりタスクが中断されまし ErrGroupIsDefault: 'デフォルト グループ、削除できません' ErrGroupIsInWebsiteUse: 'グループは別の Web サイトで使用されているため、削除できません。' Decrypt: '復号化' + +# エージェント ErrAgentAccountBound: 'アカウントはエージェントに紐づいています' ErrTerminalAIAccountInUse: 'このモデルアカウントは Terminal AI で使用中です。Terminal AI の設定で別のアカウントへ切り替えるか、Terminal AI を無効にしてから再試行してください。' ErrAgentAccountUnavailable: 'アカウント接続不可: {{ .err }}' @@ -65,14 +85,8 @@ ErrAgentWebsiteInUse: 'このサイトはすでに別のエージェントに関 ErrAgentWebsiteUnbindUnsupported: 'ワンクリックデプロイのサイトは手動で関連解除できません' ErrHermesPairingCodeUnavailable: 'Hermes でペアリングコードが一時的に見つかりません。ネットワーク要因の可能性があるため、しばらくしてから再試行してください。' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'Feishu のグループポリシーが許可リストの場合、DM ポリシーをペアリングコードにはできません。' -ErrAIProxyServiceNotInstalled: '{{ .name }} サービスはインストールされていません' -ErrAIProxyModelAccountNotFound: 'モデルアカウント {{ .id }} が見つかりません' -ErrAIProxyModelMapRequired: 'この項目は必須です。' -ErrAIProxyModelMapInvalid: 'モデルマッピングは有効な JSON オブジェクトである必要があります: {{ .err }}' -ErrAIProxyModelMapEmpty: 'モデルマッピングは空にできません' -ErrAIProxyModelMapEmptyExternalModel: 'モデルマッピングに空のリクエストモデルがあります' -ErrAIProxyModelMapEmptyUpstreamModel: '{{ .model }} の上流モデルは空にできません' -AIProxyUserFallback: '削除済みユーザー (ID: {{ .id }})' + +# バックアップとアラート設定 Localhost: 'ローカルマシン' ErrBackupInUsed: 'バックアップアカウントがスケジュールで使用中' ErrBackupCheck: '接続テストに失敗しました: {{ .err }}' @@ -80,6 +94,8 @@ ErrBackupLocalDelete: 'ローカルバックアップは削除できません' ErrBackupLocalCreate: 'ローカルバックアップは作成できません' ErrAlertConfigInUse: 'アラート設定は使用中のため削除できません' ErrAlertConfigPhoneExist: '電話番号はすでに存在します' + +# アプリ ErrPortInUsed: '{{ .detail }} ポートはすでに使用されています' ErrAppLimit: 'インストールされているアプリケーションの数が制限を超えました' ErrNotInstall: 'アプリケーションがインストールされていません' @@ -97,11 +113,6 @@ ErrFileParseApp: '{{ .name }} ファイルの解析に失敗しました {{ .err ErrAppDirNull: 'バージョン フォルダーが存在しません' LocalAppErr: 'アプリケーション {{ .name }} の同期に失敗しました {{ .err }}' ErrContainerName: 'コンテナ名が既に存在します' -ErrCreateHttpClient: 'リクエスト {{ .err }} の作成に失敗しました' -ErrHttpReqTimeOut: 'リクエストがタイムアウトしました {{ .err }}' -ErrHttpReqFailed: 'リクエストが失敗しました {{ .err }}' -ErrNoSuchHost: '要求されたサーバー {{ .err }} が見つかりません' -ErrHttpReqNotFound: '要求されたリソース {{ .err }} が見つかりませんでした' ErrContainerNotFound: '{{ .name }} コンテナが存在しません' ErrContainerMsg: '{{ .name }} コンテナが異常です。詳細についてはコンテナページのログを確認してください。' ErrAppBackup: '{{ .name }} アプリケーションのバックアップに失敗しました。エラー {{ .err }}' @@ -132,6 +143,8 @@ ErrDockerFailed: 'Docker の状態が異常です。サービス状態を確認 ErrDockerComposeCmdNotFound: 'Docker Compose コマンドは存在しません。ホストマシンにこのコマンドを先にインストールしてください' UseExistImage: 'イメージは既に存在します。既存のイメージを使用します' ErrDatabaseNotFound: 'データベース {{ .name }} は存在しません' + +# SSH ExportIP: 'ログインIP' ExportArea: '地域' ExportPort: 'ポート' @@ -139,6 +152,8 @@ ExportAuthMode: 'ログイン方式' ExportUser: 'ユーザー' ExportStatus: 'ログイン状態' ExportDate: '時間' + +# ファイル ErrFileCanNotRead: 'このファイルはプレビューをサポートしていません' ErrSensitiveFileRead: '機密ファイルの読み取りは許可されていません' ErrFileToLarge: 'ファイルは 10M より大きいため開けません' @@ -165,6 +180,8 @@ FileDropFailed: 'ファイル {{ .name }} のクリーンアップに失敗し FileDropSuccess: 'ファイル {{ .name }} のクリーンアップに成功しました、{{ .count }} ファイルを削除、{{ .size }} のディスク領域を解放' FileDropSum: 'ファイルのクリーンアップが完了しました、合計 {{ .count }} ファイルを削除、合計 {{ .size }} のディスク領域を解放' ErrBadDecrypt: '圧縮パッケージの解凍パスワードが間違っています。解凍に失敗しました。確認後再試行!' + +# ウェブサイト ErrAliasIsExist: 'エイリアスがすでに存在します' ErrBackupMatch: 'バックアップ ファイルは、現在の Web サイト データ {{ .detail }} の一部と一致しません' ErrBackupExist: 'バックアップ ファイル内のソース データの対応する部分が存在しません {{ .detail }}' @@ -194,6 +211,8 @@ delete: '削除' ErrDefaultWebsite: 'デフォルト Web サイトが既に設定されています。設定する前にキャンセルしてください!' SSL: '証明書' Set: '設定' + +# SSL証明書 ErrSSLCannotDelete: '{{ .name }} 証明書は Web サイトで使用されているため、削除できません' ErrAccountCannotDelete: 'アカウントは証明書に関連付けられているため、削除できません' ErrSSLApply: '証明書の更新は成功しましたが、openresty の再ロードに失敗しました。設定を確認してください。' @@ -228,6 +247,8 @@ ErrApplySSLCanNotDelete: '申請中の証明書 {{ .name }} は削除できま StartPushSSLToNode: '証明書をノードにプッシュ開始' PushSSLToNodeFailed: 'ノードに証明書をプッシュ失敗: {{ .err }}' PushSSLToNodeSuccess: 'ノードに証明書をプッシュ成功' + +# MySQL ErrUserIsExist: '現在のユーザーは既に存在します。再入力してください' ErrDatabaseIsExist: '現在のデータベースは既に存在します。再入力してください' ErrExecTimeOut: 'SQL 実行がタイムアウトしました。データベースを確認してください' @@ -236,7 +257,11 @@ ErrLocalExist: '名前はローカル データベースに既に存在します RemoteBackup: 'リモートデータベースをバックアップするには、まずイメージ {{ .name }} を使用してローカルコンテナデータベースサービスを起動する必要があります。しばらくお待ちください...' RemoteRecover: 'リモートデータベースを復元するには、まずイメージ {{ .name }} を使用してローカルコンテナデータベースサービスを起動する必要があります。しばらくお待ちください...' Arg: '引数' + +# Redis ErrTypeOfRedis: 'リカバリ ファイルの種類が現在の永続化方法と一致しません。変更して再試行してください' + +# コンテナ ErrInUsed: '{{ .detail }} は使用中であり、削除できません!' ErrObjectInUsed: 'このオブジェクトは使用中であり、削除できません!' ErrObjectBeDependent: 'このイメージは他のイメージに依存されているため、削除できません!' @@ -278,6 +303,8 @@ ComposeRecoverFiles: 'Compose ファイルを復元' ComposeRecoverContainers: 'Compose コンテナを復元' ComposeRecoverRecord: 'Compose 記録を保存' ComposeRecoverCleanup: 'Compose 復元作業領域をクリーンアップ' + +# ランタイム ErrFileNotExist: '{{ .detail }} ファイルが存在しません。ソース ファイルの整合性を確認してください。' ErrImageBuildErr: 'イメージのビルドに失敗しました' ErrImageExist: 'イメージはすでに存在します!イメージ名を変更してください。' @@ -290,12 +317,16 @@ ErrNodeModulesNotFound: 'node_modules フォルダが存在しません。ラン ErrContainerNameIsNull: 'コンテナ名が存在しません' ErrPHPPortIsDefault: 'ポート9000はデフォルトポートです。修正してから再試行してください' ErrPHPRuntimePortFailed: 'ポート {{ .name }} は現在のランタイム環境で使用されています。修正してから再試行してください' + +# ツール ErrConfigNotFound: '構成ファイルが存在しません' ErrConfigParse: '構成ファイルの形式が正しくありません' ErrConfigIsNull: '構成ファイルは空にできません' ErrConfigDirNotFound: '実行ディレクトリが存在しません' ErrConfigAlreadyExist: '同じ名前の設定ファイルがすでに存在します' ErrUserFindErr: 'ユーザー {{ .name }} の検索に失敗しました {{ .err }}' + +# Cronジョブ CutWebsiteLogSuccess: '{{ .name }} ウェブサイトのログが正常にカットされました。バックアップ パス {{ .path }}' HandleShell: 'スクリプト {{ .name }} を実行します' HandleCurl: 'URL {{ .name }} にアクセス' @@ -314,6 +345,8 @@ NoSuchResource: 'データベースにバックアップ内容が見つかりま CleanLog: 'ログをクリーン' CleanLogByName: '{{ .name }} のログをクリーン' WafIpGroupNotFound: 'WAF IPグループが見つかりません。[高度な機能 - WAF - ブラックリスト/ホワイトリスト - IPグループ]に移動し、リモートダウンロード方式でIPグループを追加してください。' + +# ツールボックス ErrNotExistUser: '現在のユーザーは存在しません。変更してもう一度お試しください。' ErrBanAction: '設定に失敗しました。現在の {{ .name }} サービスは利用できません。確認してもう一度お試しください。' ErrClamdscanNotFound: 'clamdscan コマンドが検出されませんでした。インストールするにはドキュメントを参照してください。' @@ -322,11 +355,15 @@ SetSwap: 'Swap設定 {{ .path }} - {{ .size }}' CreateSwap: 'Swapファイル作成' FormatSwap: 'Swapファイルフォーマット' EnableSwap: 'Swapファイル有効化' + +# 改ざん防止 CleanTamperSetting: '履歴保護設定をクリーンアップ' SetTamperWithRules: 'ルールに従ってディレクトリ保護を開始' ProtectDir: 'ディレクトリを保護 {{ .name }}' IgnoreFile: 'ファイルを保護 {{ .name }}' TamperSetSuccessful: '保護設定が完了し、以下のディレクトリの監視を開始します:' + +# WAF ErrScope: 'この構成の変更はサポートされていません' ErrStateChange: '状態の変更に失敗しました' ErrRuleExist: 'ルールは既に存在します' @@ -381,6 +418,8 @@ OpenrestyNotFound: 'OpenResty がインストールされていません' remoteIpIsNull: 'IPリストが空です' OpenrestyVersionErr: 'OpenResty のバージョンが古すぎます。1.27.1.2-2-2-focal 以降にアップグレードしてください' ErrFileTooLarge: 'ファイルが 1MB を超えているためアップロードできません' + +# タスク TaskStart: '{{ .name }} タスクが開始されました [START]' TaskEnd: '{{ .name }} タスクが完了しました [COMPLETED]' TaskFailed: '{{ .name }} タスクが失敗しました' @@ -441,10 +480,17 @@ CustomAppstore: 'カスタム アプリケーション ウェアハウス' TaskExec: '実行' TaskBatch: '一括操作' FileConvert: 'ファイル形式の変換' + +# タスク - ClamAV Clamscan: '{{ .name }} をスキャン' TaskScan: 'スキャン' + +# タスク - AI OllamaModelPull: 'Ollama モデル {{ .name }} をプルします' OllamaModelSize: 'Ollama モデル {{ .name }} のサイズを取得します' +AIBenchmarkRun: "AIベンチマークを実行" + +# タスク - スナップショット Snapshot: 'スナップショット' SnapDBInfo: '1Panel データベース情報を書き込む' SnapCopy: 'ファイルとディレクトリ {{ .name }} をコピーします' @@ -494,6 +540,8 @@ RecoverDaemonJson: 'コンテナ構成 daemon.json ファイルを復元する' RecoverDBData: 'データベース データを回復する' RecoverBackups: 'ローカル バックアップ ディレクトリを復元する' RecoverPanelData: 'リカバリデータディレクトリ' + +# タスク - コンテナ ContainerImagePull: 'コンテナ イメージ {{ .name }} をプルします' ContainerRemoveOld: '元のコンテナ {{ .name }} を削除します' ContainerImageCheck: 'イメージが正常にプルされているかどうかを確認します' @@ -502,6 +550,8 @@ ContainerRecreate: 'コンテナの更新に失敗しました。元のコンテ ContainerCreate: '新しいコンテナ {{ .name }} を作成します' ContainerCreateFailed: 'コンテナの作成に失敗しました。失敗したコンテナを削除してください' ContainerStartCheck: 'コンテナが起動されているかどうかを確認します' + +# タスク - イメージ ImageBuild: 'イメージビルド' ImagePull: '画像をプル' ImageRepoAuthFromDB: 'データベースからリポジトリ認証情報を取得する' @@ -509,6 +559,8 @@ ImagePush: '画像をプッシュ' ImageRenameTag: '画像タグを変更する' ImageNewTag: '新しい画像タグ {{ .name }}' ComposeCreate: 'コンポジションを作成する' + +# タスク - ウェブサイト BackupNginxConfig: 'ウェブサイトの OpenResty 構成ファイルをバックアップする' CompressFileSuccess: 'ディレクトリを正常に圧縮しました。{{ .name }} に圧縮されました' CompressDir: '圧縮ディレクトリ' @@ -519,8 +571,15 @@ websiteDir: 'ウェブサイトディレクトリ' RecoverFailedStartRollBack: 'リカバリに失敗しました。ロールバックを開始します' AppBackupFileIncomplete: 'バックアップ ファイルが不完全で、app.json または app.tar.gz ファイルが不足しています' AppAttributesNotMatch: 'アプリケーションの種類または名前が一致しません' + +# アラート +ErrAlertMethodNotSupported: 'このバージョンではこの通知方法は利用できません' ErrAlertSync: 'アラーム情報の同期エラーです。確認してもう一度お試しください。' + +# タスク - ランタイム ErrInstallExtension: 'インストールタスクが進行中です、タスクが終了するのを待ってください' + +# アラートメールテンプレート PanelAlertTitle: 'パネルアラート通知' TestAlertTitle: 'テストメール - メール接続の確認' TestAlert: 'これはテストメールです。メール送信設定が正しく構成されているかを確認します。' @@ -537,6 +596,8 @@ CommonAlert: 'あなたの {{ .node }}{{ .ip }} パネル、{{ .msg }}。詳細 NodeExceptionAlert: 'あなたの {{ .node }}{{ .ip }} パネル、{{ .num }} 個のノードに異常が発生しています。詳細はパネルにログインして' LicenseExceptionAlert: 'あなたの {{ .node }}{{ .ip }} パネル、{{ .num }} 個のライセンスに異常が発生しています。詳細はパネルにログインして' SSHAndPanelLoginAlert: 'あなたの {{ .node }}{{ .ip }} パネル、{{ .loginIp }} からの {{ .name }} ログインに異常があります。詳細はパネルにログインして' + +# ディスク DeviceNotFound: 'デバイス {{ .name }} が見つかりません' DeviceIsMounted: 'デバイス {{ .name }} はマウントされています、まずアンマウントしてください' PartitionDiskErr: 'パーティションに失敗しました、{{ .err }}' @@ -544,9 +605,18 @@ FormatDiskErr: 'ディスクのフォーマットに失敗しました、{{ .err MountDiskErr: 'ディスクのマウントに失敗しました、{{ .err }}' XfsNotFound: 'xfs ファイルシステムが検出されませんでした、最初に xfsprogs をインストールしてください' -# terminal +# ターミナル TerminalAIBlockedRiskyCommand: '危険なコマンドをブロックしました: {{ .command }}' TerminalAIThinking: 'AI が考えています...' TerminalAIReadyToExecute: '思考が完了しました。Enter で実行してください(所要時間 {{ .duration }}、token: {{ .tokens }})' TerminalAIRequestFailed: 'AI リクエストに失敗しました: {{ .err }}' -FileAISearchEmptyDir: 'このパス以下に一覧できるファイルまたはフォルダーがありません(またはすべて除外されました)。' + +# AIゲートウェイ +ErrAIProxyServiceNotInstalled: '{{ .name }} サービスはインストールされていません' +ErrAIProxyModelAccountNotFound: 'モデルアカウント {{ .id }} が見つかりません' +ErrAIProxyModelMapRequired: 'この項目は必須です。' +ErrAIProxyModelMapInvalid: 'モデルマッピングは有効な JSON オブジェクトである必要があります: {{ .err }}' +ErrAIProxyModelMapEmpty: 'モデルマッピングは空にできません' +ErrAIProxyModelMapEmptyExternalModel: 'モデルマッピングに空のリクエストモデルがあります' +ErrAIProxyModelMapEmptyUpstreamModel: '{{ .model }} の上流モデルは空にできません' +AIProxyUserFallback: '削除済みユーザー (ID: {{ .id }})' diff --git a/agent/i18n/lang/ko.yaml b/agent/i18n/lang/ko.yaml index 4c83e02d0..5b0a537b0 100644 --- a/agent/i18n/lang/ko.yaml +++ b/agent/i18n/lang/ko.yaml @@ -1,29 +1,47 @@ +# 기본 오류 ErrInvalidParams: '잘못된 요청: {{ .detail }}' ErrTokenParse: '토큰 오류: {{ .detail }}' ErrInitialPassword: '원래 비밀번호가 틀립니다' ErrInternalServer: '서버 오류: {{ .detail }}' +ErrRecordExist: '레코드가 이미 있습니다' +ErrRecordNotFound: '레코드를 찾을 수 없습니다' +ErrStructTransform: '형 변환 실패: {{ .err }}' +ErrNotSupportType: '지원하지 않는 타입: {{ .name }}' + +# 파일 AI ErrFileAINotEnabled: '파일 관리에서 「AI 계정」으로 파일 AI 검색을 켜고 계정을 선택하세요.' ErrFileAISearchBadPattern: '검색 패턴이 잘못되었습니다(정규식 등): {{ .detail }}' +FileAISearchEmptyDir: '이 경로에 나열할 파일이나 디렉터리가 없습니다(또는 모두 필터링됨).' + +# 원격 다운로드 ErrWgetRemoteFailed: '원격 다운로드 주소가 잘못되었거나 접근할 수 없습니다: {{ .detail }}' ErrWgetInvalidContentType: '원격 주소가 파일이 아닌 콘텐츠를 반환했습니다 (오류 페이지일 수 있음), {{ .detail }}' ErrWgetProxyNotConfigured: '먼저 패널 설정에서 프록시 서버를 구성하세요' ErrWgetProxyInvalid: '프록시 서버 주소가 잘못되었습니다: {{ .detail }}' -ErrRecordExist: '레코드가 이미 있습니다' -ErrRecordNotFound: '레코드를 찾을 수 없습니다' -ErrStructTransform: '형 변환 실패: {{ .err }}' + +# 로그인 및 보안 ErrNotLogin: '로그인하지 않음: {{ .detail }}' ErrPasswordExpired: '비밀번호 만료: {{ .detail }}' -ErrNotSupportType: '지원하지 않는 타입: {{ .name }}' -ErrAlertMethodNotSupported: '현재 버전에서는 이 알림 방식을 지원하지 않습니다' + +# 요청 및 API ErrProxy: '요청 실패: {{ .detail }}' ErrApiConfigStatusInvalid: 'API 사용 중지: {{ .detail }}' ErrApiConfigKeyInvalid: 'API 키가 잘못됨: {{ .detail }}' ErrApiConfigIPInvalid: 'IP 허용되지 않음: {{ .detail }}' ErrApiConfigDisable: 'API 접근 금지: {{ .detail }}' ErrApiConfigKeyTimeInvalid: '타임스탬프 오류: {{ .detail }}' -ErrShutDown: '명령이 수동으로 중단되었습니다' +ErrCreateHttpClient: '요청 {{ .err }}을(를) 생성하지 못했습니다.' +ErrHttpReqTimeOut: '요청 시간이 초과되었습니다 {{ .err }}' +ErrHttpReqFailed: '요청이 실패했습니다 {{ .err }}' +ErrNoSuchHost: '요청한 서버 {{ .err }}을 찾을 수 없습니다' +ErrHttpReqNotFound: '요청한 리소스 {{ .err }}을 찾을 수 없습니다.' + +# 빠른 이동 ErrMinQuickJump: '퀵 액세스를 하나 이상 추가하세요' ErrMaxQuickJump: '퀵 액세스는 최대 4개' + +# 공통 +ErrShutDown: '명령이 수동으로 중단되었습니다' ErrUsernameIsExist: '아이디가 이미 존재합니다' ErrNameIsExist: '이름이 이미 존재합니다' ErrDemoEnvironment: '데모 환경에서는 불가' @@ -41,6 +59,8 @@ SystemRestart: '시스템 재시작으로 인해 작업이 중단되었습니다 ErrGroupIsDefault: '기본 그룹, 삭제할 수 없습니다' ErrGroupIsInWebsiteUse: '그룹이 다른 웹사이트에서 사용 중이므로 삭제할 수 없습니다.' Decrypt: '복호화' + +# 에이전트 ErrAgentAccountBound: '계정이 에이전트에 묶여 있습니다' ErrTerminalAIAccountInUse: '이 모델 계정은 현재 터미널 AI에서 사용 중입니다. 터미널 AI 설정에서 다른 계정으로 변경하거나 터미널 AI를 비활성화한 뒤 다시 시도하세요.' ErrAgentAccountUnavailable: '계정 연결 불가: {{ .err }}' @@ -65,14 +85,8 @@ ErrAgentWebsiteInUse: '이 웹사이트는 이미 다른 에이전트에 연결 ErrAgentWebsiteUnbindUnsupported: '원클릭 배포 웹사이트는 수동으로 연결 해제할 수 없습니다' ErrHermesPairingCodeUnavailable: 'Hermes에서 페어링 코드가 일시적으로 존재하지 않습니다. 네트워크 문제일 수 있으니 잠시 후 다시 시도해 주세요.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'Feishu 그룹 정책이 허용 목록이면 DM 정책을 페어링 코드로 설정할 수 없습니다.' -ErrAIProxyServiceNotInstalled: '{{ .name }} 서비스가 설치되어 있지 않습니다' -ErrAIProxyModelAccountNotFound: '모델 계정 {{ .id }}을(를) 찾을 수 없습니다' -ErrAIProxyModelMapRequired: '이 필드는 필수입니다.' -ErrAIProxyModelMapInvalid: '모델 매핑은 유효한 JSON 객체여야 합니다: {{ .err }}' -ErrAIProxyModelMapEmpty: '모델 매핑은 비워 둘 수 없습니다' -ErrAIProxyModelMapEmptyExternalModel: '모델 매핑에 빈 요청 모델이 있습니다' -ErrAIProxyModelMapEmptyUpstreamModel: '{{ .model }}의 업스트림 모델은 비워 둘 수 없습니다' -AIProxyUserFallback: '삭제된 사용자 (ID: {{ .id }})' + +# 백업 및 알림 설정 Localhost: '로컬 머신' ErrBackupInUsed: '백업 계정이 예약에 사용 중' ErrBackupCheck: '연결 테스트 실패: {{ .err }}' @@ -80,6 +94,8 @@ ErrBackupLocalDelete: '로컬 백업은 삭제할 수 없습니다' ErrBackupLocalCreate: '로컬 백업은 만들 수 없습니다' ErrAlertConfigInUse: '경고 설정이 사용 중이므로 삭제할 수 없습니다' ErrAlertConfigPhoneExist: '전화번호가 이미 존재합니다' + +# 앱 ErrPortInUsed: '{{ .detail }} 포트가 이미 사용 중입니다' ErrAppLimit: '설치된 애플리케이션 수가 한도를 초과했습니다' ErrNotInstall: '응용 프로그램이 설치되지 않았습니다' @@ -97,11 +113,6 @@ ErrFileParseApp: '{{ .name }} 파일 구문 분석에 실패했습니다 {{ .err ErrAppDirNull: '버전 폴더가 존재하지 않습니다' LocalAppErr: '애플리케이션 {{ .name }} 동기화에 실패했습니다 {{ .err }}' ErrContainerName: '컨테이너 이름이 이미 존재합니다' -ErrCreateHttpClient: '요청 {{ .err }}을(를) 생성하지 못했습니다.' -ErrHttpReqTimeOut: '요청 시간이 초과되었습니다 {{ .err }}' -ErrHttpReqFailed: '요청이 실패했습니다 {{ .err }}' -ErrNoSuchHost: '요청한 서버 {{ .err }}을 찾을 수 없습니다' -ErrHttpReqNotFound: '요청한 리소스 {{ .err }}을 찾을 수 없습니다.' ErrContainerNotFound: '{{ .name }} 컨테이너가 존재하지 않습니다' ErrContainerMsg: '{{ .name }} 컨테이너가 비정상입니다. 자세한 내용은 컨테이너 페이지의 로그를 확인하세요.' ErrAppBackup: '{{ .name }} 애플리케이션 백업에 실패했습니다 {{ .err }}' @@ -132,6 +143,8 @@ ErrDockerFailed: 'Docker의 상태가 비정상입니다. 서비스 상태를 ErrDockerComposeCmdNotFound: 'Docker Compose 명령이 없습니다. 호스트 머신에 먼저 이 명령을 설치하세요' UseExistImage: '이미지가 이미 존재하여 기존 이미지를 사용합니다' ErrDatabaseNotFound: '데이터베이스 {{ .name }} 이(가) 존재하지 않습니다' + +# SSH ExportIP: '로그인 IP' ExportArea: '위치' ExportPort: '포트' @@ -139,6 +152,8 @@ ExportAuthMode: '로그인 방식' ExportUser: '사용자' ExportStatus: '로그인 상태' ExportDate: '시간' + +# 파일 ErrFileCanNotRead: '이 파일은 미리보기를 지원하지 않습니다' ErrSensitiveFileRead: '민감한 파일을 읽을 수 없습니다' ErrFileToLarge: '파일이 10M보다 커서 열 수 없습니다' @@ -165,6 +180,8 @@ FileDropFailed: '파일 {{ .name }} 정리 실패: {{ .err }}' FileDropSuccess: '파일 {{ .name }} 정리 성공, {{ .count }}개 파일 삭제, {{ .size }} 디스크 공간 확보' FileDropSum: '파일 정리 완료, 총 {{ .count }}개 파일 삭제, 총 {{ .size }} 디스크 공간 확보' ErrBadDecrypt: '압축 패키지 암호 해제 비밀번호 오류, 압축 해제 실패, 확인 후 다시 시도하세요' + +# 웹사이트 ErrAliasIsExist: '별칭이 이미 존재합니다' ErrBackupMatch: '백업 파일이 현재 웹사이트 데이터 중 일부 {{ .detail }}와 일치하지 않습니다.' ErrBackupExist: '백업 파일에 있는 소스 데이터의 해당 부분이 존재하지 않습니다 {{ .detail }}' @@ -194,6 +211,8 @@ delete: '삭제' ErrDefaultWebsite: '기본 웹사이트가 이미 설정되었습니다. 설정하기 전에 취소하세요' SSL: '인증서' Set: '설정' + +# SSL 인증서 ErrSSLCannotDelete: '{{ .name }} 인증서는 웹사이트에서 사용 중이므로 삭제할 수 없습니다.' ErrAccountCannotDelete: '계정이 인증서와 연결되어 있어 삭제할 수 없습니다.' ErrSSLApply: '인증서 갱신이 성공했으나, openresty 재로드에 실패했습니다. 구성을 확인해 주세요' @@ -228,6 +247,8 @@ ErrApplySSLCanNotDelete: '신청 중인 인증서 {{ .name }}는 삭제할 수 StartPushSSLToNode: '인증서를 노드로 푸시 시작' PushSSLToNodeFailed: '노드로 인증서 푸시 실패: {{ .err }}' PushSSLToNodeSuccess: '노드로 인증서 푸시 성공' + +# MySQL ErrUserIsExist: '현재 사용자가 이미 존재합니다. 다시 입력하세요' ErrDatabaseIsExist: '현재 데이터베이스가 이미 존재합니다. 다시 입력하세요' ErrExecTimeOut: 'SQL 실행 시간이 초과되었습니다. 데이터베이스를 확인하십시오.' @@ -236,7 +257,11 @@ ErrLocalExist: '이름이 로컬 데이터베이스에 이미 존재합니다. RemoteBackup: '원격 데이터베이스를 백업하려면 먼저 이미지 {{ .name }}을(를) 사용하여 로컬 컨테이너 데이터베이스 서비스를 시작해야 합니다. 잠시만 기다려 주세요...' RemoteRecover: '원격 데이터베이스를 복원하려면 먼저 이미지 {{ .name }}을(를) 사용하여 로컬 컨테이너 데이터베이스 서비스를 시작해야 합니다. 잠시만 기다려 주세요...' Arg: '인수' + +# Redis ErrTypeOfRedis: '복구 파일 유형이 현재 지속성 방법과 일치하지 않습니다. 수정하고 다시 시도하세요' + +# 컨테이너 ErrInUsed: '{{ .detail }}(이)가 사용 중이어서 삭제할 수 없습니다' ErrObjectInUsed: '이 객체는 사용 중이어서 삭제할 수 없습니다' ErrObjectBeDependent: '이 이미지는 다른 이미지에 의존되어 있어 삭제할 수 없습니다' @@ -278,6 +303,8 @@ ComposeRecoverFiles: 'Compose 파일 복원' ComposeRecoverContainers: 'Compose 컨테이너 복원' ComposeRecoverRecord: 'Compose 기록 저장' ComposeRecoverCleanup: 'Compose 복원 작업 공간 정리' + +# 런타임 ErrFileNotExist: '{{ .detail }} 파일이 존재하지 않습니다 소스 파일의 무결성을 확인하세요' ErrImageBuildErr: '이미지 빌드 실패' ErrImageExist: '이미지가 이미 존재합니다 이미지 이름을 수정하세요.' @@ -290,12 +317,16 @@ ErrNodeModulesNotFound: 'node_modules 폴더가 없습니다 런타임 환경을 ErrContainerNameIsNull: '컨테이너 이름이 존재하지 않습니다' ErrPHPPortIsDefault: '9000 포트는 기본 포트입니다. 수정 후 다시 시도하세요' ErrPHPRuntimePortFailed: '포트 {{ .name }} 는 현재 런타임 환경에서 이미 사용 중입니다. 수정 후 다시 시도하세요' + +# 도구 ErrConfigNotFound: '구성 파일이 존재하지 않습니다' ErrConfigParse: '구성 파일 형식이 올바르지 않습니다' ErrConfigIsNull: '구성 파일은 비어 있을 수 없습니다' ErrConfigDirNotFound: '실행 디렉토리가 존재하지 않습니다' ErrConfigAlreadyExist: '같은 이름의 구성 파일이 이미 존재합니다' ErrUserFindErr: '사용자 {{ .name }} 검색에 실패했습니다 {{ .err }}' + +# 예약 작업 CutWebsiteLogSuccess: '{{ .name }} 웹사이트 로그가 성공적으로 잘렸습니다. 백업 경로 {{ .path }}' HandleShell: '스크립트 {{ .name }} 실행' HandleCurl: 'URL {{ .name }} 접근' @@ -314,6 +345,8 @@ NoSuchResource: '데이터베이스에서 백업 내용을 찾을 수 없어 건 CleanLog: '로그 정리' CleanLogByName: '{{ .name }} 로그 정리' WafIpGroupNotFound: 'WAF IP 그룹을 찾을 수 없습니다. [고급 기능 - WAF - 블랙/화이트 목록 - IP 그룹]으로 이동하여 원격 다운로드 방식으로 IP 그룹을 추가하십시오.' + +# 도구 상자 ErrNotExistUser: '현재 사용자가 존재하지 않습니다. 수정한 후 다시 시도하세요' ErrBanAction: '설정에 실패했습니다. 현재 {{ .name }} 서비스를 사용할 수 없습니다. 확인하고 다시 시도하세요' ErrClamdscanNotFound: 'clamdscan 명령이 감지되지 않았습니다. 설명서를 참조하여 설치하세요' @@ -322,11 +355,15 @@ SetSwap: 'Swap 설정 {{ .path }} - {{ .size }}' CreateSwap: 'Swap 파일 생성' FormatSwap: 'Swap 파일 포맷' EnableSwap: 'Swap 활성화' + +# 변조 방지 CleanTamperSetting: '히스토리 보호 설정 정리' SetTamperWithRules: '규칙에 따라 디렉토리 보호 시작' ProtectDir: '디렉토리 보호 {{ .name }}' IgnoreFile: '파일 보호 {{ .name }}' TamperSetSuccessful: '보호 설정 완료, 다음 디렉토리 모니터링 시작:' + +# WAF ErrScope: '이 구성을 수정하는 것은 지원되지 않습니다' ErrStateChange: '상태 변경에 실패했습니다' ErrRuleExist: '규칙이 이미 존재합니다' @@ -381,6 +418,8 @@ OpenrestyNotFound: 'OpenResty가 설치되어 있지 않습니다' remoteIpIsNull: 'IP 목록이 비어 있습니다' OpenrestyVersionErr: 'OpenResty 버전이 너무 낮습니다. 1.27.1.2-2-2-focal 이상으로 업그레이드하세요' ErrFileTooLarge: '파일이 1MB를 초과하여 업로드할 수 없습니다' + +# 작업 TaskStart: '[START] {{ .name }} 작업이 시작됩니다.' TaskEnd: '{{ .name }} 작업이 완료되었습니다 [완료]' TaskFailed: '{{ .name }} 작업이 실패했습니다' @@ -441,10 +480,17 @@ CustomAppstore: '사용자 정의 애플리케이션 웨어하우스' TaskExec: '실행' TaskBatch: '일괄 작업' FileConvert: '파일 형식 변환' + +# 작업 - ClamAV Clamscan: '{{ .name }} 스캔' TaskScan: '스캔' + +# 작업 - AI OllamaModelPull: 'Ollama 모델 {{ .name }}을(를) 끌어오세요' OllamaModelSize: 'Ollama 모델 {{ .name }}의 크기를 가져옵니다' +AIBenchmarkRun: "AI 벤치마크 실행" + +# 작업 - 스냅샷 Snapshot: '스냅샷' SnapDBInfo: '1Panel 데이터베이스 정보 쓰기' SnapCopy: '파일 및 디렉토리 {{ .name }} 복사' @@ -494,6 +540,8 @@ RecoverDaemonJson: '컨테이너 구성 daemon.json 파일 복원' RecoverDBData: '데이터베이스 데이터 복구' RecoverBackups: '로컬 백업 디렉토리 복원' RecoverPanelData: '복구 데이터 디렉토리' + +# 작업 - 컨테이너 ContainerImagePull: '컨테이너 이미지 {{ .name }} 가져오기' ContainerRemoveOld: '원래 컨테이너 {{ .name }} 제거' ContainerImageCheck: '이미지가 정상적으로 당겨졌는지 확인' @@ -502,6 +550,8 @@ ContainerRecreate: '컨테이너 업데이트에 실패했습니다. 이제 원 ContainerCreate: '새로운 컨테이너 {{ .name }}를 만듭니다' ContainerCreateFailed: '컨테이너 생성에 실패했습니다. 실패한 컨테이너를 삭제하세요' ContainerStartCheck: '컨테이너가 시작되었는지 확인' + +# 작업 - 이미지 ImageBuild: '이미지 빌드' ImagePull: '이미지 가져오기' ImageRepoAuthFromDB: '데이터베이스에서 저장소 인증 정보 가져오기' @@ -509,6 +559,8 @@ ImagePush: '이미지 푸시' ImageRenameTag: '이미지 태그 수정' ImageNewTag: '새로운 이미지 태그 {{ .name }}' ComposeCreate: '작곡 만들기' + +# 작업 - 웹사이트 BackupNginxConfig: '웹사이트 OpenResty 구성 파일 백업' CompressFileSuccess: '디렉토리 압축이 성공했습니다. {{ .name }}으로 압축되었습니다.' CompressDir: '압축 디렉토리' @@ -519,8 +571,15 @@ websiteDir: '웹사이트 디렉토리' RecoverFailedStartRollBack: '복구 실패, 롤백 시작' AppBackupFileIncomplete: '백업 파일이 불완전하며 app.json 또는 app.tar.gz 파일이 없습니다.' AppAttributesNotMatch: '애플리케이션 유형 또는 이름이 일치하지 않습니다' + +# 알림 +ErrAlertMethodNotSupported: '현재 버전에서는 이 알림 방식을 지원하지 않습니다' ErrAlertSync: '알람 정보 동기화 오류입니다. 확인하고 다시 시도하세요' + +# 작업 - 런타임 ErrInstallExtension: '이미 설치 작업이 진행 중입니다. 작업이 완료될 때까지 기다려 주세요.' + +# 알림 메일 템플릿 PanelAlertTitle: '패널 알림 통지' TestAlertTitle: '테스트 이메일 - 이메일 연결 확인' TestAlert: '이것은 테스트 이메일이며 이메일 발송 설정이 올바른지 확인합니다.' @@ -537,6 +596,8 @@ CommonAlert: '귀하의 {{ .node }}{{ .ip }} 패널, {{ .msg }}。자세한 내 NodeExceptionAlert: '귀하의 {{ .node }}{{ .ip }} 패널, {{ .num }}개의 노드에 이상이 있습니다. 자세한 내용은 패널에 로그인하십시오.' LicenseExceptionAlert: '귀하의 {{ .node }}{{ .ip }} 패널, {{ .num }}개의 라이센스에 이상이 있습니다. 자세한 내용은 패널에 로그인하십시오.' SSHAndPanelLoginAlert: '귀하의 {{ .node }}{{ .ip }} 패널, {{ .loginIp }}에서의 {{ .name }} 로그인에 이상이 있습니다. 자세한 내용은 패널에 로그인하십시오.' + +# 디스크 DeviceNotFound: '장치 {{ .name }} 을(를) 찾을 수 없습니다' DeviceIsMounted: '장치 {{ .name }} 이(가) 마운트되었습니다, 먼저 마운트 해제하세요' PartitionDiskErr: '파티션 분할에 실패했습니다, {{ .err }}' @@ -544,9 +605,18 @@ FormatDiskErr: '디스크 포맷에 실패했습니다, {{ .err }}' MountDiskErr: '디스크 마운트에 실패했습니다, {{ .err }}' XfsNotFound: 'xfs 파일 시스템이 감지되지 않았습니다, 먼저 xfsprogs 를 설치하세요' -# terminal +# 터미널 TerminalAIBlockedRiskyCommand: '위험한 명령이 차단되었습니다: {{ .command }}' TerminalAIThinking: 'AI가 생각 중입니다...' TerminalAIReadyToExecute: '생각이 완료되었습니다. Enter를 눌러 실행하세요 (소요 시간 {{ .duration }}, token: {{ .tokens }})' TerminalAIRequestFailed: 'AI 요청 실패: {{ .err }}' -FileAISearchEmptyDir: '이 경로에 나열할 파일이나 디렉터리가 없습니다(또는 모두 필터링됨).' + +# AI 게이트웨이 +ErrAIProxyServiceNotInstalled: '{{ .name }} 서비스가 설치되어 있지 않습니다' +ErrAIProxyModelAccountNotFound: '모델 계정 {{ .id }}을(를) 찾을 수 없습니다' +ErrAIProxyModelMapRequired: '이 필드는 필수입니다.' +ErrAIProxyModelMapInvalid: '모델 매핑은 유효한 JSON 객체여야 합니다: {{ .err }}' +ErrAIProxyModelMapEmpty: '모델 매핑은 비워 둘 수 없습니다' +ErrAIProxyModelMapEmptyExternalModel: '모델 매핑에 빈 요청 모델이 있습니다' +ErrAIProxyModelMapEmptyUpstreamModel: '{{ .model }}의 업스트림 모델은 비워 둘 수 없습니다' +AIProxyUserFallback: '삭제된 사용자 (ID: {{ .id }})' diff --git a/agent/i18n/lang/ms.yaml b/agent/i18n/lang/ms.yaml index e00c5c77d..532e747db 100644 --- a/agent/i18n/lang/ms.yaml +++ b/agent/i18n/lang/ms.yaml @@ -1,29 +1,47 @@ +# ralat asas ErrInvalidParams: 'Permintaan tidak sah: {{ .detail }}' ErrTokenParse: 'Token tidak sah: {{ .detail }}' ErrInitialPassword: 'Kata laluan asal salah' ErrInternalServer: 'Ralat pelayan: {{ .detail }}' +ErrRecordExist: 'Rekod sudah wujud' +ErrRecordNotFound: 'Rekod tidak ditemui' +ErrStructTransform: 'Ralat penukaran: {{ .err }}' +ErrNotSupportType: 'Jenis tidak disokong: {{ .name }}' + +# AI fail ErrFileAINotEnabled: 'Carian AI fail dimatikan atau tiada akaun. Dalam Pengurusan Fail, gunakan Akaun AI, aktifkan dan pilih akaun.' ErrFileAISearchBadPattern: 'Corak carian tidak sah (regex dsb.): {{ .detail }}' +FileAISearchEmptyDir: 'Tiada fail atau direktori di bawah laluan ini (atau semua ditapis).' + +# muat turun jauh ErrWgetRemoteFailed: 'Muat turun jauh gagal atau URL tidak boleh diakses: {{ .detail }}' ErrWgetInvalidContentType: 'URL jauh tidak mengembalikan fail (mungkin halaman ralat), {{ .detail }}' ErrWgetProxyNotConfigured: 'Sila konfigurasikan pelayan proksi dalam tetapan panel dahulu' ErrWgetProxyInvalid: 'Alamat pelayan proksi tidak sah: {{ .detail }}' -ErrRecordExist: 'Rekod sudah wujud' -ErrRecordNotFound: 'Rekod tidak ditemui' -ErrStructTransform: 'Ralat penukaran: {{ .err }}' + +# log masuk dan keselamatan ErrNotLogin: 'Belum log masuk: {{ .detail }}' ErrPasswordExpired: 'Kata laluan tamat: {{ .detail }}' -ErrNotSupportType: 'Jenis tidak disokong: {{ .name }}' -ErrAlertMethodNotSupported: 'Versi ini tidak menyokong kaedah amaran ini' + +# permintaan dan API ErrProxy: 'Permintaan gagal: {{ .detail }}' ErrApiConfigStatusInvalid: 'API dilumpuhkan: {{ .detail }}' ErrApiConfigKeyInvalid: 'Kunci API tidak sah: {{ .detail }}' ErrApiConfigIPInvalid: 'IP tidak dibenarkan: {{ .detail }}' ErrApiConfigDisable: 'API tidak dibenarkan: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'Cap masa tidak sah: {{ .detail }}' -ErrShutDown: 'Arahan diberhentikan manual' +ErrCreateHttpClient: 'Gagal membuat permintaan {{ .err }}' +ErrHttpReqTimeOut: 'Permintaan tamat masa {{ .err }}' +ErrHttpReqFailed: 'Permintaan gagal {{ .err }}' +ErrNoSuchHost: 'Tidak dapat mencari pelayan yang diminta {{ .err }}' +ErrHttpReqNotFound: 'Sumber yang diminta {{ .err }} tidak dapat ditemui' + +# lompat pantas ErrMinQuickJump: 'Tambah sekurang-kurangnya satu pintasan pantas' ErrMaxQuickJump: 'Maksimum 4 pintasan pantas' + +# umum +ErrShutDown: 'Arahan diberhentikan manual' ErrUsernameIsExist: 'Nama pengguna sudah wujud' ErrNameIsExist: 'Nama sudah wujud' ErrDemoEnvironment: 'Tidak tersedia dalam demo' @@ -41,6 +59,8 @@ SystemRestart: 'Tugas terganggu kerana sistem mula semula' ErrGroupIsDefault: 'Kumpulan lalai, tidak boleh dipadamkan' ErrGroupIsInWebsiteUse: 'Kumpulan sedang digunakan oleh tapak web lain dan tidak boleh dipadamkan.' Decrypt: 'Dekripsi' + +# ejen ErrAgentAccountBound: 'Akaun terikat kepada ejen' ErrTerminalAIAccountInUse: 'Akaun model ini sedang digunakan oleh Terminal AI. Tukar akaun dalam tetapan Terminal AI atau nyahaktifkan Terminal AI, kemudian cuba lagi.' ErrAgentAccountUnavailable: 'Sambungan akaun tidak tersedia: {{ .err }}' @@ -65,14 +85,8 @@ ErrAgentWebsiteInUse: 'Laman web ini sudah dipautkan ke ejen lain' ErrAgentWebsiteUnbindUnsupported: 'Laman web one-click deployment tidak menyokong nyahikat manual' ErrHermesPairingCodeUnavailable: 'Kod pasangan buat sementara waktu tidak wujud dalam Hermes, mungkin disebabkan masalah rangkaian. Sila cuba lagi sebentar nanti.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'Apabila dasar kumpulan Feishu ialah senarai benarkan, dasar DM tidak boleh menggunakan kod pasangan.' -ErrAIProxyServiceNotInstalled: 'Perkhidmatan {{ .name }} belum dipasang' -ErrAIProxyModelAccountNotFound: 'Akaun model {{ .id }} tidak ditemui' -ErrAIProxyModelMapRequired: 'Medan ini wajib diisi.' -ErrAIProxyModelMapInvalid: 'Pemetaan model mestilah objek JSON yang sah: {{ .err }}' -ErrAIProxyModelMapEmpty: 'Pemetaan model tidak boleh kosong' -ErrAIProxyModelMapEmptyExternalModel: 'Pemetaan model mengandungi model permintaan kosong' -ErrAIProxyModelMapEmptyUpstreamModel: 'Model upstream untuk {{ .model }} tidak boleh kosong' -AIProxyUserFallback: 'Pengguna dipadam (ID: {{ .id }})' + +# sandaran dan tetapan amaran Localhost: 'Mesin Tempatan' ErrBackupInUsed: 'Akaun sandaran sedang digunakan oleh tugas' ErrBackupCheck: 'Ujian sambungan gagal: {{ .err }}' @@ -80,6 +94,8 @@ ErrBackupLocalDelete: 'Tidak boleh padam sandaran tempatan' ErrBackupLocalCreate: 'Tidak boleh buat sandaran tempatan' ErrAlertConfigInUse: 'Konfigurasi amaran sedang digunakan dan tidak boleh dipadamkan' ErrAlertConfigPhoneExist: 'Nombor telefon sudah wujud' + +# aplikasi ErrPortInUsed: 'Port {{ .detail }} sudah diduduki' ErrAppLimit: 'Bilangan aplikasi yang dipasang telah melebihi had' ErrNotInstall: 'Aplikasi tidak dipasang' @@ -97,11 +113,6 @@ ErrFileParseApp: '{{ .name }} penghuraian fail gagal {{ .err }}' ErrAppDirNull: 'Folder versi tidak wujud' LocalAppErr: 'Penyegerakan {{ .name }} aplikasi gagal {{ .err }}' ErrContainerName: 'Nama kontena sudah wujud' -ErrCreateHttpClient: 'Gagal membuat permintaan {{ .err }}' -ErrHttpReqTimeOut: 'Permintaan tamat masa {{ .err }}' -ErrHttpReqFailed: 'Permintaan gagal {{ .err }}' -ErrNoSuchHost: 'Tidak dapat mencari pelayan yang diminta {{ .err }}' -ErrHttpReqNotFound: 'Sumber yang diminta {{ .err }} tidak dapat ditemui' ErrContainerNotFound: 'Bekas {{ .name }} tidak wujud' ErrContainerMsg: 'Bekas ''{{ .name }} adalah tidak normal. Sila semak log pada halaman kontena untuk butiran''' ErrAppBackup: '{{ .name }} sandaran aplikasi gagal {{ .err }}' @@ -132,6 +143,8 @@ ErrDockerFailed: 'Keadaan Docker tidak normal, sila periksa status perkhidmatan' ErrDockerComposeCmdNotFound: 'Perintah Docker Compose tidak wujud, sila pasang perintah ini di mesin tuan terlebih dahulu' UseExistImage: 'Imej sudah wujud, menggunakan imej sedia ada' ErrDatabaseNotFound: 'Pangkalan data {{ .name }} tidak wujud' + +# SSH ExportIP: 'IP Log Masuk' ExportArea: 'Lokasi' ExportPort: 'Port' @@ -139,6 +152,8 @@ ExportAuthMode: 'Kaedah Log Masuk' ExportUser: 'Pengguna' ExportStatus: 'Status Log Masuk' ExportDate: 'Masa' + +# fail ErrFileCanNotRead: 'Fail ini tidak menyokong pratonton' ErrSensitiveFileRead: 'Membaca fail sensitif tidak dibenarkan' ErrFileToLarge: 'Fail lebih besar daripada 10M dan tidak boleh dibuka' @@ -165,6 +180,8 @@ FileDropFailed: 'Gagal membersihkan fail {{ .name }}: {{ .err }}' FileDropSuccess: 'Berjaya membersihkan fail {{ .name }}, {{ .count }} fail dibersihkan, {{ .size }} ruang cakera dibebaskan' FileDropSum: 'Pembersihan fail selesai, sejumlah {{ .count }} fail dibersihkan, sejumlah {{ .size }} ruang cakera dibebaskan' ErrBadDecrypt: 'Kata laluan penyahsulitan pakej termampat salah, penyahmampatan gagal, sila periksa dan cuba lagi' + +# laman web ErrAliasIsExist: 'Alias sudah wujud' ErrBackupMatch: 'Fail sandaran tidak sepadan dengan beberapa data tapak web semasa {{ .detail }}' ErrBackupExist: 'Bahagian sepadan data sumber dalam fail sandaran tidak wujud {{ .detail }}' @@ -194,6 +211,8 @@ delete: 'Padam' ErrDefaultWebsite: 'Laman web lalai telah ditetapkan, sila batalkan sebelum menetapkan' SSL: 'Sijil' Set: 'Tetapan' + +# sijil SSL ErrSSLCannotDelete: 'Sijil {{ .name }} sedang digunakan oleh tapak web dan tidak boleh dipadamkan' ErrAccountCannotDelete: 'Akaun dikaitkan dengan sijil dan tidak boleh dipadamkan' ErrSSLApply: 'Pembaharuan sijil berjaya, muat semula openresty gagal, sila semak konfigurasi' @@ -228,6 +247,8 @@ ErrApplySSLCanNotDelete: 'Sertifikat {{ .name }} yang sedang diajukan tidak dapa StartPushSSLToNode: 'Mula menolak sijil ke nod' PushSSLToNodeFailed: 'Gagal menolak sijil ke nod: {{ .err }}' PushSSLToNodeSuccess: 'Berjaya menolak sijil ke nod' + +# MySQL ErrUserIsExist: 'Pengguna semasa sudah wujud, sila masukkan semula' ErrDatabaseIsExist: 'Pangkalan data semasa sudah wujud, sila masukkan semula' ErrExecTimeOut: 'Pelaksanaan SQL tamat masa, sila semak pangkalan data' @@ -236,7 +257,11 @@ ErrLocalExist: 'Nama sudah wujud dalam pangkalan data tempatan, sila ubah suai d RemoteBackup: 'Untuk menyandarkan pangkalan data jauh, perkhidmatan pangkalan data bekas tempatan perlu dimulakan terlebih dahulu menggunakan imej {{ .name }}, sila tunggu...' RemoteRecover: 'Untuk memulihkan pangkalan data jauh, perkhidmatan pangkalan data bekas tempatan perlu dimulakan terlebih dahulu menggunakan imej {{ .name }}, sila tunggu...' Arg: 'Hujah' + +# Redis ErrTypeOfRedis: 'Jenis fail pemulihan tidak sepadan dengan kaedah kegigihan semasa, sila ubah suai dan cuba lagi' + +# bekas ErrInUsed: '{{ .detail }} sedang digunakan dan tidak boleh dipadam' ErrObjectInUsed: 'Objek ini sedang digunakan dan tidak boleh dipadam' ErrObjectBeDependent: 'Imej ini digantungkan oleh imej lain dan tidak boleh dipadam' @@ -278,6 +303,8 @@ ComposeRecoverFiles: 'Pulihkan fail compose' ComposeRecoverContainers: 'Pulihkan kontena compose' ComposeRecoverRecord: 'Simpan rekod compose' ComposeRecoverCleanup: 'Bersihkan ruang kerja pemulihan compose' + +# runtime ErrFileNotExist: 'Fail {{ .detail }} tidak wujud Sila semak integriti fail sumber' ErrImageBuildErr: 'Pembinaan imej gagal' ErrImageExist: 'Imej sudah wujud Sila ubah nama imej.' @@ -290,12 +317,16 @@ ErrNodeModulesNotFound: 'Folder node_modules tidak wujud Sila edit persekitaran ErrContainerNameIsNull: 'Nama kontena tidak wujud' ErrPHPPortIsDefault: 'Port 9000 ialah port lalai. Sila tukar dan cuba lagi' ErrPHPRuntimePortFailed: 'Port {{ .name }} sudah digunakan oleh runtime semasa. Sila tukar dan cuba lagi' + +# alat ErrConfigNotFound: 'Fail konfigurasi tidak wujud' ErrConfigParse: 'Format fail konfigurasi tidak betul' ErrConfigIsNull: 'Fail konfigurasi tidak boleh kosong' ErrConfigDirNotFound: 'Direktori berjalan tidak wujud' ErrConfigAlreadyExist: 'Fail konfigurasi dengan nama yang sama sudah wujud' ErrUserFindErr: 'Pengguna {{ .name }} carian gagal {{ .err }}' + +# tugas cron CutWebsiteLogSuccess: '{{ .name }} log tapak web berjaya dipotong, laluan sandaran {{ .path }}' HandleShell: 'Laksanakan skrip {{ .name }}' HandleCurl: 'Akses URL {{ .name }}' @@ -314,6 +345,8 @@ NoSuchResource: 'Tiada kandungan sandaran ditemui dalam pangkalan data, dilangka CleanLog: 'Bersihkan log' CleanLogByName: 'Bersihkan log {{ .name }}' WafIpGroupNotFound: 'Kumpulan IP WAF tidak ditemui. Sila pergi ke [Ciri Lanjutan - WAF - Senarai Hitam/Putih - Kumpulan IP] untuk menambah kumpulan IP melalui kaedah muat turun jauh.' + +# kotak alat ErrNotExistUser: 'Pengguna semasa tidak wujud, sila ubah suai dan cuba lagi' ErrBanAction: 'Tetapan gagal. Perkhidmatan {{ .name }} semasa tidak tersedia. Sila semak dan cuba lagi' ErrClamdscanNotFound: 'Arahan clamdscan tidak dikesan, sila rujuk dokumentasi untuk memasangnya' @@ -322,11 +355,15 @@ SetSwap: 'Tetapkan Swap {{ .path }} - {{ .size }}' CreateSwap: 'Buat Fail Swap' FormatSwap: 'Format Fail Swap' EnableSwap: 'Dayakan Swap' + +# perlindungan ubah suai CleanTamperSetting: 'Bersihkan tetapan perlindungan sejarah' SetTamperWithRules: 'Mulakan perlindungan direktori mengikut peraturan' ProtectDir: 'Lindungi direktori {{ .name }}' IgnoreFile: 'Lindungi fail {{ .name }}' TamperSetSuccessful: 'Tetapan perlindungan selesai, mula memantau direktori berikut:' + +# WAF ErrScope: 'Mengubah suai konfigurasi ini tidak disokong' ErrStateChange: 'Perubahan keadaan gagal' ErrRuleExist: 'Peraturan sudah wujud' @@ -381,6 +418,8 @@ OpenrestyNotFound: 'OpenResty tidak dipasang' remoteIpIsNull: 'Senarai IP kosong' OpenrestyVersionErr: 'Versi OpenResty terlalu lama. Naik taraf ke 1.27.1.2-2-2-focal' ErrFileTooLarge: 'Fail melebihi 1 MB dan tidak boleh dimuat naik' + +# tugas TaskStart: '{{ .name }} Task mula [MULA]' TaskEnd: '{{ .name }} Task selesai [SELESAI]' TaskFailed: 'tugas {{ .name }} gagal' @@ -441,10 +480,17 @@ CustomAppstore: 'Gudang aplikasi tersuai' TaskExec: 'Laksanakan' TaskBatch: 'Operasi Batch' FileConvert: 'Penukaran Format Fail' + +# tugas - ClamAV Clamscan: 'Imbas {{ .name }}' TaskScan: 'Imbas' + +# tugas - AI OllamaModelPull: 'Tarik model Ollama {{ .name }}' OllamaModelSize: 'Dapatkan saiz model Ollama {{ .name }}' +AIBenchmarkRun: "Jalankan penanda aras AI" + +# tugas - syot kilat Snapshot: 'Snapshot' SnapDBInfo: 'Tulis maklumat pangkalan data 1Panel' SnapCopy: 'Salin fail & direktori {{ .name }}' @@ -494,6 +540,8 @@ RecoverDaemonJson: 'Pulihkan fail daemon.json konfigurasi bekas' RecoverDBData: 'Pulihkan data pangkalan data' RecoverBackups: 'Pulihkan direktori sandaran tempatan' RecoverPanelData: 'Direktori data pemulihan' + +# tugas - bekas ContainerImagePull: 'Tarik imej bekas {{ .name }}' ContainerRemoveOld: 'Alih keluar bekas asal {{ .name }}' ContainerImageCheck: 'Periksa sama ada imej ditarik seperti biasa' @@ -502,6 +550,8 @@ ContainerRecreate: 'Kemas kini kontena gagal, kini mula memulihkan bekas asal' ContainerCreate: 'Buat bekas baharu {{ .name }}' ContainerCreateFailed: 'Penciptaan bekas gagal, padamkan bekas yang gagal' ContainerStartCheck: 'Periksa sama ada bekas telah dimulakan' + +# tugas - imej ImageBuild: 'Membina Imej' ImagePull: 'Tarik imej' ImageRepoAuthFromDB: 'Dapatkan maklumat pengesahan repositori daripada pangkalan data' @@ -509,6 +559,8 @@ ImagePush: 'Tolak imej' ImageRenameTag: 'Ubah suai teg imej' ImageNewTag: 'Teg imej baharu {{ .name }}' ComposeCreate: 'Buat gubahan' + +# tugas - laman web BackupNginxConfig: 'Fail konfigurasi OpenResty tapak web sandaran' CompressFileSuccess: 'Mampatkan direktori berjaya, dimampatkan ke {{ .name }}' CompressDir: 'Direktori mampatan' @@ -519,8 +571,15 @@ websiteDir: 'Direktori Laman Web' RecoverFailedStartRollBack: 'Pemulihan gagal, mulakan rollback' AppBackupFileIncomplete: 'Fail sandaran tidak lengkap dan tidak mempunyai fail app.json atau app.tar.gz' AppAttributesNotMatch: 'Jenis atau nama aplikasi tidak sepadan' + +# amaran +ErrAlertMethodNotSupported: 'Versi ini tidak menyokong kaedah amaran ini' ErrAlertSync: 'Ralat penyegerakan maklumat penggera, sila semak dan cuba lagi' + +# tugas - runtime ErrInstallExtension: 'Tugas pemasangan sudah sedang berjalan, silakan tunggu tugas selesai' + +# templat mel amaran PanelAlertTitle: 'Notifikasi Amaran Panel' TestAlertTitle: 'E-mel Ujian - Sahkan Sambungan E-mel' TestAlert: 'Ini adalah e-mel ujian untuk mengesahkan konfigurasi penghantaran e-mel anda betul.' @@ -537,6 +596,8 @@ CommonAlert: 'Panel {{ .node }}{{ .ip }} Anda, {{ .msg }}. Sila log masuk ke pan NodeExceptionAlert: 'Panel {{ .node }}{{ .ip }} Anda, {{ .num }} nod tidak normal. Sila log masuk ke panel untuk butiran lanjut.' LicenseExceptionAlert: 'Panel {{ .node }}{{ .ip }} Anda, {{ .num }} lesen tidak normal. Sila log masuk ke panel untuk butiran lanjut.' SSHAndPanelLoginAlert: 'Panel {{ .node }}{{ .ip }} Anda, log masuk {{ .name }} dari {{ .loginIp }} tidak normal. Sila log masuk ke panel untuk butiran lanjut.' + +# cakera DeviceNotFound: 'Peranti {{ .name }} tidak ditemui' DeviceIsMounted: 'Peranti {{ .name }} telah dikaitkan, sila nyahkaitkan terlebih dahulu' PartitionDiskErr: 'Gagal membahagikan, {{ .err }}' @@ -549,4 +610,13 @@ TerminalAIBlockedRiskyCommand: 'Perintah berisiko telah disekat: {{ .command }}' TerminalAIThinking: 'AI sedang berfikir...' TerminalAIReadyToExecute: 'Pemikiran selesai, tekan Enter untuk jalankan (tempoh: {{ .duration }}, token: {{ .tokens }})' TerminalAIRequestFailed: 'Permintaan AI gagal: {{ .err }}' -FileAISearchEmptyDir: 'Tiada fail atau direktori di bawah laluan ini (atau semua ditapis).' + +# gerbang AI +ErrAIProxyServiceNotInstalled: 'Perkhidmatan {{ .name }} belum dipasang' +ErrAIProxyModelAccountNotFound: 'Akaun model {{ .id }} tidak ditemui' +ErrAIProxyModelMapRequired: 'Medan ini wajib diisi.' +ErrAIProxyModelMapInvalid: 'Pemetaan model mestilah objek JSON yang sah: {{ .err }}' +ErrAIProxyModelMapEmpty: 'Pemetaan model tidak boleh kosong' +ErrAIProxyModelMapEmptyExternalModel: 'Pemetaan model mengandungi model permintaan kosong' +ErrAIProxyModelMapEmptyUpstreamModel: 'Model upstream untuk {{ .model }} tidak boleh kosong' +AIProxyUserFallback: 'Pengguna dipadam (ID: {{ .id }})' diff --git a/agent/i18n/lang/pt-BR.yaml b/agent/i18n/lang/pt-BR.yaml index 1365ac8ad..223c311bb 100644 --- a/agent/i18n/lang/pt-BR.yaml +++ b/agent/i18n/lang/pt-BR.yaml @@ -1,29 +1,47 @@ +# erros básicos ErrInvalidParams: 'Requisição inválida: {{ .detail }}' ErrTokenParse: 'Erro de token: {{ .detail }}' ErrInitialPassword: 'Senha original incorreta' ErrInternalServer: 'Erro interno: {{ .detail }}' +ErrRecordExist: 'Registro já existe' +ErrRecordNotFound: 'Registro não encontrado' +ErrStructTransform: 'Erro de conversão: {{ .err }}' +ErrNotSupportType: 'Tipo não suportado: {{ .name }}' + +# IA de arquivos ErrFileAINotEnabled: 'A pesquisa com IA de arquivos está desativada ou sem conta. Em Gerenciamento de arquivos, use Conta de IA, ative e escolha uma conta.' ErrFileAISearchBadPattern: 'Padrão de busca inválido (regex ou opção): {{ .detail }}' +FileAISearchEmptyDir: 'Nenhum arquivo ou pasta encontrado neste caminho (ou todos foram filtrados).' + +# download remoto ErrWgetRemoteFailed: 'Falha no download remoto ou URL inacessível: {{ .detail }}' ErrWgetInvalidContentType: 'A URL remota não retornou um arquivo (possivelmente uma página de erro), {{ .detail }}' ErrWgetProxyNotConfigured: 'Configure primeiro um servidor proxy nas configurações do painel' ErrWgetProxyInvalid: 'Endereço do servidor proxy inválido: {{ .detail }}' -ErrRecordExist: 'Registro já existe' -ErrRecordNotFound: 'Registro não encontrado' -ErrStructTransform: 'Erro de conversão: {{ .err }}' + +# login e segurança ErrNotLogin: 'Sem sessão: {{ .detail }}' ErrPasswordExpired: 'Senha expirada: {{ .detail }}' -ErrNotSupportType: 'Tipo não suportado: {{ .name }}' -ErrAlertMethodNotSupported: 'Esta versão não oferece suporte a este método de alerta' + +# requisição e API ErrProxy: 'Requisição falhou: {{ .detail }}' ErrApiConfigStatusInvalid: 'API desativada: {{ .detail }}' ErrApiConfigKeyInvalid: 'Chave API inválida: {{ .detail }}' ErrApiConfigIPInvalid: 'IP sem permissão: {{ .detail }}' ErrApiConfigDisable: 'API bloqueada: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'Timestamp inválido: {{ .detail }}' -ErrShutDown: 'Comando parado manualmente' +ErrCreateHttpClient: 'Falha ao criar solicitação {{ .err }}' +ErrHttpReqTimeOut: 'Tempo limite da solicitação esgotado {{ .err }}' +ErrHttpReqFailed: 'Falha na solicitação {{ .err }}' +ErrNoSuchHost: 'Não foi possível encontrar o servidor solicitado {{ .err }}' +ErrHttpReqNotFound: 'O recurso solicitado {{ .err }} não pôde ser encontrado' + +# atalho rápido ErrMinQuickJump: 'Adicione pelo menos um atalho rápido' ErrMaxQuickJump: 'Máximo 4 atalhos rápidos' + +# comum +ErrShutDown: 'Comando parado manualmente' ErrUsernameIsExist: 'Usuário já existe' ErrNameIsExist: 'Nome já existe' ErrDemoEnvironment: 'Indisponível em demo' @@ -41,6 +59,8 @@ SystemRestart: 'Tarefa interrompida devido à reinicialização do sistema' ErrGroupIsDefault: 'Grupo padrão, não pode ser excluído' ErrGroupIsInWebsiteUse: 'O grupo está sendo usado por outro site e não pode ser excluído.' Decrypt: 'Descriptografar' + +# agente ErrAgentAccountBound: 'Conta vinculada a agente' ErrTerminalAIAccountInUse: 'Esta conta de modelo esta sendo usada pelo Terminal AI. Troque a conta nas configuracoes do Terminal AI ou desative o Terminal AI e tente novamente.' ErrAgentAccountUnavailable: 'Conexão da conta indisponível: {{ .err }}' @@ -65,14 +85,8 @@ ErrAgentWebsiteInUse: 'Este site já está vinculado a outro agente' ErrAgentWebsiteUnbindUnsupported: 'Sites implantados em um clique não podem ser desvinculados manualmente' ErrHermesPairingCodeUnavailable: 'O código de pareamento está temporariamente indisponível no Hermes, possivelmente por causa de rede. Tente novamente mais tarde.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'Quando a política de grupo do Feishu é Lista de permissões, a política de DM não pode ser Código de pareamento.' -ErrAIProxyServiceNotInstalled: 'O serviço {{ .name }} não está instalado' -ErrAIProxyModelAccountNotFound: 'Conta de modelo {{ .id }} não encontrada' -ErrAIProxyModelMapRequired: 'Este campo é obrigatório.' -ErrAIProxyModelMapInvalid: 'O mapeamento de modelos deve ser um objeto JSON válido: {{ .err }}' -ErrAIProxyModelMapEmpty: 'O mapeamento de modelos não pode estar vazio' -ErrAIProxyModelMapEmptyExternalModel: 'O mapeamento de modelos contém um modelo solicitado vazio' -ErrAIProxyModelMapEmptyUpstreamModel: 'O modelo upstream de {{ .model }} não pode estar vazio' -AIProxyUserFallback: 'Usuário excluído (ID: {{ .id }})' + +# backup e configurações de alerta Localhost: 'Máquina Local' ErrBackupInUsed: 'Conta de backup em uso por tarefa' ErrBackupCheck: 'Teste de conexão falhou: {{ .err }}' @@ -80,6 +94,8 @@ ErrBackupLocalDelete: 'Não é permitido excluir contas locais' ErrBackupLocalCreate: 'Não é permitido criar contas locais' ErrAlertConfigInUse: 'A configuração de alerta está em uso e não pode ser excluída' ErrAlertConfigPhoneExist: 'O numero de telefone ja existe' + +# aplicativo ErrPortInUsed: 'A porta {{ .detail }} já está ocupada' ErrAppLimit: 'O número de aplicativos instalados excedeu o limite' ErrNotInstall: 'Aplicativo não instalado' @@ -97,11 +113,6 @@ ErrFileParseApp: 'Falha na análise do arquivo {{ .name }} {{ .err }}' ErrAppDirNull: 'A pasta da versão não existe' LocalAppErr: 'Falha na sincronização do aplicativo {{ .name }} {{ .err }}' ErrContainerName: 'O nome do contêiner já existe' -ErrCreateHttpClient: 'Falha ao criar solicitação {{ .err }}' -ErrHttpReqTimeOut: 'Tempo limite da solicitação esgotado {{ .err }}' -ErrHttpReqFailed: 'Falha na solicitação {{ .err }}' -ErrNoSuchHost: 'Não foi possível encontrar o servidor solicitado {{ .err }}' -ErrHttpReqNotFound: 'O recurso solicitado {{ .err }} não pôde ser encontrado' ErrContainerNotFound: '{{ .name }} container não existe' ErrContainerMsg: 'O contêiner {{ .name }} está anormal., verifique o log na página do contêiner para obter detalhes.' ErrAppBackup: '{{ .name }} falha no backup do aplicativo {{ .err }}' @@ -132,6 +143,8 @@ ErrDockerFailed: 'O estado do Docker está anormal, verifique o status do servi ErrDockerComposeCmdNotFound: 'O comando Docker Compose não existe, instale este comando na máquina host primeiro' UseExistImage: 'A imagem já existe, usando imagem existente' ErrDatabaseNotFound: 'O banco de dados {{ .name }} não existe' + +# SSH ExportIP: 'IP de Login' ExportArea: 'Localização' ExportPort: 'Porta' @@ -139,6 +152,8 @@ ExportAuthMode: 'Método de Login' ExportUser: 'Usuário' ExportStatus: 'Status de Login' ExportDate: 'Hora' + +# arquivo ErrFileCanNotRead: 'Este arquivo não suporta visualização' ErrSensitiveFileRead: 'A leitura de arquivos sensíveis não é permitida' ErrFileToLarge: 'O arquivo é maior que 10M e não pode ser aberto' @@ -165,6 +180,8 @@ FileDropFailed: 'Falha ao limpar arquivo {{ .name }}: {{ .err }}' FileDropSuccess: 'Arquivo {{ .name }} limpo com sucesso, {{ .count }} arquivos removidos, {{ .size }} de espaço em disco liberado' FileDropSum: 'Limpeza de arquivos concluída com sucesso, total de {{ .count }} arquivos removidos, total de {{ .size }} de espaço em disco liberado' ErrBadDecrypt: 'Erro de senha de descriptografia do pacote compactado, descompactação falhou, verifique e' + +# site ErrAliasIsExist: 'Alias já existe' ErrBackupMatch: 'O arquivo de backup não corresponde a alguns dados atuais do site {{ .detail }}' ErrBackupExist: 'A parte correspondente dos dados de origem no arquivo de backup não existe {{ .detail }}' @@ -194,6 +211,8 @@ delete: 'Excluir' ErrDefaultWebsite: 'O site padrão já foi definido, cancele-o antes de definir' SSL: 'Certificado' Set: 'Configurações' + +# certificado SSL ErrSSLCannotDelete: 'O certificado {{ .name }} está sendo usado por um site e não pode ser excluído' ErrAccountCannotDelete: 'A conta está associada a um certificado e não pode ser excluída' ErrSSLApply: 'Renovação do certificado concluída, mas a recarga do OpenResty falhou. Verifique a configuração' @@ -228,6 +247,8 @@ ErrApplySSLCanNotDelete: 'O certificado {{ .name }} que está sendo solicitado n StartPushSSLToNode: 'Iniciando o envio do certificado para o nó' PushSSLToNodeFailed: 'Falha ao enviar o certificado para o nó: {{ .err }}' PushSSLToNodeSuccess: 'Certificado enviado com sucesso para o nó' + +# MySQL ErrUserIsExist: 'O usuário atual já existe, digite novamente' ErrDatabaseIsExist: 'O banco de dados atual já existe, digite novamente' ErrExecTimeOut: 'Tempo limite de execução do SQL expirou, verifique o banco de dados' @@ -236,7 +257,11 @@ ErrLocalExist: 'O nome já existe no banco de dados local, modifique-o e' RemoteBackup: 'Para fazer backup do banco de dados remoto, o serviço de banco de dados do contêiner local precisa ser iniciado primeiro usando a imagem {{ .name }} aguarde...' RemoteRecover: 'Para restaurar o banco de dados remoto, o serviço de banco de dados do contêiner local precisa ser iniciado primeiro usando a imagem {{ .name }} aguarde...' Arg: 'Argumento' + +# Redis ErrTypeOfRedis: 'O tipo de arquivo de recuperação não corresponde ao método de persistência atual, modifique-o e' + +# contêiner ErrInUsed: '{{ .detail }} está em uso e não pode ser excluído' ErrObjectInUsed: 'Este objeto está em uso e não pode ser excluído' ErrObjectBeDependent: 'Esta imagem é dependida por outras imagens e não pode ser excluída' @@ -278,6 +303,8 @@ ComposeRecoverFiles: 'Restaurar arquivos do compose' ComposeRecoverContainers: 'Restaurar contêineres do compose' ComposeRecoverRecord: 'Salvar registro do compose' ComposeRecoverCleanup: 'Limpar área de restauração do compose' + +# runtime ErrFileNotExist: 'O arquivo {{ .detail }} não existe Verifique a integridade do arquivo de origem' ErrImageBuildErr: 'Falha na criação da imagem' ErrImageExist: 'A imagem já existe, modifique o nome da imagem.' @@ -290,12 +317,16 @@ ErrNodeModulesNotFound: 'A pasta node_modules não existe Edite o ambiente de ex ErrContainerNameIsNull: 'O nome do contêiner não existe' ErrPHPPortIsDefault: 'A porta 9000 é a porta padrão. Altere-a e tente novamente' ErrPHPRuntimePortFailed: 'A porta {{ .name }} já está em uso neste runtime. Altere-a e tente novamente' + +# ferramenta ErrConfigNotFound: 'O arquivo de configuração não existe' ErrConfigParse: 'O formato do arquivo de configuração está incorreto' ErrConfigIsNull: 'O arquivo de configuração não pode estar vazio' ErrConfigDirNotFound: 'O diretório de execução não existe' ErrConfigAlreadyExist: 'Um arquivo de configuração com o mesmo nome já existe' ErrUserFindErr: 'Falha na pesquisa do usuário {{ .name }} {{ .err }}' + +# tarefa cron CutWebsiteLogSuccess: '{{ .name }} registro do site cortado com sucesso, caminho de backup {{ .path }}' HandleShell: 'Executar script {{ .name }}' HandleCurl: 'Acessar URL {{ .name }}' @@ -314,6 +345,8 @@ NoSuchResource: 'Nenhum conteúdo de backup encontrado no banco de dados, ignora CleanLog: 'Limpar log' CleanLogByName: 'Limpar log de {{ .name }}' WafIpGroupNotFound: 'Grupo de IP do WAF não encontrado., vá para [Recursos Avançados - WAF - Lista Branca/Preta - Grupo de IP] para adicionar um grupo de IP via método de download remoto.' + +# caixa de ferramentas ErrNotExistUser: 'O usuário atual não existe, modifique e' ErrBanAction: 'Falha na configuração. O serviço atual {{ .name }} não está disponível. Verifique e' ErrClamdscanNotFound: 'O comando clamdscan não foi detectado, consulte a documentação para instalá-lo' @@ -322,11 +355,15 @@ SetSwap: 'Configurar Swap {{ .path }} - {{ .size }}' CreateSwap: 'Criar Arquivo Swap' FormatSwap: 'Formatar Arquivo Swap' EnableSwap: 'Ativar Swap' + +# proteção contra adulteração CleanTamperSetting: 'Limpar configurações de proteção históricas' SetTamperWithRules: 'Iniciar proteção de diretório de acordo com as regras' ProtectDir: 'Proteger diretório {{ .name }}' IgnoreFile: 'Proteger arquivo {{ .name }}' TamperSetSuccessful: 'Configurações de proteção concluídas, iniciando monitoramento dos seguintes diretórios:' + +# WAF ErrScope: 'A modificação desta configuração não é suportada' ErrStateChange: 'Falha na alteração de estado' ErrRuleExist: 'A regra já existe' @@ -381,6 +418,8 @@ OpenrestyNotFound: 'OpenResty não está instalado' remoteIpIsNull: 'A lista de IP está vazia' OpenrestyVersionErr: 'A versão do OpenResty é muito antiga. Atualize para 1.27.1.2-2-2-focal' ErrFileTooLarge: 'O arquivo excede 1 MB e não pode ser enviado' + +# tarefa TaskStart: '{{ .name }} A tarefa inicia [START]' TaskEnd: '{{ .name }} Tarefa concluída [CONCLUÍDA]' TaskFailed: '{{ .name }} tarefa falhou' @@ -441,10 +480,17 @@ CustomAppstore: 'Armazém de aplicativos personalizados' TaskExec: 'Executar' TaskBatch: 'Operação em Lote' FileConvert: 'Conversão de Formato de Arquivo' + +# tarefa - ClamAV Clamscan: 'Escanear {{ .name }}' TaskScan: 'Escanear' + +# tarefa - IA OllamaModelPull: 'Puxar modelo Ollama {{ .name }}' OllamaModelSize: 'Obtenha o tamanho do modelo Ollama {{ .name }}' +AIBenchmarkRun: "Executar benchmark de IA" + +# tarefa - snapshot Snapshot: 'Instantâneo' SnapDBInfo: 'Escrever informações do banco de dados 1Panel' SnapCopy: 'Copiar arquivos e diretórios {{ .name }}' @@ -494,6 +540,8 @@ RecoverDaemonJson: 'Restaurar arquivo daemon.json de configuração do contêine RecoverDBData: 'Recuperar dados do banco de dados' RecoverBackups: 'Restaurar diretório de backup local' RecoverPanelData: 'Diretório de dados de recuperação' + +# tarefa - contêiner ContainerImagePull: 'Puxar imagem do contêiner {{ .name }}' ContainerRemoveOld: 'Remover o contêiner original {{ .name }}' ContainerImageCheck: 'Verifique se a imagem é extraída normalmente' @@ -502,6 +550,8 @@ ContainerRecreate: 'A atualização do contêiner falhou, agora iniciando a rest ContainerCreate: 'Criar um novo contêiner {{ .name }}' ContainerCreateFailed: 'Falha na criação do contêiner, exclua o contêiner com falha' ContainerStartCheck: 'Verifique se o contêiner foi iniciado' + +# tarefa - imagem ImageBuild: 'Construção de imagem' ImagePull: 'Puxar imagem' ImageRepoAuthFromDB: 'Obter informações de autenticação do repositório do banco de dados' @@ -509,6 +559,8 @@ ImagePush: 'Enviar imagem' ImageRenameTag: 'Modificar tag de imagem' ImageNewTag: 'Nova tag de imagem {{ .name }}' ComposeCreate: 'Criar uma composição' + +# tarefa - site BackupNginxConfig: 'Fazer backup do arquivo de configuração do OpenResty do site' CompressFileSuccess: 'Diretório compactado com sucesso, compactado para {{ .name }}' CompressDir: 'Diretório de compressão' @@ -519,8 +571,15 @@ websiteDir: 'Diretório de sites' RecoverFailedStartRollBack: 'Falha na recuperação, iniciar reversão' AppBackupFileIncomplete: 'O arquivo de backup está incompleto e não contém os arquivos app.json ou app.tar.gz' AppAttributesNotMatch: 'O tipo ou nome do aplicativo não corresponde' + +# alerta +ErrAlertMethodNotSupported: 'Esta versão não oferece suporte a este método de alerta' ErrAlertSync: 'Erro de sincronização de informações de alarme, verifique e' + +# tarefa - runtime ErrInstallExtension: 'Já existe uma tarefa de instalação em andamento, aguarde a conclusão da tarefa' + +# modelo de e-mail de alerta PanelAlertTitle: 'Notificação de Alerta do Painel' TestAlertTitle: 'E-mail de Teste - Verificar Conectividade de E-mail' TestAlert: 'Este é um e-mail de teste para verificar se sua configuração de envio de e-mails está correta.' @@ -537,6 +596,8 @@ CommonAlert: 'Seu Painel {{ .node }}{{ .ip }}, {{ .msg }}. Faça login no painel NodeExceptionAlert: 'Seu Painel {{ .node }}{{ .ip }}, {{ .num }} nós estão anormais. Faça login no painel para obter detalhes.' LicenseExceptionAlert: 'Seu Painel {{ .node }}{{ .ip }}, {{ .num }} licenças estão anormais. Faça login no painel para obter detalhes.' SSHAndPanelLoginAlert: 'Seu Painel {{ .node }}{{ .ip }}, o login {{ .name }} a partir de {{ .loginIp }} é anormal. Faça login no painel para obter detalhes.' + +# disco DeviceNotFound: 'Dispositivo {{ .name }} não encontrado' DeviceIsMounted: 'Dispositivo {{ .name }} está montado desmonte primeiro' PartitionDiskErr: 'Falha ao particionar, {{ .err }}' @@ -549,4 +610,13 @@ TerminalAIBlockedRiskyCommand: 'Comando de risco bloqueado: {{ .command }}' TerminalAIThinking: 'A IA está pensando...' TerminalAIReadyToExecute: 'Pensamento concluído, pressione Enter para executar (duração: {{ .duration }}, token: {{ .tokens }})' TerminalAIRequestFailed: 'Falha na solicitação de AI: {{ .err }}' -FileAISearchEmptyDir: 'Nenhum arquivo ou pasta encontrado neste caminho (ou todos foram filtrados).' + +# gateway de IA +ErrAIProxyServiceNotInstalled: 'O serviço {{ .name }} não está instalado' +ErrAIProxyModelAccountNotFound: 'Conta de modelo {{ .id }} não encontrada' +ErrAIProxyModelMapRequired: 'Este campo é obrigatório.' +ErrAIProxyModelMapInvalid: 'O mapeamento de modelos deve ser um objeto JSON válido: {{ .err }}' +ErrAIProxyModelMapEmpty: 'O mapeamento de modelos não pode estar vazio' +ErrAIProxyModelMapEmptyExternalModel: 'O mapeamento de modelos contém um modelo solicitado vazio' +ErrAIProxyModelMapEmptyUpstreamModel: 'O modelo upstream de {{ .model }} não pode estar vazio' +AIProxyUserFallback: 'Usuário excluído (ID: {{ .id }})' diff --git a/agent/i18n/lang/ru.yaml b/agent/i18n/lang/ru.yaml index a4c0cb195..ddb4ef1e8 100644 --- a/agent/i18n/lang/ru.yaml +++ b/agent/i18n/lang/ru.yaml @@ -1,29 +1,47 @@ +# базовые ошибки ErrInvalidParams: 'Неверный запрос: {{ .detail }}' ErrTokenParse: 'Ошибка токена: {{ .detail }}' ErrInitialPassword: 'Исходный пароль неверен' ErrInternalServer: 'Внутренняя ошибка: {{ .detail }}' +ErrRecordExist: 'Запись уже существует' +ErrRecordNotFound: 'Запись не найдена' +ErrStructTransform: 'Ошибка преобразования: {{ .err }}' +ErrNotSupportType: 'Тип не поддерживается: {{ .name }}' + +# файловый AI ErrFileAINotEnabled: 'Поиск с AI в файлах выключен или не выбран аккаунт. В управлении файлами откройте «AI-аккаунт», включите и выберите аккаунт.' ErrFileAISearchBadPattern: 'Недопустимый шаблон поиска (regex и т.п.): {{ .detail }}' +FileAISearchEmptyDir: 'В этом пути нет файлов или каталогов для отображения (или все отфильтрованы).' + +# удаленная загрузка ErrWgetRemoteFailed: 'Неверный или недоступный URL удалённой загрузки: {{ .detail }}' ErrWgetInvalidContentType: 'Удалённый сервер вернул не файл (возможно, страницу ошибки), {{ .detail }}' ErrWgetProxyNotConfigured: 'Сначала настройте прокси-сервер в настройках панели' ErrWgetProxyInvalid: 'Недопустимый адрес прокси-сервера: {{ .detail }}' -ErrRecordExist: 'Запись уже существует' -ErrRecordNotFound: 'Запись не найдена' -ErrStructTransform: 'Ошибка преобразования: {{ .err }}' + +# вход и безопасность ErrNotLogin: 'Не авторизован: {{ .detail }}' ErrPasswordExpired: 'Пароль истёк: {{ .detail }}' -ErrNotSupportType: 'Тип не поддерживается: {{ .name }}' -ErrAlertMethodNotSupported: 'Эта версия не поддерживает данный способ оповещения' + +# запрос и API ErrProxy: 'Запрос не удался: {{ .detail }}' ErrApiConfigStatusInvalid: 'API отключено: {{ .detail }}' ErrApiConfigKeyInvalid: 'Неверный API-ключ: {{ .detail }}' ErrApiConfigIPInvalid: 'IP не в списке: {{ .detail }}' ErrApiConfigDisable: 'Доступ по API запрещён: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'Неверная метка времени: {{ .detail }}' -ErrShutDown: 'Команда остановлена вручную' +ErrCreateHttpClient: 'Не удалось создать запрос {{ .err }}' +ErrHttpReqTimeOut: 'Истекло время ожидания запроса {{ .err }}' +ErrHttpReqFailed: 'Запрос не выполнен {{ .err }}' +ErrNoSuchHost: 'Не удалось найти запрошенный сервер {{ .err }}' +ErrHttpReqNotFound: 'Запрошенный ресурс {{ .err }} не найден' + +# быстрый переход ErrMinQuickJump: 'Добавьте хотя бы одну быструю ссылку' ErrMaxQuickJump: 'Не более 4 быстрых ссылок' + +# общее +ErrShutDown: 'Команда остановлена вручную' ErrUsernameIsExist: 'Имя пользователя занято' ErrNameIsExist: 'Имя уже занято' ErrDemoEnvironment: 'Недоступно в демо' @@ -41,6 +59,8 @@ SystemRestart: 'Задача прервана из-за перезапуска ErrGroupIsDefault: 'Группа по умолчанию, не может быть удалена' ErrGroupIsInWebsiteUse: 'Группа используется другим веб-сайтом и не может быть удалена.' Decrypt: 'Расшифровать' + +# агент ErrAgentAccountBound: 'Акаунт привязан к агенту' ErrTerminalAIAccountInUse: 'Эта учетная запись модели сейчас используется Terminal AI. Смените учетную запись в настройках Terminal AI или отключите Terminal AI и повторите попытку.' ErrAgentAccountUnavailable: 'Связь с аккаунтом недоступна: {{ .err }}' @@ -65,14 +85,8 @@ ErrAgentWebsiteInUse: 'Этот сайт уже связан с другим а ErrAgentWebsiteUnbindUnsupported: 'Сайты one-click deployment нельзя отвязать вручную' ErrHermesPairingCodeUnavailable: 'Код сопряжения временно недоступен в Hermes, возможно из-за проблем с сетью. Повторите попытку позже.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'Когда групповая политика Feishu — белый список, политика личных сообщений не может быть кодом сопряжения.' -ErrAIProxyServiceNotInstalled: 'Сервис {{ .name }} не установлен' -ErrAIProxyModelAccountNotFound: 'Аккаунт модели {{ .id }} не найден' -ErrAIProxyModelMapRequired: 'Это поле обязательно.' -ErrAIProxyModelMapInvalid: 'Сопоставление моделей должно быть допустимым JSON-объектом: {{ .err }}' -ErrAIProxyModelMapEmpty: 'Сопоставление моделей не может быть пустым' -ErrAIProxyModelMapEmptyExternalModel: 'Сопоставление моделей содержит пустую запрошенную модель' -ErrAIProxyModelMapEmptyUpstreamModel: 'Upstream-модель для {{ .model }} не может быть пустой' -AIProxyUserFallback: 'Удаленный пользователь (ID: {{ .id }})' + +# резервное копирование и настройки оповещений Localhost: 'Локальная машина' ErrBackupInUsed: 'Аккаунт бэкапа занят задачей' ErrBackupCheck: 'Проверка подключения не удалась: {{ .err }}' @@ -80,6 +94,8 @@ ErrBackupLocalDelete: 'Нельзя удалить локальные бэкап ErrBackupLocalCreate: 'Нельзя создать локальные бэкапы' ErrAlertConfigInUse: 'Конфигурация оповещений используется и не может быть удалена' ErrAlertConfigPhoneExist: 'Номер телефона уже существует' + +# приложение ErrPortInUsed: '{{ .detail }} порт уже занят' ErrAppLimit: 'Количество установленных приложений превысило лимит' ErrNotInstall: 'Приложение не установлено' @@ -97,11 +113,6 @@ ErrFileParseApp: '{{ .name }} анализ файла не удался {{ .err ErrAppDirNull: 'Папка версии не существует' LocalAppErr: 'Синхронизация приложения {{ .name }} не удалась {{ .err }}' ErrContainerName: 'Имя контейнера уже существует' -ErrCreateHttpClient: 'Не удалось создать запрос {{ .err }}' -ErrHttpReqTimeOut: 'Истекло время ожидания запроса {{ .err }}' -ErrHttpReqFailed: 'Запрос не выполнен {{ .err }}' -ErrNoSuchHost: 'Не удалось найти запрошенный сервер {{ .err }}' -ErrHttpReqNotFound: 'Запрошенный ресурс {{ .err }} не найден' ErrContainerNotFound: 'Контейнер {{ .name }} не существует' ErrContainerMsg: 'Контейнер {{ .name }} ненормален. Подробности смотрите в журнале на странице контейнера.' ErrAppBackup: '{{ .name }} резервное копирование приложения не удалось {{ .err }}' @@ -132,6 +143,8 @@ ErrDockerFailed: 'Состояние Docker аномально, проверьт ErrDockerComposeCmdNotFound: 'Команда Docker Compose отсутствует, пожалуйста, установите эту команду на хост-машине сначала' UseExistImage: 'Образ уже существует, используется существующий образ' ErrDatabaseNotFound: 'База данных {{ .name }} не существует' + +# SSH ExportIP: 'IP входа' ExportArea: 'Местоположение' ExportPort: 'Порт' @@ -139,6 +152,8 @@ ExportAuthMode: 'Способ входа' ExportUser: 'Пользователь' ExportStatus: 'Статус входа' ExportDate: 'Время' + +# файл ErrFileCanNotRead: 'Этот файл не поддерживает предварительный просмотр' ErrSensitiveFileRead: 'Чтение конфиденциальных файлов запрещено' ErrFileToLarge: 'Файл больше 10 МБ и не может быть открыт' @@ -165,6 +180,8 @@ FileDropFailed: 'Не удалось очистить файл {{ .name }}: {{ . FileDropSuccess: 'Файл {{ .name }} успешно очищен, удалено {{ .count }} файлов, освобождено {{ .size }} дискового пространства' FileDropSum: 'Очистка файлов завершена успешно, всего удалено {{ .count }} файлов, освобождено {{ .size }} дискового пространства' ErrBadDecrypt: 'Ошибка пароля расшифровки сжатого пакета, распаковка не удалась, проверьте и повторите попытку' + +# сайт ErrAliasIsExist: 'Псевдоним уже существует' ErrBackupMatch: 'Файл резервной копии не соответствует некоторым текущим данным веб-сайта {{ .detail }}' ErrBackupExist: 'Соответствующая часть исходных данных в файле резервной копии не существует {{ .detail }}' @@ -194,6 +211,8 @@ delete: 'Удалить' ErrDefaultWebsite: 'Веб-сайт по умолчанию уже установлен, отмените его перед настройкой' SSL: 'Сертификат' Set: 'Настройки' + +# SSL-сертификат ErrSSLCannotDelete: 'Сертификат {{ .name }} используется веб-сайтом и не может быть удален' ErrAccountCannotDelete: 'Учетная запись связана с сертификатом и не может быть удалена' ErrSSLApply: 'Обновление сертификата прошло успешно, перезагрузка OpenResty не удалась, проверьте конфигурацию' @@ -228,6 +247,8 @@ ErrApplySSLCanNotDelete: 'Нельзя удалить сертификат {{ .n StartPushSSLToNode: 'Начало отправки сертификата на узел' PushSSLToNodeFailed: 'Не удалось отправить сертификат на узел: {{ .err }}' PushSSLToNodeSuccess: 'Сертификат успешно отправлен на узел' + +# MySQL ErrUserIsExist: 'Текущий пользователь уже существует, пожалуйста, введите еще раз' ErrDatabaseIsExist: 'Текущая база данных уже существует, пожалуйста, введите ее повторно' ErrExecTimeOut: 'Время выполнения SQL истекло, проверьте базу данных' @@ -236,7 +257,11 @@ ErrLocalExist: 'Имя уже существует в локальной баз RemoteBackup: 'Для резервного копирования удаленной базы данных необходимо сначала запустить службу базы данных локального контейнера с помощью образа {{ .name }}, пожалуйста, подождите...' RemoteRecover: 'Для восстановления удаленной базы данных необходимо сначала запустить службу базы данных локального контейнера с помощью образа {{ .name }}, пожалуйста, подождите...' Arg: 'Аргумент' + +# Redis ErrTypeOfRedis: 'Тип файла восстановления не соответствует текущему методу сохранения. Измените его и повторите попытку' + +# контейнер ErrInUsed: '{{ .detail }} используется и не может быть удалено' ErrObjectInUsed: 'Этот объект используется и не может быть удален' ErrObjectBeDependent: 'Этот образ зависит от других образов и не может быть удален' @@ -278,6 +303,8 @@ ComposeRecoverFiles: 'Восстановить файлы compose' ComposeRecoverContainers: 'Восстановить контейнеры compose' ComposeRecoverRecord: 'Сохранить запись compose' ComposeRecoverCleanup: 'Очистить рабочую область восстановления compose' + +# среда выполнения ErrFileNotExist: 'Файл {{ .detail }} не существует Проверьте целостность исходного файла' ErrImageBuildErr: 'Сборка образа не удалась' ErrImageExist: 'Изображение уже существует Пожалуйста, измените имя изображения.' @@ -290,12 +317,16 @@ ErrNodeModulesNotFound: 'Папка node_modules не существует Из ErrContainerNameIsNull: 'Имя контейнера не существует' ErrPHPPortIsDefault: 'Порт 9000 зарезервирован как стандартный. Укажите другой порт' ErrPHPRuntimePortFailed: 'Порт {{ .name }} уже используется этой средой выполнения' + +# инструмент ErrConfigNotFound: 'Файл конфигурации не существует' ErrConfigParse: 'Неверный формат файла конфигурации' ErrConfigIsNull: 'Файл конфигурации не может быть пустым' ErrConfigDirNotFound: 'Рабочий каталог не существует' ErrConfigAlreadyExist: 'Файл конфигурации с таким именем уже существует' ErrUserFindErr: 'Поиск пользователя {{ .name }} не удался {{ .err }}' + +# задание cron CutWebsiteLogSuccess: 'Журнал веб-сайта {{ .name }} успешно вырезан, путь к резервной копии {{ .path }}' HandleShell: 'Выполнить скрипт {{ .name }}' HandleCurl: 'Доступ к URL {{ .name }}' @@ -314,6 +345,8 @@ NoSuchResource: 'В базе данных не найдено содержимо CleanLog: 'Очистить журнал' CleanLogByName: 'Очистить журнал {{ .name }}' WafIpGroupNotFound: 'Группа IP WAF не найдена. Пожалуйста, перейдите в [Расширенные функции - WAF - Черный/Белый список - Группа IP], чтобы добавить группу IP с помощью метода удаленной загрузки.' + +# панель инструментов ErrNotExistUser: 'Текущий пользователь не существует, измените его и повторите попытку' ErrBanAction: 'Настройка не удалась. Текущая служба {{ .name }} недоступна. Проверьте и повторите попытку' ErrClamdscanNotFound: 'Команда clamdscan не обнаружена, обратитесь к документации, чтобы установить ее' @@ -322,11 +355,15 @@ SetSwap: 'Настроить Swap {{ .path }} - {{ .size }}' CreateSwap: 'Создать Файл Swap' FormatSwap: 'Форматировать Файл Swap' EnableSwap: 'Включить Swap' + +# защита от изменений CleanTamperSetting: 'Очистить исторические настройки защиты' SetTamperWithRules: 'Запустить защиту каталога согласно правилам' ProtectDir: 'Защитить каталог {{ .name }}' IgnoreFile: 'Защитить файл {{ .name }}' TamperSetSuccessful: 'Настройки защиты завершены, начинаю мониторинг следующих каталогов:' + +# WAF ErrScope: 'Изменение этой конфигурации не поддерживается' ErrStateChange: 'He удалось изменить состояние' ErrRuleExist: 'Правило уже существует' @@ -381,6 +418,8 @@ OpenrestyNotFound: 'OpenResty не установлен' remoteIpIsNull: 'Список IP пуст' OpenrestyVersionErr: 'Версия OpenResty слишком старая. Обновите до 1.27.1.2-2-2-focal' ErrFileTooLarge: 'Файл больше 1 МБ и не может быть загружен' + +# задача TaskStart: '{{ .name }} Задача начинается [START]' TaskEnd: '{{ .name }} Задача выполнена [ЗАВЕРШЕНО]' TaskFailed: 'Задача {{ .name }} не выполнена' @@ -441,10 +480,17 @@ CustomAppstore: 'Хранилище пользовательских прило TaskExec: 'Выполнить' TaskBatch: 'Пакетная операция' FileConvert: 'Преобразование формата файла' + +# задача - ClamAV Clamscan: 'Сканировать {{ .name }}' TaskScan: 'Сканировать' + +# задача - AI OllamaModelPull: 'Вытянуть модель Ollama {{ .name }}' OllamaModelSize: 'Получить размер модели Ollama {{ .name }}' +AIBenchmarkRun: "Выполнить тест производительности AI" + +# задача - снимок Snapshot: 'Снимок' SnapDBInfo: 'Запись информации о базе данных 1Panel' SnapCopy: 'Копировать файлы и каталоги {{ .name }}' @@ -494,6 +540,8 @@ RecoverDaemonJson: 'Восстановить файл конфигурации RecoverDBData: 'Восстановить данные базы данных' RecoverBackups: 'Восстановить локальный каталог резервных копий' RecoverPanelData: 'Каталог данных восстановления' + +# задача - контейнер ContainerImagePull: 'Извлечь изображение контейнера {{ .name }}' ContainerRemoveOld: 'Удалить исходный контейнер {{ .name }}' ContainerImageCheck: 'Проверьте, нормально ли извлекается изображение' @@ -502,6 +550,8 @@ ContainerRecreate: 'Обновление контейнера не удалос ContainerCreate: 'Создать новый контейнер {{ .name }}' ContainerCreateFailed: 'Создание контейнера не удалось, удалите неудавшийся контейнер' ContainerStartCheck: 'Проверить, запущен ли контейнер' + +# задача - образ ImageBuild: 'Создание изображения' ImagePull: 'Вытащить изображение' ImageRepoAuthFromDB: 'Получить информацию об аутентификации репозитория из базы данных' @@ -509,6 +559,8 @@ ImagePush: 'Отправить изображение' ImageRenameTag: 'Изменить тег изображения' ImageNewTag: 'Новый тег изображения {{ .name }}' ComposeCreate: 'Создать композицию' + +# задача - сайт BackupNginxConfig: 'Резервное копирование файла конфигурации OpenResty веб-сайта' CompressFileSuccess: 'Каталог успешно сжат, сжат в {{ .name }}' CompressDir: 'Каталог сжатия' @@ -519,8 +571,15 @@ websiteDir: 'Каталог веб-сайтов' RecoverFailedStartRollBack: 'Восстановление не удалось, начать откат' AppBackupFileIncomplete: 'Файл резервной копии неполный и в нем отсутствуют файлы app.json или app.tar.gz' AppAttributesNotMatch: 'Тип или имя приложения не совпадают' + +# оповещение +ErrAlertMethodNotSupported: 'Эта версия не поддерживает данный способ оповещения' ErrAlertSync: 'Ошибка синхронизации информации о тревоге, проверьте и повторите попытку' + +# задача - среда выполнения ErrInstallExtension: 'Уже выполняется задача установки, подождите, пока задача завершится' + +# шаблон письма оповещения PanelAlertTitle: 'Уведомление панели' TestAlertTitle: 'Тестовое письмо - проверка подключения' TestAlert: 'Это тестовое письмо для проверки правильности настройки отправки писем.' @@ -537,6 +596,8 @@ CommonAlert: 'Ваш панель {{ .node }}{{ .ip }}, {{ .msg }}. Войдит NodeExceptionAlert: 'Ваш панель {{ .node }}{{ .ip }}, {{ .num }} узлов работают с ошибками. Войдите в панель для получения деталей.' LicenseExceptionAlert: 'Ваш панель {{ .node }}{{ .ip }}, {{ .num }} лицензий имеют ошибки. Войдите в панель для получения деталей.' SSHAndPanelLoginAlert: 'Ваш панель {{ .node }}{{ .ip }}, вход {{ .name }} с адреса {{ .loginIp }} является аномальным. Войдите в панель для получения деталей.' + +# диск DeviceNotFound: 'Устройство {{ .name }} не найдено' DeviceIsMounted: 'Устройство {{ .name }} подключено, сначала отключите' PartitionDiskErr: 'Не удалось разделить, {{ .err }}' @@ -544,9 +605,18 @@ FormatDiskErr: 'Не удалось отформатировать диск, {{ MountDiskErr: 'Не удалось подключить диск, {{ .err }}' XfsNotFound: 'Файловая система xfs не обнаружена, сначала установите xfsprogs' -# terminal +# терминал TerminalAIBlockedRiskyCommand: 'Опасная команда заблокирована: {{ .command }}' TerminalAIThinking: 'AI думает...' TerminalAIReadyToExecute: 'Обдумывание завершено, нажмите Enter для выполнения (время: {{ .duration }}, token: {{ .tokens }})' TerminalAIRequestFailed: 'Ошибка запроса AI: {{ .err }}' -FileAISearchEmptyDir: 'В этом пути нет файлов или каталогов для отображения (или все отфильтрованы).' + +# AI-шлюз +ErrAIProxyServiceNotInstalled: 'Сервис {{ .name }} не установлен' +ErrAIProxyModelAccountNotFound: 'Аккаунт модели {{ .id }} не найден' +ErrAIProxyModelMapRequired: 'Это поле обязательно.' +ErrAIProxyModelMapInvalid: 'Сопоставление моделей должно быть допустимым JSON-объектом: {{ .err }}' +ErrAIProxyModelMapEmpty: 'Сопоставление моделей не может быть пустым' +ErrAIProxyModelMapEmptyExternalModel: 'Сопоставление моделей содержит пустую запрошенную модель' +ErrAIProxyModelMapEmptyUpstreamModel: 'Upstream-модель для {{ .model }} не может быть пустой' +AIProxyUserFallback: 'Удаленный пользователь (ID: {{ .id }})' diff --git a/agent/i18n/lang/tr.yaml b/agent/i18n/lang/tr.yaml index 3ede8d1fb..0ad171696 100644 --- a/agent/i18n/lang/tr.yaml +++ b/agent/i18n/lang/tr.yaml @@ -1,29 +1,47 @@ +# temel hatalar ErrInvalidParams: 'İstek geçersiz: {{ .detail }}' ErrTokenParse: 'Token hatası: {{ .detail }}' ErrInitialPassword: 'Orijinal şifre yanlış' ErrInternalServer: 'Sunucu hatası: {{ .detail }}' +ErrRecordExist: 'Kayıt zaten var' +ErrRecordNotFound: 'Kayıt bulunamadı' +ErrStructTransform: 'Dönüşüm hatası: {{ .err }}' +ErrNotSupportType: 'Bu tür desteklenmiyor: {{ .name }}' + +# dosya AI ErrFileAINotEnabled: 'Dosya yönetimi AI araması kapalı veya hesap yok. Dosya Yönetimi’nde AI hesabını açıp etkinleştirin ve bir hesap seçin.' ErrFileAISearchBadPattern: 'Geçersiz arama deseni (regex vb.): {{ .detail }}' +FileAISearchEmptyDir: 'Bu yol altında listelenecek dosya veya klasör yok (veya tümü filtrelendi).' + +# uzaktan indirme ErrWgetRemoteFailed: 'Uzak indirme başarısız veya URL erişilemiyor: {{ .detail }}' ErrWgetInvalidContentType: 'Uzak URL bir dosya değil, muhtemelen bir hata sayfası döndürdü, {{ .detail }}' ErrWgetProxyNotConfigured: 'Önce panel ayarlarında bir proxy sunucusu yapılandırın' ErrWgetProxyInvalid: 'Proxy sunucusu adresi geçersiz: {{ .detail }}' -ErrRecordExist: 'Kayıt zaten var' -ErrRecordNotFound: 'Kayıt bulunamadı' -ErrStructTransform: 'Dönüşüm hatası: {{ .err }}' + +# oturum açma ve güvenlik ErrNotLogin: 'Oturum açılmamış: {{ .detail }}' ErrPasswordExpired: 'Şifre süresi doldu: {{ .detail }}' -ErrNotSupportType: 'Bu tür desteklenmiyor: {{ .name }}' -ErrAlertMethodNotSupported: 'Bu sürüm bu uyarı yöntemini desteklemiyor' + +# istek ve API ErrProxy: 'İstek başarısız: {{ .detail }}' ErrApiConfigStatusInvalid: 'API kapalı: {{ .detail }}' ErrApiConfigKeyInvalid: 'Geçersiz API anahtarı: {{ .detail }}' ErrApiConfigIPInvalid: 'IP izinli değil: {{ .detail }}' ErrApiConfigDisable: 'API erişimi kapalı: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'Zaman damgası hatalı: {{ .detail }}' -ErrShutDown: 'Komut manuel durduruldu' +ErrCreateHttpClient: 'İstek oluşturma başarısız {{ .err }}' +ErrHttpReqTimeOut: 'İstek zaman aşımı {{ .err }}' +ErrHttpReqFailed: 'İstek başarısız {{ .err }}' +ErrNoSuchHost: 'İstenen sunucu bulunamıyor {{ .err }}' +ErrHttpReqNotFound: 'İstenen kaynak {{ .err }} bulunamadı' + +# hızlı geçiş ErrMinQuickJump: 'En az bir hızlı erişim ekle' ErrMaxQuickJump: '4 hızlı erişim hakkı var' + +# genel +ErrShutDown: 'Komut manuel durduruldu' ErrUsernameIsExist: 'Kullanıcı adı mevcut' ErrNameIsExist: 'İsim mevcut' ErrDemoEnvironment: 'Demo modunda yok' @@ -41,6 +59,8 @@ SystemRestart: 'Sistem yeniden başlatması nedeniyle görev kesildi' ErrGroupIsDefault: 'Varsayılan grup, silinemez' ErrGroupIsInWebsiteUse: 'Grup başka bir web sitesi tarafından kullanılıyor ve silinemez.' Decrypt: 'Şifre Çöz' + +# ajan ErrAgentAccountBound: 'Hesap bir ajana bağlı' ErrTerminalAIAccountInUse: 'Bu model hesabi su anda Terminal AI tarafindan kullaniliyor. Terminal AI ayarlarinda baska bir hesaba gecin veya Terminal AI yi devre disi birakip tekrar deneyin.' ErrAgentAccountUnavailable: 'Hesap bağlantısı yok: {{ .err }}' @@ -65,14 +85,8 @@ ErrAgentWebsiteInUse: 'Bu web sitesi zaten başka bir ajana bağlı' ErrAgentWebsiteUnbindUnsupported: 'Tek tıkla dağıtılan web sitelerinin bağlantısı manuel olarak kaldırılamaz' ErrHermesPairingCodeUnavailable: 'Eşleştirme kodu Hermes içinde geçici olarak bulunamıyor; bu durum ağ kaynaklı olabilir. Lütfen daha sonra tekrar deneyin.' ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'Feishu grup ilkesi izin listesi olduğunda, DM ilkesi eşleştirme kodu olamaz.' -ErrAIProxyServiceNotInstalled: '{{ .name }} servisi kurulu değil' -ErrAIProxyModelAccountNotFound: 'Model hesabı {{ .id }} bulunamadı' -ErrAIProxyModelMapRequired: 'Bu alan zorunludur.' -ErrAIProxyModelMapInvalid: 'Model eşlemesi geçerli bir JSON nesnesi olmalıdır: {{ .err }}' -ErrAIProxyModelMapEmpty: 'Model eşlemesi boş olamaz' -ErrAIProxyModelMapEmptyExternalModel: 'Model eşlemesi boş bir istek modeli içeriyor' -ErrAIProxyModelMapEmptyUpstreamModel: '{{ .model }} için upstream model boş olamaz' -AIProxyUserFallback: 'Silinen kullanıcı (ID: {{ .id }})' + +# yedekleme ve uyarı ayarları Localhost: 'Yerel Makine' ErrBackupInUsed: 'Yedek hesabı görevde kullanılıyor' ErrBackupCheck: 'Bağlantı testi başarısız: {{ .err }}' @@ -80,6 +94,8 @@ ErrBackupLocalDelete: 'Yerel yedek silme yok' ErrBackupLocalCreate: 'Yerel yedek oluşturma yok' ErrAlertConfigInUse: 'Uyarı yapılandırması kullanımda ve silinemez' ErrAlertConfigPhoneExist: 'Telefon numarasi zaten mevcut' + +# uygulama ErrPortInUsed: '{{ .detail }} portu zaten kullanılıyor' ErrAppLimit: 'Yüklenen uygulama sayısı sınırı aştı' ErrNotInstall: 'Uygulama yüklenmedi' @@ -97,11 +113,6 @@ ErrFileParseApp: '{{ .name }} dosya ayrıştırma başarısız {{ .err }}' ErrAppDirNull: 'Sürüm klasörü mevcut değil' LocalAppErr: 'Uygulama {{ .name }} senkronizasyonu başarısız {{ .err }}' ErrContainerName: 'Konteyner adı zaten mevcut' -ErrCreateHttpClient: 'İstek oluşturma başarısız {{ .err }}' -ErrHttpReqTimeOut: 'İstek zaman aşımı {{ .err }}' -ErrHttpReqFailed: 'İstek başarısız {{ .err }}' -ErrNoSuchHost: 'İstenen sunucu bulunamıyor {{ .err }}' -ErrHttpReqNotFound: 'İstenen kaynak {{ .err }} bulunamadı' ErrContainerNotFound: '{{ .name }} konteyneri mevcut değil' ErrContainerMsg: '{{ .name }} konteyneri anormal. Lütfen ayrıntılar için konteyner sayfasındaki günlüğü kontrol edin' ErrAppBackup: '{{ .name }} uygulama yedeklemesi başarısız {{ .err }}' @@ -132,6 +143,8 @@ ErrDockerFailed: 'Docker durumu anormal, lütfen servis durumunu kontrol edin' ErrDockerComposeCmdNotFound: 'Docker Compose komutu mevcut değil, lütfen önce bu komutu host makinesine yükleyin' UseExistImage: 'Görüntü zaten mevcut, mevcut görüntü kullanılıyor' ErrDatabaseNotFound: '{{ .name }} veritabanı mevcut değil' + +# SSH ExportIP: 'Giriş IP' ExportArea: 'Konum' ExportPort: 'Port' @@ -139,6 +152,8 @@ ExportAuthMode: 'Giriş Yöntemi' ExportUser: 'Kullanıcı' ExportStatus: 'Giriş Durumu' ExportDate: 'Zaman' + +# dosya ErrFileCanNotRead: 'Bu dosya önizlemeyi desteklemiyor' ErrSensitiveFileRead: 'Hassas dosyaların okunmasına izin verilmez' ErrFileToLarge: 'Dosya 10M dan büyük ve açılamıyor' @@ -165,6 +180,8 @@ FileDropFailed: '{{ .name }} dosyası temizlenemedi: {{ .err }}' FileDropSuccess: '{{ .name }} dosyası başarıyla temizlendi, {{ .count }} dosya silindi, {{ .size }} disk alanı boşaltıldı' FileDropSum: 'Dosya temizleme tamamlandı, toplam {{ .count }} dosya silindi, toplam {{ .size }} disk alanı boşaltıldı' ErrBadDecrypt: 'Sıkıştırılmış paket şifre çözme parolası hatalı, açma başarısız, lütfen kontrol edip tekrar deneyin' + +# web sitesi ErrAliasIsExist: 'Takma ad zaten mevcut' ErrBackupMatch: 'Yedekleme dosyası mevcut web sitesi verilerinin bir kısmıyla eşleşmiyor {{ .detail }}' ErrBackupExist: 'Yedekleme dosyasındaki kaynak verilerin karşılık gelen kısmı mevcut değil {{ .detail }}' @@ -194,6 +211,8 @@ delete: 'Sil' ErrDefaultWebsite: 'Varsayılan bir web sitesi zaten ayarlanmış. Yeni bir tane ayarlamadan önce lütfen iptal edin' SSL: 'Sertifika' Set: 'Ayarlar' + +# SSL sertifikası ErrSSLCannotDelete: '{{ .name }} sertifikası bir web sitesi tarafından kullanılıyor ve silinemez' ErrAccountCannotDelete: 'Hesap bir sertifikayla ilişkili ve silinemez' ErrSSLApply: 'Sertifika yenileme başarılı, openresty yeniden yükleme başarısız, lütfen yapılandırmayı kontrol edin' @@ -228,6 +247,8 @@ ErrApplySSLCanNotDelete: 'İşlemde olan sertifika {{ .name }} silinemez, lütfe StartPushSSLToNode: 'Sertifika düğüme gönderilmeye başlandı' PushSSLToNodeFailed: 'Sertifika düğüme gönderilemedi: {{ .err }}' PushSSLToNodeSuccess: 'Sertifika düğüme başarıyla gönderildi' + +# MySQL ErrUserIsExist: 'Mevcut kullanıcı zaten mevcut, lütfen yeniden girin' ErrDatabaseIsExist: 'Mevcut veritabanı zaten mevcut, lütfen yeniden girin' ErrExecTimeOut: 'SQL yürütme zaman aşımı, lütfen veritabanını kontrol edin' @@ -236,7 +257,11 @@ ErrLocalExist: 'Yerel veritabanında bu ad zaten mevcut, lütfen değiştirin ve RemoteBackup: 'Uzak veritabanını yedeklemek için önce {{ .name }} görüntüsü kullanılarak yerel konteyner veritabanı hizmetinin başlatılması gerekiyor, lütfen bekleyin...' RemoteRecover: 'Uzak veritabanını geri yüklemek için önce {{ .name }} görüntüsü kullanılarak yerel konteyner veritabanı hizmetinin başlatılması gerekiyor, lütfen bekleyin...' Arg: 'Argüman' + +# Redis ErrTypeOfRedis: 'Kurtarma dosyası türü mevcut kalıcılık yöntemiyle eşleşmiyor, lütfen değiştirin ve tekrar deneyin' + +# konteyner ErrInUsed: '{{ .detail }} kullanımda ve silinemez' ErrObjectInUsed: 'Bu nesne kullanımda ve silinemez' ErrObjectBeDependent: 'Bu görüntü diğer görüntüler tarafından bağımlıdır ve silinemez' @@ -278,6 +303,8 @@ ComposeRecoverFiles: 'Compose dosyalarını geri yükle' ComposeRecoverContainers: 'Compose konteynerlerini geri yükle' ComposeRecoverRecord: 'Compose kaydını sakla' ComposeRecoverCleanup: 'Compose geri yükleme çalışma alanını temizle' + +# çalışma zamanı ErrFileNotExist: '{{ .detail }} dosyası mevcut değil Lütfen kaynak dosyanın bütünlüğünü kontrol edin' ErrImageBuildErr: 'Image yapı başarısız' ErrImageExist: 'Görüntü zaten var Lütfen görüntü adını değiştirin.' @@ -290,12 +317,16 @@ ErrNodeModulesNotFound: 'node_modules klasörü mevcut değil Lütfen çalışma ErrContainerNameIsNull: 'Konteyner adı mevcut değil' ErrPHPPortIsDefault: '9000 portu varsayılan port, lütfen değiştirin ve tekrar deneyin' ErrPHPRuntimePortFailed: '{{ .name }} portu mevcut çalışma ortamı tarafından zaten kullanılıyor, lütfen değiştirin ve tekrar deneyin' + +# araç ErrConfigNotFound: 'Yapılandırma dosyası mevcut değil' ErrConfigParse: 'Yapılandırma dosyası formatı yanlış' ErrConfigIsNull: 'Yapılandırma dosyası boş olamaz' ErrConfigDirNotFound: 'Çalışma dizini mevcut değil' ErrConfigAlreadyExist: 'Aynı ada sahip bir yapılandırma dosyası zaten mevcut' ErrUserFindErr: 'Kullanıcı {{ .name }} arama başarısız {{ .err }}' + +# cron görevi CutWebsiteLogSuccess: '{{ .name }} web sitesi günlüğü başarıyla kesildi, yedekleme yolu {{ .path }}' HandleShell: 'Betik {{ .name }} yürüt' HandleCurl: 'URL''ye Eriş {{ .name }}' @@ -314,6 +345,8 @@ NoSuchResource: 'Veritabanında yedek içeriği bulunamadı, atlanıyor...' CleanLog: 'Günlüğü temizle' CleanLogByName: '{{ .name }} günlüğünü temizle' WafIpGroupNotFound: 'WAF IP grubu bulunamadı. Lütfen [Gelişmiş Özellikler - WAF - Kara/Beyaz Liste - IP Grubu] bölümüne giderek uzaktan indirme yöntemiyle bir IP grubu ekleyin.' + +# araç kutusu ErrNotExistUser: 'Mevcut kullanıcı mevcut değil, lütfen değiştirin ve tekrar deneyin' ErrBanAction: 'Ayarlama başarısız. Mevcut {{ .name }} servisi kullanılamıyor. Lütfen kontrol edin ve tekrar deneyin' ErrClamdscanNotFound: 'clamdscan komutu tespit edilmedi, lütfen yüklemek için belgeleri inceleyin' @@ -322,11 +355,15 @@ SetSwap: 'Swap Ayarla {{ .path }} - {{ .size }}' CreateSwap: 'Swap Dosyası Oluştur' FormatSwap: 'Swap Dosyasını Biçimlendir' EnableSwap: 'Swap Etkinleştir' + +# kurcalama koruması CleanTamperSetting: 'Geçmiş koruma ayarlarını temizle' SetTamperWithRules: 'Kurallara göre dizin korumasını başlat' ProtectDir: 'Dizini koru {{ .name }}' IgnoreFile: 'Dosyayı koru {{ .name }}' TamperSetSuccessful: 'Koruma ayarları tamamlandı, aşağıdaki dizinler izlenmeye başlanıyor:' + +# WAF ErrScope: 'Bu yapılandırmayı değiştirme desteklenmiyor' ErrStateChange: 'Durum değiştirme başarısız' ErrRuleExist: 'Kural zaten mevcut' @@ -381,6 +418,8 @@ OpenrestyNotFound: 'OpenResty yüklü değil' remoteIpIsNull: 'IP listesi boş' OpenrestyVersionErr: 'OpenResty sürümü çok eski. 1.27.1.2-2-2-focal sürümüne yükseltin' ErrFileTooLarge: 'Dosya 1 MB''den büyük olduğu için yüklenemiyor' + +# görev TaskStart: '{{ .name }} görevi başlıyor [BAŞLAT]' TaskEnd: '{{ .name }} Görev tamamlandı [TAMAMLANDI]' TaskFailed: '{{ .name }} görev başarısız' @@ -441,10 +480,17 @@ CustomAppstore: 'Özel uygulama deposu' TaskExec: 'Çalıştır' TaskBatch: 'Toplu İşlem' FileConvert: 'Dosya Formatı Dönüştürme' + +# görev - ClamAV Clamscan: '{{ .name }} Tara' TaskScan: 'Tara' + +# görev - AI OllamaModelPull: 'Ollama modeli {{ .name }} çek' OllamaModelSize: 'Ollama modeli {{ .name }} boyutunu al' +AIBenchmarkRun: "AI kıyaslama testini çalıştır" + +# görev - anlık görüntü Snapshot: 'Anlık Görüntü' SnapDBInfo: '1Panel veritabanı bilgilerini yaz' SnapCopy: 'Dosya ve dizinleri {{ .name }} kopyala' @@ -494,6 +540,8 @@ RecoverDaemonJson: 'Konteyner yapılandırma daemon.json dosyasını geri yükle RecoverDBData: 'Veritabanı verilerini kurtar' RecoverBackups: 'Yerel yedekleme dizinini geri yükle' RecoverPanelData: 'Veri dizinini kurtar' + +# görev - konteyner ContainerImagePull: 'Konteyner imajını çek {{ .name }}' ContainerRemoveOld: 'Orijinal konteyneri kaldır {{ .name }}' ContainerImageCheck: 'İmajın normal çekilip çekilmediğini kontrol et' @@ -502,6 +550,8 @@ ContainerRecreate: 'Konteyner güncellemesi başarısız, şimdi orijinal kontey ContainerCreate: 'Yeni konteyner oluştur {{ .name }}' ContainerCreateFailed: 'Konteyner oluşturma başarısız, başarısız konteyneri sil' ContainerStartCheck: 'Konteynerin başlatılıp başlatılmadığını kontrol et' + +# görev - imaj ImageBuild: 'İmaj Oluşturma' ImagePull: 'İmaj çek' ImageRepoAuthFromDB: 'Veritabanından depo kimlik doğrulama bilgilerini al' @@ -509,6 +559,8 @@ ImagePush: 'İmaj gönder' ImageRenameTag: 'İmaj etiketini değiştir' ImageNewTag: 'Yeni imaj etiketi {{ .name }}' ComposeCreate: 'Kompozisyon oluştur' + +# görev - web sitesi BackupNginxConfig: 'Web sitesi OpenResty yapılandırma dosyasını yedekle' CompressFileSuccess: 'Dizin başarıyla sıkıştırıldı, şuraya sıkıştırıldı {{ .name }}' CompressDir: 'Sıkıştırma dizini' @@ -519,8 +571,15 @@ websiteDir: 'Web Sitesi Dizini' RecoverFailedStartRollBack: 'Kurtarma başarısız, geri almayı başlat' AppBackupFileIncomplete: 'Yedekleme dosyası eksik ve app.json veya app.tar.gz dosyalarından yoksun' AppAttributesNotMatch: 'Uygulama türü veya adı eşleşmiyor' + +# uyarı +ErrAlertMethodNotSupported: 'Bu sürüm bu uyarı yöntemini desteklemiyor' ErrAlertSync: 'Alarm bilgisi senkronizasyon hatası, lütfen kontrol edin ve tekrar deneyin' + +# görev - çalışma zamanı ErrInstallExtension: 'Zaten devam eden bir kurulum görevi var, görevin bitmesini bekleyin' + +# uyarı e-posta şablonu PanelAlertTitle: 'Panel Uyarı Bildirimi' TestAlertTitle: 'Test E-postası - E-posta Bağlantısını Doğrula' TestAlert: 'Bu, e-posta gönderim ayarlarınızın doğru yapılandırıldığını doğrulamak için gönderilen bir test e-postasıdır.' @@ -537,6 +596,8 @@ CommonAlert: 'Paneliniz {{ .node }}{{ .ip }}, {{ .msg }}. Detaylar için panelin NodeExceptionAlert: 'Paneliniz {{ .node }}{{ .ip }}, {{ .num }} düğüm anormal durumda. Detaylar için paneline giriş yapın.' LicenseExceptionAlert: 'Paneliniz {{ .node }}{{ .ip }}, {{ .num }} lisans anormal durumda. Detaylar için paneline giriş yapın.' SSHAndPanelLoginAlert: 'Paneliniz {{ .node }}{{ .ip }}, {{ .loginIp }} adresinden {{ .name }} girişi anormal. Detaylar için paneline giriş yapın.' + +# disk DeviceNotFound: 'Cihaz {{ .name }} bulunamadı' DeviceIsMounted: 'Cihaz {{ .name }} bağlandı, önce çıkarın' PartitionDiskErr: 'Bölümleme başarısız, {{ .err }}' @@ -549,4 +610,13 @@ TerminalAIBlockedRiskyCommand: 'Riskli komut engellendi: {{ .command }}' TerminalAIThinking: 'AI dusunuyor...' TerminalAIReadyToExecute: 'Dusunme tamamlandi, calistirmak icin Enter tusuna basin (sure: {{ .duration }}, token: {{ .tokens }})' TerminalAIRequestFailed: 'AI istegi basarisiz oldu: {{ .err }}' -FileAISearchEmptyDir: 'Bu yol altında listelenecek dosya veya klasör yok (veya tümü filtrelendi).' + +# AI ağ geçidi +ErrAIProxyServiceNotInstalled: '{{ .name }} servisi kurulu değil' +ErrAIProxyModelAccountNotFound: 'Model hesabı {{ .id }} bulunamadı' +ErrAIProxyModelMapRequired: 'Bu alan zorunludur.' +ErrAIProxyModelMapInvalid: 'Model eşlemesi geçerli bir JSON nesnesi olmalıdır: {{ .err }}' +ErrAIProxyModelMapEmpty: 'Model eşlemesi boş olamaz' +ErrAIProxyModelMapEmptyExternalModel: 'Model eşlemesi boş bir istek modeli içeriyor' +ErrAIProxyModelMapEmptyUpstreamModel: '{{ .model }} için upstream model boş olamaz' +AIProxyUserFallback: 'Silinen kullanıcı (ID: {{ .id }})' diff --git a/agent/i18n/lang/zh-Hant.yaml b/agent/i18n/lang/zh-Hant.yaml index 3b58c8233..253660a94 100644 --- a/agent/i18n/lang/zh-Hant.yaml +++ b/agent/i18n/lang/zh-Hant.yaml @@ -1,29 +1,47 @@ +# 基礎錯誤 ErrInvalidParams: '請求參數錯誤: {{ .detail }}' ErrTokenParse: 'Token 產生錯誤: {{ .detail }}' ErrInitialPassword: '原密碼錯誤' ErrInternalServer: '服務內部錯誤: {{ .detail }}' +ErrRecordExist: '記錄已存在' +ErrRecordNotFound: '記錄未能找到' +ErrStructTransform: '型別轉換失敗: {{ .err }}' +ErrNotSupportType: '系統暫不支援目前類型: {{ .name }}' + +# 檔案 AI ErrFileAINotEnabled: '請先在檔案管理頁透過「AI 帳號」啟用檔案 AI 搜尋並選擇帳號。' ErrFileAISearchBadPattern: '搜尋條件無效(正則或全詞): {{ .detail }}' +FileAISearchEmptyDir: '目前目錄下沒有可列出的檔案或資料夾(或均被過濾)。' + +# 遠端下載 ErrWgetRemoteFailed: '遠端下載網址無效或無法存取:{{ .detail }}' ErrWgetInvalidContentType: '遠端網址未回傳檔案內容(可能是錯誤頁),{{ .detail }}' ErrWgetProxyNotConfigured: '請先在面板設定中設定代理伺服器' ErrWgetProxyInvalid: '代理伺服器位址無效:{{ .detail }}' -ErrRecordExist: '記錄已存在' -ErrRecordNotFound: '記錄未能找到' -ErrStructTransform: '型別轉換失敗: {{ .err }}' + +# 登入與安全 ErrNotLogin: '使用者未登入: {{ .detail }}' ErrPasswordExpired: '目前密碼已過期: {{ .detail }}' -ErrNotSupportType: '系統暫不支援目前類型: {{ .name }}' -ErrAlertMethodNotSupported: '當前版本不支援此告警方式' + +# 請求與 API ErrProxy: '請求錯誤,請檢查該節點狀態: {{ .detail }}' ErrApiConfigStatusInvalid: 'API 介面禁止存取: {{ .detail }}' ErrApiConfigKeyInvalid: 'API 介面金鑰錯誤: {{ .detail }}' ErrApiConfigIPInvalid: '呼叫 API 介面 IP 不在白名單: {{ .detail }}' ErrApiConfigDisable: '此介面禁止使用 API 介面呼叫: {{ .detail }}' ErrApiConfigKeyTimeInvalid: 'API 介面時間戳記錯誤: {{ .detail }}' -ErrShutDown: '指令被手動結束!' +ErrCreateHttpClient: '建立請求失敗{{ .err }}' +ErrHttpReqTimeOut: '請求逾時{{ .err }}' +ErrHttpReqFailed: '請求失敗{{ .err }}' +ErrNoSuchHost: '無法找到請求的伺服器{{ .err }}' +ErrHttpReqNotFound: '無法找到要求的資源{{ .err }}' + +# 快速跳轉 ErrMinQuickJump: '請至少設定一個快速跳轉入口!' ErrMaxQuickJump: '最多可設定四個快速跳轉入口!' + +# 通用 +ErrShutDown: '指令被手動結束!' ErrUsernameIsExist: '使用者名稱已存在' ErrNameIsExist: '名稱已存在' ErrDemoEnvironment: '示範伺服器,禁止此操作!' @@ -41,6 +59,8 @@ SystemRestart: '系統重新啟動導致任務中斷' ErrGroupIsDefault: '預設分組,無法刪除' ErrGroupIsInWebsiteUse: '分組正在被其他網站使用,無法刪除' Decrypt: '解密' + +# 智慧體 ErrAgentAccountBound: '該帳號已綁定到智能體,無法刪除,請重試。' ErrTerminalAIAccountInUse: '該模型帳號正被終端 AI 使用,請在終端 AI 設定中更換帳號或關閉終端 AI 後再試。' ErrAgentAccountUnavailable: '帳號連線資訊不可用,錯誤:{{ .err }},請重試' @@ -65,14 +85,8 @@ ErrAgentWebsiteInUse: '該網站已被其他智能體關聯' ErrAgentWebsiteUnbindUnsupported: '一鍵部署網站不支援手動解綁' ErrHermesPairingCodeUnavailable: '配對碼在 Hermes 中暫時不存在,可能是由於網路原因,請稍後再試' ErrHermesFeishuGroupAllowlistRequiresAllowlist: '飛書群組策略為白名單時,私聊策略不能為配對碼' -ErrAIProxyServiceNotInstalled: '{{ .name }} 服務未安裝' -ErrAIProxyModelAccountNotFound: '模型帳號 {{ .id }} 不存在' -ErrAIProxyModelMapRequired: '請填寫必填項' -ErrAIProxyModelMapInvalid: '模型映射必須是合法的 JSON 物件:{{ .err }}' -ErrAIProxyModelMapEmpty: '模型映射不能為空' -ErrAIProxyModelMapEmptyExternalModel: '模型映射中存在空的請求模型' -ErrAIProxyModelMapEmptyUpstreamModel: '模型 {{ .model }} 的上游模型不能為空' -AIProxyUserFallback: '已刪除使用者 (ID: {{ .id }})' + +# 備份與告警設定 Localhost: '本機' ErrBackupInUsed: '此備份帳號已在排程任務中使用,無法刪除' ErrBackupCheck: '備份帳號測試連線失敗{{ .err }}' @@ -80,6 +94,8 @@ ErrBackupLocalDelete: '暫時不支援刪除本機伺服器備份帳號' ErrBackupLocalCreate: '暫時不支援建立本機伺服器備份帳號' ErrAlertConfigInUse: '告警配置正在使用中,無法刪除' ErrAlertConfigPhoneExist: '手機號碼已存在' + +# 應用 ErrPortInUsed: '{{ .detail }} 連接埠已被佔用!' ErrAppLimit: '應用程式超出安裝數量限制' ErrNotInstall: '應用程式未安裝' @@ -97,11 +113,6 @@ ErrFileParseApp: '{{ .name }} 檔案解析失敗{{ .err }}' ErrAppDirNull: '版本資料夾不存在' LocalAppErr: '應用程式{{ .name }} 同步失敗!{{ .err }}' ErrContainerName: '容器名稱已存在' -ErrCreateHttpClient: '建立請求失敗{{ .err }}' -ErrHttpReqTimeOut: '請求逾時{{ .err }}' -ErrHttpReqFailed: '請求失敗{{ .err }}' -ErrNoSuchHost: '無法找到請求的伺服器{{ .err }}' -ErrHttpReqNotFound: '無法找到要求的資源{{ .err }}' ErrContainerNotFound: '{{ .name }} 容器不存在' ErrContainerMsg: '{{ .name }} 容器異常,請在容器頁面上檢視日誌' ErrAppBackup: '{{ .name }} 應用備份失敗 {{ .err }}' @@ -132,6 +143,8 @@ ErrDockerFailed: 'Docker 狀態異常,請檢查服務狀態' ErrDockerComposeCmdNotFound: 'Docker Compose 指令不存在,請先在宿主機安裝此指令' UseExistImage: '映像已存在,使用現有映像' ErrDatabaseNotFound: '資料庫 {{ .name }} 不存在' + +# SSH ExportIP: '登入IP' ExportArea: '歸屬地' ExportPort: '埠' @@ -139,6 +152,8 @@ ExportAuthMode: '登入方式' ExportUser: '使用者' ExportStatus: '登入狀態' ExportDate: '時間' + +# 檔案 ErrFileCanNotRead: '此檔案不支援預覽' ErrSensitiveFileRead: '不允許讀取敏感檔案' ErrFileToLarge: '檔案超過10M,無法開啟' @@ -165,6 +180,8 @@ FileDropFailed: '清理檔案 {{ .name }} 失敗: {{ .err }}' FileDropSuccess: '清理檔案 {{ .name }} 成功,清理 {{ .count }} 個檔案,釋放 {{ .size }} 磁碟空間' FileDropSum: '檔案清理完成,共清理 {{ .count }} 個檔案,共釋放 {{ .size }} 磁碟空間' ErrBadDecrypt: '壓縮檔解壓密碼錯誤,解壓失敗,請重試。' + +# 網站 ErrAliasIsExist: '代號已存在' ErrBackupMatch: '該備份檔案與目前網站部分資料不符{{ .detail }}' ErrBackupExist: '該備份檔案對應部分來源資料不存在{{ .detail }}' @@ -194,6 +211,8 @@ delete: '刪除' ErrDefaultWebsite: '已經設定預設網站,請取消後再設定!' SSL: '憑證' Set: '設定' + +# SSL 憑證 ErrSSLCannotDelete: '{{ .name }} 憑證正在被網站使用,無法刪除' ErrAccountCannotDelete: '帳號關聯憑證,無法刪除' ErrSSLApply: '憑證續簽成功,openresty reload 失敗,請檢查設定!' @@ -228,6 +247,8 @@ ErrApplySSLCanNotDelete: '正在申請的憑證 {{ .name }} 無法刪除,請 StartPushSSLToNode: '開始推送憑證到節點' PushSSLToNodeFailed: '推送憑證到節點失敗: {{ .err }}' PushSSLToNodeSuccess: '推送憑證到節點成功' + +# MySQL ErrUserIsExist: '目前使用者已存在,請重新輸入' ErrDatabaseIsExist: '目前資料庫已存在,請重新輸入' ErrExecTimeOut: 'SQL 執行逾時,請檢查資料庫' @@ -236,7 +257,11 @@ ErrLocalExist: '本機資料庫已存在該名稱,請修改後重試' RemoteBackup: '備份遠端資料庫需要先使用映像 {{ .name }} 啟動本機容器資料庫服務,請稍候...' RemoteRecover: '復原遠端資料庫需要先使用映像 {{ .name }} 啟動本機容器資料庫服務,請稍候...' Arg: '參數' + +# Redis ErrTypeOfRedis: '復原檔案類型與目前持久化方式不符,請修改後重試' + +# 容器 ErrInUsed: '{{ .detail }} 正被使用,無法刪除!' ErrObjectInUsed: '該對象正被使用,無法刪除!' ErrObjectBeDependent: '該映像正被其他映像所依賴,無法刪除!' @@ -278,6 +303,8 @@ ComposeRecoverFiles: '還原編排檔案' ComposeRecoverContainers: '還原編排容器' ComposeRecoverRecord: '保存編排記錄' ComposeRecoverCleanup: '清理編排還原工作目錄' + +# 執行環境 ErrFileNotExist: '{{ .detail }} 檔案不存在!請檢查來源檔案完整性!' ErrImageBuildErr: '映像build 失敗' ErrImageExist: '映像已存在!請修改映像名稱。' @@ -290,12 +317,16 @@ ErrNodeModulesNotFound: 'node_modules 資料夾不存在!請編輯執行環境 ErrContainerNameIsNull: '容器名稱不存在' ErrPHPPortIsDefault: '9000 埠為預設埠,請修改後重試' ErrPHPRuntimePortFailed: '{{ .name }} 埠已被目前執行環境使用,請修改後重試' + +# 工具 ErrConfigNotFound: '設定檔不存在' ErrConfigParse: '設定檔格式有誤' ErrConfigIsNull: '設定檔不允許為空' ErrConfigDirNotFound: '執行目錄不存在' ErrConfigAlreadyExist: '已存在同名設定檔' ErrUserFindErr: '使用者{{ .name }} 尋找失敗{{ .err }}' + +# 計劃任務 CutWebsiteLogSuccess: '{{ .name }} 網站日誌切割成功,備份路徑{{ .path }}' HandleShell: '執行腳本{{ .name }}' HandleCurl: '存取 URL {{ .name }}' @@ -314,6 +345,8 @@ NoSuchResource: '資料庫中未能查詢到備份內容,跳過...' CleanLog: '清理日誌' CleanLogByName: '清理 {{ .name }} 日誌' WafIpGroupNotFound: 'WAF IP 群組未找到,請先到【進階功能-WAF-黑白名單-IP群組】添加遠端下載方式的IP群組' + +# 工具箱 ErrNotExistUser: '目前使用者不存在,請修改後重試!' ErrBanAction: '設定失敗,目前{{ .name }} 服務不可用,請重試' ErrClamdscanNotFound: '未偵測到clamdscan 指令,請參考檔案安裝!' @@ -322,11 +355,15 @@ SetSwap: '設定 Swap {{ .path }} - {{ .size }}' CreateSwap: '建立 Swap 檔案' FormatSwap: '格式化 Swap 檔案' EnableSwap: '啟用 Swap' + +# 防篡改 CleanTamperSetting: '清理歷史防護設定' SetTamperWithRules: '根據規則啟動目錄防護' ProtectDir: '防護目錄 {{ .name }}' IgnoreFile: '保護檔案 {{ .name }}' TamperSetSuccessful: '防護設定完成,開始監聽以下目錄:' + +# WAF ErrScope: '不支援修改此設定' ErrStateChange: '狀態修改失敗' ErrRuleExist: '規則已存在' @@ -381,6 +418,8 @@ OpenrestyNotFound: 'OpenResty 未安裝' remoteIpIsNull: 'IP 列表為空' OpenrestyVersionErr: 'OpenResty 版本過低,請升級 OpenResty 至 1.27.1.2-2-2-focal' ErrFileTooLarge: '檔案超過 1MB,無法上傳' + +# 任務 TaskStart: '{{ .name }} 任務開始[START]' TaskEnd: '{{ .name }} 任務結束[COMPLETED]' TaskFailed: '{{ .name }} 任務失敗' @@ -441,11 +480,17 @@ CustomAppstore: '自訂應用程式倉庫' TaskExec: '執行' TaskBatch: '批次操作' FileConvert: '檔案格式轉換' + +# 任務 - ClamAV Clamscan: '掃描 {{ .name }}' TaskScan: '掃描' + +# 任務 - AI OllamaModelPull: '拉取 Ollama 模型{{ .name }}' OllamaModelSize: '取得 Ollama 模型{{ .name }} 大小' AIBenchmarkRun: '執行 AI 基準測試' + +# 任務 - 快照 Snapshot: '快照' SnapDBInfo: '寫入1Panel 資料庫資訊' SnapCopy: '複製檔案&目錄{{ .name }}' @@ -495,6 +540,8 @@ RecoverDaemonJson: '復原容器設定daemon.json 檔' RecoverDBData: '復原資料庫資料' RecoverBackups: '還原本機備份目錄' RecoverPanelData: '復原資料目錄' + +# 任務 - 容器 ContainerImagePull: '拉取容器映像{{ .name }}' ContainerRemoveOld: '刪除原容器{{ .name }}' ContainerImageCheck: '檢查映像是否正常拉取' @@ -503,6 +550,8 @@ ContainerRecreate: '容器更新失敗,現在開始復原原容器' ContainerCreate: '建立新容器{{ .name }}' ContainerCreateFailed: '容器建立失敗,刪除失敗容器' ContainerStartCheck: '檢查容器是否已啟動' + +# 任務 - 映像 ImageBuild: '映像建置' ImagePull: '拉取映像' ImageRepoAuthFromDB: '從資料庫取得倉庫認證資訊' @@ -510,6 +559,8 @@ ImagePush: '推播映像' ImageRenameTag: '修改映像Tag' ImageNewTag: '新映像Tag {{ .name }}' ComposeCreate: '建立編排' + +# 任務 - 網站 BackupNginxConfig: '備份網站OpenResty 設定檔' CompressFileSuccess: '壓縮目錄成功,壓縮為{{ .name }}' CompressDir: '壓縮目錄' @@ -520,8 +571,15 @@ websiteDir: '網站目錄' RecoverFailedStartRollBack: '復原失敗,開始回溯' AppBackupFileIncomplete: '備份檔案不完整缺少 app.json 或 app.tar.gz 檔案' AppAttributesNotMatch: '應用程式類型或名稱不一致' + +# 告警 +ErrAlertMethodNotSupported: '當前版本不支援此告警方式' ErrAlertSync: '警告訊息同步錯誤,請重試。' + +# 任務 - 執行環境 ErrInstallExtension: '已有安裝任務正在進行,請等待任務結束' + +# 告警郵件範本 PanelAlertTitle: '面板警示通知' TestAlertTitle: '測試郵件 - 驗證信箱連通性' TestAlert: '這是一封測試郵件,用於確認您的郵件發送設定是否正確。' @@ -538,6 +596,8 @@ CommonAlert: '您的 {{ .node }}{{ .ip }} 面板,{{ .msg }},詳情請登入 NodeExceptionAlert: '您的 {{ .node }}{{ .ip }} 面板,{{ .num }} 個節點出現異常,詳情請登入面板檢視。' LicenseExceptionAlert: '您的 {{ .node }}{{ .ip }} 面板,{{ .num }} 個授權出現異常,詳情請登入面板檢視。' SSHAndPanelLoginAlert: '您的 {{ .node }}{{ .ip }} 面板,來自 {{ .loginIp }} 的 {{ .name }} 登入出現異常,詳情請登入面板檢視。' + +# 磁碟 DeviceNotFound: '裝置 {{ .name }} 未找到' DeviceIsMounted: '裝置 {{ .name }} 已掛載,請先移除' PartitionDiskErr: '分區失敗,{{ .err }}' @@ -545,9 +605,18 @@ FormatDiskErr: '格式化磁碟失敗,{{ .err }}' MountDiskErr: '掛載磁碟失敗,{{ .err }}' XfsNotFound: '未偵測到 xfs 檔案系統,請先安裝 xfsprogs' -# terminal +# 終端 TerminalAIBlockedRiskyCommand: '已攔截風險命令:{{ .command }}' TerminalAIThinking: 'AI 正在思考...' TerminalAIReadyToExecute: '思考完成,請按 Enter 執行(耗時 {{ .duration }},token:{{ .tokens }})' TerminalAIRequestFailed: 'AI 請求失敗:{{ .err }}' -FileAISearchEmptyDir: '目前目錄下沒有可列出的檔案或資料夾(或均被過濾)。' + +# AI 閘道 +ErrAIProxyServiceNotInstalled: '{{ .name }} 服務未安裝' +ErrAIProxyModelAccountNotFound: '模型帳號 {{ .id }} 不存在' +ErrAIProxyModelMapRequired: '請填寫必填項' +ErrAIProxyModelMapInvalid: '模型映射必須是合法的 JSON 物件:{{ .err }}' +ErrAIProxyModelMapEmpty: '模型映射不能為空' +ErrAIProxyModelMapEmptyExternalModel: '模型映射中存在空的請求模型' +ErrAIProxyModelMapEmptyUpstreamModel: '模型 {{ .model }} 的上游模型不能為空' +AIProxyUserFallback: '已刪除使用者 (ID: {{ .id }})' diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index 92ae4363b..61bd7be18 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -1,32 +1,47 @@ +# 基础错误 ErrInvalidParams: "参数错误: {{ .detail }}" ErrTokenParse: "Token 错误: {{ .detail }}" ErrInitialPassword: "原密码错误" ErrInternalServer: "服务错误: {{ .detail }}" +ErrRecordExist: "记录已存在" +ErrRecordNotFound: "记录不存在" +ErrStructTransform: "类型转换失败: {{ .err }}" +ErrNotSupportType: "不支持当前类型: {{ .name }}" + +# 文件 AI ErrFileAINotEnabled: "生成 AI 总结需在文件管理中启用并保存文件 AI 账号。关闭 AI 时仍可使用纯内容检索。" ErrFileAISearchBadPattern: "搜索条件无效(正则或全词匹配): {{ .detail }}" +FileAISearchEmptyDir: "当前目录下没有可列出的文件或文件夹(或均被过滤)。" + +# 远程下载 ErrWgetRemoteFailed: "远程下载地址无效或无法访问:{{ .detail }}" ErrWgetInvalidContentType: "远程地址返回的不是文件内容(可能是错误页),{{ .detail }}" ErrWgetProxyNotConfigured: "请先在面板设置中配置代理服务器" ErrWgetProxyInvalid: "代理服务器地址无效:{{ .detail }}" -ErrRecordExist: "记录已存在" -ErrRecordNotFound: "记录不存在" -ErrStructTransform: "类型转换失败: {{ .err }}" + +# 登录与安全 ErrNotLogin: "用户未登录: {{ .detail }}" ErrPasswordExpired: "当前密码已过期: {{ .detail }}" -ErrNotSupportType: "不支持当前类型: {{ .name }}" -ErrAlertMethodNotSupported: "当前版本不支持此告警方式" + +# 请求与 API ErrProxy: "请求失败,请检查节点状态: {{ .detail }}" ErrApiConfigStatusInvalid: "API 禁止访问: {{ .detail }}" ErrApiConfigKeyInvalid: "API 接口密钥错误: {{ .detail }}" ErrApiConfigIPInvalid: "调用 API 接口 IP 不在白名单: {{ .detail }}" ErrApiConfigDisable: "此接口禁止 API 调用: {{ .detail }}" ErrApiConfigKeyTimeInvalid: "API 时间戳错误: {{ .detail }}" -ErrShutDown: "命令已手动终止" +ErrCreateHttpClient: "创建请求失败 {{ .err }}" +ErrHttpReqTimeOut: "请求超时 {{ .err }}" +ErrHttpReqFailed: "请求失败 {{ .err }}" +ErrNoSuchHost: "无法找到请求的服务器 {{ .err }}" +ErrHttpReqNotFound: "无法找到请求的资源 {{ .err }}" +# 快速跳转 ErrMinQuickJump: "至少设置 1 个快速跳转入口" ErrMaxQuickJump: "最多设置 4 个快速跳转入口" -#common +# 通用 +ErrShutDown: "命令已手动终止" ErrUsernameIsExist: "用户名已存在" ErrNameIsExist: "名称已存在" ErrDemoEnvironment: "演示环境,禁止操作" @@ -45,7 +60,7 @@ ErrGroupIsDefault: "默认分组不可删除" ErrGroupIsInWebsiteUse: "分组正在被其他网站使用,无法删除" Decrypt: "解密" -#agent +# 智能体 ErrAgentAccountBound: "该账号已绑定智能体,无法删除" ErrTerminalAIAccountInUse: "该模型账号正被终端 AI 使用,请在终端 AI 设置中更换账号或关闭终端 AI 后重试" ErrAgentAccountUnavailable: "账号连接信息不可用: {{ .err }}" @@ -71,7 +86,7 @@ ErrAgentWebsiteUnbindUnsupported: "一键部署网站不支持手动解绑" ErrHermesPairingCodeUnavailable: "配对码在 hermes 中暂时不存在,可能是由于网络原因,请稍后尝试" ErrHermesFeishuGroupAllowlistRequiresAllowlist: "飞书群组策略为白名单时,私聊策略不能为配对码" -#backup +# 备份与告警配置 Localhost: '本机' ErrBackupInUsed: "该备份账号已在计划任务中使用,无法删除" ErrBackupCheck: "备份账号测试连接失败 {{ .err }}" @@ -80,7 +95,7 @@ ErrBackupLocalCreate: "暂不支持创建本地服务器备份账号" ErrAlertConfigInUse: "告警配置正在使用中,无法删除" ErrAlertConfigPhoneExist: "手机号已存在" -#app +# 应用 ErrPortInUsed: "{{ .detail }} 端口已被占用!" ErrAppLimit: "应用安装数量超限" ErrNotInstall: "应用未安装" @@ -98,11 +113,6 @@ ErrFileParseApp: '{{ .name }} 文件解析失败 {{ .err }}' ErrAppDirNull: '版本文件夹不存在' LocalAppErr: "应用 {{ .name }} 同步失败!{{ .err }}" ErrContainerName: "容器名称已存在" -ErrCreateHttpClient: "创建请求失败 {{ .err }}" -ErrHttpReqTimeOut: "请求超时 {{ .err }}" -ErrHttpReqFailed: "请求失败 {{ .err }}" -ErrNoSuchHost: "无法找到请求的服务器 {{ .err }}" -ErrHttpReqNotFound: "无法找到请求的资源 {{ .err }}" ErrContainerNotFound: '{{ .name }} 容器不存在' ErrContainerMsg: '{{ .name }} 容器异常,具体请在容器页面查看日志' ErrAppBackup: '{{ .name }} 应用备份失败 {{ .err }}' @@ -134,7 +144,7 @@ ErrDockerComposeCmdNotFound: "Docker Compose 命令不存在,请先在宿主 UseExistImage: "镜像已存在,使用存量镜像" ErrDatabaseNotFound: "数据库 {{ .name }} 不存在" -#ssh +# SSH ExportIP: "登录 IP" ExportArea: "归属地" ExportPort: "端口" @@ -143,7 +153,7 @@ ExportUser: "用户" ExportStatus: "登录状态" ExportDate: "时间" -#file +# 文件 ErrFileCanNotRead: "此文件不支持预览" ErrSensitiveFileRead: "不允许读取敏感文件" ErrFileToLarge: "文件超过 10M,无法打开" @@ -171,7 +181,7 @@ FileDropSuccess: "清理 {{ .name }} 成功,文件 {{ .count }},释放 {{ .s FileDropSum: "文件清理完成,共 {{ .count }},释放 {{ .size }}" ErrBadDecrypt: "压缩包密码错误,解压失败,请检查后重试" -#website +# 网站 ErrAliasIsExist: "标识已存在" ErrBackupMatch: '该备份文件与当前网站部分数据不匹配 {{ .detail }}' ErrBackupExist: '该备份文件对应部分源数据不存在 {{ .detail }}' @@ -202,7 +212,7 @@ ErrDefaultWebsite: "已设置默认网站,请先取消再设置" SSL: '证书' Set: '设置' -#ssl +# SSL 证书 ErrSSLCannotDelete: "{{ .name }} 证书正在被网站使用,无法删除" ErrAccountCannotDelete: "账号关联证书,无法删除" ErrSSLApply: "证书续签成功,但 OpenResty reload 失败,请检查配置" @@ -238,7 +248,7 @@ StartPushSSLToNode: "开始推送证书到节点" PushSSLToNodeFailed: "推送证书到节点失败: {{ .err }}" PushSSLToNodeSuccess: "推送证书到节点成功" -#mysql +# MySQL ErrUserIsExist: "用户已存在,请重新输入" ErrDatabaseIsExist: "数据库已存在,请重新输入" ErrExecTimeOut: "SQL 执行超时,请检查数据库" @@ -248,10 +258,10 @@ RemoteBackup: "备份远程数据库前需先用镜像 {{ .name }} 启动本地 RemoteRecover: "恢复远程数据库前需先用镜像 {{ .name }} 启动本地容器数据库服务,请稍候" Arg: "参数" -#redis +# Redis ErrTypeOfRedis: "恢复文件类型与当前持久化方式不符,请修改后重试" -#container +# 容器 ErrInUsed: "{{ .detail }} 正被使用,无法删除!" ErrObjectInUsed: "该对象正被使用,无法删除!" ErrObjectBeDependent: "该镜像正被其他镜像所依赖,无法删除!" @@ -294,7 +304,7 @@ ComposeRecoverContainers: "恢复编排容器" ComposeRecoverRecord: "保存编排记录" ComposeRecoverCleanup: "清理编排恢复工作目录" -#runtime +# 运行环境 ErrFileNotExist: "{{ .detail }} 文件不存在!请检查源文件完整性!" ErrImageBuildErr: "镜像 build 失败" ErrImageExist: "镜像已存在!请修改镜像名称" @@ -308,7 +318,7 @@ ErrContainerNameIsNull: "容器名称不存在" ErrPHPPortIsDefault: "9000 端口为默认端口,请修改后重试" ErrPHPRuntimePortFailed: "{{ .name }} 端口已被当前运行环境使用,请修改后重试" -#tool +# 工具 ErrConfigNotFound: "配置文件不存在" ErrConfigParse: "配置文件格式有误" ErrConfigIsNull: "配置文件不允许为空" @@ -316,7 +326,7 @@ ErrConfigDirNotFound: "运行目录不存在" ErrConfigAlreadyExist: "已存在同名配置文件" ErrUserFindErr: "用户 {{ .name }} 查找失败 {{ .err }}" -#cronjob +# 计划任务 CutWebsiteLogSuccess: "{{ .name }} 网站日志切割成功,备份路径 {{ .path }}" HandleShell: "执行脚本 {{ .name }}" HandleCurl: "访问 URL {{ .name }}" @@ -336,7 +346,7 @@ CleanLog: "清理日志" CleanLogByName: "清理 {{ .name }} 日志" WafIpGroupNotFound: "WAF IP组未找到,请先到【高级功能-WAF-黑白名单-IP组】添加远程下载方式的IP组" -#toolbox +# 工具箱 ErrNotExistUser: "当前用户不存在,请修改后重试!" ErrBanAction: "设置失败,{{ .name }} 服务不可用,请检查后重试" ErrClamdscanNotFound: "未检测到 clamdscan 命令,请按文档安装" @@ -346,14 +356,14 @@ CreateSwap: "创建 Swap 文件" FormatSwap: "格式化 Swap 文件" EnableSwap: "启用 Swap" -#tamper +# 防篡改 CleanTamperSetting: "清理历史防护设置" SetTamperWithRules: "根据规则启动目录防护" ProtectDir: "防护目录 {{ .name }}" IgnoreFile: "保护文件 {{ .name }}" TamperSetSuccessful: "防护设置完成,开始监听以下目录:" -#waf +# WAF ErrScope: "不支持修改此配置" ErrStateChange: "状态修改失败" ErrRuleExist: "规则已存在" @@ -409,7 +419,7 @@ remoteIpIsNull: "IP 列表为空" OpenrestyVersionErr: "OpenResty 版本过低,请升级到 1.27.1.2-2-2-focal" ErrFileTooLarge: "文件超过 1MB,无法上传" -#task +# 任务 TaskStart: "{{ .name }} 任务开始 [START]" TaskEnd: "{{ .name }} 任务结束 [COMPLETED]" TaskFailed: "{{ .name }} 任务失败" @@ -471,16 +481,16 @@ TaskExec: "执行" TaskBatch: "批量操作" FileConvert: "文件格式转换" -# task - clam +# 任务 - ClamAV Clamscan: "扫描 {{ .name }}" TaskScan: "扫描" -# task - ai +# 任务 - AI OllamaModelPull: "拉取 Ollama 模型 {{ .name }}" OllamaModelSize: "获取 Ollama 模型 {{ .name }} 大小" AIBenchmarkRun: "执行 AI 基准测试" -# task - snapshot +# 任务 - 快照 Snapshot: "快照" SnapDBInfo: "写入 1Panel 数据库信息" SnapCopy: "复制文件/目录 {{ .name }}" @@ -506,7 +516,6 @@ SnapCompressSize: "快照文件大小 {{ .name }}" SnapUpload: "上传快照文件" SnapUploadTo: "上传快照文件到 {{ .name }}" SnapUploadRes: "上传快照文件到 {{ .name }}" - SnapshotRecover: "快照恢复" RecoverDownload: "下载快照文件" Download: "下载" @@ -532,7 +541,7 @@ RecoverDBData: "恢复数据库数据" RecoverBackups: "恢复本地备份目录" RecoverPanelData: "恢复数据目录" -# task - container +# 任务 - 容器 ContainerImagePull: "拉取容器镜像 {{ .name }}" ContainerRemoveOld: "删除原容器 {{ .name }}" ContainerImageCheck: "检查镜像是否正常拉取" @@ -542,7 +551,7 @@ ContainerCreate: "创建新容器 {{ .name }}" ContainerCreateFailed: "容器创建失败,删除失败容器" ContainerStartCheck: "检查容器是否已启动" -# task - image +# 任务 - 镜像 ImageBuild: "镜像构建" ImagePull: "拉取镜像" ImageRepoAuthFromDB: "从数据库获取仓库认证信息" @@ -551,7 +560,7 @@ ImageRenameTag: "修改镜像 Tag" ImageNewTag: "新镜像 Tag {{ .name }}" ComposeCreate: "创建编排" -# task - website +# 任务 - 网站 BackupNginxConfig: "备份网站 OpenResty 配置文件" CompressFileSuccess: "压缩目录成功,压缩为 {{ .name }}" CompressDir: "压缩目录" @@ -563,13 +572,14 @@ RecoverFailedStartRollBack: "恢复失败,开始回滚" AppBackupFileIncomplete: "备份文件不完整,缺少 app.json 或 app.tar.gz 文件" AppAttributesNotMatch: "应用类型或名称不一致" -#alert +# 告警 +ErrAlertMethodNotSupported: "当前版本不支持此告警方式" ErrAlertSync: "告警信息同步错误,请检查后重试" -#task - runtime +# 任务 - 运行环境 ErrInstallExtension: "已有安装任务正在进行,请等待任务结束" -# alert mail template +# 告警邮件模板 PanelAlertTitle: "面板告警通知" TestAlertTitle: "测试邮件 - 验证邮箱连通性" TestAlert: "这是一封测试邮件,用于验证邮箱发件配置。" @@ -587,7 +597,7 @@ NodeExceptionAlert: "您的 {{ .node }}{{ .ip }} 面板,{{ .num }} 个节点 LicenseExceptionAlert: "您的 {{ .node }}{{ .ip }} 面板,{{ .num }} 个许可证存在异常,请登录面板查看详情。" SSHAndPanelLoginAlert: "您的 {{ .node }}{{ .ip }} 面板,面板 {{ .name }} 登录 {{ .loginIp }} 异常,请登录面板查看详情。" -#disk +# 磁盘 DeviceNotFound: "设备 {{ .name }} 未找到" DeviceIsMounted: "设备 {{ .name }} 已挂载,请先卸载" PartitionDiskErr: "分区失败,{{ .err }}" @@ -595,14 +605,13 @@ FormatDiskErr: "格式化磁盘失败,{{ .err }}" MountDiskErr: "挂载磁盘失败,{{ .err }}" XfsNotFound: "未检测到 xfs 文件系统,请先安装 xfsprogs" -# terminal +# 终端 TerminalAIBlockedRiskyCommand: "已拦截风险命令:{{ .command }}" TerminalAIThinking: "AI 正在思考..." TerminalAIReadyToExecute: "思考完成,请回车执行(耗时 {{ .duration }},token:{{ .tokens }})" TerminalAIRequestFailed: "AI 请求失败:{{ .err }}" -FileAISearchEmptyDir: "当前目录下没有可列出的文件或文件夹(或均被过滤)。" -# ai proxy +# AI 网关 ErrAIProxyServiceNotInstalled: "{{ .name }} 服务未安装" ErrAIProxyModelAccountNotFound: "模型账号 {{ .id }} 不存在" ErrAIProxyModelMapRequired: "请填写必填项" diff --git a/core/i18n/lang/en.yaml b/core/i18n/lang/en.yaml index 844fef120..0e745808d 100644 --- a/core/i18n/lang/en.yaml +++ b/core/i18n/lang/en.yaml @@ -1,16 +1,36 @@ +# base errors ErrInvalidParams: "Invalid request parameters: {{ .detail }}" ErrTokenParse: "Token generation error: {{ .detail }}" ErrInitialPassword: "Incorrect initial password" ErrInternalServer: "Internal server error: {{ .detail }}" +ErrInternalServerKey: "Internal server error:" ErrRecordExist: "Record already exists" ErrRecordNotFound: "Record not found" ErrStructTransform: "Type conversion failed: {{ .detail }}" +ErrNotSupportType: "Unsupported type: {{ .name }}" +ErrDemoEnvironment: "Demo server, this operation is prohibited!" +ErrCmdTimeout: "Command execution timeout!" +ErrPortInUsed: "The {{ .name }} port is already in use!" +ErrFileNotFound: "{{ .name }} file does not exist" +ErrReqFailed: "{{.name}} request failed: {{ .err }}" + +# request and entrance +ErrNoSuchHost: "Host resolution failed: {{ .err }}" +ErrHttpReqNotFound: "Requested resource not found: {{ .err }}" +ErrHttpReqFailed: "Request failed {{ .err }}" +ErrHttpReqTimeOut: "Request timed out {{ .err }}" +ErrCreateHttpClient: "Failed to create request {{ .err }}" +ErrProxy: "Request failed; check this node status: {{ .detail }}" +ErrProxySetting: "Proxy server information unavailable {{ .err }}, check and try again!" +ErrEntrance: "Security entrance information error, check and try again!" +ErrEntranceFormat: "Security entry {{ .name }} is not supported. Check and try again." + +# login and security ErrNotLogin: "User not logged in: {{ .detail }}" ErrSessionDataNotFound: "Session expired" ErrSessionDataFormat: "Invalid session data format" ErrPasswordExpired: "Password expired: {{ .detail }}" -ErrNotSupportType: "Unsupported type: {{ .name }}" -ErrProxy: "Request failed; check this node status: {{ .detail }}" +ErrLoginLocked: "Too many failed attempts. Login is temporarily locked for 5 minutes." ErrApiConfigStatusInvalid: "API access disabled: {{ .detail }}" ErrApiConfigKeyInvalid: "Invalid API key: {{ .detail }}" ErrApiConfigIPInvalid: "The API request IP is not on the whitelist: {{ .detail }}" @@ -22,68 +42,24 @@ ErrPasskeyLimit: "Passkey limit reached (max 5)" ErrPasskeySession: "Passkey session expired or invalid" ErrPasskeyDuplicate: "Passkey already exists" ErrPasskeyVerify: "Passkey verification failed" -ErrLoginLocked: "Too many failed attempts. Login is temporarily locked for 5 minutes." -# request -ErrNoSuchHost: "Host resolution failed: {{ .err }}" -ErrHttpReqNotFound: "Requested resource not found: {{ .err }}" -ErrHttpReqFailed: "Request failed {{ .err }}" -ErrHttpReqTimeOut: "Request timed out {{ .err }}" -ErrCreateHttpClient: "Failed to create request {{ .err }}" -ErrProxySetting: "Proxy server information unavailable {{ .err }}, check and try again!" -ErrEntranceFormat: "Security entry {{ .name }} is not supported. Check and try again." - -# common -ErrDemoEnvironment: "Demo server, this operation is prohibited!" -ErrCmdTimeout: "Command execution timeout!" -ErrVMNotFound: "Virtual machine does not exist" -ErrVMAlreadyExists: "Virtual machine already exists" -ErrVMRunning: "Virtual machine is running" -ErrVMLibvirtConnect: "Failed to connect to libvirt" -ErrVMPermission: "No permission to operate virtual machine: {{ .detail }}" -ErrVMNetworkNotFound: "Virtual machine network does not exist" -ErrVMInvalidPath: "Invalid virtual machine path" -ErrVMInvalidInput: "Invalid virtual machine parameter" -ErrVMCommandFailed: "Virtual machine command failed: {{ .err }}" -VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" -ErrEntrance: "Security entrance information error, check and try again!" +# user and permission +ErrNoSuchUser: "User information not found, check and try again!" +ErrToMaster: "This user does not have permission to perform this operation on the master node. Check and try again!" +ErrToNode: "This user does not have permission to perform this operation on this node. Check and try again!" +ErrRBAC: "Insufficient user permissions. This operation cannot be performed. Check and try again!" +ErrNoneNode: "This user has no node permissions. Contact an administrator or check and try again!" +ErrOnlySuperAdmin: "Only super admins can use this feature!" +ErrRolePresetCannotDelete: "System preset roles cannot be deleted" +ErrRolePresetCannotUpdate: "System preset roles cannot be updated" +ErrRoleBoundToUser: "This role is already bound to users and cannot be deleted" +ErrRolePresetCannotBind: "System preset roles cannot be assigned to users" +ErrNodeAdminMasterForbidden: "Node Admin permissions cannot be added to the master node" +ErrSuperAdminCannotDelete: "Super admin users cannot be deleted" ErrGroupIsDefault: "Default group, unable to delete" ErrGroupIsInUse: "The group is in use and cannot be deleted." -ErrAIProxyUserGroupIsDefault: "Default user group cannot be deleted." -ErrAIProxyUserGroupInUse: "The user group is in use and cannot be deleted." -ErrAIProxyUserGroupExists: "The user group name already exists." -ErrAIProxyBackendAccountExists: "This model account has already been imported into the AI Gateway account pool." -ErrAIProxyModelGroupInUse: "The model group is in use and cannot be deleted." -ErrAIProxyModelGroupExists: "The model group name already exists." -ErrAIProxySensitiveGroupInUse: "The sensitive word group is in use and cannot be deleted." -ErrAIProxySensitiveGroupExists: "The sensitive word group name already exists." -ErrLocalDelete: "Cannot delete the local node!" -ErrPortInUsed: "The {{ .name }} port is already in use!" -ErrInternalServerKey: "Internal server error:" -MasterNode: "Master Node" -# app -CustomAppStoreFileValid: "Application store package requires .tar.gz format" -ErrFileNotFound: "{{ .name }} file does not exist" -AppBackup: 'Application backup' -AppBackupPush: 'Transfer application backup file {{.file}} to node {{ .name }}' -ErrSourceTargetSame: 'Source node and target node cannot be the same!' -AppInstall: 'Install application {{ .name }} on node {{ .targetNode }}' -AppInstallCheck: 'Check application installation environment' - -# backup -ErrBackupInUsed: "This backup account is used in scheduled tasks and cannot be deleted" -ErrBackupCheck: "Backup account connection test failed {{ .err }}" -ErrBackupLocal: "Local server backup account does not support this operation!" -ErrBackupPublic: "Detected that this backup account is not public, check and try again!" -ErrOSSConn: "Unable to get the latest version. Check server internet connectivity." - -#license +# license LicenseCheck: 'Check if the license is available' ErrLicenseInUsed: 'The license is already bound. Check and try again!' ErrLicenseExpired: 'The license has expired. Check and try again!' @@ -113,34 +89,73 @@ ErrNodeUnbind: "This node is not within the license binding range, check and ret ErrNodeBind: "This node is already bound to a license, check and retry!" ErrNodeLocalRollback: "The primary node does not support direct rollback. Run '1pctl restore' manually to roll back." ErrIntlLicense: "The current version does not support importing international licenses yet. Stay tuned!" +InvalidRequestBodyType: "Invalid request body format. Ensure content matches the required format and retry." +InvalidLicenseCodeType: "Invalid license code format provided, check and try again!" +LicenseNotFoundType: "License not found, no matching record exists in the system for the provided license. Check and try again!" +LicenseRevokedType: "The requested license has been revoked and is no longer usable. Check and try again!" +LicenseExpiredType: "License expired. Renew it or re-import it in Panel Settings - License before retrying." +LicenseProductMismatchType: "The license does not match the requested product or service!" +InvalidAssigneeType: "Invalid target user or device information for license assignment. Check and try again!" +LicenseUsageNotFoundType: "No usage records found. This license has not been activated or used yet. Check and try again!" +LicenseUsageLimitExceededType: "This license is already bound to another node. Check and try again!" -# user -ErrNoSuchUser: "User information not found, check and try again!" -ErrToMaster: "This user does not have permission to perform this operation on the master node. Check and try again!" -ErrToNode: "This user does not have permission to perform this operation on this node. Check and try again!" -ErrRBAC: "Insufficient user permissions. This operation cannot be performed. Check and try again!" -ErrNoneNode: "This user has no node permissions. Contact an administrator or check and try again!" -ErrOnlySuperAdmin: "Only super admins can use this feature!" -ErrRolePresetCannotDelete: "System preset roles cannot be deleted" -ErrRolePresetCannotUpdate: "System preset roles cannot be updated" -ErrRoleBoundToUser: "This role is already bound to users and cannot be deleted" -ErrRolePresetCannotBind: "System preset roles cannot be assigned to users" -ErrNodeAdminMasterForbidden: "Node Admin permissions cannot be added to the master node" -ErrSuperAdminCannotDelete: "Super admin users cannot be deleted" +# node and cluster +MasterNode: "Master Node" +Node: "Node" +ErrLocalDelete: "Cannot delete the local node!" +ErrMasterDelete: "Unable to delete the master node. Delete slave nodes first." +ClusterNameIsExist: "Cluster name already exists." +AppStatusUnHealthy: "Failed to fetch application status. Check installation node status in the node list." +MasterNodePortNotAvailable: "Node {{ .name }} port {{ .port }} connectivity check failed. Check firewall/security group settings and master node status." +ClusterMasterNotExist: "Cluster master node is disconnected. Delete child nodes." -InvalidRequestBodyType: "Invalid request body format. Ensure content matches the required format and retry." -InvalidLicenseCodeType: "Invalid license code format provided, check and try again!" -LicenseNotFoundType: "License not found, no matching record exists in the system for the provided license. Check and try again!" -LicenseRevokedType: "The requested license has been revoked and is no longer usable. Check and try again!" -LicenseExpiredType: "License expired. Renew it or re-import it in Panel Settings - License before retrying." -LicenseProductMismatchType: "The license does not match the requested product or service!" -InvalidAssigneeType: "Invalid target user or device information for license assignment. Check and try again!" -LicenseUsageNotFoundType: "No usage records found. This license has not been activated or used yet. Check and try again!" -LicenseUsageLimitExceededType: "This license is already bound to another node. Check and try again!" +# virtual machine +ErrVMNotFound: "Virtual machine does not exist" +ErrVMAlreadyExists: "Virtual machine already exists" +ErrVMRunning: "Virtual machine is running" +ErrVMLibvirtConnect: "Failed to connect to libvirt" +ErrVMPermission: "No permission to operate virtual machine: {{ .detail }}" +ErrVMNetworkNotFound: "Virtual machine network does not exist" +ErrVMInvalidPath: "Invalid virtual machine path" +ErrVMInvalidInput: "Invalid virtual machine parameter" +ErrVMCommandFailed: "Virtual machine command failed: {{ .err }}" +VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" + +# app +CustomAppStoreFileValid: "Application store package requires .tar.gz format" +AppBackup: 'Application backup' +AppBackupPush: 'Transfer application backup file {{.file}} to node {{ .name }}' +ErrSourceTargetSame: 'Source node and target node cannot be the same!' +AppInstall: 'Install application {{ .name }} on node {{ .targetNode }}' +AppInstallCheck: 'Check application installation environment' + +# backup +ErrBackupInUsed: "This backup account is used in scheduled tasks and cannot be deleted" +ErrBackupCheck: "Backup account connection test failed {{ .err }}" +ErrBackupLocal: "Local server backup account does not support this operation!" +ErrBackupPublic: "Detected that this backup account is not public, check and try again!" +ErrOSSConn: "Unable to get the latest version. Check server internet connectivity." +MvBackup: "Move data to backup directory" # alert ErrAlertSync: "Alert information sync error, check and retry!" +# AI gateway +ErrAIProxyUserGroupIsDefault: "Default user group cannot be deleted." +ErrAIProxyUserGroupInUse: "The user group is in use and cannot be deleted." +ErrAIProxyUserGroupExists: "The user group name already exists." +ErrAIProxyBackendAccountExists: "This model account has already been imported into the AI Gateway account pool." +ErrAIProxyModelGroupInUse: "The model group is in use and cannot be deleted." +ErrAIProxyModelGroupExists: "The model group name already exists." +ErrAIProxySensitiveGroupInUse: "The sensitive word group is in use and cannot be deleted." +ErrAIProxySensitiveGroupExists: "The sensitive word group name already exists." +AIBenchmarkRun: "Run AI benchmark" + # task TaskStart: "{{ .name }} task started [START]" TaskEnd: "{{ .name }} task ended [COMPLETED]" @@ -155,6 +170,16 @@ TaskUpgrade: "Upgrade" TaskSync: 'Sync' TaskSyncForNode: "Sync node data" TaskBackup: "Backup" +TaskPush: "Push" +TaskRsync: "Sync" +SuccessStatus: "{{ .name }} succeeded" +FailedStatus: "{{ .name }} failed {{ .err }}" +Start: "Start" +SubTask: "Subtask" +Skip: "Ignore errors and continue" +Success: "Success" + +# agent batch task BatchInstallAgent: "Batch install agent" DispatchAgentInstallTasks: "Dispatch agent install tasks" BatchUpgradeAgent: "Batch upgrade agent" @@ -188,21 +213,15 @@ AgentOperateStart: "Start" AgentOperateStop: "Stop" AgentOperateRestart: "Restart" AgentOperateDelete: "Delete" -AIBenchmarkRun: "Run AI benchmark" -SuccessStatus: "{{ .name }} succeeded" -FailedStatus: "{{ .name }} failed {{ .err }}" -Start: "Start" -SubTask: "Subtask" -Skip: "Ignore errors and continue" + +# app and skill task PushAppInstallTaskToNode: "Push app installation task to node [{{ .name }}]" -TaskPush: "Push" AppInstallTask: "App installation task" PushAppFailed: "Failed to push app installation task" SkillHubInstallTask: "Install skill [{{ .name }}]" SkillHubInstallToTarget: "Install skill to target [{{ .name }}]" -Success: "Success" -#script +# script library ScriptLibrary: "Script Library" RemoteScriptLibrary: "Remote Script Library" ScriptSyncSkip: "Script library is already up to date" @@ -210,7 +229,7 @@ DownloadData: "Downloading script library file data.yaml" DownloadPackage: "Downloading script library package" AnalyticCompletion: "Analysis completed, now syncing to database..." -Node: "Node" +# node sync SyncNode: "Sync data to node {{ .name }}" LocalName: "'local' name is only used for system local identification" SyncPackageData: "Package sync data" @@ -226,7 +245,7 @@ SyncCustomApp: "Custom App" SyncLanguage: "System Language" SyncEdition: "Region" -#upgrade node +# node upgrade NodeUpgrade: "Upgrade node {{ .name }}" UpgradeCheck: "Check for node updates" UpgradeCheckLocal: "Local nodes do not support batch upgrades, skipping..." @@ -239,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "Load auto upgrade nodes failed, err: {{ .err }}" AutoUpgradeNodes: "Auto upgrade nodes: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "Update status of auto upgrade nodes failed, err: {{ .err }}" -#add node +# node add MasterData: "Master Node Data" LoadSftpClient: "Load SFTP Client" PackageMasterData: "Generate master node backup package" UploadBackup: "Upload backup data" -MvBackup: "Move data to backup directory" TaskAddNode: "Add node" LoadNodeArch: "Get node architecture info" LoadNodeArchDetail: "Detected master node architecture: {{ .local }}, child node architecture: {{ .node }}" @@ -257,7 +275,35 @@ SendAgent: "Distribute node installation package" StartService: "Start service" NoBackupNode: "Backup node is empty. Select one and save first" -#cmd +# node file and image sync +LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." +HandlePrivateKey: "Handle node private key" +HandlePublicKey: "Handle node public key" +ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" +NodeFile: "Node file" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "Save image {{ .image }}" +ImageSyncSaveTags: "Save image tags {{ .tags }}" +ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" +ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" +ImageSyncClean: "Clean temporary files for image {{ .image }}" +ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" +ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." +ImageSyncHandlePrivateKey: "Handle image sync node private key" +ImageSyncHandlePublicKey: "Handle image sync node public key" +ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# command line +SudoHelper: "Use {{ .cmd }} or switch to root user" +UsernameNeed: "Enterprise edition must specify --username" +DBConnErr: "Error: Failed to initialize database connection, {{ .err }}" +SystemVersion: "version: " +SystemMode: "mode: " + +# command line - app AppVersion: "App version" AppCommands: "App related commands" AppInit: "Initialize app" @@ -269,12 +315,14 @@ AppMissVersion: "App version missing, use -v to specify" AppVersionExist: "Version already exists!" AppCreateSuccessful: "Creation successful!" AppWriteErr: "File {{ .name }} write failed {{ .err }}" -SudoHelper: "Use {{ .cmd }} or switch to root user" -UsernameNeed: "Enterprise edition must specify --username" + +# command line - listen IP ListenIPCommands: "Switch listening ip" ListenIPv4: "Listen on IPv4" ListenIPv6: "Listen on IPv6" ListenChangeSuccessful: "Switch successful! Now listening on {{ .value }}" + +# command line - reset ResetCommands: "Reset system info" ResetMFA: "Cancel 1Panel two-factor authentication" ResetHttps: "Cancel 1Panel https login" @@ -282,12 +330,19 @@ ResetEntrance: "Cancel 1Panel secure entrance" ResetIPs: "Cancel 1Panel authorized ip restrictions" ResetDomain: "Cancel 1Panel domain binding" ResetPasskey: "Clear 1Panel passkeys" + +# command line - user UserList: "Get 1Panel user list" UserTableName: "Name" UserTableMFAStatus: "MFA Status" UserTableSuperAdmin: "Super Admin" UserTableCreatedAt: "Created At" UserEmptyList: "No users found" +UserInfo: "Get panel information" +UserInfoAddr: "Panel address: " +UserInfoPassHelp: "Tip: To change the password, you can execute the command: " + +# command line - restore RestoreCommands: "Roll back 1Panel service and data" RestoreNoSuchFile: "No rollback files found" RestoreStep1: "(1/5) Starting rollback of 1Panel service and data from {{ .name }} directory..." @@ -296,6 +351,8 @@ RestoreStep3: "(3/5) 1Panel script rollback completed" RestoreStep4: "(4/5) 1Panel service rollback completed" RestoreStep5: "(5/5) 1Panel data rollback completed" RestoreSuccessful: "Rollback completed. Reverted to {{ .version }}. Restarting service..." + +# command line - update UpdateCommands: "Update panel info" UpdateUser: "Update user information" UpdatePassword: "Update user password" @@ -322,50 +379,12 @@ UpdatePortResult: "Panel Port: {{ .name }}" UpdatePortFirewallAdd: "Failed to add firewall port rule, {{ .err }}, manually add the {{ .name }} port to the firewall rules." UpdatePortFirewallDel: "Error: Failed to delete firewall port, {{ .err }}" UpdatePortFirewallReload: "Failed to reload the firewall, {{ .err }}, manually reload the firewall." -UserInfo: "Get panel information" -UserInfoAddr: "Panel address: " -UserInfoPassHelp: "Tip: To change the password, you can execute the command: " -DBConnErr: "Error: Failed to initialize database connection, {{ .err }}" -SystemVersion: "version: " -SystemMode: "mode: " -#exchange -LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." -HandlePrivateKey: "Handle node private key" -HandlePublicKey: "Handle node public key" -ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" -TaskRsync: "Sync" -NodeFile: "Node file" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "Save image {{ .image }}" -ImageSyncSaveTags: "Save image tags {{ .tags }}" -ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" -ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" -ImageSyncClean: "Clean temporary files for image {{ .image }}" -ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" -ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." -ImageSyncHandlePrivateKey: "Handle image sync node private key" -ImageSyncHandlePublicKey: "Handle image sync node public key" -ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# mobile app ErrVerifyToken: 'Token verification failed. Reset and scan again.' ErrInvalidToken: 'Invalid token. Reset and scan again.' ErrExpiredToken: 'Token expired. Reset and scan again.' -#cluster -ErrMasterDelete: "Unable to delete the master node. Delete slave nodes first." -ClusterNameIsExist: "Cluster name already exists." -AppStatusUnHealthy: "Failed to fetch application status. Check installation node status in the node list." -MasterNodePortNotAvailable: "Node {{ .name }} port {{ .port }} connectivity check failed. Check firewall/security group settings and master node status." -ClusterMasterNotExist: "Cluster master node is disconnected. Delete child nodes." - -#ssl -ErrReqFailed: "{{.name}} request failed: {{ .err }}" - -#command +# command export Name: "Name" Command: "Command" diff --git a/core/i18n/lang/es-ES.yaml b/core/i18n/lang/es-ES.yaml index 05fa3b1a0..1ac325e03 100644 --- a/core/i18n/lang/es-ES.yaml +++ b/core/i18n/lang/es-ES.yaml @@ -1,88 +1,65 @@ +# errores básicos ErrInvalidParams: 'Solicitud inválida: {{ .detail }}' ErrTokenParse: 'Token inválido: {{ .detail }}' ErrInitialPassword: 'Contraseña original incorrecta' ErrInternalServer: 'Error interno: {{ .detail }}' +ErrInternalServerKey: "Error interno del servidor:" ErrRecordExist: 'Registro ya existe' ErrRecordNotFound: 'Registro no encontrado' ErrStructTransform: 'Error de conversión: {{ .err }}' -ErrNotLogin: 'No has iniciado sesión: {{ .detail }}' -ErrSessionDataNotFound: "La sesión actual ha caducado" -ErrSessionDataFormat: "El formato de los datos de la sesión actual es anómalo" -ErrPasswordExpired: 'Contraseña expirada: {{ .detail }}' ErrNotSupportType: 'Tipo no soportado: {{ .name }}' -ErrProxy: 'Solicitud fallida: {{ .detail }}' -ErrApiConfigStatusInvalid: 'API desactivada: {{ .detail }}' -ErrApiConfigKeyInvalid: 'Clave API inválida: {{ .detail }}' -ErrApiConfigIPInvalid: 'IP no permitida: {{ .detail }}' -ErrApiConfigDisable: 'API no permitida: {{ .detail }}' -ErrApiConfigKeyTimeInvalid: 'Timestamp inválido: {{ .detail }}' -ErrLoginLocked: "Demasiados intentos fallidos. El inicio de sesión se ha bloqueado temporalmente durante 5 minutos." -PushAppInstallTaskToNode: "Enviar tarea de instalación de aplicación al nodo [{{ .name }}]" -TaskPush: "Enviar" -AppInstallTask: "Tarea de instalación de aplicación" -PushAppFailed: "Error al enviar tarea de instalación de aplicación" -Success: "Éxito" +ErrDemoEnvironment: 'No disponible en demo' +ErrCmdTimeout: 'Comando agotó tiempo' +ErrPortInUsed: "El puerto {{ .name }} ya está en uso" +ErrFileNotFound: "El archivo {{ .name }} no existe" +ErrReqFailed: "{{.name}} petición fallida: {{ .err }}" -# request +# solicitud y entrada de seguridad ErrNoSuchHost: "No se pudo encontrar el servidor solicitado {{ .err }}" ErrHttpReqNotFound: "No se pudo encontrar el recurso solicitado {{ .err }}" ErrHttpReqFailed: "Solicitud fallida {{ .err }}" ErrHttpReqTimeOut: "La solicitud ha expirado {{ .err }}" ErrCreateHttpClient: "Error al crear la solicitud {{ .err }}" +ErrProxy: 'Solicitud fallida: {{ .detail }}' ErrProxySetting: "Información del servidor proxy no disponible {{ .err }}, compruebe e inténtelo de nuevo" +ErrEntrance: "Error en la información de entrada de seguridad, por favor revise e intente de nuevo" ErrEntranceFormat: "La entrada de seguridad {{ .name }} no está actualmente soportada. Por favor verifique e inténtelo de nuevo" -# common -ErrDemoEnvironment: 'No disponible en demo' -ErrCmdTimeout: 'Comando agotó tiempo' -ErrVMNotFound: "La máquina virtual no existe" -ErrVMAlreadyExists: "La máquina virtual ya existe" -ErrVMRunning: "La máquina virtual está en ejecución" -ErrVMLibvirtConnect: "Error al conectar con libvirt: {{ .detail }}" -ErrVMPermission: "Sin permiso para operar la máquina virtual: {{ .detail }}" -ErrVMNetworkNotFound: "La red de la máquina virtual no existe: {{ .detail }}" -ErrVMInvalidPath: "Ruta de máquina virtual no válida: {{ .detail }}" -ErrVMInvalidInput: "Parámetro de máquina virtual no válido: {{ .detail }}" -ErrVMCommandFailed: "Error al ejecutar el comando de la máquina virtual: {{ .err }}" -VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" -ErrEntrance: "Error en la información de entrada de seguridad, por favor revise e intente de nuevo" +# inicio de sesión y seguridad +ErrNotLogin: 'No has iniciado sesión: {{ .detail }}' +ErrSessionDataNotFound: "La sesión actual ha caducado" +ErrSessionDataFormat: "El formato de los datos de la sesión actual es anómalo" +ErrPasswordExpired: 'Contraseña expirada: {{ .detail }}' +ErrLoginLocked: "Demasiados intentos fallidos. El inicio de sesión se ha bloqueado temporalmente durante 5 minutos." +ErrApiConfigStatusInvalid: 'API desactivada: {{ .detail }}' +ErrApiConfigKeyInvalid: 'Clave API inválida: {{ .detail }}' +ErrApiConfigIPInvalid: 'IP no permitida: {{ .detail }}' +ErrApiConfigDisable: 'API no permitida: {{ .detail }}' +ErrApiConfigKeyTimeInvalid: 'Timestamp inválido: {{ .detail }}' +ErrPasskeyDisabled: "Passkey requiere que HTTPS esté habilitado" +ErrPasskeyNotConfigured: "No hay Passkey configurado" +ErrPasskeyLimit: "Límite de Passkey alcanzado (máximo 5)" +ErrPasskeySession: "La sesión de Passkey ha expirado o no es válida" +ErrPasskeyDuplicate: "Passkey ya existe" +ErrPasskeyVerify: "Error al verificar Passkey" + +# usuario y permisos +ErrNoSuchUser: "No se encontró la información del usuario. Verifique e intente de nuevo." +ErrToMaster: "Este usuario no tiene permiso para realizar esta operación en el nodo principal. Verifique e intente de nuevo." +ErrToNode: "Este usuario no tiene permiso para realizar esta operación en este nodo. Verifique e intente de nuevo." +ErrRBAC: "Permisos de usuario insuficientes. No se puede realizar esta operación. Verifique e intente de nuevo." +ErrNoneNode: "Este usuario no tiene permisos sobre ningún nodo. Contacte al administrador o verifique e intente de nuevo." +ErrOnlySuperAdmin: "Solo los superadministradores pueden usar esta función." +ErrRolePresetCannotDelete: "No se pueden eliminar los roles predefinidos del sistema" +ErrRolePresetCannotUpdate: "No se pueden actualizar los roles predefinidos del sistema" +ErrRoleBoundToUser: "Este rol ya está vinculado a usuarios y no se puede eliminar" +ErrRolePresetCannotBind: "Los roles predefinidos del sistema no se pueden asignar a usuarios" +ErrNodeAdminMasterForbidden: "No se pueden agregar permisos de administrador de nodo al nodo principal" +ErrSuperAdminCannotDelete: "No se pueden eliminar usuarios superadministradores" ErrGroupIsDefault: "Grupo predeterminado, no se puede eliminar" ErrGroupIsInUse: "El grupo está en uso y no se puede eliminar." -ErrAIProxyUserGroupIsDefault: "No se puede eliminar el grupo de usuarios predeterminado." -ErrAIProxyUserGroupInUse: "El grupo de usuarios está en uso y no se puede eliminar." -ErrAIProxyUserGroupExists: "El nombre del grupo de usuarios ya existe." -ErrAIProxyBackendAccountExists: "Esta cuenta de modelo ya se importó al grupo de cuentas de AI Gateway." -ErrAIProxyModelGroupInUse: "El grupo de modelos está en uso y no se puede eliminar." -ErrAIProxyModelGroupExists: "El nombre del grupo de modelos ya existe." -ErrAIProxySensitiveGroupInUse: "El grupo de palabras sensibles está en uso y no se puede eliminar." -ErrAIProxySensitiveGroupExists: "El nombre del grupo de palabras sensibles ya existe." -ErrLocalDelete: "No se puede eliminar el nodo local" -ErrPortInUsed: "El puerto {{ .name }} ya está en uso" -ErrInternalServerKey: "Error interno del servidor:" -MasterNode: "Nodo Maestro" -# app -CustomAppStoreFileValid: "El paquete de la tienda de aplicaciones debe tener formato .tar.gz" -ErrFileNotFound: "El archivo {{ .name }} no existe" -AppBackup: 'Copia de seguridad de aplicación' -AppBackupPush: 'Transferir archivo de copia de seguridad de aplicación {{.file}} al nodo {{ .name }}' -ErrSourceTargetSame: 'El nodo de origen y el nodo de destino no pueden ser el mismo' -AppInstall: 'Instalar aplicación {{ .name }} en nodo {{ .targetNode }}' -AppInstallCheck: 'Verificar entorno de instalación de aplicación' - -# backup -ErrBackupInUsed: 'Cuenta de respaldo en uso por tarea programada' -ErrBackupCheck: 'Conexión de respaldo falló: {{ .err }}' -ErrBackupLocal: "La cuenta de respaldo del servidor local no admite esta operación" -ErrBackupPublic: "Se detectó que esta cuenta de respaldo no es pública, verifique e intente de nuevo" -ErrOSSConn: "No se pudo obtener la última versión, por favor revise la conectividad de red externa del servidor." - -#license +# licencia LicenseCheck: 'Comprobar si la licencia está disponible' ErrLicenseInUsed: 'La licencia ya está vinculada. Verifique e intente de nuevo' ErrLicenseExpired: 'La licencia ha expirado. Verifique e intente de nuevo' @@ -94,7 +71,6 @@ ErrLicenseSync: "Sincronización de licencia fallida, no se detectó informació ErrLicenseExist: "Este registro de licencia ya existe. Puede ir directamente a la página de licencia para la vinculación del nodo." ErrXpackNotFound: "Esta sección requiere la edición Business. Importa una licencia en Configuración del panel > Licencia." ErrXpackExceptional: "Esta sección requiere la edición Business. Sincroniza el estado de la licencia en Configuración del panel > Licencia." -ErrXpackOutOfDate: "La licencia actual ha expirado, importe nuevamente la licencia en Panel > Ajustes > Licencia" ErrXpackLost: "La licencia alcanzó el límite de reintentos. Ve a Configuración del panel > Licencia y ejecuta una sincronización manual." ErrEnterpriseLicenseRequired: "La licencia de la edición Enterprise no se ha importado. Importa primero una licencia." ErrDeviceLost: "Faltan archivos necesarios para la verificación de licencia, verifique e intente de nuevo" @@ -113,21 +89,6 @@ ErrNodeUnbind: "Este nodo no está dentro del rango de vinculación de la licenc ErrNodeBind: "Este nodo ya está vinculado a una licencia, verifique e intente de nuevo" ErrNodeLocalRollback: "El nodo principal no admite la reversión directa. Ejecuta manualmente '1pctl restore' para revertir." ErrIntlLicense: "La versión actual aún no admite importar licencias de la edición internacional. Próximamente" - -# user -ErrNoSuchUser: "No se encontró la información del usuario. Verifique e intente de nuevo." -ErrToMaster: "Este usuario no tiene permiso para realizar esta operación en el nodo principal. Verifique e intente de nuevo." -ErrToNode: "Este usuario no tiene permiso para realizar esta operación en este nodo. Verifique e intente de nuevo." -ErrRBAC: "Permisos de usuario insuficientes. No se puede realizar esta operación. Verifique e intente de nuevo." -ErrNoneNode: "Este usuario no tiene permisos sobre ningún nodo. Contacte al administrador o verifique e intente de nuevo." -ErrOnlySuperAdmin: "Solo los superadministradores pueden usar esta función." -ErrRolePresetCannotDelete: "No se pueden eliminar los roles predefinidos del sistema" -ErrRolePresetCannotUpdate: "No se pueden actualizar los roles predefinidos del sistema" -ErrRoleBoundToUser: "Este rol ya está vinculado a usuarios y no se puede eliminar" -ErrRolePresetCannotBind: "Los roles predefinidos del sistema no se pueden asignar a usuarios" -ErrNodeAdminMasterForbidden: "No se pueden agregar permisos de administrador de nodo al nodo principal" -ErrSuperAdminCannotDelete: "No se pueden eliminar usuarios superadministradores" - InvalidRequestBodyType: "Formato del cuerpo de la solicitud no válido, por favor revisa y asegúrate de que el contenido cumpla con el formato requerido antes de reintentar." InvalidLicenseCodeType: "Formato de código de licencia no válido, por favor revisa e inténtalo de nuevo." LicenseNotFoundType: "Licencia no encontrada, no existe ningún registro coincidente en el sistema para la licencia proporcionada. Por favor revisa e inténtalo de nuevo." @@ -138,10 +99,64 @@ InvalidAssigneeType: "Información de usuario o dispositivo de destino no válid LicenseUsageNotFoundType: "No se encontraron registros de uso. Esta licencia no ha sido activada o utilizada aún. Por favor revisa e inténtalo de nuevo." LicenseUsageLimitExceededType: "Esta licencia ya está vinculada a otro nodo. Por favor revisa e inténtalo de nuevo." -# alert +# nodo y clúster +MasterNode: "Nodo Maestro" +Node: "Nodo" +ErrLocalDelete: "No se puede eliminar el nodo local" +ErrMasterDelete: "No se puede eliminar el nodo principal, elimine primero los nodos secundarios." +ClusterNameIsExist: "El nombre del clúster ya existe." +AppStatusUnHealthy: "Adquisición anormal del estado de la aplicación, revise el estado del nodo en la lista de nodos." +MasterNodePortNotAvailable: "Verificación de conectividad del puerto {{ .port }} del nodo {{ .name }} fallida, verifique la configuración del firewall/grupo de seguridad y el estado del nodo principal." +ClusterMasterNotExist: "El nodo principal del clúster está desconectado, elimine los nodos secundarios." + +# máquina virtual +ErrVMNotFound: "La máquina virtual no existe" +ErrVMAlreadyExists: "La máquina virtual ya existe" +ErrVMRunning: "La máquina virtual está en ejecución" +ErrVMLibvirtConnect: "Error al conectar con libvirt: {{ .detail }}" +ErrVMPermission: "Sin permiso para operar la máquina virtual: {{ .detail }}" +ErrVMNetworkNotFound: "La red de la máquina virtual no existe: {{ .detail }}" +ErrVMInvalidPath: "Ruta de máquina virtual no válida: {{ .detail }}" +ErrVMInvalidInput: "Parámetro de máquina virtual no válido: {{ .detail }}" +ErrVMCommandFailed: "Error al ejecutar el comando de la máquina virtual: {{ .err }}" +VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" + +# aplicación +CustomAppStoreFileValid: "El paquete de la tienda de aplicaciones debe tener formato .tar.gz" +AppBackup: 'Copia de seguridad de aplicación' +AppBackupPush: 'Transferir archivo de copia de seguridad de aplicación {{.file}} al nodo {{ .name }}' +ErrSourceTargetSame: 'El nodo de origen y el nodo de destino no pueden ser el mismo' +AppInstall: 'Instalar aplicación {{ .name }} en nodo {{ .targetNode }}' +AppInstallCheck: 'Verificar entorno de instalación de aplicación' + +# copia de seguridad +ErrBackupInUsed: 'Cuenta de respaldo en uso por tarea programada' +ErrBackupCheck: 'Conexión de respaldo falló: {{ .err }}' +ErrBackupLocal: "La cuenta de respaldo del servidor local no admite esta operación" +ErrBackupPublic: "Se detectó que esta cuenta de respaldo no es pública, verifique e intente de nuevo" +ErrOSSConn: "No se pudo obtener la última versión, por favor revise la conectividad de red externa del servidor." +MvBackup: "Mover datos al directorio de respaldos" + +# alerta ErrAlertSync: "Error al sincronizar la información de alertas, verifique e intente de nuevo" -# task +# puerta de enlace de IA +ErrAIProxyUserGroupIsDefault: "No se puede eliminar el grupo de usuarios predeterminado." +ErrAIProxyUserGroupInUse: "El grupo de usuarios está en uso y no se puede eliminar." +ErrAIProxyUserGroupExists: "El nombre del grupo de usuarios ya existe." +ErrAIProxyBackendAccountExists: "Esta cuenta de modelo ya se importó al grupo de cuentas de AI Gateway." +ErrAIProxyModelGroupInUse: "El grupo de modelos está en uso y no se puede eliminar." +ErrAIProxyModelGroupExists: "El nombre del grupo de modelos ya existe." +ErrAIProxySensitiveGroupInUse: "El grupo de palabras sensibles está en uso y no se puede eliminar." +ErrAIProxySensitiveGroupExists: "El nombre del grupo de palabras sensibles ya existe." +AIBenchmarkRun: "Ejecutar prueba de referencia de IA" + +# tarea TaskStart: "Tarea {{ .name }} iniciada [INICIO]" TaskEnd: "Tarea {{ .name }} finalizada [COMPLETADA]" TaskFailed: "Tarea {{ .name }} fallida" @@ -155,6 +170,16 @@ TaskUpgrade: "Actualizar" TaskSync: 'Sincronizar' TaskSyncForNode: "Sincronizar Datos del Nodo" TaskBackup: "Respaldar" +TaskPush: "Enviar" +TaskRsync: "Sync" +SuccessStatus: "{{ .name }} correcta" +FailedStatus: "{{ .name }} fallida {{ .err }}" +Start: "Iniciar" +SubTask: "Subtarea" +Skip: "Omitir errores y continuar..." +Success: "Éxito" + +# tarea por lotes de agentes BatchInstallAgent: "Instalación masiva de agentes" DispatchAgentInstallTasks: "Enviar tareas de instalación de agentes" BatchUpgradeAgent: "Actualización masiva de agentes" @@ -188,15 +213,15 @@ AgentOperateStart: "Iniciar" AgentOperateStop: "Detener" AgentOperateRestart: "Reiniciar" AgentOperateDelete: "Eliminar" -SuccessStatus: "{{ .name }} correcta" -FailedStatus: "{{ .name }} fallida {{ .err }}" -Start: "Iniciar" -SubTask: "Subtarea" -Skip: "Omitir errores y continuar..." + +# tarea de aplicación y habilidad +PushAppInstallTaskToNode: "Enviar tarea de instalación de aplicación al nodo [{{ .name }}]" +AppInstallTask: "Tarea de instalación de aplicación" +PushAppFailed: "Error al enviar tarea de instalación de aplicación" SkillHubInstallTask: "Instalar skill [{{ .name }}]" SkillHubInstallToTarget: "Instalar skill en destino [{{ .name }}]" -#script +# biblioteca de scripts ScriptLibrary: "Biblioteca de scripts" RemoteScriptLibrary: "Biblioteca de Scripts Remota" ScriptSyncSkip: "La biblioteca de scripts ya está en la última versión" @@ -204,7 +229,7 @@ DownloadData: "Descargando archivo de datos de la biblioteca de scripts data.yam DownloadPackage: "Descargando paquete de la biblioteca de scripts" AnalyticCompletion: "Análisis completado, sincronizando con la base de datos..." -Node: "Nodo" +# sincronización de nodos SyncNode: "Sincronizar datos del nodo" LocalName: "El nombre 'local' solo se utiliza para la identificación local del sistema" SyncPackageData: "Sincronizar datos del paquete [{{ .detail }}]" @@ -220,7 +245,7 @@ SyncCustomApp: "Aplicación personalizada" SyncLanguage: "Idioma del sistema" SyncEdition: "Región" -#upgrade node +# actualización de nodos NodeUpgrade: "Actualizar nodo {{ .name }}" UpgradeCheck: "Comprobar actualizaciones de nodos" UpgradeCheckLocal: "Los nodos locales no admiten actualizaciones en lote, omitiendo..." @@ -233,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "Error al cargar nodos de actualización automática AutoUpgradeNodes: "Nodos de actualización automática: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "Error al actualizar el estado de los nodos de actualización automática, error: {{ .err }}" -#add node +# agregar nodo MasterData: "Datos del nodo principal" LoadSftpClient: "Cargar cliente SFTP" PackageMasterData: "Generar paquete de respaldo del nodo principal" UploadBackup: "Subir datos de respaldo" -MvBackup: "Mover datos al directorio de respaldos" TaskAddNode: "Agregar nodo" LoadNodeArch: "Obtener información de arquitectura del nodo" LoadNodeArchDetail: "Arquitectura detectada - principal: {{ .local }}, nodo secundario: {{ .node }}" @@ -251,7 +275,35 @@ SendAgent: "Distribuir paquete de instalación del nodo" StartService: "Iniciar servicio" NoBackupNode: "Actualmente no hay nodo de respaldo. Seleccione uno para guardar e intente de nuevo." -#cmd +# sincronización de archivos e imágenes de nodo +LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." +HandlePrivateKey: "Handle node private key" +HandlePublicKey: "Handle node public key" +ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" +NodeFile: "Node file" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "Save image {{ .image }}" +ImageSyncSaveTags: "Save image tags {{ .tags }}" +ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" +ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" +ImageSyncClean: "Clean temporary files for image {{ .image }}" +ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" +ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." +ImageSyncHandlePrivateKey: "Handle image sync node private key" +ImageSyncHandlePublicKey: "Handle image sync node public key" +ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# línea de comandos +SudoHelper: "Por favor use {{ .cmd }} o cambie al usuario root" +UsernameNeed: "La edición Enterprise debe especificar --username" +DBConnErr: "Error: Fallo al inicializar la conexión a la base de datos, {{ .err }}" +SystemVersion: "versión: " +SystemMode: "modo: " + +# línea de comandos - aplicación AppVersion: "Versión de la aplicación" AppCommands: "Comandos relacionados con la app" AppInit: "Inicializar aplicación" @@ -263,12 +315,14 @@ AppMissVersion: "Falta la versión de la app, use -v para especificar" AppVersionExist: "La versión ya existe" AppCreateSuccessful: "Creación finalizada con éxito" AppWriteErr: "Error al escribir el archivo {{ .name }} {{ .err }}" -SudoHelper: "Por favor use {{ .cmd }} o cambie al usuario root" -UsernameNeed: "La edición Enterprise debe especificar --username" + +# línea de comandos - IP de escucha ListenIPCommands: "Cambiar ip de escucha" ListenIPv4: "Escuchar en IPv4" ListenIPv6: "Escuchar en IPv6" ListenChangeSuccessful: "Cambio exitoso Ahora escuchando en {{ .value }}" + +# línea de comandos - restablecer ResetCommands: "Restablecer información del sistema" ResetMFA: "Cancelar autenticación de dos factores de 1Panel" ResetHttps: "Cancelar inicio de sesión https de 1Panel" @@ -276,12 +330,19 @@ ResetEntrance: "Cancelar entrada segura de 1Panel" ResetIPs: "Cancelar restricciones de IP autorizadas de 1Panel" ResetDomain: "Cancelar vinculación de dominio de 1Panel" ResetPasskey: "Eliminar passkeys de 1Panel" + +# línea de comandos - usuario UserList: "Obtener la lista de usuarios de 1Panel" UserTableName: "Nombre" UserTableMFAStatus: "Estado MFA" UserTableSuperAdmin: "Superadministrador" UserTableCreatedAt: "Creado en" UserEmptyList: "No se encontraron usuarios" +UserInfo: "Obtener información del panel" +UserInfoAddr: "Dirección del panel: " +UserInfoPassHelp: "Consejo: para cambiar la contraseña, ejecute el comando: " + +# línea de comandos - restaurar RestoreCommands: "Revertir el servicio y los datos de 1Panel" RestoreNoSuchFile: "No se encontraron archivos de reversión" RestoreStep1: "(1/5) Iniciando la reversión del servicio y los datos de 1Panel desde el directorio {{ .name }}..." @@ -290,6 +351,8 @@ RestoreStep3: "(3/5) Reversión del script de 1Panel completada" RestoreStep4: "(4/5) Reversión del servicio de 1Panel completada" RestoreStep5: "(5/5) Reversión de los datos de 1Panel completada" RestoreSuccessful: "Reversión completada. Se volvió a {{ .version }}. Reiniciando el servicio..." + +# línea de comandos - actualizar UpdateCommands: "Actualizar información del panel" UpdateUser: "Actualizar información del usuario" UpdatePassword: "Actualizar contraseña del usuario" @@ -316,50 +379,12 @@ UpdatePortResult: "Puerto del panel: {{ .name }}" UpdatePortFirewallAdd: "Fallo al agregar la regla de puerto al firewall, {{ .err }}, agregue manualmente el puerto {{ .name }} al firewall." UpdatePortFirewallDel: "Error: Fallo al eliminar el puerto del firewall, {{ .err }}" UpdatePortFirewallReload: "Fallo al recargar el firewall, {{ .err }}, recargue el firewall manualmente." -UserInfo: "Obtener información del panel" -UserInfoAddr: "Dirección del panel: " -UserInfoPassHelp: "Consejo: para cambiar la contraseña, ejecute el comando: " -DBConnErr: "Error: Fallo al inicializar la conexión a la base de datos, {{ .err }}" -SystemVersion: "versión: " -SystemMode: "modo: " -#exchange -LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." -HandlePrivateKey: "Handle node private key" -HandlePublicKey: "Handle node public key" -ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" -TaskRsync: "Sync" -NodeFile: "Node file" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "Save image {{ .image }}" -ImageSyncSaveTags: "Save image tags {{ .tags }}" -ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" -ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" -ImageSyncClean: "Clean temporary files for image {{ .image }}" -ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" -ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." -ImageSyncHandlePrivateKey: "Handle image sync node private key" -ImageSyncHandlePublicKey: "Handle image sync node public key" -ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# aplicación móvil ErrVerifyToken: 'Error al verificar el token, por favor restablezca y escanee de nuevo.' ErrInvalidToken: 'Token inválido, por favor restablezca y escanee de nuevo.' ErrExpiredToken: 'El token ha expirado, por favor restablezca y escanee de nuevo.' -#cluster -ErrMasterDelete: "No se puede eliminar el nodo principal, elimine primero los nodos secundarios." -ClusterNameIsExist: "El nombre del clúster ya existe." -AppStatusUnHealthy: "Adquisición anormal del estado de la aplicación, revise el estado del nodo en la lista de nodos." -MasterNodePortNotAvailable: "Verificación de conectividad del puerto {{ .port }} del nodo {{ .name }} fallida, verifique la configuración del firewall/grupo de seguridad y el estado del nodo principal." -ClusterMasterNotExist: "El nodo principal del clúster está desconectado, elimine los nodos secundarios." - -#ssl -ErrReqFailed: "{{.name}} petición fallida: {{ .err }}" - -#command +# exportación de comandos Name: "Nombre" Command: "Comando" diff --git a/core/i18n/lang/fa.yaml b/core/i18n/lang/fa.yaml index acf09b5a1..3d9a68356 100644 --- a/core/i18n/lang/fa.yaml +++ b/core/i18n/lang/fa.yaml @@ -1,16 +1,36 @@ +# خطاهای پایه ErrInvalidParams: "پارامترهای درخواست نامعتبر: {{ .detail }}" ErrTokenParse: "خطا در تولید توکن: {{ .detail }}" ErrInitialPassword: "رمز عبور اولیه اشتباه است" ErrInternalServer: "خطای داخلی سرور: {{ .detail }}" +ErrInternalServerKey: "خطای داخلی سرور:" ErrRecordExist: "رکورد از قبل وجود دارد" ErrRecordNotFound: "رکورد یافت نشد" ErrStructTransform: "تبدیل نوع ناموفق بود: {{ .detail }}" +ErrNotSupportType: "نوع پشتیبانی نمی‌شود: {{ .name }}" +ErrDemoEnvironment: "سرور آزمایشی، این عملیات ممنوع است!" +ErrCmdTimeout: "زمان اجرای دستور به پایان رسید!" +ErrPortInUsed: "پورت {{ .name }} قبلاً در حال استفاده است!" +ErrFileNotFound: "فایل {{ .name }} وجود ندارد" +ErrReqFailed: "درخواست {{.name}} ناموفق بود: {{ .err }}" + +# درخواست و ورودی امنیتی +ErrNoSuchHost: "تفکیک میزبان ناموفق بود: {{ .err }}" +ErrHttpReqNotFound: "منبع درخواستی یافت نشد: {{ .err }}" +ErrHttpReqFailed: "درخواست ناموفق بود {{ .err }}" +ErrHttpReqTimeOut: "زمان درخواست به پایان رسید {{ .err }}" +ErrCreateHttpClient: "ایجاد درخواست ناموفق بود {{ .err }}" +ErrProxy: "درخواست ناموفق بود؛ وضعیت این گره را بررسی کنید: {{ .detail }}" +ErrProxySetting: "اطلاعات سرور پروکسی در دسترس نیست {{ .err }}، بررسی و دوباره تلاش کنید!" +ErrEntrance: "خطا در اطلاعات ورودی امنیتی، بررسی و دوباره تلاش کنید!" +ErrEntranceFormat: "ورودی امنیتی {{ .name }} پشتیبانی نمی‌شود. بررسی و دوباره تلاش کنید." + +# ورود و امنیت ErrNotLogin: "کاربر وارد نشده است: {{ .detail }}" ErrSessionDataNotFound: "جلسه منقضی شده است" ErrSessionDataFormat: "فرمت داده جلسه نامعتبر است" ErrPasswordExpired: "رمز عبور منقضی شده است: {{ .detail }}" -ErrNotSupportType: "نوع پشتیبانی نمی‌شود: {{ .name }}" -ErrProxy: "درخواست ناموفق بود؛ وضعیت این گره را بررسی کنید: {{ .detail }}" +ErrLoginLocked: "تعداد تلاش‌های ناموفق زیاد است. ورود به مدت ۵ دقیقه به طور موقت قفل شده است." ErrApiConfigStatusInvalid: "دسترسی API غیرفعال است: {{ .detail }}" ErrApiConfigKeyInvalid: "کلید API نامعتبر است: {{ .detail }}" ErrApiConfigIPInvalid: "IP درخواست API در لیست سفید نیست: {{ .detail }}" @@ -22,53 +42,24 @@ ErrPasskeyLimit: "محدودیت کلید عبور رسیده است (حداکث ErrPasskeySession: "جلسه کلید عبور منقضی یا نامعتبر است" ErrPasskeyDuplicate: "کلید عبور از قبل وجود دارد" ErrPasskeyVerify: "تأیید کلید عبور ناموفق بود" -ErrLoginLocked: "تعداد تلاش‌های ناموفق زیاد است. ورود به مدت ۵ دقیقه به طور موقت قفل شده است." -# request -ErrNoSuchHost: "تفکیک میزبان ناموفق بود: {{ .err }}" -ErrHttpReqNotFound: "منبع درخواستی یافت نشد: {{ .err }}" -ErrHttpReqFailed: "درخواست ناموفق بود {{ .err }}" -ErrHttpReqTimeOut: "زمان درخواست به پایان رسید {{ .err }}" -ErrCreateHttpClient: "ایجاد درخواست ناموفق بود {{ .err }}" -ErrProxySetting: "اطلاعات سرور پروکسی در دسترس نیست {{ .err }}، بررسی و دوباره تلاش کنید!" -ErrEntranceFormat: "ورودی امنیتی {{ .name }} پشتیبانی نمی‌شود. بررسی و دوباره تلاش کنید." - -# common -ErrDemoEnvironment: "سرور آزمایشی، این عملیات ممنوع است!" -ErrCmdTimeout: "زمان اجرای دستور به پایان رسید!" -ErrEntrance: "خطا در اطلاعات ورودی امنیتی، بررسی و دوباره تلاش کنید!" +# کاربر و مجوزها +ErrNoSuchUser: "اطلاعات کاربر یافت نشد، بررسی و دوباره تلاش کنید!" +ErrToMaster: "این کاربر مجوز انجام این عملیات روی گره اصلی را ندارد. بررسی و دوباره تلاش کنید!" +ErrToNode: "این کاربر مجوز انجام این عملیات روی این گره را ندارد. بررسی و دوباره تلاش کنید!" +ErrRBAC: "مجوزهای کاربر ناکافی است. این عملیات قابل انجام نیست. بررسی و دوباره تلاش کنید!" +ErrNoneNode: "این کاربر هیچ مجوز گره‌ای ندارد. با مدیر تماس بگیرید یا بررسی و دوباره تلاش کنید!" +ErrOnlySuperAdmin: "فقط مدیران کل می‌توانند از این ویژگی استفاده کنند!" +ErrRolePresetCannotDelete: "نقش‌های از پیش تعیین شده سیستم قابل حذف نیستند" +ErrRolePresetCannotUpdate: "نقش‌های از پیش تعیین شده سیستم قابل به‌روزرسانی نیستند" +ErrRoleBoundToUser: "این نقش قبلاً به کاربران متصل است و قابل حذف نیست" +ErrRolePresetCannotBind: "نقش‌های از پیش تعیین شده سیستم قابل انتساب به کاربران نیستند" +ErrNodeAdminMasterForbidden: "مجوزهای مدیر گره نمی‌توانند به گره اصلی اضافه شوند" +ErrSuperAdminCannotDelete: "کاربران مدیر کل قابل حذف نیستند" ErrGroupIsDefault: "گروه پیش‌فرض، قابل حذف نیست" ErrGroupIsInUse: "گروه در حال استفاده است و قابل حذف نیست." -ErrAIProxyUserGroupIsDefault: "گروه کاربری پیش‌فرض قابل حذف نیست." -ErrAIProxyUserGroupInUse: "گروه کاربری در حال استفاده است و قابل حذف نیست." -ErrAIProxyUserGroupExists: "نام گروه کاربری از قبل وجود دارد." -ErrAIProxyBackendAccountExists: "این حساب مدل قبلاً به مجموعه حساب‌های دروازه AI وارد شده است." -ErrAIProxyModelGroupInUse: "گروه مدل در حال استفاده است و قابل حذف نیست." -ErrAIProxyModelGroupExists: "نام گروه مدل از قبل وجود دارد." -ErrAIProxySensitiveGroupInUse: "گروه کلمات حساس در حال استفاده است و قابل حذف نیست." -ErrAIProxySensitiveGroupExists: "نام گروه کلمات حساس از قبل وجود دارد." -ErrLocalDelete: "گره محلی قابل حذف نیست!" -ErrPortInUsed: "پورت {{ .name }} قبلاً در حال استفاده است!" -ErrInternalServerKey: "خطای داخلی سرور:" -MasterNode: "گره اصلی" -# app -CustomAppStoreFileValid: "بسته فروشگاه برنامه باید با فرمت .tar.gz باشد" -ErrFileNotFound: "فایل {{ .name }} وجود ندارد" -AppBackup: 'پشتیبان‌گیری از برنامه' -AppBackupPush: 'انتقال فایل پشتیبان برنامه {{.file}} به گره {{ .name }}' -ErrSourceTargetSame: 'گره منبع و گره هدف نمی‌توانند یکسان باشند!' -AppInstall: 'نصب برنامه {{ .name }} روی گره {{ .targetNode }}' -AppInstallCheck: 'بررسی محیط نصب برنامه' - -# backup -ErrBackupInUsed: "این حساب پشتیبان در وظایف زمان‌بندی استفاده می‌شود و قابل حذف نیست" -ErrBackupCheck: "تست اتصال حساب پشتیبان ناموفق بود {{ .err }}" -ErrBackupLocal: "حساب پشتیبان سرور محلی از این عملیات پشتیبانی نمی‌کند!" -ErrBackupPublic: "تشخیص داده شد که این حساب پشتیبان عمومی نیست، بررسی و دوباره تلاش کنید!" -ErrOSSConn: "امکان دریافت آخرین نسخه وجود ندارد. اتصال اینترنت سرور را بررسی کنید." - -#license +# مجوز LicenseCheck: 'بررسی در دسترس بودن مجوز' ErrLicenseInUsed: 'مجوز قبلاً متصل شده است. بررسی و دوباره تلاش کنید!' ErrLicenseExpired: 'مجوز منقضی شده است. بررسی و دوباره تلاش کنید!' @@ -98,21 +89,6 @@ ErrNodeUnbind: "این گره در محدوده اتصال مجوز نیست، ErrNodeBind: "این گره قبلاً به یک مجوز متصل است، بررسی و دوباره تلاش کنید!" ErrNodeLocalRollback: "گره اصلی از بازگشت مستقیم پشتیبانی نمی‌کند. برای بازگشت به صورت دستی '1pctl restore' را اجرا کنید." ErrIntlLicense: "نسخه فعلی از واردات مجوزهای بین‌المللی پشتیبانی نمی‌کند. منتظر به‌روزرسانی‌های بعدی باشید!" - -# user -ErrNoSuchUser: "اطلاعات کاربر یافت نشد، بررسی و دوباره تلاش کنید!" -ErrToMaster: "این کاربر مجوز انجام این عملیات روی گره اصلی را ندارد. بررسی و دوباره تلاش کنید!" -ErrToNode: "این کاربر مجوز انجام این عملیات روی این گره را ندارد. بررسی و دوباره تلاش کنید!" -ErrRBAC: "مجوزهای کاربر ناکافی است. این عملیات قابل انجام نیست. بررسی و دوباره تلاش کنید!" -ErrNoneNode: "این کاربر هیچ مجوز گره‌ای ندارد. با مدیر تماس بگیرید یا بررسی و دوباره تلاش کنید!" -ErrOnlySuperAdmin: "فقط مدیران کل می‌توانند از این ویژگی استفاده کنند!" -ErrRolePresetCannotDelete: "نقش‌های از پیش تعیین شده سیستم قابل حذف نیستند" -ErrRolePresetCannotUpdate: "نقش‌های از پیش تعیین شده سیستم قابل به‌روزرسانی نیستند" -ErrRoleBoundToUser: "این نقش قبلاً به کاربران متصل است و قابل حذف نیست" -ErrRolePresetCannotBind: "نقش‌های از پیش تعیین شده سیستم قابل انتساب به کاربران نیستند" -ErrNodeAdminMasterForbidden: "مجوزهای مدیر گره نمی‌توانند به گره اصلی اضافه شوند" -ErrSuperAdminCannotDelete: "کاربران مدیر کل قابل حذف نیستند" - InvalidRequestBodyType: "فرمت بدنه درخواست نامعتبر است. اطمینان حاصل کنید که محتوا با فرمت مورد نیاز مطابقت دارد و دوباره تلاش کنید." InvalidLicenseCodeType: "فرمت کد مجوز ارائه شده نامعتبر است، بررسی و دوباره تلاش کنید!" LicenseNotFoundType: "مجوز یافت نشد، هیچ رکورد منطبقی در سیستم برای مجوز ارائه شده وجود ندارد. بررسی و دوباره تلاش کنید!" @@ -123,10 +99,64 @@ InvalidAssigneeType: "اطلاعات کاربر یا دستگاه هدف برا LicenseUsageNotFoundType: "هیچ رکورد استفاده‌ای یافت نشد. این مجوز هنوز فعال یا استفاده نشده است. بررسی و دوباره تلاش کنید!" LicenseUsageLimitExceededType: "این مجوز قبلاً به گره دیگری متصل است. بررسی و دوباره تلاش کنید!" -# alert +# گره و خوشه +MasterNode: "گره اصلی" +Node: "گره" +ErrLocalDelete: "گره محلی قابل حذف نیست!" +ErrMasterDelete: "گره اصلی قابل حذف نیست. ابتدا گره‌های برده را حذف کنید." +ClusterNameIsExist: "نام خوشه از قبل وجود دارد." +AppStatusUnHealthy: "دریافت وضعیت برنامه ناموفق بود. وضعیت گره نصب را در لیست گره‌ها بررسی کنید." +MasterNodePortNotAvailable: "بررسی اتصال پورت {{ .port }} گره {{ .name }} ناموفق بود. تنظیمات دیواره آتش/گروه امنیتی و وضعیت گره اصلی را بررسی کنید." +ClusterMasterNotExist: "گره اصلی خوشه قطع شده است. گره‌های زیرین را حذف کنید." + +# ماشین مجازی +ErrVMNotFound: "ماشین مجازی وجود ندارد" +ErrVMAlreadyExists: "ماشین مجازی از قبل وجود دارد" +ErrVMRunning: "ماشین مجازی در حال اجرا است" +ErrVMLibvirtConnect: "اتصال به libvirt ناموفق بود: {{ .detail }}" +ErrVMPermission: "مجوز عملیات ماشین مجازی وجود ندارد: {{ .detail }}" +ErrVMNetworkNotFound: "شبکه ماشین مجازی وجود ندارد: {{ .detail }}" +ErrVMInvalidPath: "مسیر ماشین مجازی نامعتبر است: {{ .detail }}" +ErrVMInvalidInput: "پارامتر ماشین مجازی نامعتبر است: {{ .detail }}" +ErrVMCommandFailed: "اجرای دستور ماشین مجازی ناموفق بود: {{ .err }}" +VMSnapshotCreateTask: "ایجاد اسنپ‌شات [{{ .snapshot }}] برای ماشین مجازی [{{ .vm }}]" +VMSnapshotCreateStep: "ایجاد اسنپ‌شات ماشین مجازی [{{ .snapshot }}]" +VMSnapshotRecoverTask: "بازیابی اسنپ‌شات [{{ .snapshot }}] برای ماشین مجازی [{{ .vm }}]" +VMSnapshotRecoverStep: "بازیابی اسنپ‌شات ماشین مجازی [{{ .snapshot }}]" +VMSnapshotDeleteTask: "حذف اسنپ‌شات [{{ .snapshot }}] برای ماشین مجازی [{{ .vm }}]" +VMSnapshotDeleteStep: "حذف اسنپ‌شات ماشین مجازی [{{ .snapshot }}]" + +# برنامه +CustomAppStoreFileValid: "بسته فروشگاه برنامه باید با فرمت .tar.gz باشد" +AppBackup: 'پشتیبان‌گیری از برنامه' +AppBackupPush: 'انتقال فایل پشتیبان برنامه {{.file}} به گره {{ .name }}' +ErrSourceTargetSame: 'گره منبع و گره هدف نمی‌توانند یکسان باشند!' +AppInstall: 'نصب برنامه {{ .name }} روی گره {{ .targetNode }}' +AppInstallCheck: 'بررسی محیط نصب برنامه' + +# پشتیبان‌گیری +ErrBackupInUsed: "این حساب پشتیبان در وظایف زمان‌بندی استفاده می‌شود و قابل حذف نیست" +ErrBackupCheck: "تست اتصال حساب پشتیبان ناموفق بود {{ .err }}" +ErrBackupLocal: "حساب پشتیبان سرور محلی از این عملیات پشتیبانی نمی‌کند!" +ErrBackupPublic: "تشخیص داده شد که این حساب پشتیبان عمومی نیست، بررسی و دوباره تلاش کنید!" +ErrOSSConn: "امکان دریافت آخرین نسخه وجود ندارد. اتصال اینترنت سرور را بررسی کنید." +MvBackup: "انتقال داده‌ها به دایرکتوری پشتیبان" + +# هشدار ErrAlertSync: "خطا در همگام‌سازی اطلاعات هشدار، بررسی و دوباره تلاش کنید!" -# task +# دروازه هوش مصنوعی +ErrAIProxyUserGroupIsDefault: "گروه کاربری پیش‌فرض قابل حذف نیست." +ErrAIProxyUserGroupInUse: "گروه کاربری در حال استفاده است و قابل حذف نیست." +ErrAIProxyUserGroupExists: "نام گروه کاربری از قبل وجود دارد." +ErrAIProxyBackendAccountExists: "این حساب مدل قبلاً به مجموعه حساب‌های دروازه AI وارد شده است." +ErrAIProxyModelGroupInUse: "گروه مدل در حال استفاده است و قابل حذف نیست." +ErrAIProxyModelGroupExists: "نام گروه مدل از قبل وجود دارد." +ErrAIProxySensitiveGroupInUse: "گروه کلمات حساس در حال استفاده است و قابل حذف نیست." +ErrAIProxySensitiveGroupExists: "نام گروه کلمات حساس از قبل وجود دارد." +AIBenchmarkRun: "اجرای معیار سنجش هوش مصنوعی" + +# وظیفه TaskStart: "وظیفه {{ .name }} شروع شد [شروع]" TaskEnd: "وظیفه {{ .name }} پایان یافت [تکمیل شد]" TaskFailed: "وظیفه {{ .name }} ناموفق بود" @@ -140,6 +170,16 @@ TaskUpgrade: "ارتقاء" TaskSync: 'همگام‌سازی' TaskSyncForNode: "همگام‌سازی داده‌های گره" TaskBackup: "پشتیبان‌گیری" +TaskPush: "ارسال" +TaskRsync: "همگام‌سازی" +SuccessStatus: "{{ .name }} با موفقیت انجام شد" +FailedStatus: "{{ .name }} ناموفق بود {{ .err }}" +Start: "شروع" +SubTask: "وظیفه فرعی" +Skip: "نادیده گرفتن خطاها و ادامه" +Success: "موفق" + +# وظیفه دسته‌ای عامل BatchInstallAgent: "نصب دسته‌ای عامل" DispatchAgentInstallTasks: "ارسال وظایف نصب عامل" BatchUpgradeAgent: "ارتقاء دسته‌ای عامل" @@ -173,21 +213,15 @@ AgentOperateStart: "شروع" AgentOperateStop: "توقف" AgentOperateRestart: "راه‌اندازی مجدد" AgentOperateDelete: "حذف" -AIBenchmarkRun: "اجرای معیار سنجش هوش مصنوعی" -SuccessStatus: "{{ .name }} با موفقیت انجام شد" -FailedStatus: "{{ .name }} ناموفق بود {{ .err }}" -Start: "شروع" -SubTask: "وظیفه فرعی" -Skip: "نادیده گرفتن خطاها و ادامه" + +# وظیفه برنامه و مهارت PushAppInstallTaskToNode: "ارسال وظیفه نصب برنامه به گره [{{ .name }}]" -TaskPush: "ارسال" AppInstallTask: "وظیفه نصب برنامه" PushAppFailed: "ارسال وظیفه نصب برنامه ناموفق بود" SkillHubInstallTask: "نصب مهارت [{{ .name }}]" SkillHubInstallToTarget: "نصب مهارت به هدف [{{ .name }}]" -Success: "موفق" -#script +# کتابخانه اسکریپت ScriptLibrary: "کتابخانه اسکریپت" RemoteScriptLibrary: "کتابخانه اسکریپت از راه دور" ScriptSyncSkip: "کتابخانه اسکریپت از قبل به‌روز است" @@ -195,7 +229,7 @@ DownloadData: "دانلود فایل داده‌های کتابخانه اسکر DownloadPackage: "دانلود بسته کتابخانه اسکریپت" AnalyticCompletion: "تحلیل کامل شد، در حال همگام‌سازی با پایگاه داده..." -Node: "گره" +# همگام‌سازی گره SyncNode: "همگام‌سازی داده‌ها با گره {{ .name }}" LocalName: "نام 'local' فقط برای شناسایی محلی سیستم استفاده می‌شود" SyncPackageData: "همگام‌سازی داده‌های بسته" @@ -211,7 +245,7 @@ SyncCustomApp: "برنامه سفارشی" SyncLanguage: "زبان سیستم" SyncEdition: "منطقه" -#upgrade node +# ارتقای گره NodeUpgrade: "ارتقاء گره {{ .name }}" UpgradeCheck: "بررسی به‌روزرسانی گره" UpgradeCheckLocal: "گره‌های محلی از ارتقاء دسته‌ای پشتیبانی نمی‌کنند، رد شد..." @@ -224,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "بارگذاری گره‌های ارتقاء خو AutoUpgradeNodes: "گره‌های ارتقاء خودکار: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "به‌روزرسانی وضعیت گره‌های ارتقاء خودکار ناموفق بود، خطا: {{ .err }}" -#add node +# افزودن گره MasterData: "داده‌های گره اصلی" LoadSftpClient: "بارگذاری کلاینت SFTP" PackageMasterData: "تولید بسته پشتیبان گره اصلی" UploadBackup: "بارگذاری داده‌های پشتیبان" -MvBackup: "انتقال داده‌ها به دایرکتوری پشتیبان" TaskAddNode: "افزودن گره" LoadNodeArch: "دریافت اطلاعات معماری گره" LoadNodeArchDetail: "معماری گره اصلی شناسایی شد: {{ .local }}، معماری گره زیرین: {{ .node }}" @@ -242,7 +275,35 @@ SendAgent: "توزیع بسته نصب گره" StartService: "شروع سرویس" NoBackupNode: "گره پشتیبان خالی است. ابتدا یکی را انتخاب کرده و ذخیره کنید" -#cmd +# همگام‌سازی فایل و تصویر گره +LocalNodeIpFailed: "دریافت IP گره اصلی ناموفق بود. گره اصلی را ویرایش کرده و آدرس IP و اطلاعات احراز هویت SSH را اضافه کنید." +HandlePrivateKey: "مدیریت کلید خصوصی گره" +HandlePublicKey: "مدیریت کلید عمومی گره" +ExchangeFile: "شروع همگام‌سازی {{ .sourcePath }} از گره {{ .source }} به گره {{ .dest }}:{{ .destPath }}" +NodeFile: "فایل گره" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "ذخیره تصویر {{ .image }}" +ImageSyncSaveTags: "ذخیره برچسب‌های تصویر {{ .tags }}" +ImageSyncToNode: "همگام‌سازی تصویر {{ .image }} به گره {{ .node }}" +ImageSyncLoad: "بارگذاری تصویر {{ .image }} روی گره {{ .node }}" +ImageSyncClean: "پاک‌سازی فایل‌های موقت تصویر {{ .image }}" +ImageSyncNoTag: "تصویر {{ .image }} هیچ برچسبی ندارد و با شناسه تصویر ذخیره می‌شود" +ImageSyncFrontendTagsIgnored: "هیچ برچسبی برای تصویر {{ .image }} در گره منبع یافت نشد. برچسب‌های فرانت‌اند نادیده گرفته شدند." +ImageSyncHandlePrivateKey: "مدیریت کلید خصوصی گره همگام‌سازی تصویر" +ImageSyncHandlePublicKey: "مدیریت کلید عمومی گره همگام‌سازی تصویر" +ImageSyncTransfer: "شروع انتقال فایل موقت تصویر: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# خط فرمان +SudoHelper: "از {{ .cmd }} استفاده کنید یا به کاربر root تغییر دهید" +UsernameNeed: "نسخه سازمانی باید --username را مشخص کند" +DBConnErr: "خطا: راه‌اندازی اتصال پایگاه داده ناموفق بود، {{ .err }}" +SystemVersion: "نسخه: " +SystemMode: "حالت: " + +# خط فرمان - برنامه AppVersion: "نسخه برنامه" AppCommands: "دستورات مرتبط با برنامه" AppInit: "راه‌اندازی برنامه" @@ -254,12 +315,14 @@ AppMissVersion: "نسخه برنامه وجود ندارد، از -v برای م AppVersionExist: "نسخه از قبل وجود دارد!" AppCreateSuccessful: "ایجاد با موفقیت انجام شد!" AppWriteErr: "نوشتن فایل {{ .name }} ناموفق بود {{ .err }}" -SudoHelper: "از {{ .cmd }} استفاده کنید یا به کاربر root تغییر دهید" -UsernameNeed: "نسخه سازمانی باید --username را مشخص کند" + +# خط فرمان - IP شنود ListenIPCommands: "تغییر IP شنود" ListenIPv4: "شنود روی IPv4" ListenIPv6: "شنود روی IPv6" ListenChangeSuccessful: "تغییر با موفقیت انجام شد! در حال شنود روی {{ .value }}" + +# خط فرمان - بازنشانی ResetCommands: "بازنشانی اطلاعات سیستم" ResetMFA: "لغو احراز هویت دو مرحله‌ای 1Panel" ResetHttps: "لغو ورود https 1Panel" @@ -267,12 +330,19 @@ ResetEntrance: "لغو ورودی امنیتی 1Panel" ResetIPs: "لغو محدودیت‌های IP مجاز 1Panel" ResetDomain: "لغو اتصال دامنه 1Panel" ResetPasskey: "پاک‌سازی کلیدهای عبور 1Panel" + +# خط فرمان - کاربر UserList: "دریافت لیست کاربران 1Panel" UserTableName: "نام" UserTableMFAStatus: "وضعیت MFA" UserTableSuperAdmin: "مدیر کل" UserTableCreatedAt: "تاریخ ایجاد" UserEmptyList: "هیچ کاربری یافت نشد" +UserInfo: "دریافت اطلاعات پنل" +UserInfoAddr: "آدرس پنل: " +UserInfoPassHelp: "نکته: برای تغییر رمز عبور، می‌توانید دستور را اجرا کنید: " + +# خط فرمان - بازیابی RestoreCommands: "بازگشت سرویس و داده‌های 1Panel" RestoreNoSuchFile: "هیچ فایل بازگشتی یافت نشد" RestoreStep1: "(۱/۵) شروع بازگشت سرویس و داده‌های 1Panel از دایرکتوری {{ .name }}..." @@ -281,6 +351,8 @@ RestoreStep3: "(۳/۵) بازگشت اسکریپت 1Panel تکمیل شد" RestoreStep4: "(۴/۵) بازگشت سرویس 1Panel تکمیل شد" RestoreStep5: "(۵/۵) بازگشت داده‌های 1Panel تکمیل شد" RestoreSuccessful: "بازگشت تکمیل شد. به نسخه {{ .version }} بازگردانده شد. در حال راه‌اندازی مجدد سرویس..." + +# خط فرمان - به‌روزرسانی UpdateCommands: "به‌روزرسانی اطلاعات پنل" UpdateUser: "به‌روزرسانی اطلاعات کاربر" UpdatePassword: "به‌روزرسانی رمز عبور کاربر" @@ -307,50 +379,12 @@ UpdatePortResult: "پورت پنل: {{ .name }}" UpdatePortFirewallAdd: "افزودن قانون پورت دیواره آتش ناموفق بود، {{ .err }}، پورت {{ .name }} را به صورت دستی به قوانین دیواره آتش اضافه کنید." UpdatePortFirewallDel: "خطا: حذف پورت دیواره آتش ناموفق بود، {{ .err }}" UpdatePortFirewallReload: "بارگذاری مجدد دیواره آتش ناموفق بود، {{ .err }}، دیواره آتش را به صورت دستی بارگذاری مجدد کنید." -UserInfo: "دریافت اطلاعات پنل" -UserInfoAddr: "آدرس پنل: " -UserInfoPassHelp: "نکته: برای تغییر رمز عبور، می‌توانید دستور را اجرا کنید: " -DBConnErr: "خطا: راه‌اندازی اتصال پایگاه داده ناموفق بود، {{ .err }}" -SystemVersion: "نسخه: " -SystemMode: "حالت: " -#exchange -LocalNodeIpFailed: "دریافت IP گره اصلی ناموفق بود. گره اصلی را ویرایش کرده و آدرس IP و اطلاعات احراز هویت SSH را اضافه کنید." -HandlePrivateKey: "مدیریت کلید خصوصی گره" -HandlePublicKey: "مدیریت کلید عمومی گره" -ExchangeFile: "شروع همگام‌سازی {{ .sourcePath }} از گره {{ .source }} به گره {{ .dest }}:{{ .destPath }}" -TaskRsync: "همگام‌سازی" -NodeFile: "فایل گره" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "ذخیره تصویر {{ .image }}" -ImageSyncSaveTags: "ذخیره برچسب‌های تصویر {{ .tags }}" -ImageSyncToNode: "همگام‌سازی تصویر {{ .image }} به گره {{ .node }}" -ImageSyncLoad: "بارگذاری تصویر {{ .image }} روی گره {{ .node }}" -ImageSyncClean: "پاک‌سازی فایل‌های موقت تصویر {{ .image }}" -ImageSyncNoTag: "تصویر {{ .image }} هیچ برچسبی ندارد و با شناسه تصویر ذخیره می‌شود" -ImageSyncFrontendTagsIgnored: "هیچ برچسبی برای تصویر {{ .image }} در گره منبع یافت نشد. برچسب‌های فرانت‌اند نادیده گرفته شدند." -ImageSyncHandlePrivateKey: "مدیریت کلید خصوصی گره همگام‌سازی تصویر" -ImageSyncHandlePublicKey: "مدیریت کلید عمومی گره همگام‌سازی تصویر" -ImageSyncTransfer: "شروع انتقال فایل موقت تصویر: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# برنامه موبایل ErrVerifyToken: 'تأیید توکن ناموفق بود. بازنشانی کرده و دوباره اسکن کنید.' ErrInvalidToken: 'توکن نامعتبر است. بازنشانی کرده و دوباره اسکن کنید.' ErrExpiredToken: 'توکن منقضی شده است. بازنشانی کرده و دوباره اسکن کنید.' -#cluster -ErrMasterDelete: "گره اصلی قابل حذف نیست. ابتدا گره‌های برده را حذف کنید." -ClusterNameIsExist: "نام خوشه از قبل وجود دارد." -AppStatusUnHealthy: "دریافت وضعیت برنامه ناموفق بود. وضعیت گره نصب را در لیست گره‌ها بررسی کنید." -MasterNodePortNotAvailable: "بررسی اتصال پورت {{ .port }} گره {{ .name }} ناموفق بود. تنظیمات دیواره آتش/گروه امنیتی و وضعیت گره اصلی را بررسی کنید." -ClusterMasterNotExist: "گره اصلی خوشه قطع شده است. گره‌های زیرین را حذف کنید." - -#ssl -ErrReqFailed: "درخواست {{.name}} ناموفق بود: {{ .err }}" - -#command +# خروجی فرمان Name: "نام" Command: "دستور" diff --git a/core/i18n/lang/ja.yaml b/core/i18n/lang/ja.yaml index ffddcf429..a4e70baed 100644 --- a/core/i18n/lang/ja.yaml +++ b/core/i18n/lang/ja.yaml @@ -1,84 +1,65 @@ +# 基本エラー ErrInvalidParams: '不正なリクエスト: {{ .detail }}' ErrTokenParse: 'トークンエラー: {{ .detail }}' ErrInitialPassword: '元のパスワードが違います' ErrInternalServer: '内部エラー: {{ .detail }}' +ErrInternalServerKey: "サーバー内部エラー: " ErrRecordExist: 'レコードが既に存在します' ErrRecordNotFound: 'レコードが見つかりません' ErrStructTransform: '型変換エラー: {{ .err }}' -ErrNotLogin: 'ログインしていません: {{ .detail }}' -ErrSessionDataNotFound: "現在のセッションは期限切れです!" -ErrSessionDataFormat: "現在のセッションデータ形式が異常です!" -ErrPasswordExpired: 'パスワード期限切れ: {{ .detail }}' ErrNotSupportType: '未対応のタイプ: {{ .name }}' -ErrProxy: 'リクエストに失敗しました: {{ .detail }}' -ErrApiConfigStatusInvalid: 'API利用不可: {{ .detail }}' -ErrApiConfigKeyInvalid: 'APIキーが無効です: {{ .detail }}' -ErrApiConfigIPInvalid: 'IPが許可されていません: {{ .detail }}' -ErrApiConfigDisable: 'APIは無効です: {{ .detail }}' -ErrApiConfigKeyTimeInvalid: 'タイムスタンプが無効です: {{ .detail }}' -ErrLoginLocked: "失敗回数が多すぎます。ログインは 5 分間一時的にロックされています。" +ErrDemoEnvironment: 'デモ環境では利用できません' +ErrCmdTimeout: 'コマンドがタイムアウトしました' +ErrPortInUsed: "{{ .name }} ポートはすでに使用されています!" +ErrFileNotFound: "{{ .name }} ファイルが存在しません" +ErrReqFailed: "{{.name}} リクエスト失敗: {{ .err }}" -# request +# リクエストとセキュリティ入口 ErrNoSuchHost: "要求されたサーバーが見つかりません {{ .err }}" ErrHttpReqNotFound: "要求されたリソースが見つかりません {{ .err }}" ErrHttpReqFailed: "リクエスト失敗 {{ .err }}" ErrHttpReqTimeOut: "リクエストタイムアウト {{ .err }}" ErrCreateHttpClient: "リクエストの作成に失敗しました {{ .err }}" +ErrProxy: 'リクエストに失敗しました: {{ .detail }}' ErrProxySetting: "プロキシサーバー情報が利用できません {{ .err }}、確認して再試行してください!" +ErrEntrance: "セキュリティ情報エラー、再確認してください!" ErrEntranceFormat: "セキュリティエントランス {{ .name }} は現在サポートされていません。確認して再試行してください!" -# common -ErrDemoEnvironment: 'デモ環境では利用できません' -ErrCmdTimeout: 'コマンドがタイムアウトしました' -ErrVMNotFound: "仮想マシンが存在しません" -ErrVMAlreadyExists: "仮想マシンは既に存在します" -ErrVMRunning: "仮想マシンは実行中です" -ErrVMLibvirtConnect: "libvirt への接続に失敗しました: {{ .detail }}" -ErrVMPermission: "仮想マシンを操作する権限がありません: {{ .detail }}" -ErrVMNetworkNotFound: "仮想マシンネットワークが存在しません: {{ .detail }}" -ErrVMInvalidPath: "仮想マシンのパスが無効です: {{ .detail }}" -ErrVMInvalidInput: "仮想マシンのパラメータが無効です: {{ .detail }}" -ErrVMCommandFailed: "仮想マシンコマンドの実行に失敗しました: {{ .err }}" -VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" -ErrEntrance: "セキュリティ情報エラー、再確認してください!" +# ログインとセキュリティ +ErrNotLogin: 'ログインしていません: {{ .detail }}' +ErrSessionDataNotFound: "現在のセッションは期限切れです!" +ErrSessionDataFormat: "現在のセッションデータ形式が異常です!" +ErrPasswordExpired: 'パスワード期限切れ: {{ .detail }}' +ErrLoginLocked: "失敗回数が多すぎます。ログインは 5 分間一時的にロックされています。" +ErrApiConfigStatusInvalid: 'API利用不可: {{ .detail }}' +ErrApiConfigKeyInvalid: 'APIキーが無効です: {{ .detail }}' +ErrApiConfigIPInvalid: 'IPが許可されていません: {{ .detail }}' +ErrApiConfigDisable: 'APIは無効です: {{ .detail }}' +ErrApiConfigKeyTimeInvalid: 'タイムスタンプが無効です: {{ .detail }}' +ErrPasskeyDisabled: "Passkeyを使用するにはHTTPSを有効にする必要があります" +ErrPasskeyNotConfigured: "Passkeyが設定されていません" +ErrPasskeyLimit: "Passkeyの上限に達しました(最大5個)" +ErrPasskeySession: "Passkeyセッションの有効期限が切れているか無効です" +ErrPasskeyDuplicate: "Passkeyは既に存在します" +ErrPasskeyVerify: "Passkeyの検証に失敗しました" + +# ユーザーと権限 +ErrNoSuchUser: "ユーザー情報が見つかりません。確認して再試行してください!" +ErrToMaster: "このユーザーにはマスターノードでこの操作を実行する権限がありません。確認して再試行してください!" +ErrToNode: "このユーザーにはこのノードでこの操作を実行する権限がありません。確認して再試行してください!" +ErrRBAC: "ユーザー権限が不足しているため、この操作を実行できません。確認して再試行してください!" +ErrNoneNode: "このユーザーにはノード権限がありません。管理者に連絡するか、確認して再試行してください!" +ErrOnlySuperAdmin: "この機能はスーパー管理者のみ使用できます!" +ErrRolePresetCannotDelete: "システム既定ロールは削除できません" +ErrRolePresetCannotUpdate: "システム既定ロールは更新できません" +ErrRoleBoundToUser: "このロールはすでにユーザーに紐付いているため削除できません" +ErrRolePresetCannotBind: "システム既定ロールはユーザーに割り当てできません" +ErrNodeAdminMasterForbidden: "マスターノードにノード管理者権限を追加することはできません" +ErrSuperAdminCannotDelete: "スーパー管理者ユーザーは削除できません" ErrGroupIsDefault: "デフォルトグループの削除はできません" ErrGroupIsInUse: "グループは使用中のため、削除できません。" -ErrAIProxyUserGroupIsDefault: "デフォルトユーザーグループは削除できません" -ErrAIProxyUserGroupInUse: "ユーザーグループは使用中のため、削除できません。" -ErrAIProxyUserGroupExists: "ユーザーグループ名は既に存在します。" -ErrAIProxyBackendAccountExists: "このモデルアカウントは既に AI ゲートウェイのアカウントプールにインポートされています。" -ErrAIProxyModelGroupInUse: "モデルグループは使用中のため、削除できません。" -ErrAIProxyModelGroupExists: "モデルグループ名は既に存在します。" -ErrAIProxySensitiveGroupInUse: "センシティブワードグループは使用中のため削除できません。" -ErrAIProxySensitiveGroupExists: "センシティブワードグループ名は既に存在します。" -ErrLocalDelete: "ローカルノードは削除できません!" -ErrPortInUsed: "{{ .name }} ポートはすでに使用されています!" -ErrInternalServerKey: "サーバー内部エラー: " -MasterNode: "マスターノード" -# app -CustomAppStoreFileValid: "アプリストアパッケージは .tar.gz 形式である必要があります" -ErrFileNotFound: "{{ .name }} ファイルが存在しません" -AppBackup: 'アプリケーションバックアップ' -AppBackupPush: 'アプリケーションバックアップファイル {{.file}} をノード {{ .name }} に転送' -ErrSourceTargetSame: 'ソースノードとターゲットノードは同じにできません!' -AppInstall: 'ノード {{ .targetNode }} にアプリケーション {{ .name }} をインストール' -AppInstallCheck: 'アプリケーションインストール環境を確認' - -# backup -ErrBackupInUsed: 'バックアップアカウントがスケジュールで使用中' -ErrBackupCheck: '接続テストに失敗しました: {{ .err }}' -ErrBackupLocal: "ローカルサーバーバックアップアカウントはこの操作をサポートしていません!" -ErrBackupPublic: "このバックアップアカウントが公開されていないと検出されました。再確認してください!" -ErrOSSConn: "最新バージョンを取得できません。外部ネットワーク接続を確認してください。" - - -#license +# ライセンス LicenseCheck: 'ライセンスが利用可能か確認する' ErrLicenseInUsed: 'このライセンスは既に紐付けられています。確認して再試行してください!' ErrLicenseExpired: 'このライセンスは期限切れです。確認して再試行してください!' @@ -108,21 +89,6 @@ ErrNodeUnbind: "そのノードはライセンスのバインド範囲内では ErrNodeBind: "そのノードはライセンスにバインドされています、確認して再試行してください" ErrNodeLocalRollback: "マスターノードでは直接ロールバックできません。'1pctl restore' を手動で実行してロールバックしてください" ErrIntlLicense: "現在のバージョンでは国際版ライセンスのインポートはまだサポートされていません。しばらくお待ちください!" - -# user -ErrNoSuchUser: "ユーザー情報が見つかりません。確認して再試行してください!" -ErrToMaster: "このユーザーにはマスターノードでこの操作を実行する権限がありません。確認して再試行してください!" -ErrToNode: "このユーザーにはこのノードでこの操作を実行する権限がありません。確認して再試行してください!" -ErrRBAC: "ユーザー権限が不足しているため、この操作を実行できません。確認して再試行してください!" -ErrNoneNode: "このユーザーにはノード権限がありません。管理者に連絡するか、確認して再試行してください!" -ErrOnlySuperAdmin: "この機能はスーパー管理者のみ使用できます!" -ErrRolePresetCannotDelete: "システム既定ロールは削除できません" -ErrRolePresetCannotUpdate: "システム既定ロールは更新できません" -ErrRoleBoundToUser: "このロールはすでにユーザーに紐付いているため削除できません" -ErrRolePresetCannotBind: "システム既定ロールはユーザーに割り当てできません" -ErrNodeAdminMasterForbidden: "マスターノードにノード管理者権限を追加することはできません" -ErrSuperAdminCannotDelete: "スーパー管理者ユーザーは削除できません" - InvalidRequestBodyType: "リクエストボディの形式が無効です。内容が要求された形式に準拠しているか確認してから再試行してください!" InvalidLicenseCodeType: "提供されたライセンスコードの形式が無効です。確認してから再試行してください!" LicenseNotFoundType: "ライセンスが見つかりません。提供されたライセンスに一致する記録がシステム内に存在しません。確認してから再試行してください!" @@ -133,10 +99,64 @@ InvalidAssigneeType: "ライセンス割り当ての対象ユーザーまたは LicenseUsageNotFoundType: "使用記録がありません。このライセンスはまだ有効化または使用されていません。確認してから再試行してください!" LicenseUsageLimitExceededType: "このライセンスは既に他のノードにバインドされています。確認してから再試行してください!" -# alert +# ノードとクラスター +MasterNode: "マスターノード" +Node: "ノード" +ErrLocalDelete: "ローカルノードは削除できません!" +ErrMasterDelete: "マスターノードを削除できません。スレーブノードを先に削除してください。" +ClusterNameIsExist: "クラスタ名は既に存在します。" +AppStatusUnHealthy: "アプリケーションのステータス取得が異常です。ノードリストでインストールノードのステータスを確認してください。" +MasterNodePortNotAvailable: "ノード {{ .name }} のポート {{ .port }} の接続性検証が失敗しました。ファイアウォール/セキュリティグループの設定とマスターノードのステータスを確認してください。" +ClusterMasterNotExist: "クラスタのマスターノードが切断されています。子ノードを削除してください。" + +# 仮想マシン +ErrVMNotFound: "仮想マシンが存在しません" +ErrVMAlreadyExists: "仮想マシンは既に存在します" +ErrVMRunning: "仮想マシンは実行中です" +ErrVMLibvirtConnect: "libvirt への接続に失敗しました: {{ .detail }}" +ErrVMPermission: "仮想マシンを操作する権限がありません: {{ .detail }}" +ErrVMNetworkNotFound: "仮想マシンネットワークが存在しません: {{ .detail }}" +ErrVMInvalidPath: "仮想マシンのパスが無効です: {{ .detail }}" +ErrVMInvalidInput: "仮想マシンのパラメータが無効です: {{ .detail }}" +ErrVMCommandFailed: "仮想マシンコマンドの実行に失敗しました: {{ .err }}" +VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" + +# アプリ +CustomAppStoreFileValid: "アプリストアパッケージは .tar.gz 形式である必要があります" +AppBackup: 'アプリケーションバックアップ' +AppBackupPush: 'アプリケーションバックアップファイル {{.file}} をノード {{ .name }} に転送' +ErrSourceTargetSame: 'ソースノードとターゲットノードは同じにできません!' +AppInstall: 'ノード {{ .targetNode }} にアプリケーション {{ .name }} をインストール' +AppInstallCheck: 'アプリケーションインストール環境を確認' + +# バックアップ +ErrBackupInUsed: 'バックアップアカウントがスケジュールで使用中' +ErrBackupCheck: '接続テストに失敗しました: {{ .err }}' +ErrBackupLocal: "ローカルサーバーバックアップアカウントはこの操作をサポートしていません!" +ErrBackupPublic: "このバックアップアカウントが公開されていないと検出されました。再確認してください!" +ErrOSSConn: "最新バージョンを取得できません。外部ネットワーク接続を確認してください。" +MvBackup: "データをバックアップディレクトリに移動" + +# アラート ErrAlertSync: "アラート情報の同期エラーです。後で再試行してください!" -#task +# AIゲートウェイ +ErrAIProxyUserGroupIsDefault: "デフォルトユーザーグループは削除できません" +ErrAIProxyUserGroupInUse: "ユーザーグループは使用中のため、削除できません。" +ErrAIProxyUserGroupExists: "ユーザーグループ名は既に存在します。" +ErrAIProxyBackendAccountExists: "このモデルアカウントは既に AI ゲートウェイのアカウントプールにインポートされています。" +ErrAIProxyModelGroupInUse: "モデルグループは使用中のため、削除できません。" +ErrAIProxyModelGroupExists: "モデルグループ名は既に存在します。" +ErrAIProxySensitiveGroupInUse: "センシティブワードグループは使用中のため削除できません。" +ErrAIProxySensitiveGroupExists: "センシティブワードグループ名は既に存在します。" +AIBenchmarkRun: "AIベンチマークを実行" + +# タスク TaskStart: "{{ .name }} タスク開始 [START]" TaskEnd: "{{ .name }} タスク終了 [COMPLETED]" TaskFailed: "{{ .name }} タスク失敗" @@ -150,6 +170,16 @@ TaskUpgrade: "アップグレード" TaskSync: '同期' TaskSyncForNode: "ノードデータを同期" TaskBackup: "バックアップ" +TaskPush: "送信" +TaskRsync: "Sync" +SuccessStatus: "{{ .name }} 成功" +FailedStatus: "{{ .name }} 失敗 {{ .err }}" +Start: "開始" +SubTask: "サブタスク" +Skip: "エラーを無視して続行..." +Success: "成功" + +# エージェント一括タスク BatchInstallAgent: "エージェントの一括インストール" DispatchAgentInstallTasks: "エージェントインストールタスクを配信" BatchUpgradeAgent: "エージェントの一括アップグレード" @@ -183,20 +213,15 @@ AgentOperateStart: "開始" AgentOperateStop: "停止" AgentOperateRestart: "再起動" AgentOperateDelete: "削除" -SuccessStatus: "{{ .name }} 成功" -FailedStatus: "{{ .name }} 失敗 {{ .err }}" -Start: "開始" -SubTask: "サブタスク" -Skip: "エラーを無視して続行..." + +# アプリとスキルのタスク PushAppInstallTaskToNode: "ノード [{{ .name }}] にアプリインストールタスクを送信" -TaskPush: "送信" AppInstallTask: "アプリインストールタスク" PushAppFailed: "アプリインストールタスクの送信に失敗しました" SkillHubInstallTask: "スキルをインストール [{{ .name }}]" SkillHubInstallToTarget: "ターゲットにスキルをインストール [{{ .name }}]" -Success: "成功" -#script +# スクリプトライブラリ ScriptLibrary: "スクリプトライブラリ" RemoteScriptLibrary: "リモートスクリプトライブラリ" ScriptSyncSkip: "現在のスクリプトライブラリは最新バージョンです!" @@ -204,7 +229,7 @@ DownloadData: "スクリプトライブラリファイル data.yaml をダウン DownloadPackage: "スクリプトライブラリパッケージをダウンロード中" AnalyticCompletion: "解析が完了しました、データベースに同期しています..." -Node: "ノード" +# ノード同期 SyncNode: "データをノード {{ .name }} に同期" LocalName: "'local'名称はシステムのローカル識別のみに使用されます" SyncPackageData: "同期データのパッケージ化" @@ -220,7 +245,7 @@ SyncCustomApp: "カスタムアプリ" SyncLanguage: "システム言語" SyncEdition: "実行リージョン" -#upgrade node +# ノードアップグレード NodeUpgrade: "{{ .name }} ノードのアップグレード" UpgradeCheck: "ノードの更新を確認" UpgradeCheckLocal: "ローカルノードは一括アップグレードをサポートしていないため、スキップします..." @@ -233,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "自動アップグレードノードの読み込み AutoUpgradeNodes: "自動アップグレードノード: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "自動アップグレードノードのステータス更新に失敗しました、エラー: {{ .err }}" -#add node +# ノード追加 MasterData: "マスターノードデータ" LoadSftpClient: "SFTPクライアントの取得" PackageMasterData: "マスターノードのバックアップパッケージを生成" UploadBackup: "バックアップデータをアップロード" -MvBackup: "データをバックアップディレクトリに移動" TaskAddNode: "ノードを追加" LoadNodeArch: "ノードアーキテクチャ情報を取得" LoadNodeArchDetail: "検出されたマスターノードアーキテクチャ: {{ .local }}, 子ノードアーキテクチャ: {{ .node }}" @@ -251,7 +275,35 @@ SendAgent: "ノードインストールパッケージを送信" StartService: "サービスを開始" NoBackupNode: "現在バックアップノードが空です。保存するバックアップノードを選択して再試行してください!" -#cmd +# ノードファイルとイメージ同期 +LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." +HandlePrivateKey: "Handle node private key" +HandlePublicKey: "Handle node public key" +ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" +NodeFile: "Node file" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "Save image {{ .image }}" +ImageSyncSaveTags: "Save image tags {{ .tags }}" +ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" +ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" +ImageSyncClean: "Clean temporary files for image {{ .image }}" +ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" +ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." +ImageSyncHandlePrivateKey: "Handle image sync node private key" +ImageSyncHandlePublicKey: "Handle image sync node public key" +ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# コマンドライン +SudoHelper: "{{.cmd}}を使用するか、ルートユーザーに切り替えてください" +UsernameNeed: "Enterprise版では --username を指定する必要があります" +DBConnErr: "エラー: データベース接続の初期化に失敗しました、{{ .err }}" +SystemVersion: "バージョン: " +SystemMode: "モード: " + +# コマンドライン - アプリ AppVersion: "アプリバージョン" AppCommands: "アプリ関連のコマンド" AppInit: "アプリを初期化します" @@ -263,12 +315,14 @@ AppMissVersion: "アプリバージョンがありません、-vを使用して AppVersionExist: "バージョンはすでに存在します!" AppCreateSuccessful: "創造は成功しました!" AppWriteErr: "file {{ .name }} write failed {{ .err }}" -SudoHelper: "{{.cmd}}を使用するか、ルートユーザーに切り替えてください" -UsernameNeed: "Enterprise版では --username を指定する必要があります" + +# コマンドライン - 監視IP ListenIPCommands: "リスニングIPを切り替えます" ListenIPv4: "IPv4で聞いてください" ListenIPv6: "IPv6で聞く" ListenChangeSuccessful: "切り替え成功!{{.Value}}で聞いています" + +# コマンドライン - リセット ResetCommands: "システム情報をリセットします" ResetMFA: "1パネルの2要素認証をキャンセルします" ResetHttps: "1Panel HTTPSログインをキャンセルします" @@ -276,12 +330,19 @@ ResetEntrance: "1パネルの安全な入り口をキャンセルします" ResetIPs: "1パネル認定IP制限をキャンセルします" ResetDomain: "1パネルドメインバインディングをキャンセルします" ResetPasskey: "1Panel のパスキーをクリアします" + +# コマンドライン - ユーザー UserList: "1Panel ユーザー一覧を取得します" UserTableName: "名前" UserTableMFAStatus: "MFA ステータス" UserTableSuperAdmin: "スーパー管理者" UserTableCreatedAt: "作成日時" UserEmptyList: "ユーザーが見つかりません" +UserInfo: "パネル情報を取得します" +UserInfoAddr: "パネルアドレス: " +UserInfoPassHelp: "ヒント: パスワードを変更するには、コマンドを実行できます。" + +# コマンドライン - 復元 RestoreCommands: "1Panel のサービスとデータをロールバック" RestoreNoSuchFile: "ロールバックに使えるファイルが見つかりません" RestoreStep1: "(1/5){{ .name }} ディレクトリから 1Panel のサービスとデータのロールバックを開始しています..." @@ -290,6 +351,8 @@ RestoreStep3: "(3/5)1Panel スクリプトのロールバックが完了し RestoreStep4: "(4/5)1Panel サービスのロールバックが完了しました" RestoreStep5: "(5/5)1Panel データのロールバックが完了しました" RestoreSuccessful: "ロールバックが完了しました。{{ .version }} に戻し、サービスを再起動しています..." + +# コマンドライン - 更新 UpdateCommands: "パネル情報を更新します" UpdateUser: "ユーザー情報を更新します" UpdatePassword: "ユーザーパスワードを更新します" @@ -316,50 +379,12 @@ UpdatePortResult: "パネルポート: {{ .name }}" UpdatePortFirewallAdd: "ファイアウォールポートルールの追加に失敗した{{ .err }}、ファイアウォールルールに{{ .name }}ポートを手動で追加してください。" UpdatePortFirewallDel: "エラー: ファイアウォールポートの削除に失敗しました、{{ .err }}" UpdatePortFirewallReload: "ファイアウォールのリロードに失敗しました{{ .err }}、ファイアウォールを手動でリロードしてください。" -UserInfo: "パネル情報を取得します" -UserInfoAddr: "パネルアドレス: " -UserInfoPassHelp: "ヒント: パスワードを変更するには、コマンドを実行できます。" -DBConnErr: "エラー: データベース接続の初期化に失敗しました、{{ .err }}" -SystemVersion: "バージョン: " -SystemMode: "モード: " -#exchange -LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." -HandlePrivateKey: "Handle node private key" -HandlePublicKey: "Handle node public key" -ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" -TaskRsync: "Sync" -NodeFile: "Node file" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "Save image {{ .image }}" -ImageSyncSaveTags: "Save image tags {{ .tags }}" -ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" -ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" -ImageSyncClean: "Clean temporary files for image {{ .image }}" -ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" -ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." -ImageSyncHandlePrivateKey: "Handle image sync node private key" -ImageSyncHandlePublicKey: "Handle image sync node public key" -ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# モバイルアプリ ErrVerifyToken: 'トークンの検証エラーです。リセット後、再度QRコードをスキャンしてください。' ErrInvalidToken: '無効なトークンです。リセット後、再度QRコードをスキャンしてください。' ErrExpiredToken: 'トークンの有効期限が切れました。リセット後、再度QRコードをスキャンしてください。' -#cluster -ErrMasterDelete: "マスターノードを削除できません。スレーブノードを先に削除してください。" -ClusterNameIsExist: "クラスタ名は既に存在します。" -AppStatusUnHealthy: "アプリケーションのステータス取得が異常です。ノードリストでインストールノードのステータスを確認してください。" -MasterNodePortNotAvailable: "ノード {{ .name }} のポート {{ .port }} の接続性検証が失敗しました。ファイアウォール/セキュリティグループの設定とマスターノードのステータスを確認してください。" -ClusterMasterNotExist: "クラスタのマスターノードが切断されています。子ノードを削除してください。" - -#ssl -ErrReqFailed: "{{.name}} リクエスト失敗: {{ .err }}" - -#command +# コマンドエクスポート Name: "名前" Command: "コマンド" diff --git a/core/i18n/lang/ko.yaml b/core/i18n/lang/ko.yaml index 61d17f18a..2c009d45a 100644 --- a/core/i18n/lang/ko.yaml +++ b/core/i18n/lang/ko.yaml @@ -1,83 +1,65 @@ +# 기본 오류 ErrInvalidParams: '잘못된 요청: {{ .detail }}' ErrTokenParse: '토큰 오류: {{ .detail }}' ErrInitialPassword: '원래 비밀번호가 틀립니다' ErrInternalServer: '서버 오류: {{ .detail }}' +ErrInternalServerKey: "서버 내부 오류:" ErrRecordExist: '레코드가 이미 있습니다' ErrRecordNotFound: '레코드를 찾을 수 없습니다' ErrStructTransform: '형 변환 실패: {{ .err }}' -ErrNotLogin: '로그인하지 않음: {{ .detail }}' -ErrSessionDataNotFound: "현재 세션이 만료되었습니다" -ErrSessionDataFormat: "현재 세션 데이터 형식이 비정상입니다" -ErrPasswordExpired: '비밀번호 만료: {{ .detail }}' ErrNotSupportType: '지원하지 않는 타입: {{ .name }}' -ErrProxy: '요청 실패: {{ .detail }}' -ErrApiConfigStatusInvalid: 'API 사용 중지: {{ .detail }}' -ErrApiConfigKeyInvalid: 'API 키가 잘못됨: {{ .detail }}' -ErrApiConfigIPInvalid: 'IP 허용되지 않음: {{ .detail }}' -ErrApiConfigDisable: 'API 접근 금지: {{ .detail }}' -ErrApiConfigKeyTimeInvalid: '타임스탬프 오류: {{ .detail }}' -ErrLoginLocked: "실패한 시도가 너무 많습니다. 로그인이 5분 동안 일시적으로 잠겼습니다." +ErrDemoEnvironment: '데모 환경에서는 불가' +ErrCmdTimeout: '명령이 시간 초과했습니다' +ErrPortInUsed: "{{ .name }} 포트가 이미 사용 중입니다" +ErrFileNotFound: "{{ .name }} 파일이 존재하지 않습니다" +ErrReqFailed: "{{.name}} 요청 실패: {{ .err }}" -# request +# 요청 및 보안 입구 ErrNoSuchHost: "요청한 서버를 찾을 수 없습니다 {{ .err }}" ErrHttpReqNotFound: "요청한 리소스를 찾을 수 없습니다 {{ .err }}" ErrHttpReqFailed: "요청 실패 {{ .err }}" ErrHttpReqTimeOut: "요청 시간이 초과되었습니다 {{ .err }}" ErrCreateHttpClient: "요청 생성 실패 {{ .err }}" +ErrProxy: '요청 실패: {{ .detail }}' ErrProxySetting: "프록시 서버 정보를 사용할 수 없음 {{ .err }}, 확인 후 다시 시도하세요" +ErrEntrance: "보안 정보 오류입니다. 확인 후 다시 시도하십시오" ErrEntranceFormat: "보안 입구 {{ .name }}은(는) 현재 지원되지 않습니다. 확인 후 다시 시도해 주세요" -# common -ErrDemoEnvironment: '데모 환경에서는 불가' -ErrCmdTimeout: '명령이 시간 초과했습니다' -ErrVMNotFound: "가상 머신이 존재하지 않습니다" -ErrVMAlreadyExists: "가상 머신이 이미 존재합니다" -ErrVMRunning: "가상 머신이 실행 중입니다" -ErrVMLibvirtConnect: "libvirt 연결 실패: {{ .detail }}" -ErrVMPermission: "가상 머신 작업 권한이 없습니다: {{ .detail }}" -ErrVMNetworkNotFound: "가상 머신 네트워크가 존재하지 않습니다: {{ .detail }}" -ErrVMInvalidPath: "가상 머신 경로가 유효하지 않습니다: {{ .detail }}" -ErrVMInvalidInput: "가상 머신 매개변수가 유효하지 않습니다: {{ .detail }}" -ErrVMCommandFailed: "가상 머신 명령 실행 실패: {{ .err }}" -VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" -ErrEntrance: "보안 정보 오류입니다. 확인 후 다시 시도하십시오" +# 로그인 및 보안 +ErrNotLogin: '로그인하지 않음: {{ .detail }}' +ErrSessionDataNotFound: "현재 세션이 만료되었습니다" +ErrSessionDataFormat: "현재 세션 데이터 형식이 비정상입니다" +ErrPasswordExpired: '비밀번호 만료: {{ .detail }}' +ErrLoginLocked: "실패한 시도가 너무 많습니다. 로그인이 5분 동안 일시적으로 잠겼습니다." +ErrApiConfigStatusInvalid: 'API 사용 중지: {{ .detail }}' +ErrApiConfigKeyInvalid: 'API 키가 잘못됨: {{ .detail }}' +ErrApiConfigIPInvalid: 'IP 허용되지 않음: {{ .detail }}' +ErrApiConfigDisable: 'API 접근 금지: {{ .detail }}' +ErrApiConfigKeyTimeInvalid: '타임스탬프 오류: {{ .detail }}' +ErrPasskeyDisabled: "Passkey를 사용하려면 HTTPS를 활성화해야 합니다" +ErrPasskeyNotConfigured: "Passkey가 구성되지 않았습니다" +ErrPasskeyLimit: "Passkey 개수가 한도에 도달했습니다(최대 5개)" +ErrPasskeySession: "Passkey 세션이 만료되었거나 유효하지 않습니다" +ErrPasskeyDuplicate: "Passkey가 이미 존재합니다" +ErrPasskeyVerify: "Passkey 검증에 실패했습니다" + +# 사용자 및 권한 +ErrNoSuchUser: "사용자 정보를 찾을 수 없습니다. 확인 후 다시 시도하세요" +ErrToMaster: "이 사용자는 마스터 노드에서 이 작업을 수행할 권한이 없습니다. 확인 후 다시 시도하세요" +ErrToNode: "이 사용자는 이 노드에서 이 작업을 수행할 권한이 없습니다. 확인 후 다시 시도하세요" +ErrRBAC: "사용자 권한이 부족하여 이 작업을 수행할 수 없습니다. 확인 후 다시 시도하세요" +ErrNoneNode: "이 사용자에게는 노드 권한이 없습니다. 관리자에게 문의하거나 확인 후 다시 시도하세요" +ErrOnlySuperAdmin: "슈퍼 관리자만 이 기능을 사용할 수 있습니다" +ErrRolePresetCannotDelete: "시스템 기본 역할은 삭제할 수 없습니다" +ErrRolePresetCannotUpdate: "시스템 기본 역할은 수정할 수 없습니다" +ErrRoleBoundToUser: "이 역할은 이미 사용자에게 연결되어 있어 삭제할 수 없습니다" +ErrRolePresetCannotBind: "시스템 기본 역할은 사용자에게 할당할 수 없습니다" +ErrNodeAdminMasterForbidden: "마스터 노드에는 노드 관리자 권한을 추가할 수 없습니다" +ErrSuperAdminCannotDelete: "슈퍼 관리자 사용자는 삭제할 수 없습니다" ErrGroupIsDefault: "기본 그룹은 삭제할 수 없습니다" ErrGroupIsInUse: "그룹이 사용 중이므로 삭제할 수 없습니다." -ErrAIProxyUserGroupIsDefault: "기본 사용자 그룹은 삭제할 수 없습니다" -ErrAIProxyUserGroupInUse: "사용자 그룹이 사용 중이므로 삭제할 수 없습니다." -ErrAIProxyUserGroupExists: "사용자 그룹 이름이 이미 존재합니다." -ErrAIProxyBackendAccountExists: "이 모델 계정은 이미 AI 게이트웨이 계정 풀에 가져왔습니다." -ErrAIProxyModelGroupInUse: "모델 그룹이 사용 중이므로 삭제할 수 없습니다." -ErrAIProxyModelGroupExists: "모델 그룹 이름이 이미 존재합니다." -ErrAIProxySensitiveGroupInUse: "민감 단어 그룹이 사용 중이므로 삭제할 수 없습니다." -ErrAIProxySensitiveGroupExists: "민감 단어 그룹 이름이 이미 존재합니다." -ErrLocalDelete: "로컬 노드는 삭제할 수 없습니다" -ErrPortInUsed: "{{ .name }} 포트가 이미 사용 중입니다" -ErrInternalServerKey: "서버 내부 오류:" -MasterNode: "마스터 노드" -# app -CustomAppStoreFileValid: "앱 스토어 패키지는 .tar.gz 형식이어야 합니다" -ErrFileNotFound: "{{ .name }} 파일이 존재하지 않습니다" -AppBackup: '애플리케이션 백업' -AppBackupPush: '애플리케이션 백업 파일 {{.file}}을(를) 노드 {{ .name }}(으)로 전송' -ErrSourceTargetSame: '소스 노드와 대상 노드는 동일할 수 없습니다' -AppInstall: '노드 {{ .targetNode }}에 애플리케이션 {{ .name }} 설치' -AppInstallCheck: '애플리케이션 설치 환경 확인' - -# backup -ErrBackupInUsed: '백업 계정이 예약에 사용 중' -ErrBackupCheck: '연결 테스트 실패: {{ .err }}' -ErrBackupLocal: "로컬 서버 백업 계정은 이 작업을 지원하지 않습니다" -ErrBackupPublic: "이 백업 계정이 공개된 것으로 감지되지 않았습니다. 다시 확인하십시오" -ErrOSSConn: "최신 버전을 가져올 수 없습니다. 외부 네트워크 연결을 확인하십시오." - -#license +# 라이선스 LicenseCheck: '라이선스 사용 가능 여부 확인' ErrLicenseInUsed: '해당 라이선스가 이미 연결되었습니다. 확인 후 다시 시도하세요' ErrLicenseExpired: '해당 라이선스가 만료되었습니다. 확인 후 다시 시도하세요' @@ -107,21 +89,6 @@ ErrNodeUnbind: "이 노드가 라이선스 바인딩 범위에 있지 않음을 ErrNodeBind: "이 노드가 이미 라이선스에 바인딩되어 있음을 감지하였습니다. 다시 확인하고 시도해 주세요" ErrNodeLocalRollback: "마스터 노드는 직접 롤백을 지원하지 않습니다. '1pctl restore'를 수동으로 실행해 롤백하세요" ErrIntlLicense: "현재 버전에서는 국제판 라이선스 가져오기를 아직 지원하지 않습니다. 곧 제공될 예정입니다" - -# user -ErrNoSuchUser: "사용자 정보를 찾을 수 없습니다. 확인 후 다시 시도하세요" -ErrToMaster: "이 사용자는 마스터 노드에서 이 작업을 수행할 권한이 없습니다. 확인 후 다시 시도하세요" -ErrToNode: "이 사용자는 이 노드에서 이 작업을 수행할 권한이 없습니다. 확인 후 다시 시도하세요" -ErrRBAC: "사용자 권한이 부족하여 이 작업을 수행할 수 없습니다. 확인 후 다시 시도하세요" -ErrNoneNode: "이 사용자에게는 노드 권한이 없습니다. 관리자에게 문의하거나 확인 후 다시 시도하세요" -ErrOnlySuperAdmin: "슈퍼 관리자만 이 기능을 사용할 수 있습니다" -ErrRolePresetCannotDelete: "시스템 기본 역할은 삭제할 수 없습니다" -ErrRolePresetCannotUpdate: "시스템 기본 역할은 수정할 수 없습니다" -ErrRoleBoundToUser: "이 역할은 이미 사용자에게 연결되어 있어 삭제할 수 없습니다" -ErrRolePresetCannotBind: "시스템 기본 역할은 사용자에게 할당할 수 없습니다" -ErrNodeAdminMasterForbidden: "마스터 노드에는 노드 관리자 권한을 추가할 수 없습니다" -ErrSuperAdminCannotDelete: "슈퍼 관리자 사용자는 삭제할 수 없습니다" - InvalidRequestBodyType: "요청 본문 형식이 잘못되었습니다. 내용이 형식 요구 사항을 충족하는지 확인한 후 다시 시도하세요" InvalidLicenseCodeType: "제공된 라이선스 코드 형식이 잘못되었습니다. 확인 후 다시 시도하세요" LicenseNotFoundType: "라이선스가 존재하지 않습니다. 시스템에서 제공된 라이선스와 일치하는 기록을 찾을 수 없습니다. 확인 후 다시 시도하세요" @@ -132,10 +99,64 @@ InvalidAssigneeType: "라이선스 할당 대상 사용자 또는 장치 정보 LicenseUsageNotFoundType: "사용 기록이 없습니다. 이 라이선스는 아직 활성화되거나 사용되지 않았습니다. 확인 후 다시 시도하세요" LicenseUsageLimitExceededType: "이 라이선스는 이미 다른 노드에 연결되었습니다. 확인 후 다시 시도하세요" -# alert +# 노드 및 클러스터 +MasterNode: "마스터 노드" +Node: "노드" +ErrLocalDelete: "로컬 노드는 삭제할 수 없습니다" +ErrMasterDelete: "마스터 노드를 삭제할 수 없습니다. 슬레이브 노드를 먼저 삭제하세요." +ClusterNameIsExist: "클러스터 이름이 이미 존재합니다." +AppStatusUnHealthy: "애플리케이션 상태 획득이 비정상입니다. 노드 목록에서 설치 노드 상태를 확인하세요." +MasterNodePortNotAvailable: "노드 {{ .name }} 포트 {{ .port }} 연결성 검증에 실패했습니다. 방화벽/보안 그룹 설정 및 마스터 노드 상태를 확인하세요." +ClusterMasterNotExist: "클러스터의 마스터 노드가 연결이 끊어졌습니다. 자식 노드를 삭제하세요." + +# 가상 머신 +ErrVMNotFound: "가상 머신이 존재하지 않습니다" +ErrVMAlreadyExists: "가상 머신이 이미 존재합니다" +ErrVMRunning: "가상 머신이 실행 중입니다" +ErrVMLibvirtConnect: "libvirt 연결 실패: {{ .detail }}" +ErrVMPermission: "가상 머신 작업 권한이 없습니다: {{ .detail }}" +ErrVMNetworkNotFound: "가상 머신 네트워크가 존재하지 않습니다: {{ .detail }}" +ErrVMInvalidPath: "가상 머신 경로가 유효하지 않습니다: {{ .detail }}" +ErrVMInvalidInput: "가상 머신 매개변수가 유효하지 않습니다: {{ .detail }}" +ErrVMCommandFailed: "가상 머신 명령 실행 실패: {{ .err }}" +VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" + +# 앱 +CustomAppStoreFileValid: "앱 스토어 패키지는 .tar.gz 형식이어야 합니다" +AppBackup: '애플리케이션 백업' +AppBackupPush: '애플리케이션 백업 파일 {{.file}}을(를) 노드 {{ .name }}(으)로 전송' +ErrSourceTargetSame: '소스 노드와 대상 노드는 동일할 수 없습니다' +AppInstall: '노드 {{ .targetNode }}에 애플리케이션 {{ .name }} 설치' +AppInstallCheck: '애플리케이션 설치 환경 확인' + +# 백업 +ErrBackupInUsed: '백업 계정이 예약에 사용 중' +ErrBackupCheck: '연결 테스트 실패: {{ .err }}' +ErrBackupLocal: "로컬 서버 백업 계정은 이 작업을 지원하지 않습니다" +ErrBackupPublic: "이 백업 계정이 공개된 것으로 감지되지 않았습니다. 다시 확인하십시오" +ErrOSSConn: "최신 버전을 가져올 수 없습니다. 외부 네트워크 연결을 확인하십시오." +MvBackup: "데이터를 백업 디렉터리로 이동" + +# 알림 ErrAlertSync: "경고 정보 동기화 오류, 다시 확인하고 시도해 주세요" -#task +# AI 게이트웨이 +ErrAIProxyUserGroupIsDefault: "기본 사용자 그룹은 삭제할 수 없습니다" +ErrAIProxyUserGroupInUse: "사용자 그룹이 사용 중이므로 삭제할 수 없습니다." +ErrAIProxyUserGroupExists: "사용자 그룹 이름이 이미 존재합니다." +ErrAIProxyBackendAccountExists: "이 모델 계정은 이미 AI 게이트웨이 계정 풀에 가져왔습니다." +ErrAIProxyModelGroupInUse: "모델 그룹이 사용 중이므로 삭제할 수 없습니다." +ErrAIProxyModelGroupExists: "모델 그룹 이름이 이미 존재합니다." +ErrAIProxySensitiveGroupInUse: "민감 단어 그룹이 사용 중이므로 삭제할 수 없습니다." +ErrAIProxySensitiveGroupExists: "민감 단어 그룹 이름이 이미 존재합니다." +AIBenchmarkRun: "AI 벤치마크 실행" + +# 작업 TaskStart: "{{ .name }} 작업 시작 [START]" TaskEnd: "{{ .name }} 작업 종료 [COMPLETED]" TaskFailed: "{{ .name }} 작업 실패" @@ -149,6 +170,16 @@ TaskUpgrade: "업그레이드" TaskSync: '동기화' TaskSyncForNode: "노드 데이터 동기화" TaskBackup: "백업" +TaskPush: "전송" +TaskRsync: "Sync" +SuccessStatus: "{{ .name }} 성공" +FailedStatus: "{{ .name }} 실패 {{ .err }}" +Start: "시작" +SubTask: "서브 작업" +Skip: "오류 무시하고 계속..." +Success: "성공" + +# 에이전트 일괄 작업 BatchInstallAgent: "에이전트 일괄 설치" DispatchAgentInstallTasks: "에이전트 설치 작업 배포" BatchUpgradeAgent: "에이전트 일괄 업그레이드" @@ -182,20 +213,15 @@ AgentOperateStart: "시작" AgentOperateStop: "중지" AgentOperateRestart: "재시작" AgentOperateDelete: "삭제" -SuccessStatus: "{{ .name }} 성공" -FailedStatus: "{{ .name }} 실패 {{ .err }}" -Start: "시작" -SubTask: "서브 작업" -Skip: "오류 무시하고 계속..." + +# 앱 및 스킬 작업 PushAppInstallTaskToNode: "노드 [{{ .name }}]로 앱 설치 작업 전송" -TaskPush: "전송" AppInstallTask: "앱 설치 작업" PushAppFailed: "앱 설치 작업 전송 실패" SkillHubInstallTask: "스킬 설치 [{{ .name }}]" SkillHubInstallToTarget: "대상에 스킬 설치 [{{ .name }}]" -Success: "성공" -#script +# 스크립트 라이브러리 ScriptLibrary: "스크립트 라이브러리" RemoteScriptLibrary: "원격 스크립트 라이브러리" ScriptSyncSkip: "현재 스크립트 라이브러리가 이미 최신 버전입니다" @@ -203,7 +229,7 @@ DownloadData: "스크립트 라이브러리 파일 data.yaml 다운로드 중" DownloadPackage: "스크립트 라이브러리 패키지 다운로드 중" AnalyticCompletion: "분석 완료, 데이터베이스에 동기화 중..." -Node: "노드" +# 노드 동기화 SyncNode: "데이터를 노드 {{ .name }}(으)로 동기화" LocalName: "'local' 이름은 시스템 로컬 식별 전용으로 사용됩니다" SyncPackageData: "동기화 데이터 패키징" @@ -219,7 +245,7 @@ SyncCustomApp: "사용자 정의 앱" SyncLanguage: "시스템 언어" SyncEdition: "운영 지역" -#upgrade node +# 노드 업그레이드 NodeUpgrade: "{{ .name }} 노드 업그레이드" UpgradeCheck: "노드 업데이트 확인" UpgradeCheckLocal: "로컬 노드는 일괄 업그레이드를 지원하지 않으므로 건너뜁니다..." @@ -232,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "자동 업그레이드 노드 로드 실패, 오류 AutoUpgradeNodes: "자동 업그레이드 노드: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "자동 업그레이드 노드 상태 업데이트 실패, 오류: {{ .err }}" -#add node +# 노드 추가 MasterData: "마스터 노드 데이터" LoadSftpClient: "SFTP 클라이언트 가져오기" PackageMasterData: "마스터 노드 백업 패키지 생성" UploadBackup: "백업 데이터 업로드" -MvBackup: "데이터를 백업 디렉터리로 이동" TaskAddNode: "노드 추가" LoadNodeArch: "노드 아키텍처 정보 가져오기" LoadNodeArchDetail: "감지된 마스터 노드 아키텍처: {{ .local }}, 자식 노드 아키텍처: {{ .node }}" @@ -250,7 +275,35 @@ SendAgent: "노드 설치 패키지 배포" StartService: "서비스 시작" NoBackupNode: "현재 백업 노드가 비어 있습니다. 저장할 백업 노드를 선택한 후 다시 시도하십시오" -# CMD +# 노드 파일 및 이미지 동기화 +LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." +HandlePrivateKey: "Handle node private key" +HandlePublicKey: "Handle node public key" +ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" +NodeFile: "Node file" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "Save image {{ .image }}" +ImageSyncSaveTags: "Save image tags {{ .tags }}" +ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" +ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" +ImageSyncClean: "Clean temporary files for image {{ .image }}" +ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" +ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." +ImageSyncHandlePrivateKey: "Handle image sync node private key" +ImageSyncHandlePublicKey: "Handle image sync node public key" +ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# 명령줄 +SudoHelper: "{{ .cmd }} 명령을 사용하거나 root 사용자로 전환하세요." +UsernameNeed: "Enterprise 버전은 --username을 지정해야 합니다" +DBConnErr: "오류: 데이터베이스 연결 초기화 실패 {{ .err }}" +SystemVersion: "버전: " +SystemMode: "모드: " + +# 명령줄 - 앱 AppVersion: "앱 버전" AppCommands: "앱 관련 명령어" AppInit: "앱 초기화" @@ -262,12 +315,14 @@ AppMissVersion: "앱 버전이 없습니다. -v 옵션으로 지정하세요." AppVersionExist: "버전이 이미 존재합니다" AppCreateSuccessful: "생성 성공" AppWriteErr: "파일 {{ .name }} 쓰기 실패 {{ .err }}" -SudoHelper: "{{ .cmd }} 명령을 사용하거나 root 사용자로 전환하세요." -UsernameNeed: "Enterprise 버전은 --username을 지정해야 합니다" + +# 명령줄 - 수신 IP ListenIPCommands: "IP 변경" ListenIPv4: "IPv4 에서 수신 대기" ListenIPv6: "IPv6 에서 수신 대기" ListenChangeSuccessful: "변경 성공 현재 {{ .value }}에서 수신 대기 중입니다." + +# 명령줄 - 재설정 ResetCommands: "시스템 정보 초기화" ResetMFA: "1Panel 이중 인증 취소" ResetHttps: "1Panel HTTPS 로그인 취소" @@ -275,12 +330,19 @@ ResetEntrance: "1Panel 보안 입구 취소" ResetIPs: "1Panel 허용 IP 제한 취소" ResetDomain: "1Panel 도메인 바인딩 취소" ResetPasskey: "1Panel 패스키 초기화" + +# 명령줄 - 사용자 UserList: "1Panel 사용자 목록 가져오기" UserTableName: "이름" UserTableMFAStatus: "MFA 상태" UserTableSuperAdmin: "슈퍼 관리자" UserTableCreatedAt: "생성일" UserEmptyList: "사용자를 찾을 수 없습니다" +UserInfo: "패널 정보 가져오기" +UserInfoAddr: "패널 주소: " +UserInfoPassHelp: "팁: 비밀번호를 변경하려면 다음 명령어를 실행할 수 있습니다: " + +# 명령줄 - 복원 RestoreCommands: "1Panel 서비스와 데이터를 롤백" RestoreNoSuchFile: "롤백 파일을 찾을 수 없습니다" RestoreStep1: "(1/5) {{ .name }} 디렉터리에서 1Panel 서비스와 데이터의 롤백을 시작합니다..." @@ -289,6 +351,8 @@ RestoreStep3: "(3/5) 1Panel 스크립트 롤백 완료" RestoreStep4: "(4/5) 1Panel 서비스 롤백 완료" RestoreStep5: "(5/5) 1Panel 데이터 롤백 완료" RestoreSuccessful: "롤백이 완료되었습니다. {{ .version }}(으)로 되돌리고 서비스를 다시 시작합니다..." + +# 명령줄 - 업데이트 UpdateCommands: "패널 정보 업데이트" UpdateUser: "사용자 정보 업데이트" UpdatePassword: "사용자 비밀번호 업데이트" @@ -315,50 +379,12 @@ UpdatePortResult: "패널 포트: {{ .name }}" UpdatePortFirewallAdd: "방화벽 포트 규칙 추가 실패 {{ .err }}, 방화벽 규칙에 {{ .name }} 포트를 수동으로 추가하세요." UpdatePortFirewallDel: "오류: 방화벽 포트 삭제 실패 {{ .err }}" UpdatePortFirewallReload: "방화벽 다시 로드 실패 {{ .err }}, 방화벽을 수동으로 다시 로드하세요." -UserInfo: "패널 정보 가져오기" -UserInfoAddr: "패널 주소: " -UserInfoPassHelp: "팁: 비밀번호를 변경하려면 다음 명령어를 실행할 수 있습니다: " -DBConnErr: "오류: 데이터베이스 연결 초기화 실패 {{ .err }}" -SystemVersion: "버전: " -SystemMode: "모드: " -#exchange -LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." -HandlePrivateKey: "Handle node private key" -HandlePublicKey: "Handle node public key" -ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" -TaskRsync: "Sync" -NodeFile: "Node file" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "Save image {{ .image }}" -ImageSyncSaveTags: "Save image tags {{ .tags }}" -ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" -ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" -ImageSyncClean: "Clean temporary files for image {{ .image }}" -ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" -ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." -ImageSyncHandlePrivateKey: "Handle image sync node private key" -ImageSyncHandlePublicKey: "Handle image sync node public key" -ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# 모바일 앱 ErrVerifyToken: '토큰 검증 오류가 발생했습니다. 재설정 후 다시 스캔해 주세요.' ErrInvalidToken: '유효하지 않은 토큰입니다. 재설정 후 다시 스캔해 주세요.' ErrExpiredToken: '토큰이 만료되었습니다. 재설정 후 다시 스캔해 주세요.' -#cluster -ErrMasterDelete: "마스터 노드를 삭제할 수 없습니다. 슬레이브 노드를 먼저 삭제하세요." -ClusterNameIsExist: "클러스터 이름이 이미 존재합니다." -AppStatusUnHealthy: "애플리케이션 상태 획득이 비정상입니다. 노드 목록에서 설치 노드 상태를 확인하세요." -MasterNodePortNotAvailable: "노드 {{ .name }} 포트 {{ .port }} 연결성 검증에 실패했습니다. 방화벽/보안 그룹 설정 및 마스터 노드 상태를 확인하세요." -ClusterMasterNotExist: "클러스터의 마스터 노드가 연결이 끊어졌습니다. 자식 노드를 삭제하세요." - -#ssl -ErrReqFailed: "{{.name}} 요청 실패: {{ .err }}" - -#command +# 명령 내보내기 Name: "이름" Command: "명령어" diff --git a/core/i18n/lang/ms.yaml b/core/i18n/lang/ms.yaml index 7a8003ccc..1a775e973 100644 --- a/core/i18n/lang/ms.yaml +++ b/core/i18n/lang/ms.yaml @@ -1,35 +1,115 @@ +# ralat asas ErrInvalidParams: 'Permintaan tidak sah: {{ .detail }}' ErrTokenParse: 'Token tidak sah: {{ .detail }}' ErrInitialPassword: 'Kata laluan asal salah' ErrInternalServer: 'Ralat pelayan: {{ .detail }}' +ErrInternalServerKey: "Ralat dalaman pelayan:" ErrRecordExist: 'Rekod sudah wujud' ErrRecordNotFound: 'Rekod tidak ditemui' ErrStructTransform: 'Ralat penukaran: {{ .err }}' -ErrNotLogin: 'Belum log masuk: {{ .detail }}' -ErrSessionDataNotFound: "Sesi semasa telah tamat tempoh" -ErrSessionDataFormat: "Format data sesi semasa tidak normal" -ErrPasswordExpired: 'Kata laluan tamat: {{ .detail }}' ErrNotSupportType: 'Jenis tidak disokong: {{ .name }}' -ErrProxy: 'Permintaan gagal: {{ .detail }}' -ErrApiConfigStatusInvalid: 'API dilumpuhkan: {{ .detail }}' -ErrApiConfigKeyInvalid: 'Kunci API tidak sah: {{ .detail }}' -ErrApiConfigIPInvalid: 'IP tidak dibenarkan: {{ .detail }}' -ErrApiConfigDisable: 'API tidak dibenarkan: {{ .detail }}' -ErrApiConfigKeyTimeInvalid: 'Cap masa tidak sah: {{ .detail }}' -ErrLoginLocked: "Terlalu banyak percubaan gagal. Log masuk dikunci sementara selama 5 minit." +ErrDemoEnvironment: 'Tidak tersedia dalam demo' +ErrCmdTimeout: 'Arahan tamat masa' +ErrPortInUsed: "Port {{ .name }} telah digunakan" +ErrFileNotFound: "Fail {{ .name }} tidak wujud" +ErrReqFailed: "{{.name}} permintaan gagal: {{ .err }}" -# request +# permintaan dan pintu masuk keselamatan ErrNoSuchHost: "Pelayan yang diminta tidak dapat ditemui {{ .err }}" ErrHttpReqNotFound: "Sumber yang diminta tidak dapat ditemui {{ .err }}" ErrHttpReqFailed: "Permintaan gagal {{ .err }}" ErrHttpReqTimeOut: "Permintaan telah tamat masa {{ .err }}" ErrCreateHttpClient: "Gagal mencipta permintaan {{ .err }}" +ErrProxy: 'Permintaan gagal: {{ .detail }}' ErrProxySetting: "Maklumat pelayan proksi tidak tersedia {{ .err }}, sila periksa dan cuba lagi" +ErrEntrance: "Maklumat pintu masuk keselamatan salah, sila periksa dan cuba lagi" ErrEntranceFormat: "Pintu masuk keselamatan {{ .name }} tidak disokong buat masa ini. Sila periksa dan cuba lagi" -# common -ErrDemoEnvironment: 'Tidak tersedia dalam demo' -ErrCmdTimeout: 'Arahan tamat masa' +# log masuk dan keselamatan +ErrNotLogin: 'Belum log masuk: {{ .detail }}' +ErrSessionDataNotFound: "Sesi semasa telah tamat tempoh" +ErrSessionDataFormat: "Format data sesi semasa tidak normal" +ErrPasswordExpired: 'Kata laluan tamat: {{ .detail }}' +ErrLoginLocked: "Terlalu banyak percubaan gagal. Log masuk dikunci sementara selama 5 minit." +ErrApiConfigStatusInvalid: 'API dilumpuhkan: {{ .detail }}' +ErrApiConfigKeyInvalid: 'Kunci API tidak sah: {{ .detail }}' +ErrApiConfigIPInvalid: 'IP tidak dibenarkan: {{ .detail }}' +ErrApiConfigDisable: 'API tidak dibenarkan: {{ .detail }}' +ErrApiConfigKeyTimeInvalid: 'Cap masa tidak sah: {{ .detail }}' +ErrPasskeyDisabled: "Passkey memerlukan HTTPS diaktifkan" +ErrPasskeyNotConfigured: "Tiada Passkey dikonfigurasikan" +ErrPasskeyLimit: "Had Passkey telah dicapai (maksimum 5)" +ErrPasskeySession: "Sesi Passkey telah tamat tempoh atau tidak sah" +ErrPasskeyDuplicate: "Passkey sudah wujud" +ErrPasskeyVerify: "Pengesahan Passkey gagal" + +# pengguna dan kebenaran +ErrNoSuchUser: "Maklumat pengguna tidak ditemui, sila semak dan cuba lagi" +ErrToMaster: "Pengguna ini tiada kebenaran untuk melakukan operasi ini pada nod utama, sila semak dan cuba lagi" +ErrToNode: "Pengguna ini tiada kebenaran untuk melakukan operasi ini pada nod ini, sila semak dan cuba lagi" +ErrRBAC: "Kebenaran pengguna tidak mencukupi, operasi ini tidak boleh dilakukan. Sila semak dan cuba lagi" +ErrNoneNode: "Pengguna ini tidak mempunyai sebarang kebenaran nod. Sila hubungi pentadbir atau semak dan cuba lagi" +ErrOnlySuperAdmin: "Hanya super admin boleh menggunakan fungsi ini" +ErrRolePresetCannotDelete: "Peranan pratetap sistem tidak boleh dipadam" +ErrRolePresetCannotUpdate: "Peranan pratetap sistem tidak boleh dikemas kini" +ErrRoleBoundToUser: "Peranan ini sudah terikat kepada pengguna dan tidak boleh dipadam" +ErrRolePresetCannotBind: "Peranan pratetap sistem tidak boleh diberikan kepada pengguna" +ErrNodeAdminMasterForbidden: "Kebenaran Pentadbir Nod tidak boleh ditambah pada nod utama" +ErrSuperAdminCannotDelete: "Pengguna super admin tidak boleh dipadam" +ErrGroupIsDefault: "Kumpulan lalai tidak boleh dihapuskan" +ErrGroupIsInUse: "Kumpulan sedang digunakan dan tidak boleh dipadam." + +# lesen +LicenseCheck: 'Periksa sama ada lesen tersedia' +ErrLicenseInUsed: 'Lesen ini telah terikat. Sila periksa dan cuba lagi' +ErrLicenseExpired: 'Lesen ini telah tamat tempoh. Sila periksa dan cuba lagi' +ErrLicense: "Format lesen tidak sah, sila semak dan cuba lagi" +ErrLicenseCheck: "Pengesahan lesen gagal, sila semak dan cuba lagi" +ErrXpackVersion: "Pengesahan lesen gagal, lesen ini terhad kepada versi tertentu, sila semak dan cuba lagi" +ErrLicenseSave: "Gagal menyimpan maklumat lesen {{ .err }}, sila cuba lagi" +ErrLicenseSync: "Penyelarasan maklumat lesen gagal, maklumat lesen tidak ditemui dalam pangkalan data" +ErrLicenseExist: "Rekod lesen ini sudah wujud. Anda boleh terus ke halaman lesen untuk mengikat nod." +ErrXpackNotFound: "Bahagian ini memerlukan Edisi Business. Import lesen di Tetapan Panel > Lesen" +ErrXpackExceptional: "Bahagian ini memerlukan Edisi Business. Segerakkan status lesen di Tetapan Panel > Lesen" +ErrXpackLost: "Lesen telah mencapai had percubaan semula. Pergi ke Tetapan Panel > Lesen dan jalankan penyelarasan manual" +ErrEnterpriseLicenseRequired: "Lesen Edisi Enterprise belum diimport. Sila import lesen terlebih dahulu" +ErrDeviceLost: "Fail yang diperlukan untuk pengesahan lesen hilang, sila semak dan cuba lagi" +ErrDeviceErr: "Persekitaran semasa tidak sepadan dengan persekitaran import lesen. Sila edit lesen dan import semula" +ErrXpackTimeout: "Permintaan tamat masa, sambungan rangkaian mungkin tidak stabil, sila cuba lagi kemudian" +ErrUnbindMaster: "Terdapat nod dalam pengurusan nod, sila keluarkan dahulu dan cuba lagi" +ErrFreeNodeLimit: "Bilangan nod yang boleh ditambah telah mencapai had. Sila beli dan cuba lagi." +ErrNodeBound: "Lesen ini telah diikat dengan nod lain, sila semak dan cuba lagi" +ErrNodeBoundDelete: "Lisensi ini telah diikat dan tidak menyokong operasi penghapusan. Sila semak dan cuba lagi" +ErrNodeBoundLimit: "Nod percuma semasa telah mencapai had, sila semak dan cuba lagi" +ErrLicenseFree: "Nod percuma hanya boleh digunakan apabila lesen terikat dengan betul pada nod. Sila semak dan cuba lagi" +ErrLicenseUnbind: "Lesen ini masih terikat pada nod Edisi Community. Nyahikat di Tetapan Panel > Lesen dan cuba lagi" +ErrLicenseBindCount: "Bilangan nod percuma lesen baharu kurang daripada bilangan nod Edisi Community yang sedang terikat. Sila semak dan cuba lagi" +ErrNoSuchNode: "Maklumat nod tidak ditemui, sila semak dan cuba lagi" +ErrNodeUnbind: "Nod di luar skop lesen dikesan, sila semak dan cuba lagi" +ErrNodeBind: "Nod ini telah diikat dengan lesen, sila semak dan cuba lagi" +ErrNodeLocalRollback: "Nod utama tidak menyokong rollback secara langsung. Jalankan '1pctl restore' secara manual untuk rollback" +ErrIntlLicense: "Versi semasa belum menyokong import lesen edisi antarabangsa. Nantikan" +InvalidRequestBodyType: "Format badan permintaan tidak sah, sila periksa dan pastikan kandungan memenuhi format yang diperlukan sebelum mencuba semula" +InvalidLicenseCodeType: "Format kod lesen yang diberikan tidak sah, sila periksa dan cuba lagi" +LicenseNotFoundType: "Lesen tidak dijumpai, tiada rekod yang sepadan dengan lesen yang diberikan dalam sistem. Sila periksa dan cuba lagi" +LicenseRevokedType: "Lesen yang diminta telah dibatalkan dan tidak boleh digunakan lagi. Sila periksa dan cuba lagi" +LicenseExpiredType: "Lesen telah tamat tempoh. Sila perbaharui atau import semula lesen dalam Tetapan Panel - Bahagian Lesen sebelum mencuba semula" +LicenseProductMismatchType: "Lesen tidak sepadan dengan produk atau perkhidmatan yang diminta" +InvalidAssigneeType: "Maklumat pengguna atau peranti sasaran untuk penugasan lesen tidak sah. Sila periksa dan cuba lagi" +LicenseUsageNotFoundType: "Tiada rekod penggunaan dijumpai. Lesen ini belum diaktifkan atau digunakan. Sila periksa dan cuba lagi" +LicenseUsageLimitExceededType: "Lesen ini sudah terikat pada nod lain. Sila periksa dan cuba lagi" + +# nod dan kluster +MasterNode: "Nod Induk" +Node: "Nod" +ErrLocalDelete: "Nod tempatan tidak boleh dihapuskan" +ErrMasterDelete: "Tidak dapat menghapus nod utama, sila hapuskan nod perantara dahulu." +ClusterNameIsExist: "Nama kluster sudah wujud." +AppStatusUnHealthy: "Pengambilan status aplikasi tidak normal, sila periksa status nod pemasangan dalam senarai nod." +MasterNodePortNotAvailable: "Pengesahan kesambungan pelabuhan {{ .name }} nod {{ .port }} gagal, sila periksa tetapan firewall/kumpulan keselamatan dan status nod utama." +ClusterMasterNotExist: "Node utama kluster terputus, sila padamkan nod anak." + +# mesin maya ErrVMNotFound: "Mesin maya tidak wujud" ErrVMAlreadyExists: "Mesin maya sudah wujud" ErrVMRunning: "Mesin maya sedang berjalan" @@ -45,9 +125,27 @@ VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [ VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" -ErrEntrance: "Maklumat pintu masuk keselamatan salah, sila periksa dan cuba lagi" -ErrGroupIsDefault: "Kumpulan lalai tidak boleh dihapuskan" -ErrGroupIsInUse: "Kumpulan sedang digunakan dan tidak boleh dipadam." + +# aplikasi +CustomAppStoreFileValid: "Pakej stor aplikasi perlu dalam format .tar.gz" +AppBackup: "Sandaran aplikasi" +AppBackupPush: "Pindahkan fail sandaran aplikasi {{.file}} ke nod {{ .name }}" +ErrSourceTargetSame: "Nod sumber dan nod sasaran tidak boleh sama!" +AppInstall: "Pasang aplikasi {{ .name }} pada nod {{ .targetNode }}" +AppInstallCheck: "Semak persekitaran pemasangan aplikasi" + +# sandaran +ErrBackupInUsed: 'Akaun sandaran sedang digunakan oleh tugas' +ErrBackupCheck: 'Ujian sambungan gagal: {{ .err }}' +ErrBackupLocal: "Akaun sandaran pelayan tempatan tidak menyokong operasi ini" +ErrBackupPublic: "Akaun sandaran ini dikesan tidak awam, sila semak semula dan cuba lagi" +ErrOSSConn: "Tidak dapat mendapatkan versi terkini, sila semak sambungan rangkaian luar pelayan." +MvBackup: "Alihkan data ke direktori sandaran" + +# amaran +ErrAlertSync: "Ralat penyinkronan maklumat amaran, sila semak dan cuba lagi" + +# gerbang AI ErrAIProxyUserGroupIsDefault: "Kumpulan pengguna lalai tidak boleh dipadam." ErrAIProxyUserGroupInUse: "Kumpulan pengguna sedang digunakan dan tidak boleh dipadam." ErrAIProxyUserGroupExists: "Nama kumpulan pengguna sudah wujud." @@ -56,81 +154,9 @@ ErrAIProxyModelGroupInUse: "Kumpulan model sedang digunakan dan tidak boleh dipa ErrAIProxyModelGroupExists: "Nama kumpulan model sudah wujud." ErrAIProxySensitiveGroupInUse: "Kumpulan kata sensitif sedang digunakan dan tidak boleh dipadam." ErrAIProxySensitiveGroupExists: "Nama kumpulan kata sensitif sudah wujud." -ErrLocalDelete: "Nod tempatan tidak boleh dihapuskan" -ErrPortInUsed: "Port {{ .name }} telah digunakan" -ErrInternalServerKey: "Ralat dalaman pelayan:" -MasterNode: "Nod Induk" +AIBenchmarkRun: "Jalankan penanda aras AI" -# app -CustomAppStoreFileValid: "Pakej stor aplikasi perlu dalam format .tar.gz" -ErrFileNotFound: "Fail {{ .name }} tidak wujud" - -# backup -ErrBackupInUsed: 'Akaun sandaran sedang digunakan oleh tugas' -ErrBackupCheck: 'Ujian sambungan gagal: {{ .err }}' -ErrBackupLocal: "Akaun sandaran pelayan tempatan tidak menyokong operasi ini" -ErrBackupPublic: "Akaun sandaran ini dikesan tidak awam, sila semak semula dan cuba lagi" -ErrOSSConn: "Tidak dapat mendapatkan versi terkini, sila semak sambungan rangkaian luar pelayan." - -#license -LicenseCheck: 'Periksa sama ada lesen tersedia' -ErrLicenseInUsed: 'Lesen ini telah terikat. Sila periksa dan cuba lagi' -ErrLicenseExpired: 'Lesen ini telah tamat tempoh. Sila periksa dan cuba lagi' -ErrLicense: "Format lesen tidak sah, sila semak dan cuba lagi" -ErrLicenseCheck: "Pengesahan lesen gagal, sila semak dan cuba lagi" -ErrXpackVersion: "Pengesahan lesen gagal, lesen ini terhad kepada versi tertentu, sila semak dan cuba lagi" -ErrLicenseSave: "Gagal menyimpan maklumat lesen {{ .err }}, sila cuba lagi" -ErrLicenseSync: "Penyelarasan maklumat lesen gagal, maklumat lesen tidak ditemui dalam pangkalan data" -ErrLicenseExist: "Rekod lesen ini sudah wujud. Anda boleh terus ke halaman lesen untuk mengikat nod." -ErrXpackNotFound: "Bahagian ini memerlukan Edisi Business. Import lesen di Tetapan Panel > Lesen" -ErrXpackExceptional: "Bahagian ini memerlukan Edisi Business. Segerakkan status lesen di Tetapan Panel > Lesen" -ErrXpackLost: "Lesen telah mencapai had percubaan semula. Pergi ke Tetapan Panel > Lesen dan jalankan penyelarasan manual" -ErrDeviceLost: "Fail yang diperlukan untuk pengesahan lesen hilang, sila semak dan cuba lagi" -ErrDeviceErr: "Persekitaran semasa tidak sepadan dengan persekitaran import lesen. Sila edit lesen dan import semula" -ErrXpackTimeout: "Permintaan tamat masa, sambungan rangkaian mungkin tidak stabil, sila cuba lagi kemudian" -ErrUnbindMaster: "Terdapat nod dalam pengurusan nod, sila keluarkan dahulu dan cuba lagi" -ErrEnterpriseLicenseRequired: "Lesen Edisi Enterprise belum diimport. Sila import lesen terlebih dahulu" -ErrFreeNodeLimit: "Bilangan nod yang boleh ditambah telah mencapai had. Sila beli dan cuba lagi." -ErrNodeBound: "Lesen ini telah diikat dengan nod lain, sila semak dan cuba lagi" -ErrNodeBoundDelete: "Lisensi ini telah diikat dan tidak menyokong operasi penghapusan. Sila semak dan cuba lagi" -ErrNodeBoundLimit: "Nod percuma semasa telah mencapai had, sila semak dan cuba lagi" -ErrLicenseFree: "Nod percuma hanya boleh digunakan apabila lesen terikat dengan betul pada nod. Sila semak dan cuba lagi" -ErrLicenseUnbind: "Lesen ini masih terikat pada nod Edisi Community. Nyahikat di Tetapan Panel > Lesen dan cuba lagi" -ErrLicenseBindCount: "Bilangan nod percuma lesen baharu kurang daripada bilangan nod Edisi Community yang sedang terikat. Sila semak dan cuba lagi" -ErrNoSuchNode: "Maklumat nod tidak ditemui, sila semak dan cuba lagi" -ErrNodeUnbind: "Nod di luar skop lesen dikesan, sila semak dan cuba lagi" -ErrNodeBind: "Nod ini telah diikat dengan lesen, sila semak dan cuba lagi" -ErrNodeLocalRollback: "Nod utama tidak menyokong rollback secara langsung. Jalankan '1pctl restore' secara manual untuk rollback" -ErrIntlLicense: "Versi semasa belum menyokong import lesen edisi antarabangsa. Nantikan" - -# user -ErrNoSuchUser: "Maklumat pengguna tidak ditemui, sila semak dan cuba lagi" -ErrToMaster: "Pengguna ini tiada kebenaran untuk melakukan operasi ini pada nod utama, sila semak dan cuba lagi" -ErrToNode: "Pengguna ini tiada kebenaran untuk melakukan operasi ini pada nod ini, sila semak dan cuba lagi" -ErrRBAC: "Kebenaran pengguna tidak mencukupi, operasi ini tidak boleh dilakukan. Sila semak dan cuba lagi" -ErrNoneNode: "Pengguna ini tidak mempunyai sebarang kebenaran nod. Sila hubungi pentadbir atau semak dan cuba lagi" -ErrOnlySuperAdmin: "Hanya super admin boleh menggunakan fungsi ini" -ErrRolePresetCannotDelete: "Peranan pratetap sistem tidak boleh dipadam" -ErrRolePresetCannotUpdate: "Peranan pratetap sistem tidak boleh dikemas kini" -ErrRoleBoundToUser: "Peranan ini sudah terikat kepada pengguna dan tidak boleh dipadam" -ErrRolePresetCannotBind: "Peranan pratetap sistem tidak boleh diberikan kepada pengguna" -ErrNodeAdminMasterForbidden: "Kebenaran Pentadbir Nod tidak boleh ditambah pada nod utama" -ErrSuperAdminCannotDelete: "Pengguna super admin tidak boleh dipadam" - -InvalidRequestBodyType: "Format badan permintaan tidak sah, sila periksa dan pastikan kandungan memenuhi format yang diperlukan sebelum mencuba semula" -InvalidLicenseCodeType: "Format kod lesen yang diberikan tidak sah, sila periksa dan cuba lagi" -LicenseNotFoundType: "Lesen tidak dijumpai, tiada rekod yang sepadan dengan lesen yang diberikan dalam sistem. Sila periksa dan cuba lagi" -LicenseRevokedType: "Lesen yang diminta telah dibatalkan dan tidak boleh digunakan lagi. Sila periksa dan cuba lagi" -LicenseExpiredType: "Lesen telah tamat tempoh. Sila perbaharui atau import semula lesen dalam Tetapan Panel - Bahagian Lesen sebelum mencuba semula" -LicenseProductMismatchType: "Lesen tidak sepadan dengan produk atau perkhidmatan yang diminta" -InvalidAssigneeType: "Maklumat pengguna atau peranti sasaran untuk penugasan lesen tidak sah. Sila periksa dan cuba lagi" -LicenseUsageNotFoundType: "Tiada rekod penggunaan dijumpai. Lesen ini belum diaktifkan atau digunakan. Sila periksa dan cuba lagi" -LicenseUsageLimitExceededType: "Lesen ini sudah terikat pada nod lain. Sila periksa dan cuba lagi" - -# alert -ErrAlertSync: "Ralat penyinkronan maklumat amaran, sila semak dan cuba lagi" - -#task +# tugas TaskStart: "{{ .name }} tugas bermula [START]" TaskEnd: "{{ .name }} tugas tamat [COMPLETED]" TaskFailed: "{{ .name }} tugas gagal" @@ -144,6 +170,16 @@ TaskUpgrade: "Kemas kini" TaskSync: 'Selaraskan' TaskSyncForNode: "Segerakan Data Nod" TaskBackup: "Sandaran" +TaskPush: "Hantar" +TaskRsync: "Sync" +SuccessStatus: "{{ .name }} berjaya" +FailedStatus: "{{ .name }} gagal {{ .err }}" +Start: "Mula" +SubTask: "Tugas Sub" +Skip: "Abaikan ralat dan teruskan..." +Success: "Berjaya" + +# tugas kelompok ejen BatchInstallAgent: "Pasang ejen secara pukal" DispatchAgentInstallTasks: "Hantar tugas pemasangan ejen" BatchUpgradeAgent: "Naik taraf ejen secara pukal" @@ -177,20 +213,15 @@ AgentOperateStart: "Mula" AgentOperateStop: "Henti" AgentOperateRestart: "Mula semula" AgentOperateDelete: "Padam" -SuccessStatus: "{{ .name }} berjaya" -FailedStatus: "{{ .name }} gagal {{ .err }}" -Start: "Mula" -SubTask: "Tugas Sub" -Skip: "Abaikan ralat dan teruskan..." + +# tugas aplikasi dan kemahiran PushAppInstallTaskToNode: "Hantar tugas pemasangan aplikasi ke nod [{{ .name }}]" -TaskPush: "Hantar" AppInstallTask: "Tugas pemasangan aplikasi" PushAppFailed: "Gagal menghantar tugas pemasangan aplikasi" SkillHubInstallTask: "Pasang kemahiran [{{ .name }}]" SkillHubInstallToTarget: "Pasang kemahiran ke sasaran [{{ .name }}]" -Success: "Berjaya" -#script +# pustaka skrip ScriptLibrary: "Pustaka Skrip" RemoteScriptLibrary: "Pustaka Skrip Jauh" ScriptSyncSkip: "Pustaka skrip semasa sudah versi terkini" @@ -198,7 +229,7 @@ DownloadData: "Muat turun fail pustaka skrip data.yaml" DownloadPackage: "Muat turun pakej pustaka skrip" AnalyticCompletion: "Analisis selesai, sedang menyegerakkan ke pangkalan data..." -Node: "Nod" +# penyegerakan nod SyncNode: "Selaraskan data ke nod {{ .name }}" LocalName: "Nama 'local' hanya digunakan untuk pengenalpastian tempatan sistem" SyncPackageData: "Pakej data segerak" @@ -214,7 +245,7 @@ SyncCustomApp: "Aplikasi Tersuai" SyncLanguage: "Bahasa Sistem" SyncEdition: "Wilayah Operasi" -#upgrade node +# naik taraf nod NodeUpgrade: "Naik taraf node {{ .name }}" UpgradeCheck: "Periksa kemas kini nod" UpgradeCheckLocal: "Nod tempatan tidak menyokong peningkatan kelompok, dilangkau..." @@ -227,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "Gagal memuatkan nod naik taraf automatik, ralat: {{ AutoUpgradeNodes: "Nod naik taraf automatik: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "Gagal mengemas kini status nod naik taraf automatik, ralat: {{ .err }}" -#add node +# tambah nod MasterData: "Data Nod Master" LoadSftpClient: "Dapatkan Klien SFTP" PackageMasterData: "Hasilkan pakej sandaran nod master" UploadBackup: "Muat naik data sandaran" -MvBackup: "Alihkan data ke direktori sandaran" TaskAddNode: "Tambah nod" LoadNodeArch: "Dapatkan maklumat seni bina nod" LoadNodeArchDetail: "Mengesan seni bina nod induk: {{ .local }}, seni bina nod anak: {{ .node }}" @@ -245,7 +275,35 @@ SendAgent: "Muat naik pakej pemasangan nod" StartService: "Mulakan perkhidmatan" NoBackupNode: "Nod sandaran kosong. Sila pilih nod sandaran untuk disimpan dan cuba lagi" -#cmd +# penyegerakan fail dan imej nod +LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." +HandlePrivateKey: "Handle node private key" +HandlePublicKey: "Handle node public key" +ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" +NodeFile: "Node file" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "Save image {{ .image }}" +ImageSyncSaveTags: "Save image tags {{ .tags }}" +ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" +ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" +ImageSyncClean: "Clean temporary files for image {{ .image }}" +ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" +ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." +ImageSyncHandlePrivateKey: "Handle image sync node private key" +ImageSyncHandlePublicKey: "Handle image sync node public key" +ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# baris perintah +SudoHelper: "Sila gunakan {{ .cmd }} atau tukar ke pengguna root" +UsernameNeed: "Edisi Enterprise mesti menentukan --username" +DBConnErr: "Ralat: Gagal memulakan sambungan pangkalan data, {{ .err }}" +SystemVersion: "Versi: " +SystemMode: "Mod: " + +# baris perintah - aplikasi AppVersion: "Versi aplikasi" AppCommands: "Arahan berkaitan aplikasi" AppInit: "Inisialisasi aplikasi" @@ -257,12 +315,14 @@ AppMissVersion: "Versi aplikasi hilang, gunakan -v untuk menetapkan" AppVersionExist: "Versi sudah wujud" AppCreateSuccessful: "Ciptaan berjaya" AppWriteErr: "Penulisan fail {{ .name }} gagal {{ .err }}" -SudoHelper: "Sila gunakan {{ .cmd }} atau tukar ke pengguna root" -UsernameNeed: "Edisi Enterprise mesti menentukan --username" + +# baris perintah - IP dengar ListenIPCommands: "Tukar IP mendengar" ListenIPv4: "Mendengar pada IPv4" ListenIPv6: "Mendengar pada IPv6" ListenChangeSuccessful: "Tukar berjaya Kini mendengar pada {{ .value }}" + +# baris perintah - tetapan semula ResetCommands: "Tetapkan semula maklumat sistem" ResetMFA: "Batal pengesahan dua faktor 1Panel" ResetHttps: "Batal log masuk HTTPS 1Panel" @@ -270,12 +330,19 @@ ResetEntrance: "Batal pintu masuk keselamatan 1Panel" ResetIPs: "Batal sekatan IP yang dibenarkan 1Panel" ResetDomain: "Batal pengikatan domain 1Panel" ResetPasskey: "Kosongkan passkey 1Panel" + +# baris perintah - pengguna UserList: "Dapatkan senarai pengguna 1Panel" UserTableName: "Nama" UserTableMFAStatus: "Status MFA" UserTableSuperAdmin: "Pentadbir Super" UserTableCreatedAt: "Dicipta Pada" UserEmptyList: "Tiada pengguna ditemui" +UserInfo: "Dapatkan maklumat panel" +UserInfoAddr: "Alamat panel: " +UserInfoPassHelp: "Petua: Untuk menukar kata laluan, anda boleh menjalankan arahan: " + +# baris perintah - pulih RestoreCommands: "Rollback perkhidmatan dan data 1Panel" RestoreNoSuchFile: "Tiada fail rollback ditemui" RestoreStep1: "(1/5) Memulakan rollback perkhidmatan dan data 1Panel daripada direktori {{ .name }}..." @@ -284,6 +351,8 @@ RestoreStep3: "(3/5) Rollback skrip 1Panel berjaya" RestoreStep4: "(4/5) Rollback perkhidmatan 1Panel berjaya" RestoreStep5: "(5/5) Rollback data 1Panel berjaya" RestoreSuccessful: "Rollback berjaya. Dikembalikan ke {{ .version }}. Perkhidmatan sedang dimulakan semula..." + +# baris perintah - kemas kini UpdateCommands: "Kemas kini maklumat panel" UpdateUser: "Kemas kini maklumat pengguna" UpdatePassword: "Kemas kini kata laluan pengguna" @@ -310,45 +379,12 @@ UpdatePortResult: "Port Panel: {{ .name }}" UpdatePortFirewallAdd: "Gagal menambah peraturan port firewall, {{ .err }}, sila tambah port {{ .name }} secara manual ke dalam peraturan firewall." UpdatePortFirewallDel: "Ralat: Gagal memadam port firewall, {{ .err }}" UpdatePortFirewallReload: "Gagal memuat semula firewall, {{ .err }}, sila muat semula firewall secara manual." -UserInfo: "Dapatkan maklumat panel" -UserInfoAddr: "Alamat panel: " -UserInfoPassHelp: "Petua: Untuk menukar kata laluan, anda boleh menjalankan arahan: " -DBConnErr: "Ralat: Gagal memulakan sambungan pangkalan data, {{ .err }}" -SystemVersion: "Versi: " -SystemMode: "Mod: " -#exchange -LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." -HandlePrivateKey: "Handle node private key" -HandlePublicKey: "Handle node public key" -ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" -TaskRsync: "Sync" -NodeFile: "Node file" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "Save image {{ .image }}" -ImageSyncSaveTags: "Save image tags {{ .tags }}" -ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" -ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" -ImageSyncClean: "Clean temporary files for image {{ .image }}" -ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" -ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." -ImageSyncHandlePrivateKey: "Handle image sync node private key" -ImageSyncHandlePublicKey: "Handle image sync node public key" -ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" +# aplikasi mudah alih +ErrVerifyToken: "Ralat pengesahan token, sila tetapkan semula dan imbas semula" +ErrInvalidToken: "Token tidak sah, sila tetapkan semula dan imbas semula" +ErrExpiredToken: "Token telah tamat tempoh, sila tetapkan semula dan imbas semula" -#cluster -ErrMasterDelete: "Tidak dapat menghapus nod utama, sila hapuskan nod perantara dahulu." -ClusterNameIsExist: "Nama kluster sudah wujud." -AppStatusUnHealthy: "Pengambilan status aplikasi tidak normal, sila periksa status nod pemasangan dalam senarai nod." -MasterNodePortNotAvailable: "Pengesahan kesambungan pelabuhan {{ .name }} nod {{ .port }} gagal, sila periksa tetapan firewall/kumpulan keselamatan dan status nod utama." -ClusterMasterNotExist: "Node utama kluster terputus, sila padamkan nod anak." - -#ssl -ErrReqFailed: "{{.name}} permintaan gagal: {{ .err }}" - -#command +# eksport perintah Name: "Nama" Command: "Arahan" diff --git a/core/i18n/lang/pt-BR.yaml b/core/i18n/lang/pt-BR.yaml index 44440dce4..fae24d523 100644 --- a/core/i18n/lang/pt-BR.yaml +++ b/core/i18n/lang/pt-BR.yaml @@ -1,83 +1,65 @@ +# erros básicos ErrInvalidParams: 'Requisição inválida: {{ .detail }}' ErrTokenParse: 'Erro de token: {{ .detail }}' ErrInitialPassword: 'Senha original incorreta' ErrInternalServer: 'Erro interno: {{ .detail }}' +ErrInternalServerKey: "Erro interno do servidor:" ErrRecordExist: 'Registro já existe' ErrRecordNotFound: 'Registro não encontrado' ErrStructTransform: 'Erro de conversão: {{ .err }}' -ErrNotLogin: 'Sem sessão: {{ .detail }}' -ErrSessionDataNotFound: "A sessão atual expirou" -ErrSessionDataFormat: "O formato dos dados da sessão atual está anormal" -ErrPasswordExpired: 'Senha expirada: {{ .detail }}' ErrNotSupportType: 'Tipo não suportado: {{ .name }}' -ErrProxy: 'Requisição falhou: {{ .detail }}' -ErrApiConfigStatusInvalid: 'API desativada: {{ .detail }}' -ErrApiConfigKeyInvalid: 'Chave API inválida: {{ .detail }}' -ErrApiConfigIPInvalid: 'IP sem permissão: {{ .detail }}' -ErrApiConfigDisable: 'API bloqueada: {{ .detail }}' -ErrApiConfigKeyTimeInvalid: 'Timestamp inválido: {{ .detail }}' -ErrLoginLocked: "Muitas tentativas falharam. O login foi bloqueado temporariamente por 5 minutos." +ErrDemoEnvironment: 'Indisponível em demo' +ErrCmdTimeout: 'Comando expirou' +ErrPortInUsed: "A porta {{ .name }} já está em uso" +ErrFileNotFound: "Arquivo {{ .name }} não encontrado" +ErrReqFailed: "{{.name}} solicitação falhou: {{ .err }}" -# request +# requisição e entrada de segurança ErrNoSuchHost: "Servidor solicitado não encontrado {{ .err }}" ErrHttpReqNotFound: "Recurso solicitado não encontrado {{ .err }}" ErrHttpReqFailed: "Falha na requisição {{ .err }}" ErrHttpReqTimeOut: "Tempo de requisição esgotado {{ .err }}" ErrCreateHttpClient: "Falha ao criar a requisição {{ .err }}" +ErrProxy: 'Requisição falhou: {{ .detail }}' ErrProxySetting: "Informação do servidor proxy indisponível {{ .err }}, verifique e tente novamente" +ErrEntrance: "Erro nas informações de entrada de segurança, por favor, verifique e tente novamente" ErrEntranceFormat: "A entrada de segurança {{ .name }} não é suportada atualmente. Por favor verifique e tente novamente" -# common -ErrDemoEnvironment: 'Indisponível em demo' -ErrCmdTimeout: 'Comando expirou' -ErrVMNotFound: "Máquina virtual não existe" -ErrVMAlreadyExists: "Máquina virtual já existe" -ErrVMRunning: "Máquina virtual está em execução" -ErrVMLibvirtConnect: "Falha ao conectar ao libvirt: {{ .detail }}" -ErrVMPermission: "Sem permissão para operar a máquina virtual: {{ .detail }}" -ErrVMNetworkNotFound: "Rede da máquina virtual não existe: {{ .detail }}" -ErrVMInvalidPath: "Caminho da máquina virtual inválido: {{ .detail }}" -ErrVMInvalidInput: "Parâmetro da máquina virtual inválido: {{ .detail }}" -ErrVMCommandFailed: "Falha no comando da máquina virtual: {{ .err }}" -VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" -ErrEntrance: "Erro nas informações de entrada de segurança, por favor, verifique e tente novamente" +# login e segurança +ErrNotLogin: 'Sem sessão: {{ .detail }}' +ErrSessionDataNotFound: "A sessão atual expirou" +ErrSessionDataFormat: "O formato dos dados da sessão atual está anormal" +ErrPasswordExpired: 'Senha expirada: {{ .detail }}' +ErrLoginLocked: "Muitas tentativas falharam. O login foi bloqueado temporariamente por 5 minutos." +ErrApiConfigStatusInvalid: 'API desativada: {{ .detail }}' +ErrApiConfigKeyInvalid: 'Chave API inválida: {{ .detail }}' +ErrApiConfigIPInvalid: 'IP sem permissão: {{ .detail }}' +ErrApiConfigDisable: 'API bloqueada: {{ .detail }}' +ErrApiConfigKeyTimeInvalid: 'Timestamp inválido: {{ .detail }}' +ErrPasskeyDisabled: "Passkey requer HTTPS habilitado" +ErrPasskeyNotConfigured: "Nenhum Passkey configurado" +ErrPasskeyLimit: "Limite de Passkeys atingido (máximo 5)" +ErrPasskeySession: "Sessão do Passkey expirada ou inválida" +ErrPasskeyDuplicate: "Passkey já existe" +ErrPasskeyVerify: "Falha na verificação do Passkey" + +# usuário e permissão +ErrNoSuchUser: "Informações do usuário não encontradas. Verifique e tente novamente." +ErrToMaster: "Este usuário não tem permissão para executar esta operação no nó principal. Verifique e tente novamente." +ErrToNode: "Este usuário não tem permissão para executar esta operação neste nó. Verifique e tente novamente." +ErrRBAC: "Permissões de usuário insuficientes. Não é possível executar esta operação. Verifique e tente novamente." +ErrNoneNode: "Este usuário não tem permissões de nenhum nó. Contate o administrador ou verifique e tente novamente." +ErrOnlySuperAdmin: "Somente superadministradores podem usar este recurso." +ErrRolePresetCannotDelete: "Funções predefinidas do sistema não podem ser excluídas" +ErrRolePresetCannotUpdate: "Funções predefinidas do sistema não podem ser atualizadas" +ErrRoleBoundToUser: "Esta função já está vinculada a usuários e não pode ser excluída" +ErrRolePresetCannotBind: "Funções predefinidas do sistema não podem ser atribuídas a usuários" +ErrNodeAdminMasterForbidden: "Permissões de administrador de nó não podem ser adicionadas ao nó principal" +ErrSuperAdminCannotDelete: "Usuários superadministradores não podem ser excluídos" ErrGroupIsDefault: "Grupo padrão não pode ser excluído" ErrGroupIsInUse: "O grupo está em uso e não pode ser excluído." -ErrAIProxyUserGroupIsDefault: "O grupo de usuários padrão não pode ser excluído." -ErrAIProxyUserGroupInUse: "O grupo de usuários está em uso e não pode ser excluído." -ErrAIProxyUserGroupExists: "O nome do grupo de usuários já existe." -ErrAIProxyBackendAccountExists: "Esta conta de modelo já foi importada para o pool de contas do AI Gateway." -ErrAIProxyModelGroupInUse: "O grupo de modelos está em uso e não pode ser excluído." -ErrAIProxyModelGroupExists: "O nome do grupo de modelos já existe." -ErrAIProxySensitiveGroupInUse: "O grupo de palavras sensíveis está em uso e não pode ser excluído." -ErrAIProxySensitiveGroupExists: "O nome do grupo de palavras sensíveis já existe." -ErrLocalDelete: "O nó local não pode ser excluído" -ErrPortInUsed: "A porta {{ .name }} já está em uso" -ErrInternalServerKey: "Erro interno do servidor:" -MasterNode: "Nó Mestre" -# app -CustomAppStoreFileValid: "O pacote da loja de aplicativos deve estar no formato .tar.gz" -ErrFileNotFound: "Arquivo {{ .name }} não encontrado" -AppBackup: 'Backup de aplicação' -AppBackupPush: 'Transferir arquivo de backup de aplicação {{.file}} para o nó {{ .name }}' -ErrSourceTargetSame: 'O nó de origem e o nó de destino não podem ser os mesmos' -AppInstall: 'Instalar aplicação {{ .name }} no nó {{ .targetNode }}' -AppInstallCheck: 'Verificar ambiente de instalação da aplicação' - -# backup -ErrBackupInUsed: 'Conta de backup em uso por tarefa' -ErrBackupCheck: 'Teste de conexão falhou: {{ .err }}' -ErrBackupLocal: "A conta de backup do servidor local não suporta essa operação" -ErrBackupPublic: "A conta de backup detectada não é pública, por favor verifique e tente novamente" -ErrOSSConn: "Não foi possível obter a versão mais recente, verifique a conectividade externa do servidor." - -#license +# licença LicenseCheck: 'Verificar se a licença está disponível' ErrLicenseInUsed: 'Esta licença já está vinculada. Por favor, verifique e tente novamente' ErrLicenseExpired: 'Esta licença expirou. Por favor, verifique e tente novamente' @@ -107,21 +89,6 @@ ErrNodeUnbind: "Nó fora do escopo da licença detectado, por favor verifique e ErrNodeBind: "Este nó já está vinculado a uma licença, por favor verifique e tente novamente" ErrNodeLocalRollback: "O nó principal não suporta rollback direto. Por favor, execute manualmente o comando '1pctl restore' para fazer o rollback" ErrIntlLicense: "A versão atual ainda não oferece suporte à importação de licença da edição internacional. Em breve" - -# user -ErrNoSuchUser: "Informações do usuário não encontradas. Verifique e tente novamente." -ErrToMaster: "Este usuário não tem permissão para executar esta operação no nó principal. Verifique e tente novamente." -ErrToNode: "Este usuário não tem permissão para executar esta operação neste nó. Verifique e tente novamente." -ErrRBAC: "Permissões de usuário insuficientes. Não é possível executar esta operação. Verifique e tente novamente." -ErrNoneNode: "Este usuário não tem permissões de nenhum nó. Contate o administrador ou verifique e tente novamente." -ErrOnlySuperAdmin: "Somente superadministradores podem usar este recurso." -ErrRolePresetCannotDelete: "Funções predefinidas do sistema não podem ser excluídas" -ErrRolePresetCannotUpdate: "Funções predefinidas do sistema não podem ser atualizadas" -ErrRoleBoundToUser: "Esta função já está vinculada a usuários e não pode ser excluída" -ErrRolePresetCannotBind: "Funções predefinidas do sistema não podem ser atribuídas a usuários" -ErrNodeAdminMasterForbidden: "Permissões de administrador de nó não podem ser adicionadas ao nó principal" -ErrSuperAdminCannotDelete: "Usuários superadministradores não podem ser excluídos" - InvalidRequestBodyType: "Formato do corpo da requisição inválido. Verifique se o conteúdo está no formato correto e tente novamente" InvalidLicenseCodeType: "Formato do código de licença inválido. Verifique e tente novamente" LicenseNotFoundType: "Licença não encontrada. Não há registros correspondentes no sistema para a licença fornecida. Verifique e tente novamente" @@ -132,10 +99,64 @@ InvalidAssigneeType: "Informações do usuário ou dispositivo alvo para atribui LicenseUsageNotFoundType: "Nenhum registro de uso encontrado. Esta licença ainda não foi ativada ou usada. Verifique e tente novamente" LicenseUsageLimitExceededType: "Esta licença já está vinculada a outro nó. Verifique e tente novamente" -# alert +# nó e cluster +MasterNode: "Nó Mestre" +Node: "Nó" +ErrLocalDelete: "O nó local não pode ser excluído" +ErrMasterDelete: "Não é possível excluir o nó mestre, exclua os nós escravos primeiro." +ClusterNameIsExist: "O nome do cluster já existe." +AppStatusUnHealthy: "A aquisição do status do aplicativo está anormal, verifique o status dos nós de instalação na lista de nós." +MasterNodePortNotAvailable: "A verificação de conectividade da porta {{ .port }} do nó {{ .name }} falhou, verifique as configurações de firewall/grupo de segurança e o status do nó mestre." +ClusterMasterNotExist: "O nó mestre do cluster está desconectado, por favor, exclua os nós filhos." + +# máquina virtual +ErrVMNotFound: "Máquina virtual não existe" +ErrVMAlreadyExists: "Máquina virtual já existe" +ErrVMRunning: "Máquina virtual está em execução" +ErrVMLibvirtConnect: "Falha ao conectar ao libvirt: {{ .detail }}" +ErrVMPermission: "Sem permissão para operar a máquina virtual: {{ .detail }}" +ErrVMNetworkNotFound: "Rede da máquina virtual não existe: {{ .detail }}" +ErrVMInvalidPath: "Caminho da máquina virtual inválido: {{ .detail }}" +ErrVMInvalidInput: "Parâmetro da máquina virtual inválido: {{ .detail }}" +ErrVMCommandFailed: "Falha no comando da máquina virtual: {{ .err }}" +VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" + +# aplicativo +CustomAppStoreFileValid: "O pacote da loja de aplicativos deve estar no formato .tar.gz" +AppBackup: 'Backup de aplicação' +AppBackupPush: 'Transferir arquivo de backup de aplicação {{.file}} para o nó {{ .name }}' +ErrSourceTargetSame: 'O nó de origem e o nó de destino não podem ser os mesmos' +AppInstall: 'Instalar aplicação {{ .name }} no nó {{ .targetNode }}' +AppInstallCheck: 'Verificar ambiente de instalação da aplicação' + +# backup +ErrBackupInUsed: 'Conta de backup em uso por tarefa' +ErrBackupCheck: 'Teste de conexão falhou: {{ .err }}' +ErrBackupLocal: "A conta de backup do servidor local não suporta essa operação" +ErrBackupPublic: "A conta de backup detectada não é pública, por favor verifique e tente novamente" +ErrOSSConn: "Não foi possível obter a versão mais recente, verifique a conectividade externa do servidor." +MvBackup: "Mover dados para diretório de backup" + +# alerta ErrAlertSync: "Erro na sincronização das informações de alerta, verifique e tente novamente" -#task +# gateway de IA +ErrAIProxyUserGroupIsDefault: "O grupo de usuários padrão não pode ser excluído." +ErrAIProxyUserGroupInUse: "O grupo de usuários está em uso e não pode ser excluído." +ErrAIProxyUserGroupExists: "O nome do grupo de usuários já existe." +ErrAIProxyBackendAccountExists: "Esta conta de modelo já foi importada para o pool de contas do AI Gateway." +ErrAIProxyModelGroupInUse: "O grupo de modelos está em uso e não pode ser excluído." +ErrAIProxyModelGroupExists: "O nome do grupo de modelos já existe." +ErrAIProxySensitiveGroupInUse: "O grupo de palavras sensíveis está em uso e não pode ser excluído." +ErrAIProxySensitiveGroupExists: "O nome do grupo de palavras sensíveis já existe." +AIBenchmarkRun: "Executar benchmark de IA" + +# tarefa TaskStart: "{{ .name }} tarefa iniciada [START]" TaskEnd: "{{ .name }} tarefa finalizada [COMPLETED]" TaskFailed: "{{ .name }} tarefa falhou" @@ -149,6 +170,16 @@ TaskUpgrade: "Atualizar" TaskSync: 'Sincronizar' TaskSyncForNode: "Sincronizar Dados do Nó" TaskBackup: "Backup" +TaskPush: "Enviar" +TaskRsync: "Sync" +SuccessStatus: "{{ .name }} bem-sucedido" +FailedStatus: "{{ .name }} falhou {{ .err }}" +Start: "Iniciar" +SubTask: "Subtarefa" +Skip: "Ignorar erros e continuar..." +Success: "Sucesso" + +# tarefa em lote do agente BatchInstallAgent: "Instalar agentes em lote" DispatchAgentInstallTasks: "Distribuir tarefas de instalação de agentes" BatchUpgradeAgent: "Atualizar agentes em lote" @@ -182,20 +213,15 @@ AgentOperateStart: "Iniciar" AgentOperateStop: "Parar" AgentOperateRestart: "Reiniciar" AgentOperateDelete: "Excluir" -SuccessStatus: "{{ .name }} bem-sucedido" -FailedStatus: "{{ .name }} falhou {{ .err }}" -Start: "Iniciar" -SubTask: "Subtarefa" -Skip: "Ignorar erros e continuar..." + +# tarefa de aplicativo e habilidade PushAppInstallTaskToNode: "Enviar tarefa de instalação de aplicativo para o nó [{{ .name }}]" -TaskPush: "Enviar" AppInstallTask: "Tarefa de instalação de aplicativo" PushAppFailed: "Falha ao enviar tarefa de instalação de aplicativo" SkillHubInstallTask: "Instalar skill [{{ .name }}]" SkillHubInstallToTarget: "Instalar skill no destino [{{ .name }}]" -Success: "Sucesso" -#script +# biblioteca de scripts ScriptLibrary: "Biblioteca de Scripts" RemoteScriptLibrary: "Biblioteca de Scripts Remota" ScriptSyncSkip: "A biblioteca de scripts atual já é a versão mais recente" @@ -203,7 +229,7 @@ DownloadData: "Baixando arquivo data.yaml da biblioteca de scripts" DownloadPackage: "Baixando pacote da biblioteca de scripts" AnalyticCompletion: "Análise concluída, agora sincronizando com o banco de dados..." -Node: "Nó" +# sincronização de nós SyncNode: "Sincronizar dados para o nó {{ .name }}" LocalName: "O nome 'local' é usado apenas para identificação local do sistema" SyncPackageData: "Empacotar dados de sincronização" @@ -219,7 +245,7 @@ SyncCustomApp: "Aplicativo Personalizado" SyncLanguage: "Idioma do Sistema" SyncEdition: "Região de Operação" -#upgrade node +# atualização de nós NodeUpgrade: "Atualizar nó {{ .name }}" UpgradeCheck: "Verificar atualizações do nó" UpgradeCheckLocal: "Nós locais não suportam atualização em lote, pulando..." @@ -232,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "Falha ao carregar nós de atualização automática AutoUpgradeNodes: "Nós de atualização automática: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "Falha ao atualizar o status dos nós de atualização automática, erro: {{ .err }}" -#add node +# adicionar nó MasterData: "Dados do Nó Mestre" LoadSftpClient: "Carregar Cliente SFTP" PackageMasterData: "Gerar pacote de backup do nó mestre" UploadBackup: "Carregar dados de backup" -MvBackup: "Mover dados para diretório de backup" TaskAddNode: "Adicionar nó" LoadNodeArch: "Obter informações de arquitetura do nó" LoadNodeArchDetail: "Arquitetura do nó mestre detectada: {{ .local }}, arquitetura do nó filho: {{ .node }}" @@ -250,7 +275,35 @@ SendAgent: "Enviando pacote de instalação do nó" StartService: "Iniciando serviço" NoBackupNode: "O nó de backup está vazio atualmente. Selecione um nó de backup para salvar e tente novamente" -#cmd +# sincronização de arquivos e imagens do nó +LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." +HandlePrivateKey: "Handle node private key" +HandlePublicKey: "Handle node public key" +ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" +NodeFile: "Node file" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "Save image {{ .image }}" +ImageSyncSaveTags: "Save image tags {{ .tags }}" +ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" +ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" +ImageSyncClean: "Clean temporary files for image {{ .image }}" +ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" +ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." +ImageSyncHandlePrivateKey: "Handle image sync node private key" +ImageSyncHandlePublicKey: "Handle image sync node public key" +ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# linha de comando +SudoHelper: "Por favor, use {{ .cmd }} ou altere para o usuário root" +UsernameNeed: "A edição Enterprise deve especificar --username" +DBConnErr: "Erro: Falha ao inicializar a conexão com o banco de dados, {{ .err }}" +SystemVersion: "versão: " +SystemMode: "modo: " + +# linha de comando - aplicativo AppVersion: "Versão do aplicativo" AppCommands: "Comandos relacionados ao aplicativo" AppInit: "Inicializar aplicativo" @@ -262,12 +315,14 @@ AppMissVersion: "Versão do aplicativo ausente, use -v para especificar" AppVersionExist: "A versão já existe" AppCreateSuccessful: "Criação bem-sucedida" AppWriteErr: "Falha ao escrever no arquivo {{ .name }} {{ .err }}" -SudoHelper: "Por favor, use {{ .cmd }} ou altere para o usuário root" -UsernameNeed: "A edição Enterprise deve especificar --username" + +# linha de comando - IP de escuta ListenIPCommands: "Trocar IP de escuta" ListenIPv4: "Escutando em IPv4" ListenIPv6: "Escutando em IPv6" ListenChangeSuccessful: "Troca bem-sucedida Agora escutando em {{ .value }}" + +# linha de comando - redefinir ResetCommands: "Redefinir informações do sistema" ResetMFA: "Cancelar autenticação de dois fatores do 1Panel" ResetHttps: "Cancelar login https do 1Panel" @@ -275,12 +330,19 @@ ResetEntrance: "Cancelar entrada segura do 1Panel" ResetIPs: "Cancelar restrições de IP autorizado do 1Panel" ResetDomain: "Cancelar vinculação de domínio do 1Panel" ResetPasskey: "Redefinir passkeys do 1Panel" + +# linha de comando - usuário UserList: "Obter a lista de usuários do 1Panel" UserTableName: "Nome" UserTableMFAStatus: "Status MFA" UserTableSuperAdmin: "Superadministrador" UserTableCreatedAt: "Criado em" UserEmptyList: "Nenhum usuário encontrado" +UserInfo: "Obter informações do painel" +UserInfoAddr: "Endereço do painel: " +UserInfoPassHelp: "Dica: Para alterar a senha, você pode executar o comando: " + +# linha de comando - restaurar RestoreCommands: "Fazer rollback do serviço e dos dados do 1Panel" RestoreNoSuchFile: "Nenhum arquivo de rollback encontrado" RestoreStep1: "(1/5) Iniciando o rollback do serviço e dos dados do 1Panel a partir do diretório {{ .name }}..." @@ -289,6 +351,8 @@ RestoreStep3: "(3/5) Rollback dos scripts do 1Panel concluído" RestoreStep4: "(4/5) Rollback do serviço do 1Panel concluído" RestoreStep5: "(5/5) Rollback dos dados do 1Panel concluído" RestoreSuccessful: "Rollback concluído. Revertido para {{ .version }}. Reiniciando o serviço..." + +# linha de comando - atualizar UpdateCommands: "Atualizar informações do painel" UpdateUser: "Atualizar informações do usuário" UpdatePassword: "Atualizar senha do usuário" @@ -315,50 +379,12 @@ UpdatePortResult: "Porta do painel: {{ .name }}" UpdatePortFirewallAdd: "Falha ao adicionar regra de porta ao firewall, {{ .err }}, por favor, adicione manualmente a porta {{ .name }} às regras do firewall." UpdatePortFirewallDel: "Erro: Falha ao excluir a porta do firewall, {{ .err }}" UpdatePortFirewallReload: "Falha ao recarregar o firewall, {{ .err }}, por favor, recarregue o firewall manualmente." -UserInfo: "Obter informações do painel" -UserInfoAddr: "Endereço do painel: " -UserInfoPassHelp: "Dica: Para alterar a senha, você pode executar o comando: " -DBConnErr: "Erro: Falha ao inicializar a conexão com o banco de dados, {{ .err }}" -SystemVersion: "versão: " -SystemMode: "modo: " -#exchange -LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." -HandlePrivateKey: "Handle node private key" -HandlePublicKey: "Handle node public key" -ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" -TaskRsync: "Sync" -NodeFile: "Node file" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "Save image {{ .image }}" -ImageSyncSaveTags: "Save image tags {{ .tags }}" -ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" -ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" -ImageSyncClean: "Clean temporary files for image {{ .image }}" -ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" -ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." -ImageSyncHandlePrivateKey: "Handle image sync node private key" -ImageSyncHandlePublicKey: "Handle image sync node public key" -ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# aplicativo móvel ErrVerifyToken: 'Erro de verificação do token, por favor, reinicie e escaneie novamente.' ErrInvalidToken: 'Token inválido, por favor, reinicie e escaneie novamente.' ErrExpiredToken: 'O token expirou, por favor, reinicie e escaneie novamente.' -#cluster -ErrMasterDelete: "Não é possível excluir o nó mestre, exclua os nós escravos primeiro." -ClusterNameIsExist: "O nome do cluster já existe." -AppStatusUnHealthy: "A aquisição do status do aplicativo está anormal, verifique o status dos nós de instalação na lista de nós." -MasterNodePortNotAvailable: "A verificação de conectividade da porta {{ .port }} do nó {{ .name }} falhou, verifique as configurações de firewall/grupo de segurança e o status do nó mestre." -ClusterMasterNotExist: "O nó mestre do cluster está desconectado, por favor, exclua os nós filhos." - -#ssl -ErrReqFailed: "{{.name}} solicitação falhou: {{ .err }}" - -#command +# exportação de comandos Name: "Название" Command: "Команда" diff --git a/core/i18n/lang/ru.yaml b/core/i18n/lang/ru.yaml index ec59cbb10..dcc25cf71 100644 --- a/core/i18n/lang/ru.yaml +++ b/core/i18n/lang/ru.yaml @@ -1,83 +1,65 @@ +# базовые ошибки ErrInvalidParams: 'Неверный запрос: {{ .detail }}' ErrTokenParse: 'Ошибка токена: {{ .detail }}' ErrInitialPassword: 'Исходный пароль неверен' ErrInternalServer: 'Внутренняя ошибка: {{ .detail }}' +ErrInternalServerKey: "Внутренняя ошибка сервера:" ErrRecordExist: 'Запись уже существует' ErrRecordNotFound: 'Запись не найдена' ErrStructTransform: 'Ошибка преобразования: {{ .err }}' -ErrNotLogin: 'Не авторизован: {{ .detail }}' -ErrSessionDataNotFound: "Текущая сессия истекла" -ErrSessionDataFormat: "Ненормальный формат данных текущей сессии" -ErrPasswordExpired: 'Пароль истёк: {{ .detail }}' ErrNotSupportType: 'Тип не поддерживается: {{ .name }}' -ErrProxy: 'Запрос не удался: {{ .detail }}' -ErrApiConfigStatusInvalid: 'API отключено: {{ .detail }}' -ErrApiConfigKeyInvalid: 'Неверный API-ключ: {{ .detail }}' -ErrApiConfigIPInvalid: 'IP не в списке: {{ .detail }}' -ErrApiConfigDisable: 'Доступ по API запрещён: {{ .detail }}' -ErrApiConfigKeyTimeInvalid: 'Неверная метка времени: {{ .detail }}' -ErrLoginLocked: "Слишком много неудачных попыток. Вход временно заблокирован на 5 минут." +ErrDemoEnvironment: 'Недоступно в демо' +ErrCmdTimeout: 'Команда завершилась по тайм-ауту' +ErrPortInUsed: "Порт {{ .name }} уже используется" +ErrFileNotFound: "Файл {{ .name }} не найден" +ErrReqFailed: "{{.name}} запрос не удался: {{ .err }}" -# request +# запрос и вход безопасности ErrNoSuchHost: "Не удалось найти запрашиваемый сервер {{ .err }}" ErrHttpReqNotFound: "Не удалось найти запрашиваемый ресурс {{ .err }}" ErrHttpReqFailed: "Ошибка запроса {{ .err }}" ErrHttpReqTimeOut: "Время ожидания запроса истекло {{ .err }}" ErrCreateHttpClient: "Ошибка создания запроса {{ .err }}" +ErrProxy: 'Запрос не удался: {{ .detail }}' ErrProxySetting: "Информация о прокси-сервере недоступна {{ .err }}, проверьте и повторите попытку" +ErrEntrance: "Ошибка информации о безопасном входе, проверьте и повторите попытку" ErrEntranceFormat: "Защищенный вход {{ .name }} в настоящее время не поддерживается. Пожалуйста, проверьте и повторите попытку" -# common -ErrDemoEnvironment: 'Недоступно в демо' -ErrCmdTimeout: 'Команда завершилась по тайм-ауту' -ErrVMNotFound: "Виртуальная машина не существует" -ErrVMAlreadyExists: "Виртуальная машина уже существует" -ErrVMRunning: "Виртуальная машина запущена" -ErrVMLibvirtConnect: "Не удалось подключиться к libvirt: {{ .detail }}" -ErrVMPermission: "Нет разрешения на операцию с виртуальной машиной: {{ .detail }}" -ErrVMNetworkNotFound: "Сеть виртуальной машины не существует: {{ .detail }}" -ErrVMInvalidPath: "Недопустимый путь виртуальной машины: {{ .detail }}" -ErrVMInvalidInput: "Недопустимые параметры виртуальной машины: {{ .detail }}" -ErrVMCommandFailed: "Ошибка выполнения команды виртуальной машины: {{ .err }}" -VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" -VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" -VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" -ErrEntrance: "Ошибка информации о безопасном входе, проверьте и повторите попытку" +# вход и безопасность +ErrNotLogin: 'Не авторизован: {{ .detail }}' +ErrSessionDataNotFound: "Текущая сессия истекла" +ErrSessionDataFormat: "Ненормальный формат данных текущей сессии" +ErrPasswordExpired: 'Пароль истёк: {{ .detail }}' +ErrLoginLocked: "Слишком много неудачных попыток. Вход временно заблокирован на 5 минут." +ErrApiConfigStatusInvalid: 'API отключено: {{ .detail }}' +ErrApiConfigKeyInvalid: 'Неверный API-ключ: {{ .detail }}' +ErrApiConfigIPInvalid: 'IP не в списке: {{ .detail }}' +ErrApiConfigDisable: 'Доступ по API запрещён: {{ .detail }}' +ErrApiConfigKeyTimeInvalid: 'Неверная метка времени: {{ .detail }}' +ErrPasskeyDisabled: "Для Passkey требуется включить HTTPS" +ErrPasskeyNotConfigured: "Passkey не настроен" +ErrPasskeyLimit: "Достигнут лимит Passkey (максимум 5)" +ErrPasskeySession: "Сеанс Passkey истек или недействителен" +ErrPasskeyDuplicate: "Passkey уже существует" +ErrPasskeyVerify: "Не удалось проверить Passkey" + +# пользователь и права +ErrNoSuchUser: "Информация о пользователе не найдена. Проверьте и повторите попытку." +ErrToMaster: "У этого пользователя нет прав для выполнения этой операции на основном узле. Проверьте и повторите попытку." +ErrToNode: "У этого пользователя нет прав для выполнения этой операции на этом узле. Проверьте и повторите попытку." +ErrRBAC: "Недостаточно прав пользователя. Операция не может быть выполнена. Проверьте и повторите попытку." +ErrNoneNode: "У этого пользователя нет прав ни на один узел. Обратитесь к администратору или проверьте и повторите попытку." +ErrOnlySuperAdmin: "Эта функция доступна только супер администраторам." +ErrRolePresetCannotDelete: "Системные предустановленные роли нельзя удалять" +ErrRolePresetCannotUpdate: "Системные предустановленные роли нельзя обновлять" +ErrRoleBoundToUser: "Эта роль уже привязана к пользователям и не может быть удалена" +ErrRolePresetCannotBind: "Системные предустановленные роли нельзя назначать пользователям" +ErrNodeAdminMasterForbidden: "Права администратора узла нельзя добавить к главному узлу" +ErrSuperAdminCannotDelete: "Пользователей супер-администратора нельзя удалять" ErrGroupIsDefault: "Группу по умолчанию нельзя удалить" ErrGroupIsInUse: "Группа используется и не может быть удалена." -ErrAIProxyUserGroupIsDefault: "Группу пользователей по умолчанию нельзя удалить." -ErrAIProxyUserGroupInUse: "Группа пользователей используется и не может быть удалена." -ErrAIProxyUserGroupExists: "Имя группы пользователей уже существует." -ErrAIProxyBackendAccountExists: "Эта учетная запись модели уже импортирована в пул аккаунтов AI Gateway." -ErrAIProxyModelGroupInUse: "Группа моделей используется и не может быть удалена." -ErrAIProxyModelGroupExists: "Имя группы моделей уже существует." -ErrAIProxySensitiveGroupInUse: "Группа чувствительных слов используется и не может быть удалена." -ErrAIProxySensitiveGroupExists: "Имя группы чувствительных слов уже существует." -ErrLocalDelete: "Локальный узел нельзя удалить" -ErrPortInUsed: "Порт {{ .name }} уже используется" -ErrInternalServerKey: "Внутренняя ошибка сервера:" -MasterNode: "Главный узел" -# app -CustomAppStoreFileValid: "Пакет магазина приложений должен быть в формате .tar.gz" -ErrFileNotFound: "Файл {{ .name }} не найден" -AppBackup: 'Резервная копия приложения' -AppBackupPush: 'Передать файл резервной копии приложения {{.file}} на узел {{ .name }}' -ErrSourceTargetSame: 'Исходный узел и целевой узел не могут быть одинаковыми' -AppInstall: 'Установить приложение {{ .name }} на узел {{ .targetNode }}' -AppInstallCheck: 'Проверить среду установки приложения' - -# backup -ErrBackupInUsed: 'Аккаунт бэкапа занят задачей' -ErrBackupCheck: 'Проверка подключения не удалась: {{ .err }}' -ErrBackupLocal: "Локальная учетная запись резервного копирования не поддерживает эту операцию" -ErrBackupPublic: "Обнаружено, что эта учетная запись резервного копирования не является публичной, проверьте и повторите попытку" -ErrOSSConn: "Не удалось получить последнюю версию, проверьте подключение сервера к внешней сети." - -#license +# лицензия LicenseCheck: 'Проверить доступность лицензии' ErrLicenseInUsed: 'Лицензия уже привязана. Пожалуйста, проверьте и повторите попытку' ErrLicenseExpired: 'Срок действия лицензии истек. Пожалуйста, проверьте и повторите попытку' @@ -107,21 +89,6 @@ ErrNodeUnbind: "Обнаружен узел вне области действи ErrNodeBind: "Этот узел уже связан с лицензией, проверьте и повторите попытку" ErrNodeLocalRollback: "Прямой откат на основном узле не поддерживается. Выполните '1pctl restore' вручную для отката" ErrIntlLicense: "Текущая версия пока не поддерживает импорт международной лицензии. Скоро будет доступно" - -# user -ErrNoSuchUser: "Информация о пользователе не найдена. Проверьте и повторите попытку." -ErrToMaster: "У этого пользователя нет прав для выполнения этой операции на основном узле. Проверьте и повторите попытку." -ErrToNode: "У этого пользователя нет прав для выполнения этой операции на этом узле. Проверьте и повторите попытку." -ErrRBAC: "Недостаточно прав пользователя. Операция не может быть выполнена. Проверьте и повторите попытку." -ErrNoneNode: "У этого пользователя нет прав ни на один узел. Обратитесь к администратору или проверьте и повторите попытку." -ErrOnlySuperAdmin: "Эта функция доступна только супер администраторам." -ErrRolePresetCannotDelete: "Системные предустановленные роли нельзя удалять" -ErrRolePresetCannotUpdate: "Системные предустановленные роли нельзя обновлять" -ErrRoleBoundToUser: "Эта роль уже привязана к пользователям и не может быть удалена" -ErrRolePresetCannotBind: "Системные предустановленные роли нельзя назначать пользователям" -ErrNodeAdminMasterForbidden: "Права администратора узла нельзя добавить к главному узлу" -ErrSuperAdminCannotDelete: "Пользователей супер-администратора нельзя удалять" - InvalidRequestBodyType: "Неверный формат тела запроса. Проверьте, соответствует ли содержимое требуемому формату, и повторите попытку" InvalidLicenseCodeType: "Указан неверный формат лицензионного кода. Проверьте и повторите попытку" LicenseNotFoundType: "Лицензия не найдена. В системе нет записей, соответствующих указанной лицензии. Проверьте и повторите попытку" @@ -132,10 +99,64 @@ InvalidAssigneeType: "Некорректная информация о целе LicenseUsageNotFoundType: "Записи об использовании отсутствуют. Эта лицензия еще не активирована или не использовалась. Проверьте и повторите попытку" LicenseUsageLimitExceededType: "Эта лицензия уже привязана к другому узлу. Проверьте и повторите попытку" -# alert +# узел и кластер +MasterNode: "Главный узел" +Node: "Узел" +ErrLocalDelete: "Локальный узел нельзя удалить" +ErrMasterDelete: "Невозможно удалить основной узел, сначала удалите подчиненные узлы." +ClusterNameIsExist: "Имя кластера уже существует." +AppStatusUnHealthy: "Получение статуса приложения аномально, пожалуйста, проверьте статус узлов установки в списке узлов." +MasterNodePortNotAvailable: "Проверка подключения порта {{ .port }} узла {{ .name }} не удалась, пожалуйста, проверьте настройки брандмауэра/группы безопасности и статус главного узла." +ClusterMasterNotExist: "Основной узел кластера отключен, пожалуйста, удалите дочерние узлы." + +# виртуальная машина +ErrVMNotFound: "Виртуальная машина не существует" +ErrVMAlreadyExists: "Виртуальная машина уже существует" +ErrVMRunning: "Виртуальная машина запущена" +ErrVMLibvirtConnect: "Не удалось подключиться к libvirt: {{ .detail }}" +ErrVMPermission: "Нет разрешения на операцию с виртуальной машиной: {{ .detail }}" +ErrVMNetworkNotFound: "Сеть виртуальной машины не существует: {{ .detail }}" +ErrVMInvalidPath: "Недопустимый путь виртуальной машины: {{ .detail }}" +ErrVMInvalidInput: "Недопустимые параметры виртуальной машины: {{ .detail }}" +ErrVMCommandFailed: "Ошибка выполнения команды виртуальной машины: {{ .err }}" +VMSnapshotCreateTask: "Create snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotCreateStep: "Create virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" +VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" + +# приложение +CustomAppStoreFileValid: "Пакет магазина приложений должен быть в формате .tar.gz" +AppBackup: 'Резервная копия приложения' +AppBackupPush: 'Передать файл резервной копии приложения {{.file}} на узел {{ .name }}' +ErrSourceTargetSame: 'Исходный узел и целевой узел не могут быть одинаковыми' +AppInstall: 'Установить приложение {{ .name }} на узел {{ .targetNode }}' +AppInstallCheck: 'Проверить среду установки приложения' + +# резервное копирование +ErrBackupInUsed: 'Аккаунт бэкапа занят задачей' +ErrBackupCheck: 'Проверка подключения не удалась: {{ .err }}' +ErrBackupLocal: "Локальная учетная запись резервного копирования не поддерживает эту операцию" +ErrBackupPublic: "Обнаружено, что эта учетная запись резервного копирования не является публичной, проверьте и повторите попытку" +ErrOSSConn: "Не удалось получить последнюю версию, проверьте подключение сервера к внешней сети." +MvBackup: "Переместить данные в резервный каталог" + +# оповещение ErrAlertSync: "Ошибка синхронизации информации об оповещениях, пожалуйста, проверьте и повторите попытку" -# task +# AI-шлюз +ErrAIProxyUserGroupIsDefault: "Группу пользователей по умолчанию нельзя удалить." +ErrAIProxyUserGroupInUse: "Группа пользователей используется и не может быть удалена." +ErrAIProxyUserGroupExists: "Имя группы пользователей уже существует." +ErrAIProxyBackendAccountExists: "Эта учетная запись модели уже импортирована в пул аккаунтов AI Gateway." +ErrAIProxyModelGroupInUse: "Группа моделей используется и не может быть удалена." +ErrAIProxyModelGroupExists: "Имя группы моделей уже существует." +ErrAIProxySensitiveGroupInUse: "Группа чувствительных слов используется и не может быть удалена." +ErrAIProxySensitiveGroupExists: "Имя группы чувствительных слов уже существует." +AIBenchmarkRun: "Выполнить тест производительности AI" + +# задача TaskStart: "{{ .name }} задача начата [START]" TaskEnd: "{{ .name }} задача завершена [COMPLETED]" TaskFailed: "{{ .name }} задача не выполнена" @@ -149,6 +170,16 @@ TaskUpgrade: "Обновить" TaskSync: 'Синхронизация' TaskSyncForNode: "Синхронизировать Данные Узла" TaskBackup: "Резервная копия" +TaskPush: "Отправить" +TaskRsync: "Sync" +SuccessStatus: "{{ .name }} успешно" +FailedStatus: "{{ .name }} не удалось {{ .err }}" +Start: "Начать" +SubTask: "Подзадача" +Skip: "Пропустить ошибки и продолжить..." +Success: "Успешно" + +# пакетная задача агента BatchInstallAgent: "Пакетная установка агентов" DispatchAgentInstallTasks: "Отправить задачи установки агентов" BatchUpgradeAgent: "Пакетное обновление агентов" @@ -182,19 +213,15 @@ AgentOperateStart: "Запустить" AgentOperateStop: "Остановить" AgentOperateRestart: "Перезапустить" AgentOperateDelete: "Удалить" -SuccessStatus: "{{ .name }} успешно" -FailedStatus: "{{ .name }} не удалось {{ .err }}" -Start: "Начать" -SubTask: "Подзадача" -Skip: "Пропустить ошибки и продолжить..." -TaskPush: "Отправить" + +# задача приложения и навыка +PushAppInstallTaskToNode: "Отправить задачу установки приложения на узел [{{ .name }}]" AppInstallTask: "Задача установки приложения" PushAppFailed: "Не удалось отправить задачу установки приложения" SkillHubInstallTask: "Установить навык [{{ .name }}]" SkillHubInstallToTarget: "Установить навык в цель [{{ .name }}]" -Success: "Успешно" -#script +# библиотека скриптов ScriptLibrary: "Библиотека скриптов" RemoteScriptLibrary: "Удаленная Библиотека Скриптов" ScriptSyncSkip: "Текущая библиотека скриптов уже является последней версией" @@ -202,7 +229,7 @@ DownloadData: "Загрузка файла библиотеки скриптов DownloadPackage: "Загрузка архива библиотеки скриптов" AnalyticCompletion: "Анализ завершён, начинается синхронизация с базой данных..." -Node: "Узел" +# синхронизация узла SyncNode: "Синхронизировать данные с узлом {{ .name }}" LocalName: "Имя 'local' используется только для локальной идентификации в системе" SyncPackageData: "Упаковка данных синхронизации" @@ -218,7 +245,7 @@ SyncCustomApp: "Пользовательское приложение" SyncLanguage: "Язык системы" SyncEdition: "Регион работы" -#upgrade node +# обновление узла NodeUpgrade: "Обновление узла {{ .name }}" UpgradeCheck: "Проверить обновления узла" UpgradeCheckLocal: "Локальные узлы не поддерживают массовое обновление, пропуск..." @@ -231,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "Не удалось загрузить узлы а AutoUpgradeNodes: "Узлы автообновления: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "Не удалось обновить статус узлов автообновления, ошибка: {{ .err }}" -#add node +# добавление узла MasterData: "Данные главного узла" LoadSftpClient: "Загрузить SFTP-клиент" PackageMasterData: "Создать архив резервной копии главного узла" UploadBackup: "Загрузить резервные данные" -MvBackup: "Переместить данные в резервный каталог" TaskAddNode: "Добавить узел" LoadNodeArch: "Получить информацию об архитектуре узла" LoadNodeArchDetail: "Обнаружена архитектура главного узла: {{ .local }}, архитектура дочернего узла: {{ .node }}" @@ -249,7 +275,35 @@ SendAgent: "Отправить установочный пакет узла" StartService: "Запустить сервис" NoBackupNode: "Резервный узел в настоящее время пуст. Выберите резервный узел для сохранения и повторите попытку" -#cmd +# синхронизация файлов и образов узла +LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." +HandlePrivateKey: "Handle node private key" +HandlePublicKey: "Handle node public key" +ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" +NodeFile: "Node file" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "Save image {{ .image }}" +ImageSyncSaveTags: "Save image tags {{ .tags }}" +ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" +ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" +ImageSyncClean: "Clean temporary files for image {{ .image }}" +ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" +ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." +ImageSyncHandlePrivateKey: "Handle image sync node private key" +ImageSyncHandlePublicKey: "Handle image sync node public key" +ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# командная строка +SudoHelper: "Пожалуйста, используйте {{ .cmd }} или переключитесь на пользователя root" +UsernameNeed: "Для Enterprise-версии необходимо указать --username" +DBConnErr: "Ошибка: не удалось инициализировать соединение с базой данных, {{ .err }}" +SystemVersion: "Версия:" +SystemMode: "Режим:" + +# командная строка - приложение AppVersion: "Версия приложения" AppCommands: "Команды приложения" AppInit: "Инициализация приложения" @@ -261,12 +315,14 @@ AppMissVersion: "Отсутствует версия приложения, ис AppVersionExist: "Версия уже существует" AppCreateSuccessful: "Успешно создано" AppWriteErr: "Не удалось записать файл {{ .name }} {{ .err }}" -SudoHelper: "Пожалуйста, используйте {{ .cmd }} или переключитесь на пользователя root" -UsernameNeed: "Для Enterprise-версии необходимо указать --username" + +# командная строка - IP прослушивания ListenIPCommands: "Переключить IP для прослушивания" ListenIPv4: "Прослушивание IPv4" ListenIPv6: "Прослушивание IPv6" ListenChangeSuccessful: "Переключено успешно Теперь прослушиваем {{ .value }}" + +# командная строка - сброс ResetCommands: "Сбросить информацию о системе" ResetMFA: "Отменить двухфакторную аутентификацию 1Panel" ResetHttps: "Отменить вход в 1Panel через https" @@ -274,12 +330,19 @@ ResetEntrance: "Отменить безопасный вход 1Panel" ResetIPs: "Отменить ограничения авторизованных IP для 1Panel" ResetDomain: "Отменить привязку домена доступа 1Panel" ResetPasskey: "Сбросить passkey 1Panel" + +# командная строка - пользователь UserList: "Получить список пользователей 1Panel" UserTableName: "Имя" UserTableMFAStatus: "Статус MFA" UserTableSuperAdmin: "Суперадмин" UserTableCreatedAt: "Создано" UserEmptyList: "Пользователи не найдены" +UserInfo: "Получить информацию о панели" +UserInfoAddr: "Адрес панели:" +UserInfoPassHelp: "Подсказка: для изменения пароля можно выполнить команду:" + +# командная строка - восстановление RestoreCommands: "Откатить сервис и данные 1Panel" RestoreNoSuchFile: "Файлы для отката не найдены" RestoreStep1: "(1/5) Начинаем откат сервиса и данных 1Panel из каталога {{ .name }}..." @@ -288,6 +351,8 @@ RestoreStep3: "(3/5) Откат скриптов 1Panel завершён" RestoreStep4: "(4/5) Откат сервиса 1Panel завершён" RestoreStep5: "(5/5) Откат данных 1Panel завершён" RestoreSuccessful: "Откат завершён. Возвращено к версии {{ .version }}. Перезапускаем сервис..." + +# командная строка - обновление UpdateCommands: "Изменить информацию панели" UpdateUser: "Изменить информацию пользователя" UpdatePassword: "Изменить пароль пользователя" @@ -314,50 +379,12 @@ UpdatePortResult: "Порт панели: {{ .name }}" UpdatePortFirewallAdd: "Не удалось добавить правило фаервола для порта, {{ .err }}, пожалуйста, вручную добавьте порт {{ .name }} в правила фаервола." UpdatePortFirewallDel: "Ошибка: не удалось удалить правило фаервола для порта, {{ .err }}" UpdatePortFirewallReload: "Не удалось перезагрузить фаервол, {{ .err }}, пожалуйста, вручную перезагрузите фаервол." -UserInfo: "Получить информацию о панели" -UserInfoAddr: "Адрес панели:" -UserInfoPassHelp: "Подсказка: для изменения пароля можно выполнить команду:" -DBConnErr: "Ошибка: не удалось инициализировать соединение с базой данных, {{ .err }}" -SystemVersion: "Версия:" -SystemMode: "Режим:" -#exchange -LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." -HandlePrivateKey: "Handle node private key" -HandlePublicKey: "Handle node public key" -ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" -TaskRsync: "Sync" -NodeFile: "Node file" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "Save image {{ .image }}" -ImageSyncSaveTags: "Save image tags {{ .tags }}" -ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" -ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" -ImageSyncClean: "Clean temporary files for image {{ .image }}" -ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" -ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." -ImageSyncHandlePrivateKey: "Handle image sync node private key" -ImageSyncHandlePublicKey: "Handle image sync node public key" -ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# мобильное приложение ErrVerifyToken: 'шибка проверки токена, пожалуйста, сбросьте и отсканируйте снова.' ErrInvalidToken: 'Неверный токен, пожалуйста, сбросьте и отсканируйте снова.' ErrExpiredToken: 'Токен истек, пожалуйста, сбросьте и отсканируйте снова.' -#cluster -ErrMasterDelete: "Невозможно удалить основной узел, сначала удалите подчиненные узлы." -ClusterNameIsExist: "Имя кластера уже существует." -AppStatusUnHealthy: "Получение статуса приложения аномально, пожалуйста, проверьте статус узлов установки в списке узлов." -MasterNodePortNotAvailable: "Проверка подключения порта {{ .port }} узла {{ .name }} не удалась, пожалуйста, проверьте настройки брандмауэра/группы безопасности и статус главного узла." -ClusterMasterNotExist: "Основной узел кластера отключен, пожалуйста, удалите дочерние узлы." - -#ssl -ErrReqFailed: "{{.name}} запрос не удался: {{ .err }}" - -#command +# экспорт команд Name: "Название" Command: "Команда" diff --git a/core/i18n/lang/tr.yaml b/core/i18n/lang/tr.yaml index 3afa825b4..05bebd9d5 100644 --- a/core/i18n/lang/tr.yaml +++ b/core/i18n/lang/tr.yaml @@ -1,35 +1,115 @@ +# temel hatalar ErrInvalidParams: 'İstek geçersiz: {{ .detail }}' ErrTokenParse: 'Token hatası: {{ .detail }}' ErrInitialPassword: 'Orijinal şifre yanlış' ErrInternalServer: 'Sunucu hatası: {{ .detail }}' +ErrInternalServerKey: "İç sunucu hatası:" ErrRecordExist: 'Kayıt zaten var' ErrRecordNotFound: 'Kayıt bulunamadı' ErrStructTransform: 'Dönüşüm hatası: {{ .err }}' -ErrNotLogin: 'Oturum açılmamış: {{ .detail }}' -ErrSessionDataNotFound: "Mevcut oturumun süresi doldu" -ErrSessionDataFormat: "Mevcut oturum verisi biçimi anormal" -ErrPasswordExpired: 'Şifre süresi doldu: {{ .detail }}' ErrNotSupportType: 'Bu tür desteklenmiyor: {{ .name }}' -ErrProxy: 'İstek başarısız: {{ .detail }}' -ErrApiConfigStatusInvalid: 'API kapalı: {{ .detail }}' -ErrApiConfigKeyInvalid: 'Geçersiz API anahtarı: {{ .detail }}' -ErrApiConfigIPInvalid: 'IP izinli değil: {{ .detail }}' -ErrApiConfigDisable: 'API erişimi kapalı: {{ .detail }}' -ErrApiConfigKeyTimeInvalid: 'Zaman damgası hatalı: {{ .detail }}' -ErrLoginLocked: "Çok fazla başarısız deneme yapıldı. Giriş 5 dakika boyunca geçici olarak kilitlendi." +ErrDemoEnvironment: 'Demo modunda yok' +ErrCmdTimeout: 'Komut zaman aşımına uğradı' +ErrPortInUsed: "{{ .name }} portu zaten kullanımda" +ErrFileNotFound: "{{ .name }} dosyası mevcut değil" +ErrReqFailed: "{{.name}} istek başarısız: {{ .err }}" -# request +# istek ve güvenlik girişi ErrNoSuchHost: "İstenen sunucu bulunamıyor {{ .err }}" ErrHttpReqNotFound: "İstenen kaynak bulunamıyor {{ .err }}" ErrHttpReqFailed: "İstek başarısız {{ .err }}" ErrHttpReqTimeOut: "İstek zaman aşımına uğradı {{ .err }}" ErrCreateHttpClient: "İstek oluşturma başarısız {{ .err }}" +ErrProxy: 'İstek başarısız: {{ .detail }}' ErrProxySetting: "Proxy sunucu bilgisi kullanılamıyor {{ .err }}, lütfen kontrol edip tekrar deneyin" +ErrEntrance: "Güvenlik girişi bilgi hatası, lütfen kontrol edip tekrar deneyin" ErrEntranceFormat: "{{ .name }} güvenlik girişi şu anda desteklenmiyor. Lütfen kontrol edip tekrar deneyin" -# common -ErrDemoEnvironment: 'Demo modunda yok' -ErrCmdTimeout: 'Komut zaman aşımına uğradı' +# oturum açma ve güvenlik +ErrNotLogin: 'Oturum açılmamış: {{ .detail }}' +ErrSessionDataNotFound: "Mevcut oturumun süresi doldu" +ErrSessionDataFormat: "Mevcut oturum verisi biçimi anormal" +ErrPasswordExpired: 'Şifre süresi doldu: {{ .detail }}' +ErrLoginLocked: "Çok fazla başarısız deneme yapıldı. Giriş 5 dakika boyunca geçici olarak kilitlendi." +ErrApiConfigStatusInvalid: 'API kapalı: {{ .detail }}' +ErrApiConfigKeyInvalid: 'Geçersiz API anahtarı: {{ .detail }}' +ErrApiConfigIPInvalid: 'IP izinli değil: {{ .detail }}' +ErrApiConfigDisable: 'API erişimi kapalı: {{ .detail }}' +ErrApiConfigKeyTimeInvalid: 'Zaman damgası hatalı: {{ .detail }}' +ErrPasskeyDisabled: "Passkey kullanmak için HTTPS etkinleştirilmelidir" +ErrPasskeyNotConfigured: "Passkey yapılandırılmamış" +ErrPasskeyLimit: "Passkey sınırına ulaşıldı (en fazla 5)" +ErrPasskeySession: "Passkey oturumu süresi dolmuş veya geçersiz" +ErrPasskeyDuplicate: "Passkey zaten mevcut" +ErrPasskeyVerify: "Passkey doğrulaması başarısız" + +# kullanıcı ve izin +ErrNoSuchUser: "Kullanıcı bilgisi bulunamadı, lütfen kontrol edip tekrar deneyin" +ErrToMaster: "Bu kullanıcının ana düğümde bu işlemi yapma izni yok, lütfen kontrol edip tekrar deneyin" +ErrToNode: "Bu kullanıcının bu düğümde bu işlemi yapma izni yok, lütfen kontrol edip tekrar deneyin" +ErrRBAC: "Kullanıcı izinleri yetersiz, bu işlem yapılamaz. Lütfen kontrol edip tekrar deneyin" +ErrNoneNode: "Bu kullanıcının hiçbir düğüm izni yok. Lütfen yöneticiyle iletişime geçin veya kontrol edip tekrar deneyin" +ErrOnlySuperAdmin: "Bu özellik yalnızca süper yöneticiler tarafından kullanılabilir" +ErrRolePresetCannotDelete: "Sistem ön tanımlı rolleri silinemez" +ErrRolePresetCannotUpdate: "Sistem ön tanımlı rolleri güncellenemez" +ErrRoleBoundToUser: "Bu rol zaten kullanıcılara bağlı ve silinemez" +ErrRolePresetCannotBind: "Sistem ön tanımlı rolleri kullanıcılara atanamaz" +ErrNodeAdminMasterForbidden: "Ana düğüme düğüm yöneticisi izni eklenemez" +ErrSuperAdminCannotDelete: "Süper yönetici kullanıcılar silinemez" +ErrGroupIsDefault: "Varsayılan grup, silinemez" +ErrGroupIsInUse: "Grup kullanımda ve silinemez." + +# lisans +LicenseCheck: 'Lisansın mevcut olup olmadığını kontrol et' +ErrLicenseInUsed: 'Lisans zaten bağlı. Lütfen kontrol edip tekrar deneyin' +ErrLicenseExpired: 'Lisansın süresi dolmuş. Lütfen kontrol edip tekrar deneyin' +ErrLicense: "Lisans format hatası, lütfen kontrol edip tekrar deneyin" +ErrLicenseCheck: "Lisans doğrulama başarısız, lütfen kontrol edip tekrar deneyin" +ErrXpackVersion: "Lisans doğrulama başarısız, bu lisans sürüm sınırlıdır, içe aktarılamıyor, lütfen kontrol edip tekrar deneyin" +ErrLicenseSave: "Lisans bilgilerini kaydetme başarısız, hata {{ .err }}, lütfen tekrar deneyin" +ErrLicenseSync: "Lisans senkronizasyonu başarısız, veritabanında lisans bilgisi tespit edilmedi" +ErrLicenseExist: "Bu lisans kaydı zaten mevcut. Düğüm bağlama için doğrudan lisans sayfasına gidebilirsiniz." +ErrXpackNotFound: "Bu bölüm Business Sürüm gerektirir. Lisansı Panel Ayarları > Lisans bölümünden içe aktarın" +ErrXpackExceptional: "Bu bölüm Business Sürüm gerektirir. Lisans durumunu Panel Ayarları > Lisans bölümünden senkronize edin" +ErrXpackLost: "Lisans yeniden deneme sınırına ulaştı. Panel Ayarları > Lisans bölümüne gidip manuel senkronizasyon çalıştırın" +ErrEnterpriseLicenseRequired: "Enterprise Edition lisansı içe aktarılmamış. Önce bir lisans içe aktarın." +ErrDeviceLost: "Lisans doğrulama için gerekli dosyalar eksik, lütfen kontrol edip tekrar deneyin" +ErrDeviceErr: "Mevcut ortam lisans içe aktarma ortamıyla eşleşmiyor. Lütfen lisansı düzenleyip yeniden içe aktarın." +ErrXpackTimeout: "İstek zaman aşımı, ağ bağlantısı kararsız olabilir, lütfen daha sonra tekrar deneyin" +ErrUnbindMaster: "Düğüm yönetiminde düğümler tespit edildi, mevcut lisansın bağı çözülemiyor, lütfen önce düğümleri kaldırın ve tekrar deneyin" +ErrFreeNodeLimit: "Eklenebilecek düğüm sayısı sınırına ulaşıldı. Satın aldıktan sonra tekrar deneyin." +ErrNodeBound: "Bu lisans başka bir düğüme bağlı, lütfen kontrol edip tekrar deneyin" +ErrNodeBoundDelete: "Bu lisans bağlı ve silme işlemlerini desteklemiyor. Lütfen kontrol edip tekrar deneyin" +ErrNodeBoundLimit: "Mevcut ücretsiz düğüm limitine ulaştı, lütfen kontrol edip tekrar deneyin" +ErrLicenseFree: "Ücretsiz düğümler yalnızca lisans bir düğüme düzgün şekilde bağlandığında kullanılabilir. Lütfen doğrulayın ve tekrar deneyin" +ErrLicenseUnbind: "Bu lisansa hala Community Sürümü düğümleri bağlı. Panel Ayarları > Lisans bölümünden bağlantıyı kaldırıp tekrar deneyin" +ErrLicenseBindCount: "Yeni lisansın ücretsiz düğüm sayısı mevcut bağlı Community Sürümü düğüm sayısından az. Lütfen kontrol edip tekrar deneyin" +ErrNoSuchNode: "Düğüm bilgisi bulunamadı, lütfen kontrol edip tekrar deneyin" +ErrNodeUnbind: "Bu düğüm lisans bağlama aralığında değil, lütfen kontrol edip tekrar deneyin" +ErrNodeBind: "Bu düğüm zaten bir lisansa bağlı, lütfen kontrol edip tekrar deneyin" +ErrNodeLocalRollback: "Ana düğüm doğrudan rollback'i desteklemez. Rollback için '1pctl restore' komutunu manuel çalıştırın" +ErrIntlLicense: "Mevcut sürüm uluslararası sürüm lisansının içe aktarılmasını henüz desteklemiyor. Yakında" +InvalidRequestBodyType: "Geçersiz istek gövdesi formatı, lütfen içeriğin format gereksinimlerine uygun olduğunu kontrol edip tekrar deneyin" +InvalidLicenseCodeType: "Sağlanan lisans kodu formatı geçersiz, lütfen kontrol edip tekrar deneyin" +LicenseNotFoundType: "Lisans bulunamadı, sistemde sağlanan lisansla eşleşen bir kayıt yok. Lütfen kontrol edip tekrar deneyin" +LicenseRevokedType: "İstenen lisans iptal edilmiş ve artık kullanılamaz. Lütfen kontrol edip tekrar deneyin" +LicenseExpiredType: "Lisansın süresi doldu. Lütfen yenileyin veya Panel Ayarları - Lisans bölümünden yeniden içe aktarın" +LicenseProductMismatchType: "Lisans, istenen ürün veya hizmetle eşleşmiyor" +InvalidAssigneeType: "Lisans ataması için hedef kullanıcı veya cihaz bilgisi geçersiz. Lütfen kontrol edip tekrar deneyin" +LicenseUsageNotFoundType: "Kullanım kaydı bulunamadı. Bu lisans henüz etkinleştirilmemiş veya kullanılmamış. Lütfen kontrol edip tekrar deneyin" +LicenseUsageLimitExceededType: "Bu lisans zaten başka bir düğüme bağlı. Lütfen kontrol edip tekrar deneyin" + +# düğüm ve küme +MasterNode: "Ana Düğüm" +Node: "Düğüm" +ErrLocalDelete: "Yerel düğüm silinemez" +ErrMasterDelete: "Ana düğümü silinemiyor, lütfen önce alt düğümleri silin." +ClusterNameIsExist: "Küme adı zaten var." +AppStatusUnHealthy: "Uygulama durumu alımı anormal, lütfen düğüm listesindeki yükleme düğümü durumunu kontrol edin." +MasterNodePortNotAvailable: "Düğüm {{ .name }} portu {{ .port }} bağlantı doğrulaması başarısız oldu, lütfen güvenlik duvarı/güvenlik grubu ayarlarını ve ana düğüm durumunu kontrol edin." +ClusterMasterNotExist: "Küme ana düğümü bağlantısı kesildi, lütfen alt düğümleri silin." + +# sanal makine ErrVMNotFound: "Sanal makine mevcut değil" ErrVMAlreadyExists: "Sanal makine zaten mevcut" ErrVMRunning: "Sanal makine çalışıyor" @@ -45,9 +125,27 @@ VMSnapshotRecoverTask: "Recover snapshot [{{ .snapshot }}] for virtual machine [ VMSnapshotRecoverStep: "Recover virtual machine snapshot [{{ .snapshot }}]" VMSnapshotDeleteTask: "Delete snapshot [{{ .snapshot }}] for virtual machine [{{ .vm }}]" VMSnapshotDeleteStep: "Delete virtual machine snapshot [{{ .snapshot }}]" -ErrEntrance: "Güvenlik girişi bilgi hatası, lütfen kontrol edip tekrar deneyin" -ErrGroupIsDefault: "Varsayılan grup, silinemez" -ErrGroupIsInUse: "Grup kullanımda ve silinemez." + +# uygulama +CustomAppStoreFileValid: "Uygulama mağazası paketi .tar.gz formatında olmalıdır" +AppBackup: 'Uygulama yedekleme' +AppBackupPush: 'Uygulama yedek dosyası {{.file}} düğüm {{ .name }} a aktar' +ErrSourceTargetSame: 'Kaynak düğüm ve hedef düğüm aynı olamaz' +AppInstall: 'Düğüm {{ .targetNode }} üzerine {{ .name }} uygulamasını yükle' +AppInstallCheck: 'Uygulama kurulum ortamını kontrol et' + +# yedekleme +ErrBackupInUsed: 'Yedek hesabı görevde kullanılıyor' +ErrBackupCheck: 'Bağlantı testi başarısız: {{ .err }}' +ErrBackupLocal: "Yerel sunucu yedekleme hesabı bu işlemi desteklemiyor" +ErrBackupPublic: "Bu yedekleme hesabının herkese açık olmadığı tespit edildi, lütfen kontrol edip tekrar deneyin" +ErrOSSConn: "En son sürüm alınamıyor, lütfen sunucunun dış ağ bağlantısını kontrol edin." +MvBackup: "Verileri yedek dizinine taşı" + +# uyarı +ErrAlertSync: "Uyarı bilgisi senkronizasyon hatası, lütfen kontrol edip tekrar deneyin" + +# AI ağ geçidi ErrAIProxyUserGroupIsDefault: "Varsayılan kullanıcı grubu silinemez." ErrAIProxyUserGroupInUse: "Kullanıcı grubu kullanımda ve silinemez." ErrAIProxyUserGroupExists: "Kullanıcı grubu adı zaten mevcut." @@ -56,85 +154,9 @@ ErrAIProxyModelGroupInUse: "Model grubu kullanımda ve silinemez." ErrAIProxyModelGroupExists: "Model grubu adı zaten mevcut." ErrAIProxySensitiveGroupInUse: "Hassas kelime grubu kullanımda ve silinemez." ErrAIProxySensitiveGroupExists: "Hassas kelime grubu adı zaten mevcut." -ErrLocalDelete: "Yerel düğüm silinemez" -ErrPortInUsed: "{{ .name }} portu zaten kullanımda" -ErrInternalServerKey: "İç sunucu hatası:" -MasterNode: "Ana Düğüm" +AIBenchmarkRun: "AI kıyaslama testini çalıştır" -# app -CustomAppStoreFileValid: "Uygulama mağazası paketi .tar.gz formatında olmalıdır" -ErrFileNotFound: "{{ .name }} dosyası mevcut değil" -AppBackup: 'Uygulama yedekleme' -AppBackupPush: 'Uygulama yedek dosyası {{.file}} düğüm {{ .name }} a aktar' -ErrSourceTargetSame: 'Kaynak düğüm ve hedef düğüm aynı olamaz' -AppInstall: 'Düğüm {{ .targetNode }} üzerine {{ .name }} uygulamasını yükle' -AppInstallCheck: 'Uygulama kurulum ortamını kontrol et' - -# backup -ErrBackupInUsed: 'Yedek hesabı görevde kullanılıyor' -ErrBackupCheck: 'Bağlantı testi başarısız: {{ .err }}' -ErrBackupLocal: "Yerel sunucu yedekleme hesabı bu işlemi desteklemiyor" -ErrBackupPublic: "Bu yedekleme hesabının herkese açık olmadığı tespit edildi, lütfen kontrol edip tekrar deneyin" -ErrOSSConn: "En son sürüm alınamıyor, lütfen sunucunun dış ağ bağlantısını kontrol edin." - -#license -LicenseCheck: 'Lisansın mevcut olup olmadığını kontrol et' -ErrLicenseInUsed: 'Lisans zaten bağlı. Lütfen kontrol edip tekrar deneyin' -ErrLicenseExpired: 'Lisansın süresi dolmuş. Lütfen kontrol edip tekrar deneyin' -ErrLicense: "Lisans format hatası, lütfen kontrol edip tekrar deneyin" -ErrLicenseCheck: "Lisans doğrulama başarısız, lütfen kontrol edip tekrar deneyin" -ErrXpackVersion: "Lisans doğrulama başarısız, bu lisans sürüm sınırlıdır, içe aktarılamıyor, lütfen kontrol edip tekrar deneyin" -ErrLicenseSave: "Lisans bilgilerini kaydetme başarısız, hata {{ .err }}, lütfen tekrar deneyin" -ErrLicenseSync: "Lisans senkronizasyonu başarısız, veritabanında lisans bilgisi tespit edilmedi" -ErrLicenseExist: "Bu lisans kaydı zaten mevcut. Düğüm bağlama için doğrudan lisans sayfasına gidebilirsiniz." -ErrXpackNotFound: "Bu bölüm Business Sürüm gerektirir. Lisansı Panel Ayarları > Lisans bölümünden içe aktarın" -ErrXpackExceptional: "Bu bölüm Business Sürüm gerektirir. Lisans durumunu Panel Ayarları > Lisans bölümünden senkronize edin" -ErrXpackLost: "Lisans yeniden deneme sınırına ulaştı. Panel Ayarları > Lisans bölümüne gidip manuel senkronizasyon çalıştırın" -ErrEnterpriseLicenseRequired: "Enterprise Edition lisansı içe aktarılmamış. Önce bir lisans içe aktarın." -ErrDeviceLost: "Lisans doğrulama için gerekli dosyalar eksik, lütfen kontrol edip tekrar deneyin" -ErrXpackTimeout: "İstek zaman aşımı, ağ bağlantısı kararsız olabilir, lütfen daha sonra tekrar deneyin" -ErrUnbindMaster: "Düğüm yönetiminde düğümler tespit edildi, mevcut lisansın bağı çözülemiyor, lütfen önce düğümleri kaldırın ve tekrar deneyin" -ErrFreeNodeLimit: "Eklenebilecek düğüm sayısı sınırına ulaşıldı. Satın aldıktan sonra tekrar deneyin." -ErrNodeBound: "Bu lisans başka bir düğüme bağlı, lütfen kontrol edip tekrar deneyin" -ErrNodeBoundDelete: "Bu lisans bağlı ve silme işlemlerini desteklemiyor. Lütfen kontrol edip tekrar deneyin" -ErrNodeBoundLimit: "Mevcut ücretsiz düğüm limitine ulaştı, lütfen kontrol edip tekrar deneyin" -ErrLicenseFree: "Ücretsiz düğümler yalnızca lisans bir düğüme düzgün şekilde bağlandığında kullanılabilir. Lütfen doğrulayın ve tekrar deneyin" -ErrLicenseUnbind: "Bu lisansa hala Community Sürümü düğümleri bağlı. Panel Ayarları > Lisans bölümünden bağlantıyı kaldırıp tekrar deneyin" -ErrLicenseBindCount: "Yeni lisansın ücretsiz düğüm sayısı mevcut bağlı Community Sürümü düğüm sayısından az. Lütfen kontrol edip tekrar deneyin" -ErrNoSuchNode: "Düğüm bilgisi bulunamadı, lütfen kontrol edip tekrar deneyin" -ErrNodeUnbind: "Bu düğüm lisans bağlama aralığında değil, lütfen kontrol edip tekrar deneyin" -ErrNodeBind: "Bu düğüm zaten bir lisansa bağlı, lütfen kontrol edip tekrar deneyin" -ErrNodeLocalRollback: "Ana düğüm doğrudan rollback'i desteklemez. Rollback için '1pctl restore' komutunu manuel çalıştırın" -ErrIntlLicense: "Mevcut sürüm uluslararası sürüm lisansının içe aktarılmasını henüz desteklemiyor. Yakında" - -# user -ErrNoSuchUser: "Kullanıcı bilgisi bulunamadı, lütfen kontrol edip tekrar deneyin" -ErrToMaster: "Bu kullanıcının ana düğümde bu işlemi yapma izni yok, lütfen kontrol edip tekrar deneyin" -ErrToNode: "Bu kullanıcının bu düğümde bu işlemi yapma izni yok, lütfen kontrol edip tekrar deneyin" -ErrRBAC: "Kullanıcı izinleri yetersiz, bu işlem yapılamaz. Lütfen kontrol edip tekrar deneyin" -ErrNoneNode: "Bu kullanıcının hiçbir düğüm izni yok. Lütfen yöneticiyle iletişime geçin veya kontrol edip tekrar deneyin" -ErrOnlySuperAdmin: "Bu özellik yalnızca süper yöneticiler tarafından kullanılabilir" -ErrRolePresetCannotDelete: "Sistem ön tanımlı rolleri silinemez" -ErrRolePresetCannotUpdate: "Sistem ön tanımlı rolleri güncellenemez" -ErrRoleBoundToUser: "Bu rol zaten kullanıcılara bağlı ve silinemez" -ErrRolePresetCannotBind: "Sistem ön tanımlı rolleri kullanıcılara atanamaz" -ErrNodeAdminMasterForbidden: "Ana düğüme düğüm yöneticisi izni eklenemez" -ErrSuperAdminCannotDelete: "Süper yönetici kullanıcılar silinemez" - -InvalidRequestBodyType: "Geçersiz istek gövdesi formatı, lütfen içeriğin format gereksinimlerine uygun olduğunu kontrol edip tekrar deneyin" -InvalidLicenseCodeType: "Sağlanan lisans kodu formatı geçersiz, lütfen kontrol edip tekrar deneyin" -LicenseNotFoundType: "Lisans bulunamadı, sistemde sağlanan lisansla eşleşen bir kayıt yok. Lütfen kontrol edip tekrar deneyin" -LicenseRevokedType: "İstenen lisans iptal edilmiş ve artık kullanılamaz. Lütfen kontrol edip tekrar deneyin" -LicenseExpiredType: "Lisansın süresi doldu. Lütfen yenileyin veya Panel Ayarları - Lisans bölümünden yeniden içe aktarın" -LicenseProductMismatchType: "Lisans, istenen ürün veya hizmetle eşleşmiyor" -InvalidAssigneeType: "Lisans ataması için hedef kullanıcı veya cihaz bilgisi geçersiz. Lütfen kontrol edip tekrar deneyin" -LicenseUsageNotFoundType: "Kullanım kaydı bulunamadı. Bu lisans henüz etkinleştirilmemiş veya kullanılmamış. Lütfen kontrol edip tekrar deneyin" -LicenseUsageLimitExceededType: "Bu lisans zaten başka bir düğüme bağlı. Lütfen kontrol edip tekrar deneyin" - -# alert -ErrAlertSync: "Uyarı bilgisi senkronizasyon hatası, lütfen kontrol edip tekrar deneyin" - -# task +# görev TaskStart: "{{ .name }} görevi başladı [BAŞLANGIÇ]" TaskEnd: "{{ .name }} görevi bitti [TAMAMLANDI]" TaskFailed: "{{ .name }} görevi başarısız" @@ -148,6 +170,16 @@ TaskUpgrade: "Yükseltme" TaskSync: 'Senkronize' TaskSyncForNode: "Düğüm Verilerini Senkronize Et" TaskBackup: "Yedekleme" +TaskPush: "Gönder" +TaskRsync: "Sync" +SuccessStatus: "{{ .name }} başarılı" +FailedStatus: "{{ .name }} başarısız {{ .err }}" +Start: "Başla" +SubTask: "Alt görev" +Skip: "Hataları atla ve devam et..." +Success: "Başarılı" + +# ajan toplu görevi BatchInstallAgent: "Aracıları toplu kur" DispatchAgentInstallTasks: "Aracı kurulum görevlerini gönder" BatchUpgradeAgent: "Aracıları toplu yükselt" @@ -181,20 +213,15 @@ AgentOperateStart: "Başlat" AgentOperateStop: "Durdur" AgentOperateRestart: "Yeniden başlat" AgentOperateDelete: "Sil" -SuccessStatus: "{{ .name }} başarılı" -FailedStatus: "{{ .name }} başarısız {{ .err }}" -Start: "Başla" -SubTask: "Alt görev" -Skip: "Hataları atla ve devam et..." + +# uygulama ve beceri görevi PushAppInstallTaskToNode: "Uygulama kurulum görevini düğüme [{{ .name }}] gönder" -TaskPush: "Gönder" AppInstallTask: "Uygulama kurulum görevi" PushAppFailed: "Uygulama kurulum görevi gönderilemedi" SkillHubInstallTask: "Skill yükle [{{ .name }}]" SkillHubInstallToTarget: "Skill hedefe yükle [{{ .name }}]" -Success: "Başarılı" -#script +# betik kitaplığı ScriptLibrary: "Betik Kütüphanesi" RemoteScriptLibrary: "Uzak Komut Dosyası Kütüphanesi" ScriptSyncSkip: "Mevcut betik kütüphanesi zaten en son sürüm" @@ -202,7 +229,7 @@ DownloadData: "Betik kütüphanesi dosyası data.yaml indiriliyor" DownloadPackage: "Betik kütüphanesi paketi indiriliyor" AnalyticCompletion: "Analiz tamamlandı, şimdi veritabanına senkronize ediliyor..." -Node: "Düğüm" +# düğüm senkronizasyonu SyncNode: "Verileri {{ .name }} düğümüne senkronize et" LocalName: "'local' adı yalnızca sistem yerel tanımlaması için kullanılır" SyncPackageData: "Paket senkronizasyon verisi" @@ -218,7 +245,7 @@ SyncCustomApp: "Özel Uygulama" SyncLanguage: "Sistem Dili" SyncEdition: "Çalışma Bölgesi" -#upgrade node +# düğüm yükseltme NodeUpgrade: "Düğümü yükselt {{ .name }}" UpgradeCheck: "Düğüm güncellemelerini kontrol et" UpgradeCheckLocal: "Yerel düğümler toplu yükseltmeleri desteklemiyor, atlanıyor..." @@ -231,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "Otomatik yükseltme düğümleri yüklenemedi, hata AutoUpgradeNodes: "Otomatik yükseltme düğümleri: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "Otomatik yükseltme düğümlerinin durumu güncellenemedi, hata: {{ .err }}" -#add node +# düğüm ekleme MasterData: "Ana Düğüm Verisi" LoadSftpClient: "SFTP İstemcisini Yükle" PackageMasterData: "Ana düğüm yedek paketi oluştur" UploadBackup: "Yedek verileri yükle" -MvBackup: "Verileri yedek dizinine taşı" TaskAddNode: "Düğüm ekle" LoadNodeArch: "Düğüm mimari bilgilerini al" LoadNodeArchDetail: "Ana düğüm mimarisi tespit edildi: {{ .local }}, alt düğüm mimarisi: {{ .node }}" @@ -249,7 +275,35 @@ SendAgent: "Düğüm kurulum paketini dağıt" StartService: "Servisi başlat" NoBackupNode: "Yedek düğüm şu anda boş. Lütfen kaydetmek için bir yedek düğüm seçin ve tekrar deneyin" -#cmd +# düğüm dosyası ve imaj senkronizasyonu +LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." +HandlePrivateKey: "Handle node private key" +HandlePublicKey: "Handle node public key" +ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" +NodeFile: "Node file" +ImageSyncTaskName: "Image sync {{ .count }} images" +SSLSyncTaskName: "Certificate sync {{ .count }} certificates" +AppSyncTaskName: "App sync {{ .name }}" +SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" +ImageSyncSave: "Save image {{ .image }}" +ImageSyncSaveTags: "Save image tags {{ .tags }}" +ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" +ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" +ImageSyncClean: "Clean temporary files for image {{ .image }}" +ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" +ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." +ImageSyncHandlePrivateKey: "Handle image sync node private key" +ImageSyncHandlePublicKey: "Handle image sync node public key" +ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# komut satırı +SudoHelper: "Lütfen {{ .cmd }} kullanın veya root kullanıcısına geçin" +UsernameNeed: "Enterprise sürümü --username belirtmelidir" +DBConnErr: "Hata: Veritabanı bağlantısını başlatma başarısız, {{ .err }}" +SystemVersion: "sürüm: " +SystemMode: "mod: " + +# komut satırı - uygulama AppVersion: "Uygulama sürümü" AppCommands: "Uygulama ile ilgili komutlar" AppInit: "Uygulamayı başlat" @@ -261,12 +315,14 @@ AppMissVersion: "Uygulama sürümü eksik, belirtmek için -v kullanın" AppVersionExist: "Sürüm zaten mevcut" AppCreateSuccessful: "Oluşturma başarılı" AppWriteErr: "Dosya {{ .name }} yazma başarısız {{ .err }}" -SudoHelper: "Lütfen {{ .cmd }} kullanın veya root kullanıcısına geçin" -UsernameNeed: "Enterprise sürümü --username belirtmelidir" + +# komut satırı - dinleme IP ListenIPCommands: "Dinleme IP'sini değiştir" ListenIPv4: "IPv4'te dinle" ListenIPv6: "IPv6'da dinle" ListenChangeSuccessful: "Değişiklik başarılı Şimdi {{ .value }} üzerinde dinleniyor" + +# komut satırı - sıfırlama ResetCommands: "Sistem bilgilerini sıfırla" ResetMFA: "1Panel iki faktörlü kimlik doğrulamayı iptal et" ResetHttps: "1Panel https girişini iptal et" @@ -274,12 +330,19 @@ ResetEntrance: "1Panel güvenli girişi iptal et" ResetIPs: "1Panel yetkili IP kısıtlamalarını iptal et" ResetDomain: "1Panel alan adı bağlamasını iptal et" ResetPasskey: "1Panel passkey'lerini sıfırla" + +# komut satırı - kullanıcı UserList: "1Panel kullanıcı listesini getir" UserTableName: "Ad" UserTableMFAStatus: "MFA Durumu" UserTableSuperAdmin: "Süper Yönetici" UserTableCreatedAt: "Oluşturulma" UserEmptyList: "Kullanıcı bulunamadı" +UserInfo: "Panel bilgilerini al" +UserInfoAddr: "Panel adresi: " +UserInfoPassHelp: "İpucu: Şifreyi değiştirmek için komutu çalıştırabilirsiniz: " + +# komut satırı - geri yükleme RestoreCommands: "1Panel servisini ve verilerini geri al" RestoreNoSuchFile: "Rollback için dosya bulunamadı" RestoreStep1: "(1/5) {{ .name }} dizininden 1Panel hizmeti ve verileri geri alınıyor..." @@ -288,6 +351,8 @@ RestoreStep3: "(3/5) 1Panel betikleri için geri alma tamamlandı" RestoreStep4: "(4/5) 1Panel hizmeti için geri alma tamamlandı" RestoreStep5: "(5/5) 1Panel verileri için geri alma tamamlandı" RestoreSuccessful: "Geri alma tamamlandı. {{ .version }} sürümüne dönüldü. Hizmet yeniden başlatılıyor..." + +# komut satırı - güncelleme UpdateCommands: "Panel bilgilerini güncelle" UpdateUser: "Kullanıcı bilgilerini güncelle" UpdatePassword: "Kullanıcı şifresini güncelle" @@ -314,50 +379,12 @@ UpdatePortResult: "Panel Portu: {{ .name }}" UpdatePortFirewallAdd: "Güvenlik duvarı port kuralı ekleme başarısız, {{ .err }}, lütfen {{ .name }} portunu güvenlik duvarı kurallarına manuel olarak ekleyin." UpdatePortFirewallDel: "Hata: Güvenlik duvarı portu silme başarısız, {{ .err }}" UpdatePortFirewallReload: "Güvenlik duvarını yeniden yükleme başarısız, {{ .err }}, lütfen güvenlik duvarını manuel olarak yeniden yükleyin." -UserInfo: "Panel bilgilerini al" -UserInfoAddr: "Panel adresi: " -UserInfoPassHelp: "İpucu: Şifreyi değiştirmek için komutu çalıştırabilirsiniz: " -DBConnErr: "Hata: Veritabanı bağlantısını başlatma başarısız, {{ .err }}" -SystemVersion: "sürüm: " -SystemMode: "mod: " -#exchange -LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information." -HandlePrivateKey: "Handle node private key" -HandlePublicKey: "Handle node public key" -ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}" -TaskRsync: "Sync" -NodeFile: "Node file" -ImageSyncTaskName: "Image sync {{ .count }} images" -SSLSyncTaskName: "Certificate sync {{ .count }} certificates" -AppSyncTaskName: "App sync {{ .name }}" -SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]" -ImageSyncSave: "Save image {{ .image }}" -ImageSyncSaveTags: "Save image tags {{ .tags }}" -ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}" -ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}" -ImageSyncClean: "Clean temporary files for image {{ .image }}" -ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID" -ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored." -ImageSyncHandlePrivateKey: "Handle image sync node private key" -ImageSyncHandlePublicKey: "Handle image sync node public key" -ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# mobil uygulama ErrVerifyToken: 'Token doğrulama hatası, lütfen sıfırlayın ve tekrar tarayın.' ErrInvalidToken: 'Geçersiz token, lütfen sıfırlayın ve tekrar tarayın.' ErrExpiredToken: 'Token süresi dolmuş, lütfen sıfırlayın ve tekrar tarayın.' -#cluster -ErrMasterDelete: "Ana düğümü silinemiyor, lütfen önce alt düğümleri silin." -ClusterNameIsExist: "Küme adı zaten var." -AppStatusUnHealthy: "Uygulama durumu alımı anormal, lütfen düğüm listesindeki yükleme düğümü durumunu kontrol edin." -MasterNodePortNotAvailable: "Düğüm {{ .name }} portu {{ .port }} bağlantı doğrulaması başarısız oldu, lütfen güvenlik duvarı/güvenlik grubu ayarlarını ve ana düğüm durumunu kontrol edin." -ClusterMasterNotExist: "Küme ana düğümü bağlantısı kesildi, lütfen alt düğümleri silin." - -#ssl -ErrReqFailed: "{{.name}} istek başarısız: {{ .err }}" - -#command +# komut dışa aktarma Name: "Ad" Command: "Komut" diff --git a/core/i18n/lang/zh-Hant.yaml b/core/i18n/lang/zh-Hant.yaml index 93e3a0769..6e8c2d07a 100644 --- a/core/i18n/lang/zh-Hant.yaml +++ b/core/i18n/lang/zh-Hant.yaml @@ -1,83 +1,65 @@ +# 基礎錯誤 ErrInvalidParams: "請求參數錯誤: {{ .detail }}" ErrTokenParse: "Token 產生錯誤: {{ .detail }}" ErrInitialPassword: "原密碼錯誤" ErrInternalServer: "服務內部錯誤: {{ .detail }}" +ErrInternalServerKey: "服務內部錯誤: " ErrRecordExist: "記錄已存在" ErrRecordNotFound: "記錄未找到" ErrStructTransform: "類型轉換失敗: {{ .detail }}" -ErrNotLogin: "使用者未登入: {{ .detail }}" -ErrSessionDataNotFound: "目前工作階段已過期!" -ErrSessionDataFormat: "目前工作階段資料格式異常!" -ErrPasswordExpired: "目前密碼已過期: {{ .detail }}" ErrNotSupportType: "系統暫不支援目前類型: {{ .name }}" -ErrProxy: "請求錯誤,請檢查該節點狀態: {{ .detail }}" -ErrApiConfigStatusInvalid: "API 介面禁止存取: {{ .detail }}" -ErrApiConfigKeyInvalid: "API 金鑰錯誤: {{ .detail }}" -ErrApiConfigIPInvalid: "API 請求 IP 不在白名單: {{ .detail }}" -ErrApiConfigDisable: "此介面禁止使用 API 呼叫: {{ .detail }}" -ErrApiConfigKeyTimeInvalid: "API 時間戳錯誤: {{ .detail }}" -ErrLoginLocked: "失敗次數過多,目前登入已被暫時鎖定 5 分鐘。" +ErrDemoEnvironment: "示範伺服器,禁止此操作!" +ErrCmdTimeout: "指令執行逾時!" +ErrPortInUsed: "{{ .name }} 埠已被佔用!" +ErrFileNotFound: "{{ .name }} 檔案不存在" +ErrReqFailed: "{{.name}} 請求失敗: {{ .err }}" -#request +# 請求與安全入口 ErrNoSuchHost: "無法找到請求的伺服器 {{ .err }}" ErrHttpReqNotFound: "無法找到請求的資源 {{ .err }}" ErrHttpReqFailed: "請求失敗 {{ .err }}" ErrHttpReqTimeOut: "請求逾時 {{ .err }}" ErrCreateHttpClient: "建立請求失敗 {{ .err }}" +ErrProxy: "請求錯誤,請檢查該節點狀態: {{ .detail }}" ErrProxySetting: "代理伺服器資訊不可用 {{ .err }},請檢查後重試。" +ErrEntrance: "安全入口資訊錯誤,請檢查後再試。" ErrEntranceFormat: "暫不支援安全入口 {{ .name }} ,請檢查後重試。" -#common -ErrDemoEnvironment: "示範伺服器,禁止此操作!" -ErrCmdTimeout: "指令執行逾時!" -ErrVMNotFound: "虛擬機不存在" -ErrVMAlreadyExists: "虛擬機已存在" -ErrVMRunning: "虛擬機正在執行" -ErrVMLibvirtConnect: "連接 libvirt 失敗: {{ .detail }}" -ErrVMPermission: "沒有虛擬機操作權限: {{ .detail }}" -ErrVMNetworkNotFound: "虛擬機網路不存在: {{ .detail }}" -ErrVMInvalidPath: "虛擬機路徑非法: {{ .detail }}" -ErrVMInvalidInput: "虛擬機參數非法: {{ .detail }}" -ErrVMCommandFailed: "虛擬機指令執行失敗: {{ .err }}" -VMSnapshotCreateTask: "建立虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotCreateStep: "建立虛擬機快照 [{{ .snapshot }}]" -VMSnapshotRecoverTask: "復原虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotRecoverStep: "復原虛擬機快照 [{{ .snapshot }}]" -VMSnapshotDeleteTask: "刪除虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotDeleteStep: "刪除虛擬機快照 [{{ .snapshot }}]" -ErrEntrance: "安全入口資訊錯誤,請檢查後再試。" +# 登入與安全 +ErrNotLogin: "使用者未登入: {{ .detail }}" +ErrSessionDataNotFound: "目前工作階段已過期!" +ErrSessionDataFormat: "目前工作階段資料格式異常!" +ErrPasswordExpired: "目前密碼已過期: {{ .detail }}" +ErrLoginLocked: "失敗次數過多,目前登入已被暫時鎖定 5 分鐘。" +ErrApiConfigStatusInvalid: "API 介面禁止存取: {{ .detail }}" +ErrApiConfigKeyInvalid: "API 金鑰錯誤: {{ .detail }}" +ErrApiConfigIPInvalid: "API 請求 IP 不在白名單: {{ .detail }}" +ErrApiConfigDisable: "此介面禁止使用 API 呼叫: {{ .detail }}" +ErrApiConfigKeyTimeInvalid: "API 時間戳錯誤: {{ .detail }}" +ErrPasskeyDisabled: "需啟用 HTTPS 才能使用 Passkey" +ErrPasskeyNotConfigured: "尚未設定 Passkey" +ErrPasskeyLimit: "Passkey 數量已達上限(最多 5 個)" +ErrPasskeySession: "Passkey 會話已過期或無效" +ErrPasskeyDuplicate: "Passkey 已存在" +ErrPasskeyVerify: "Passkey 驗證失敗" + +# 使用者與權限 +ErrNoSuchUser: "未能找到該使用者資訊,請檢查後重試!" +ErrToMaster: "該使用者無權限對主節點進行此操作,請檢查後重試!" +ErrToNode: "該使用者無權限對該節點進行此操作,請檢查後重試!" +ErrRBAC: "使用者權限不足,無法進行此操作,請檢查後重試!" +ErrNoneNode: "該使用者無任何節點權限,請聯絡管理員或檢查後重試!" +ErrOnlySuperAdmin: "僅超級管理員支援此功能!" +ErrRolePresetCannotDelete: "系統預設角色,無法刪除" +ErrRolePresetCannotUpdate: "系統預設角色,無法修改" +ErrRoleBoundToUser: "角色已被使用者綁定,無法刪除" +ErrRolePresetCannotBind: "系統預設角色,無法分配給使用者" +ErrNodeAdminMasterForbidden: "主節點不允許新增節點管理員權限" +ErrSuperAdminCannotDelete: "超級管理員使用者無法刪除" ErrGroupIsDefault: "預設分組無法刪除" ErrGroupIsInUse: "分組正被使用,無法刪除。" -ErrAIProxyUserGroupIsDefault: "預設使用者群組無法刪除" -ErrAIProxyUserGroupInUse: "使用者群組正被使用,無法刪除。" -ErrAIProxyUserGroupExists: "使用者群組名稱已存在" -ErrAIProxyBackendAccountExists: "該模型帳號已匯入 AI 閘道帳號池,請勿重複匯入" -ErrAIProxyModelGroupInUse: "模型組正在使用,無法刪除" -ErrAIProxyModelGroupExists: "模型組名稱已存在" -ErrAIProxySensitiveGroupInUse: "敏感詞分組正在使用,無法刪除。" -ErrAIProxySensitiveGroupExists: "敏感詞分組名稱已存在" -ErrLocalDelete: "無法刪除本機節點!" -ErrPortInUsed: "{{ .name }} 埠已被佔用!" -ErrInternalServerKey: "服務內部錯誤: " -MasterNode: "主節點" -#app -CustomAppStoreFileValid: "應用商店包需要 .tar.gz 格式" -ErrFileNotFound: "{{ .name }} 檔案不存在" -AppBackup: '應用備份' -AppBackupPush: '傳輸應用備份檔案 {{.file}} 到節點 {{ .name }}' -ErrSourceTargetSame: '源節點和目標節點不可相同!' -AppInstall: '在 {{ .targetNode }} 節點安裝應用 {{ .name }}' -AppInstallCheck: '檢查應用安裝環境' - -#backup -ErrBackupInUsed: "該備份帳號已在排程任務中使用,無法刪除" -ErrBackupCheck: "備份帳號測試連線失敗 {{ .err }}" -ErrBackupLocal: "本機伺服器備份帳號暫不支援該操作!" -ErrBackupPublic: "偵測到該備份帳號為非公用,請檢查後再試。" -ErrOSSConn: "無法取得最新版本,請確認伺服器是否能夠連接外部網路。" - -#license +# 許可證 LicenseCheck: '檢查許可證是否可用' ErrLicenseInUsed: '偵測到該許可證已被綁定,請檢查後重試。' ErrLicenseExpired: '偵測到該許可證已過期,請檢查後重試。' @@ -107,35 +89,74 @@ ErrNodeUnbind: "偵測到該節點未在許可證綁定範圍內,請檢查後 ErrNodeBind: "偵測到該節點已綁定許可證,請檢查後重試。" ErrNodeLocalRollback: "主節點暫不支援直接回滾,請手動執行 '1pctl restore' 進行回滾" ErrIntlLicense: "當前版本暫不支援匯入國際版許可證,敬請期待!" - -# user -ErrNoSuchUser: "未能找到該使用者資訊,請檢查後重試!" -ErrToMaster: "該使用者無權限對主節點進行此操作,請檢查後重試!" -ErrToNode: "該使用者無權限對該節點進行此操作,請檢查後重試!" -ErrRBAC: "使用者權限不足,無法進行此操作,請檢查後重試!" -ErrNoneNode: "該使用者無任何節點權限,請聯絡管理員或檢查後重試!" -ErrOnlySuperAdmin: "僅超級管理員支援此功能!" -ErrRolePresetCannotDelete: "系統預設角色,無法刪除" -ErrRolePresetCannotUpdate: "系統預設角色,無法修改" -ErrRoleBoundToUser: "角色已被使用者綁定,無法刪除" -ErrRolePresetCannotBind: "系統預設角色,無法分配給使用者" -ErrNodeAdminMasterForbidden: "主節點不允許新增節點管理員權限" -ErrSuperAdminCannotDelete: "超級管理員使用者無法刪除" - InvalidRequestBodyType: "請求內容格式錯誤,請檢查請求內容是否符合格式要求後重試!" InvalidLicenseCodeType: "提供的許可證格式錯誤,請檢查後重試。" LicenseNotFoundType: "許可證不存在,系統中未找到與提供許可證符合的紀錄,請檢查後重試。" LicenseRevokedType: "請求的許可證已被廢棄,無法使用,請檢查後重試。" -LicenseExpiredType: "許可證已超過有效期,請續費或在 面板設定-許可證 介面重新匯入許可證後重試!" +LicenseExpiredType: "許可證已超過有效期,請續費或在 面板設定-許可證 介面重新匯入許可證後重試!" LicenseProductMismatchType: "許可證與目前請求的產品或服務不符!" InvalidAssigneeType: "許可證分配的目標使用者或裝置資訊無效,請檢查後重試。" LicenseUsageNotFoundType: "無使用記錄,目前許可證尚未被啟動或使用,請檢查後重試。" LicenseUsageLimitExceededType: "該許可證已綁定到其他節點,請檢查後重試。" -# alert +# 節點與叢集 +MasterNode: "主節點" +Node: "節點" +ErrLocalDelete: "無法刪除本機節點!" +ErrMasterDelete: "無法刪除主節點,請先刪除從節點" +ClusterNameIsExist: "叢集名稱已存在" +AppStatusUnHealthy: "應用取得狀態異常,請在節點列表檢查安裝節點狀態" +MasterNodePortNotAvailable: "節點 {{ .name }} 埠 {{ .port }} 連通性驗證失敗,請檢查防火牆/安全組設定和主節點狀態" +ClusterMasterNotExist: "叢集主節點失聯,請刪除子節點" + +# 虛擬機 +ErrVMNotFound: "虛擬機不存在" +ErrVMAlreadyExists: "虛擬機已存在" +ErrVMRunning: "虛擬機正在執行" +ErrVMLibvirtConnect: "連接 libvirt 失敗: {{ .detail }}" +ErrVMPermission: "沒有虛擬機操作權限: {{ .detail }}" +ErrVMNetworkNotFound: "虛擬機網路不存在: {{ .detail }}" +ErrVMInvalidPath: "虛擬機路徑非法: {{ .detail }}" +ErrVMInvalidInput: "虛擬機參數非法: {{ .detail }}" +ErrVMCommandFailed: "虛擬機指令執行失敗: {{ .err }}" +VMSnapshotCreateTask: "建立虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotCreateStep: "建立虛擬機快照 [{{ .snapshot }}]" +VMSnapshotRecoverTask: "復原虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotRecoverStep: "復原虛擬機快照 [{{ .snapshot }}]" +VMSnapshotDeleteTask: "刪除虛擬機 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotDeleteStep: "刪除虛擬機快照 [{{ .snapshot }}]" + +# 應用 +CustomAppStoreFileValid: "應用商店包需要 .tar.gz 格式" +AppBackup: '應用備份' +AppBackupPush: '傳輸應用備份檔案 {{.file}} 到節點 {{ .name }}' +ErrSourceTargetSame: '源節點和目標節點不可相同!' +AppInstall: '在 {{ .targetNode }} 節點安裝應用 {{ .name }}' +AppInstallCheck: '檢查應用安裝環境' + +# 備份 +ErrBackupInUsed: "該備份帳號已在排程任務中使用,無法刪除" +ErrBackupCheck: "備份帳號測試連線失敗 {{ .err }}" +ErrBackupLocal: "本機伺服器備份帳號暫不支援該操作!" +ErrBackupPublic: "偵測到該備份帳號為非公用,請檢查後再試。" +ErrOSSConn: "無法取得最新版本,請確認伺服器是否能夠連接外部網路。" +MvBackup: "行動資料到備份目錄" + +# 告警 ErrAlertSync: "告警資訊同步錯誤,請檢查後重試。" -#task +# AI 閘道 +ErrAIProxyUserGroupIsDefault: "預設使用者群組無法刪除" +ErrAIProxyUserGroupInUse: "使用者群組正被使用,無法刪除。" +ErrAIProxyUserGroupExists: "使用者群組名稱已存在" +ErrAIProxyBackendAccountExists: "該模型帳號已匯入 AI 閘道帳號池,請勿重複匯入" +ErrAIProxyModelGroupInUse: "模型組正在使用,無法刪除" +ErrAIProxyModelGroupExists: "模型組名稱已存在" +ErrAIProxySensitiveGroupInUse: "敏感詞分組正在使用,無法刪除。" +ErrAIProxySensitiveGroupExists: "敏感詞分組名稱已存在" +AIBenchmarkRun: "執行 AI 基準測試" + +# 任務 TaskStart: "{{ .name }} 任務開始 [START]" TaskEnd: "{{ .name }} 任務結束 [COMPLETED]" TaskFailed: "{{ .name }} 任務失敗" @@ -149,6 +170,16 @@ TaskUpgrade: "升級" TaskSync: "同步" TaskSyncForNode: "同步節點資料" TaskBackup: "備份" +TaskPush: "傳送" +TaskRsync: "同步" +SuccessStatus: "{{ .name }} 成功" +FailedStatus: "{{ .name }} 失敗 {{ .err }}" +Start: "開始" +SubTask: "子任務" +Skip: "忽略錯誤並繼續..." +Success: "成功" + +# 智慧體批次任務 BatchInstallAgent: "批量安裝智能體" DispatchAgentInstallTasks: "下發智能體安裝任務" BatchUpgradeAgent: "批量升級智能體" @@ -182,21 +213,15 @@ AgentOperateStart: "啟動" AgentOperateStop: "停止" AgentOperateRestart: "重啟" AgentOperateDelete: "刪除" -AIBenchmarkRun: "執行 AI 基準測試" -SuccessStatus: "{{ .name }} 成功" -FailedStatus: "{{ .name }} 失敗 {{ .err }}" -Start: "開始" -SubTask: "子任務" -Skip: "忽略錯誤並繼續..." + +# 應用與技能任務 PushAppInstallTaskToNode: "傳送應用安裝任務到節點 [{{ .name }}]" -TaskPush: "傳送" AppInstallTask: "應用安裝任務" PushAppFailed: "傳送應用安裝任務失敗" SkillHubInstallTask: "安裝技能 [{{ .name }}]" SkillHubInstallToTarget: "安裝技能到目標 [{{ .name }}]" -Success: "成功" -#script +# 腳本庫 ScriptLibrary: "腳本庫" RemoteScriptLibrary: "遠端腳本庫" ScriptSyncSkip: "目前腳本庫已是最新版本!" @@ -204,8 +229,7 @@ DownloadData: "下載腳本庫檔案 data.yaml" DownloadPackage: "下載腳本庫壓縮檔" AnalyticCompletion: "解析成功,現在開始同步到資料庫..." -#sync node -Node: "節點" +# 節點同步 SyncNode: "同步資料到節點 {{ .name }}" LocalName: "'local' 名稱僅用於系統本機標識" SyncPackageData: "打包同步資料" @@ -221,7 +245,7 @@ SyncCustomApp: "自訂應用" SyncLanguage: "系統語言" SyncEdition: "運行區域" -#upgrade node +# 節點升級 NodeUpgrade: "升級節點 {{ .name }}" UpgradeCheck: "檢查節點更新" UpgradeCheckLocal: "本機節點不支援批次升級,跳過..." @@ -234,12 +258,11 @@ LoadAutoUpgradeNodesFailed: "載入自動升級節點失敗,錯誤: {{ .err }} AutoUpgradeNodes: "自動升級節點: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "更新自動升級節點狀態失敗,錯誤: {{ .err }}" -#add node +# 新增節點 MasterData: "主節點資料" LoadSftpClient: "取得上傳用戶端" PackageMasterData: "產生主節點備份壓縮檔" UploadBackup: "上傳備份資料" -MvBackup: "行動資料到備份目錄" TaskAddNode: "新增節點" LoadNodeArch: "取得節點架構資訊" LoadNodeArchDetail: "偵測到主節點架構: {{ .local }},子節點架構: {{ .node }}" @@ -252,7 +275,35 @@ SendAgent: "下發節點安裝包" StartService: "啟動服務" NoBackupNode: "目前備份節點為空,請選擇備份節點儲存後重試!" -#cmd +# 節點檔案與映像同步 +LocalNodeIpFailed: "無法取得主節點 IP ,請編輯主節點增加 IP 位址和 SSH 認證資訊" +HandlePrivateKey: "處理節點私鑰" +HandlePublicKey: "處理節點公鑰" +ExchangeFile: "開始從 {{ .source }} 節點同步 {{ .sourcePath }} 到 {{ .dest }} 節點 {{ .destPath }}" +NodeFile: "節點檔案" +ImageSyncTaskName: "映像同步 {{ .count }} 張映像" +SSLSyncTaskName: "憑證同步 {{ .count }} 張憑證" +AppSyncTaskName: "應用同步 {{ .name }}" +SSLSyncToNode: "推送憑證 [{{ .cert }}] 到節點 [{{ .node }}]" +ImageSyncSave: "儲存映像 {{ .image }}" +ImageSyncSaveTags: "儲存映像標籤 {{ .tags }}" +ImageSyncToNode: "同步映像 {{ .image }} 到節點 {{ .node }}" +ImageSyncLoad: "在節點 {{ .node }} 載入映像 {{ .image }}" +ImageSyncClean: "清理映像 {{ .image }} 暫存檔案" +ImageSyncNoTag: "映像 {{ .image }} 沒有標籤,將使用映像 ID 儲存" +ImageSyncFrontendTagsIgnored: "映像 {{ .image }} 在來源節點未查詢到標籤,已忽略前端傳入標籤" +ImageSyncHandlePrivateKey: "處理映像同步節點私鑰" +ImageSyncHandlePublicKey: "處理映像同步節點公鑰" +ImageSyncTransfer: "開始傳輸映像暫存檔案:{{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# 命令列 +SudoHelper: "請使用 {{ .cmd }} 或切換到 root 使用者" +UsernameNeed: "企業版必須指定 --username" +DBConnErr: "錯誤: 初始化資料庫連線失敗,{{ .err }}" +SystemVersion: "版本: " +SystemMode: "模式: " + +# 命令列 - 應用 AppVersion: "應用版本" AppCommands: "應用相關指令" AppInit: "初始化應用" @@ -264,12 +315,14 @@ AppMissVersion: "應用版本缺失,使用 -v 指定" AppVersionExist: "版本已存在!" AppCreateSuccessful: "建立成功!" AppWriteErr: "檔案 {{ .name }} 寫入失敗 {{ .err }}" -SudoHelper: "請使用 {{ .cmd }} 或切換到 root 使用者" -UsernameNeed: "企業版必須指定 --username" + +# 命令列 - 監聽 IP ListenIPCommands: "切換監聽 IP" ListenIPv4: "監聽 IPv4" ListenIPv6: "監聽 IPv6" ListenChangeSuccessful: "切換成功!已切換至監聽 {{ .value }}" + +# 命令列 - 重設 ResetCommands: "重設系統資訊" ResetMFA: "取消 1Panel 兩步驗證" ResetHttps: "取消 1Panel https 方式登入" @@ -277,12 +330,19 @@ ResetEntrance: "取消 1Panel 安全入口" ResetIPs: "取消 1Panel 授權 IP 限制" ResetDomain: "取消 1Panel 存取網域綁定" ResetPasskey: "清空 1Panel 通行密鑰" + +# 命令列 - 使用者 UserList: "獲取 1Panel 使用者列表" UserTableName: "名稱" UserTableMFAStatus: "MFA 狀態" UserTableSuperAdmin: "超級管理員" UserTableCreatedAt: "建立時間" UserEmptyList: "暫無使用者" +UserInfo: "取得面板資訊" +UserInfoAddr: "面板位址: " +UserInfoPassHelp: "提示: 修改密碼可執行指令: " + +# 命令列 - 回滾 RestoreCommands: "回滾 1Panel 服務及資料" RestoreNoSuchFile: "暫無可回滾檔案" RestoreStep1: "(1/5)開始從 {{ .name }} 目錄回滾 1Panel 服務及資料... " @@ -291,6 +351,8 @@ RestoreStep3: "(3/5)1Panel 腳本回滾成功" RestoreStep4: "(4/5)1Panel 服務回滾成功" RestoreStep5: "(5/5)1Panel 資料回滾成功" RestoreSuccessful: "回滾成功!已回滾到 {{ .version }},正在重新啟動服務,請稍候..." + +# 命令列 - 修改 UpdateCommands: "修改面板資訊" UpdateUser: "修改使用者資訊" UpdatePassword: "修改使用者密碼" @@ -317,50 +379,12 @@ UpdatePortResult: "面板埠: {{ .name }}" UpdatePortFirewallAdd: "新增防火牆埠規則失敗,{{ .err }},請您手動將 {{ .name }} 埠新增至防火牆規則中。" UpdatePortFirewallDel: "錯誤: 防火牆埠刪除失敗,{{ .err }}" UpdatePortFirewallReload: "防火牆重載失敗,{{ .err }},請您手動重載防火牆。" -UserInfo: "取得面板資訊" -UserInfoAddr: "面板位址: " -UserInfoPassHelp: "提示: 修改密碼可執行指令: " -DBConnErr: "錯誤: 初始化資料庫連線失敗,{{ .err }}" -SystemVersion: "版本: " -SystemMode: "模式: " -#exchange -LocalNodeIpFailed: "無法取得主節點 IP ,請編輯主節點增加 IP 位址和 SSH 認證資訊" -HandlePrivateKey: "處理節點私鑰" -HandlePublicKey: "處理節點公鑰" -ExchangeFile: "開始從 {{ .source }} 節點同步 {{ .sourcePath }} 到 {{ .dest }} 節點 {{ .destPath }}" -TaskRsync: "同步" -NodeFile: "節點檔案" -ImageSyncTaskName: "映像同步 {{ .count }} 張映像" -SSLSyncTaskName: "憑證同步 {{ .count }} 張憑證" -AppSyncTaskName: "應用同步 {{ .name }}" -SSLSyncToNode: "推送憑證 [{{ .cert }}] 到節點 [{{ .node }}]" -ImageSyncSave: "儲存映像 {{ .image }}" -ImageSyncSaveTags: "儲存映像標籤 {{ .tags }}" -ImageSyncToNode: "同步映像 {{ .image }} 到節點 {{ .node }}" -ImageSyncLoad: "在節點 {{ .node }} 載入映像 {{ .image }}" -ImageSyncClean: "清理映像 {{ .image }} 暫存檔案" -ImageSyncNoTag: "映像 {{ .image }} 沒有標籤,將使用映像 ID 儲存" -ImageSyncFrontendTagsIgnored: "映像 {{ .image }} 在來源節點未查詢到標籤,已忽略前端傳入標籤" -ImageSyncHandlePrivateKey: "處理映像同步節點私鑰" -ImageSyncHandlePublicKey: "處理映像同步節點公鑰" -ImageSyncTransfer: "開始傳輸映像暫存檔案:{{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# 行動端 ErrVerifyToken: '令牌驗證錯誤,請重設後再次掃碼' ErrInvalidToken: '無效的令牌,請重設後再次掃碼' ErrExpiredToken: '令牌過期,請重設後再次掃碼' -#cluster -ErrMasterDelete: "無法刪除主節點,請先刪除從節點" -ClusterNameIsExist: "叢集名稱已存在" -AppStatusUnHealthy: "應用取得狀態異常,請在節點列表檢查安裝節點狀態" -MasterNodePortNotAvailable: "節點 {{ .name }} 埠 {{ .port }} 連通性驗證失敗,請檢查防火牆/安全組設定和主節點狀態" -ClusterMasterNotExist: "叢集主節點失聯,請刪除子節點" - -#ssl -ErrReqFailed: "{{.name}} 請求失敗: {{ .err }}" - -#command +# 命令匯出 Name: "名稱" Command: "指令" diff --git a/core/i18n/lang/zh.yaml b/core/i18n/lang/zh.yaml index ea87dd25c..e42aac373 100644 --- a/core/i18n/lang/zh.yaml +++ b/core/i18n/lang/zh.yaml @@ -1,16 +1,36 @@ +# 基础错误 ErrInvalidParams: "请求参数错误: {{ .detail }}" ErrTokenParse: "Token 生成错误: {{ .detail }}" ErrInitialPassword: "原密码错误" ErrInternalServer: "服务内部错误: {{ .detail }}" +ErrInternalServerKey: "服务内部错误:" ErrRecordExist: "记录已存在" ErrRecordNotFound: "记录未能找到" ErrStructTransform: "类型转换失败: {{ .detail }}" +ErrNotSupportType: "系统暂不支持当前类型: {{ .name }}" +ErrDemoEnvironment: "演示服务器,禁止此操作!" +ErrCmdTimeout: "命令执行超时!" +ErrPortInUsed: "{{ .name }} 端口已被占用!" +ErrFileNotFound: '{{ .name }} 文件不存在' +ErrReqFailed: "{{.name}} 请求失败: {{ .err }}" + +# 请求与安全入口 +ErrNoSuchHost: "无法找到请求的服务器 {{ .err }}" +ErrHttpReqNotFound: "无法找到请求的资源 {{ .err }}" +ErrHttpReqFailed: "请求失败 {{ .err }}" +ErrHttpReqTimeOut: "请求超时 {{ .err }}" +ErrCreateHttpClient: "创建请求失败 {{ .err }}" +ErrProxy: "请求错误,请检查该节点状态: {{ .detail }}" +ErrProxySetting: "代理服务器信息不可用 {{ .err }},请检查后重试!" +ErrEntrance: "安全入口信息错误,请检查后重试!" +ErrEntranceFormat: "暂不支持安全入口 {{ .name }} ,请检查后重试!" + +# 登录与安全 ErrNotLogin: "用户未登录: {{ .detail }}" ErrSessionDataNotFound: "当前会话已过期!" ErrSessionDataFormat: "当前会话数据格式异常!" ErrPasswordExpired: "当前密码已过期: {{ .detail }}" -ErrNotSupportType: "系统暂不支持当前类型: {{ .name }}" -ErrProxy: "请求错误,请检查该节点状态: {{ .detail }}" +ErrLoginLocked: "失败次数过多,当前登录已被临时锁定 5 分钟。" ErrApiConfigStatusInvalid: "API 接口禁止访问: {{ .detail }}" ErrApiConfigKeyInvalid: "API 接口密钥错误: {{ .detail }}" ErrApiConfigIPInvalid: "调用 API 接口 IP 不在白名单: {{ .detail }}" @@ -22,68 +42,24 @@ ErrPasskeyLimit: "Passkey 数量已达上限(最多 5 个)" ErrPasskeySession: "Passkey 会话已过期或无效" ErrPasskeyDuplicate: "Passkey 已存在" ErrPasskeyVerify: "Passkey 验证失败" -ErrLoginLocked: "失败次数过多,当前登录已被临时锁定 5 分钟。" -#request -ErrNoSuchHost: "无法找到请求的服务器 {{ .err }}" -ErrHttpReqNotFound: "无法找到请求的资源 {{ .err }}" -ErrHttpReqFailed: "请求失败 {{ .err }}" -ErrHttpReqTimeOut: "请求超时 {{ .err }}" -ErrCreateHttpClient: "创建请求失败 {{ .err }}" -ErrProxySetting: "代理服务器信息不可用 {{ .err }},请检查后重试!" -ErrEntranceFormat: "暂不支持安全入口 {{ .name }} ,请检查后重试!" - -#common -ErrDemoEnvironment: "演示服务器,禁止此操作!" -ErrCmdTimeout: "命令执行超时!" -ErrVMNotFound: "虚拟机不存在" -ErrVMAlreadyExists: "虚拟机已存在" -ErrVMRunning: "虚拟机正在运行" -ErrVMLibvirtConnect: "连接 libvirt 失败: {{ .detail }}" -ErrVMPermission: "没有虚拟机操作权限: {{ .detail }}" -ErrVMNetworkNotFound: "虚拟机网络不存在: {{ .detail }}" -ErrVMInvalidPath: "虚拟机路径非法: {{ .detail }}" -ErrVMInvalidInput: "虚拟机参数非法: {{ .detail }}" -ErrVMCommandFailed: "虚拟机命令执行失败: {{ .err }}" -VMSnapshotCreateTask: "创建虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotCreateStep: "创建虚拟机快照 [{{ .snapshot }}]" -VMSnapshotRecoverTask: "恢复虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotRecoverStep: "恢复虚拟机快照 [{{ .snapshot }}]" -VMSnapshotDeleteTask: "删除虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" -VMSnapshotDeleteStep: "删除虚拟机快照 [{{ .snapshot }}]" -ErrEntrance: "安全入口信息错误,请检查后重试!" +# 用户与权限 +ErrNoSuchUser: "未能找到该用户信息,请检查后重试!" +ErrToMaster: "该用户无权限对主节点进行该操作,请检查后重试!" +ErrToNode: "该用户无权限对该节点进行该操作,请检查后重试!" +ErrRBAC: "用户权限不足,无法进行该操作,请检查后重试!" +ErrNoneNode: "该用户无任何节点权限,请联系管理员或检查后重试!" +ErrOnlySuperAdmin: "仅超级管理员支持该功能!" +ErrRolePresetCannotDelete: "系统预设角色,无法删除" +ErrRolePresetCannotUpdate: "系统预设角色,无法修改" +ErrRoleBoundToUser: "角色已被用户绑定,无法删除" +ErrRolePresetCannotBind: "系统预设角色,无法分配给用户" +ErrNodeAdminMasterForbidden: "主节点不允许添加节点管理员权限" +ErrSuperAdminCannotDelete: "超级管理员用户无法删除" ErrGroupIsDefault: "默认分组,无法删除" ErrGroupIsInUse: "分组正被使用,无法删除" -ErrAIProxyUserGroupIsDefault: "默认用户组无法删除" -ErrAIProxyUserGroupInUse: "用户组正被使用,无法删除" -ErrAIProxyUserGroupExists: "用户组名称已存在" -ErrAIProxyBackendAccountExists: "该模型账号已导入 AI 网关账号池,请勿重复导入" -ErrAIProxyModelGroupInUse: "模型组正在使用,无法删除" -ErrAIProxyModelGroupExists: "模型组名称已存在" -ErrAIProxySensitiveGroupInUse: "敏感词分组正在使用,无法删除" -ErrAIProxySensitiveGroupExists: "敏感词分组名称已存在" -ErrLocalDelete: "无法删除本地节点!" -ErrPortInUsed: "{{ .name }} 端口已被占用!" -ErrInternalServerKey: "服务内部错误:" -MasterNode: "主节点" -#app -CustomAppStoreFileValid: "应用商店包需要 .tar.gz 格式" -ErrFileNotFound: '{{ .name }} 文件不存在' -AppBackup: "应用备份" -AppBackupPush: "传输应用备份文件 {{.file}} 到节点 {{ .name }}" -ErrSourceTargetSame: "源节点和目标节点不能相同!" -AppInstall: "在 {{ .targetNode }} 节点安装应用 {{ .name }}" -AppInstallCheck: "检查应用安装环境" - -#backup -ErrBackupInUsed: "该备份账号已在计划任务中使用,无法删除" -ErrBackupCheck: "备份账号测试连接失败 {{ .err }}" -ErrBackupLocal: "本地服务器备份账号暂不支持该操作!" -ErrBackupPublic: "检测到该备份账号为非公用,请检查后重试!" -ErrOSSConn: "无法获取最新版本,请确认服务器是否能够连接外部网络。" - -#license +# 许可证 LicenseCheck: '检查许可证是否可用' ErrLicenseInUsed: '检查到该许可证已被绑定,请检查后重试!' ErrLicenseExpired: '检查到该许可证已过期,请检查后重试!' @@ -113,35 +89,74 @@ ErrNodeUnbind: "检测到该节点未在许可证绑定范围内,请检查后 ErrNodeBind: "检测到该节点已绑定许可证,请检查后重试!" ErrNodeLocalRollback: "主节点暂不支持直接回滚,请手动执行 1pctl restore 命令回滚!" ErrIntlLicense: "当前版本暂不支持导入国际版许可证,敬请期待!" - -# user -ErrNoSuchUser: "未能找到该用户信息,请检查后重试!" -ErrToMaster: "该用户无权限对主节点进行该操作,请检查后重试!" -ErrToNode: "该用户无权限对该节点进行该操作,请检查后重试!" -ErrRBAC: "用户权限不足,无法进行该操作,请检查后重试!" -ErrNoneNode: "该用户无任何节点权限,请联系管理员或检查后重试!" -ErrOnlySuperAdmin: "仅超级管理员支持该功能!" -ErrRolePresetCannotDelete: "系统预设角色,无法删除" -ErrRolePresetCannotUpdate: "系统预设角色,无法修改" -ErrRoleBoundToUser: "角色已被用户绑定,无法删除" -ErrRolePresetCannotBind: "系统预设角色,无法分配给用户" -ErrNodeAdminMasterForbidden: "主节点不允许添加节点管理员权限" -ErrSuperAdminCannotDelete: "超级管理员用户无法删除" - InvalidRequestBodyType: "请求体格式错误,请检查请求内容是否符合格式要求后重试!" -InvalidLicenseCodeType: "提供的许可证格式错误,请检查后重试!" -LicenseNotFoundType: "许可证不存在,系统中未找到与提供许可证匹配的记录,请检查后重试!" -LicenseRevokedType: "请求的许可证已被废弃,无法使用,请检查后重试!" -LicenseExpiredType: "许可证已超过有效期,请续费或在 面板设置-许可证 界面重新导入许可证后重试!" -LicenseProductMismatchType: "许可证与当前请求的产品或服务不匹配!" -InvalidAssigneeType: "许可证分配的目标用户或设备信息无效,请检查后重试!" -LicenseUsageNotFoundType: "无使用记录,当前许可证尚未被激活或使用,请检查后重试!" -LicenseUsageLimitExceededType: "该许可证已绑定到其他节点,请检查后重试!" +InvalidLicenseCodeType: "提供的许可证格式错误,请检查后重试!" +LicenseNotFoundType: "许可证不存在,系统中未找到与提供许可证匹配的记录,请检查后重试!" +LicenseRevokedType: "请求的许可证已被废弃,无法使用,请检查后重试!" +LicenseExpiredType: "许可证已超过有效期,请续费或在 面板设置-许可证 界面重新导入许可证后重试!" +LicenseProductMismatchType: "许可证与当前请求的产品或服务不匹配!" +InvalidAssigneeType: "许可证分配的目标用户或设备信息无效,请检查后重试!" +LicenseUsageNotFoundType: "无使用记录,当前许可证尚未被激活或使用,请检查后重试!" +LicenseUsageLimitExceededType: "该许可证已绑定到其他节点,请检查后重试!" -# alert +# 节点与集群 +MasterNode: "主节点" +Node: "节点" +ErrLocalDelete: "无法删除本地节点!" +ErrMasterDelete: "无法删除主节点,请先删除从节点" +ClusterNameIsExist: "集群名称已存在" +AppStatusUnHealthy: "应用获取状态异常,请在节点列表检查安装节点状态" +MasterNodePortNotAvailable: "节点 {{ .name }} 端口 {{ .port }} 连通性校验失败,请检查防火墙/安全组设置和主节点状态" +ClusterMasterNotExist: "集群主节点失联,请删除子节点" + +# 虚拟机 +ErrVMNotFound: "虚拟机不存在" +ErrVMAlreadyExists: "虚拟机已存在" +ErrVMRunning: "虚拟机正在运行" +ErrVMLibvirtConnect: "连接 libvirt 失败: {{ .detail }}" +ErrVMPermission: "没有虚拟机操作权限: {{ .detail }}" +ErrVMNetworkNotFound: "虚拟机网络不存在: {{ .detail }}" +ErrVMInvalidPath: "虚拟机路径非法: {{ .detail }}" +ErrVMInvalidInput: "虚拟机参数非法: {{ .detail }}" +ErrVMCommandFailed: "虚拟机命令执行失败: {{ .err }}" +VMSnapshotCreateTask: "创建虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotCreateStep: "创建虚拟机快照 [{{ .snapshot }}]" +VMSnapshotRecoverTask: "恢复虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotRecoverStep: "恢复虚拟机快照 [{{ .snapshot }}]" +VMSnapshotDeleteTask: "删除虚拟机 [{{ .vm }}] 快照 [{{ .snapshot }}]" +VMSnapshotDeleteStep: "删除虚拟机快照 [{{ .snapshot }}]" + +# 应用 +CustomAppStoreFileValid: "应用商店包需要 .tar.gz 格式" +AppBackup: "应用备份" +AppBackupPush: "传输应用备份文件 {{.file}} 到节点 {{ .name }}" +ErrSourceTargetSame: "源节点和目标节点不能相同!" +AppInstall: "在 {{ .targetNode }} 节点安装应用 {{ .name }}" +AppInstallCheck: "检查应用安装环境" + +# 备份 +ErrBackupInUsed: "该备份账号已在计划任务中使用,无法删除" +ErrBackupCheck: "备份账号测试连接失败 {{ .err }}" +ErrBackupLocal: "本地服务器备份账号暂不支持该操作!" +ErrBackupPublic: "检测到该备份账号为非公用,请检查后重试!" +ErrOSSConn: "无法获取最新版本,请确认服务器是否能够连接外部网络。" +MvBackup: "移动数据到备份目录" + +# 告警 ErrAlertSync: "告警信息同步错误,请检查后重试!" -#task +# AI 网关 +ErrAIProxyUserGroupIsDefault: "默认用户组无法删除" +ErrAIProxyUserGroupInUse: "用户组正被使用,无法删除" +ErrAIProxyUserGroupExists: "用户组名称已存在" +ErrAIProxyBackendAccountExists: "该模型账号已导入 AI 网关账号池,请勿重复导入" +ErrAIProxyModelGroupInUse: "模型组正在使用,无法删除" +ErrAIProxyModelGroupExists: "模型组名称已存在" +ErrAIProxySensitiveGroupInUse: "敏感词分组正在使用,无法删除" +ErrAIProxySensitiveGroupExists: "敏感词分组名称已存在" +AIBenchmarkRun: "执行 AI 基准测试" + +# 任务 TaskStart: "{{ .name }} 任务开始 [START]" TaskEnd: "{{ .name }} 任务结束 [COMPLETED]" TaskFailed: "{{ .name }} 任务失败" @@ -155,6 +170,16 @@ TaskUpgrade: "升级" TaskSync: "同步" TaskSyncForNode: "同步节点数据" TaskBackup: "备份" +TaskPush: "推送" +TaskRsync: "同步" +SuccessStatus: "{{ .name }} 成功" +FailedStatus: "{{ .name }} 失败 {{ .err }}" +Start: "开始" +SubTask: "子任务" +Skip: "忽略错误并继续..." +Success: "成功" + +# 智能体批量任务 BatchInstallAgent: "批量安装智能体" DispatchAgentInstallTasks: "下发智能体安装任务" BatchUpgradeAgent: "批量升级智能体" @@ -188,21 +213,15 @@ AgentOperateStart: "启动" AgentOperateStop: "停止" AgentOperateRestart: "重启" AgentOperateDelete: "删除" -AIBenchmarkRun: "执行 AI 基准测试" -SuccessStatus: "{{ .name }} 成功" -FailedStatus: "{{ .name }} 失败 {{ .err }}" -Start: "开始" -SubTask: "子任务" -Skip: "忽略错误并继续..." + +# 应用与技能任务 PushAppInstallTaskToNode: "推送应用安装任务到节点 [{{ .name }}]" -TaskPush: "推送" AppInstallTask: "应用安装任务" PushAppFailed: "推送应用安装任务失败" SkillHubInstallTask: "安装技能 [{{ .name }}]" SkillHubInstallToTarget: "安装技能 {{ .name }} 到目标 {{ .target }}" -Success: "成功" -#script +# 脚本库 ScriptLibrary: "脚本库" RemoteScriptLibrary: "远程脚本库" ScriptSyncSkip: "检查到当前脚本库已是最新版本!" @@ -210,8 +229,7 @@ DownloadData: "下载脚本库文件 data.yaml" DownloadPackage: "下载脚本库压缩包" AnalyticCompletion: "解析成功,现在开始同步到数据库..." -#sync node -Node: "节点" +# 节点同步 SyncNode: "同步数据到节点 {{ .name }}" LocalName: "local 名称仅用于系统本机标识" SyncPackageData: "打包同步数据" @@ -227,8 +245,7 @@ SyncCustomApp: "自定义应用" SyncLanguage: "系统语言" SyncEdition: "运行区域" - -#upgrade node +# 节点升级 NodeUpgrade: "升级节点 {{ .name }}" UpgradeCheck: "检查节点更新" UpgradeCheckLocal: "本地节点不支持批量升级,跳过..." @@ -241,7 +258,7 @@ LoadAutoUpgradeNodesFailed: "加载自动升级节点失败,错误: {{ .err }} AutoUpgradeNodes: "自动升级节点: {{ .nodes }}" UpdateAutoUpgradeNodesStatusFailed: "更新自动升级节点状态失败,错误: {{ .err }}" -#add node +# 添加节点 MasterData: "主节点数据" LoadSftpClient: "获取上传客户端" PackageMasterData: "生成主节点备份压缩包" @@ -258,7 +275,35 @@ SendAgent: "下发节点安装包" StartService: "启动服务" NoBackupNode: "当前备份节点为空,请选择备份节点保存后重试!" -#cmd +# 节点文件与镜像同步 +LocalNodeIpFailed: "无法获取主节点 IP ,请编辑主节点增加 IP 地址和 SSH 认证信息" +HandlePrivateKey: "处理节点私钥" +HandlePublicKey: "处理节点公钥" +ExchangeFile: "开始从 {{ .source }} 节点同步 {{ .sourcePath }} 到 {{ .dest }} 节点 {{ .destPath }}" +NodeFile: "节点文件" +ImageSyncTaskName: "镜像同步 {{ .count }} 张镜像" +SSLSyncTaskName: "证书同步 {{ .count }} 张证书" +AppSyncTaskName: "应用同步 {{ .name }}" +SSLSyncToNode: "推送证书 [{{ .cert }}] 到节点 [{{ .node }}]" +ImageSyncSave: "保存镜像 {{ .image }}" +ImageSyncSaveTags: "保存镜像标签 {{ .tags }}" +ImageSyncToNode: "同步镜像 {{ .image }} 到节点 {{ .node }}" +ImageSyncLoad: "在节点 {{ .node }} 加载镜像 {{ .image }}" +ImageSyncClean: "清理镜像 {{ .image }} 临时文件" +ImageSyncNoTag: "镜像 {{ .image }} 没有标签,将使用镜像 ID 保存" +ImageSyncFrontendTagsIgnored: "镜像 {{ .image }} 在源节点未查询到标签,已忽略前端传入标签" +ImageSyncHandlePrivateKey: "处理镜像同步节点私钥" +ImageSyncHandlePublicKey: "处理镜像同步节点公钥" +ImageSyncTransfer: "开始传输镜像临时文件:{{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +# 命令行 +SudoHelper: "请使用 {{ .cmd }} 或切换到 root 用户" +UsernameNeed: "企业版必须指定 --username" +DBConnErr: "错误: 初始化数据库连接失败,{{ .err }}" +SystemVersion: "版本: " +SystemMode: "模式: " + +# 命令行 - 应用 AppVersion: "应用版本" AppCommands: "应用相关命令" AppInit: "初始化应用" @@ -270,12 +315,14 @@ AppMissVersion: "应用版本缺失,使用 -v 指定" AppVersionExist: "版本已存在!" AppCreateSuccessful: "创建成功!" AppWriteErr: "文件 {{ .name }} 写入失败 {{ .err }}" -SudoHelper: "请使用 {{ .cmd }} 或切换到 root 用户" -UsernameNeed: "企业版必须指定 --username" + +# 命令行 - 监听 IP ListenIPCommands: "切换监听 IP" ListenIPv4: "监听 IPv4" ListenIPv6: "监听 IPv6" ListenChangeSuccessful: "切换成功!已切换至监听 {{ .value }}" + +# 命令行 - 重置 ResetCommands: "重置系统信息" ResetMFA: "取消 1Panel 两步验证" ResetHttps: "取消 1Panel https 方式登录" @@ -283,12 +330,19 @@ ResetEntrance: "取消 1Panel 安全入口" ResetIPs: "取消 1Panel 授权 IP 限制" ResetDomain: "取消 1Panel 访问域名绑定" ResetPasskey: "清空 1Panel 通行密钥" + +# 命令行 - 用户 UserList: "获取 1Panel 用户列表" UserTableName: "名称" UserTableMFAStatus: "MFA 状态" UserTableSuperAdmin: "超级管理员" UserTableCreatedAt: "创建时间" UserEmptyList: "暂无用户" +UserInfo: "获取面板信息" +UserInfoAddr: "面板地址: " +UserInfoPassHelp: "提示: 修改密码可执行命令: " + +# 命令行 - 回滚 RestoreCommands: "回滚 1Panel 服务及数据" RestoreNoSuchFile: "暂无可回滚文件" RestoreStep1: "(1/5)开始从 {{ .name }} 目录回滚 1Panel 服务及数据... " @@ -297,6 +351,8 @@ RestoreStep3: "(3/5)1Panel 脚本回滚成功" RestoreStep4: "(4/5)1Panel 服务回滚成功" RestoreStep5: "(5/5)1Panel 数据回滚成功" RestoreSuccessful: "回滚成功!已回滚到 {{ .version }},正在重启服务,请稍候..." + +# 命令行 - 修改 UpdateCommands: "修改面板信息" UpdateUser: "修改用户信息" UpdatePassword: "修改用户密码" @@ -323,50 +379,12 @@ UpdatePortResult: "面板端口: {{ .name }}" UpdatePortFirewallAdd: "添加防火墙端口规则失败,{{ .err }},请您手动将 {{ .name }} 端口添加至防火墙规则中。" UpdatePortFirewallDel: "错误: 防火墙端口删除失败,{{ .err }}" UpdatePortFirewallReload: "防火墙重载失败,{{ .err }},请您手动重载防火墙。" -UserInfo: "获取面板信息" -UserInfoAddr: "面板地址: " -UserInfoPassHelp: "提示: 修改密码可执行命令: " -DBConnErr: "错误: 初始化数据库连接失败,{{ .err }}" -SystemVersion: "版本: " -SystemMode: "模式: " -#exchange -LocalNodeIpFailed: "无法获取主节点 IP ,请编辑主节点增加 IP 地址和 SSH 认证信息" -HandlePrivateKey: "处理节点私钥" -HandlePublicKey: "处理节点公钥" -ExchangeFile: "开始从 {{ .source }} 节点同步 {{ .sourcePath }} 到 {{ .dest }} 节点 {{ .destPath }}" -TaskRsync: "同步" -NodeFile: "节点文件" -ImageSyncTaskName: "镜像同步 {{ .count }} 张镜像" -SSLSyncTaskName: "证书同步 {{ .count }} 张证书" -AppSyncTaskName: "应用同步 {{ .name }}" -SSLSyncToNode: "推送证书 [{{ .cert }}] 到节点 [{{ .node }}]" -ImageSyncSave: "保存镜像 {{ .image }}" -ImageSyncSaveTags: "保存镜像标签 {{ .tags }}" -ImageSyncToNode: "同步镜像 {{ .image }} 到节点 {{ .node }}" -ImageSyncLoad: "在节点 {{ .node }} 加载镜像 {{ .image }}" -ImageSyncClean: "清理镜像 {{ .image }} 临时文件" -ImageSyncNoTag: "镜像 {{ .image }} 没有标签,将使用镜像 ID 保存" -ImageSyncFrontendTagsIgnored: "镜像 {{ .image }} 在源节点未查询到标签,已忽略前端传入标签" -ImageSyncHandlePrivateKey: "处理镜像同步节点私钥" -ImageSyncHandlePublicKey: "处理镜像同步节点公钥" -ImageSyncTransfer: "开始传输镜像临时文件:{{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" - -#mobile app +# 移动端 ErrVerifyToken: '令牌验证错误,请重置后再次扫码' ErrInvalidToken: '无效的令牌,请重置后再次扫码' ErrExpiredToken: '令牌过期,请重置后再次扫码' -#cluster -ErrMasterDelete: "无法删除主节点,请先删除从节点" -ClusterNameIsExist: "集群名称已存在" -AppStatusUnHealthy: "应用获取状态异常,请在节点列表检查安装节点状态" -MasterNodePortNotAvailable: "节点 {{ .name }} 端口 {{ .port }} 连通性校验失败,请检查防火墙/安全组设置和主节点状态" -ClusterMasterNotExist: "集群主节点失联,请删除子节点" - -#ssl -ErrReqFailed: "{{.name}} 请求失败: {{ .err }}" - -#command +# 命令导出 Name: "名称" Command: "命令"