Files
1Panel/core/i18n/lang/ms.yaml
Yuki Guoandssongliu d658395188 feat(sync): sync php extended template (#14299)
* feat(sync): sync php extended template

* fix(i18n): complete resource sync translations

---------

Co-authored-by: ssongliu <sloooop1x@gmail.com>
2026-11-05 15:06:12 +08:00

601 lines
40 KiB
YAML

# 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: {{ .detail }}'
ErrNotSupportType: 'Jenis tidak disokong: {{ .name }}'
ErrDemoEnvironment: 'Tidak tersedia dalam demo'
ErrCmdTimeout: 'Arahan tamat masa'
ErrPortInUsed: "Port {{ .name }} telah digunakan"
ErrFileNotFound: "Fail {{ .name }} tidak wujud"
ErrReqFailed: "{{.name}} permintaan gagal: {{ .err }}"
# 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"
# 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 }}'
ErrApiConfigKeyExpired: "Kunci API telah tamat tempoh. Laraskan tarikh luput atau gantikan kunci dalam pengurusan kunci API pada panel."
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"
ErrOIDCNotEnabled: "Pengesahan OIDC belum diaktifkan"
ErrOIDCConfigInvalid: "Konfigurasi OIDC tidak sah"
ErrOIDCConfigChanged: "Konfigurasi OIDC telah berubah; mulakan semula pengesahan"
ErrOIDCDiscoveryFailed: "Gagal menemui konfigurasi Provider OIDC"
ErrOIDCIssuerMismatch: "Issuer OIDC tidak sepadan dengan Issuer yang dikonfigurasi"
ErrOIDCUnsupportedPKCE: "Provider OIDC tidak menyokong kaedah PKCE yang diperlukan"
ErrOIDCUnsupportedSigningAlgorithm: "Algoritma tandatangan OIDC tidak disokong"
ErrOIDCInvalidState: "Status log masuk OIDC tidak sah atau telah digunakan"
ErrOIDCLoginExpired: "Permintaan log masuk OIDC telah tamat tempoh; cuba lagi"
ErrOIDCTokenExchange: "Gagal menukar kod kebenaran OIDC"
ErrOIDCTokenValidation: "Gagal mengesahkan Token OIDC"
ErrOIDCUserInfoValidation: "Gagal mengesahkan maklumat pengguna OIDC"
ErrOIDCNameClaimMissing: "Claim nama pengguna OIDC yang dikonfigurasi tiada atau tidak sah"
ErrOIDCNameConflictLocal: "Nama pengguna OIDC bercanggah dengan pengguna tempatan"
ErrOIDCNameConflictLDAP: "Nama pengguna OIDC bercanggah dengan pengguna LDAP"
ErrOIDCNameConflictOIDC: "Nama pengguna OIDC bercanggah dengan identiti OIDC lain"
ErrOIDCDefaultRoleInvalid: "Peranan lalai yang dikonfigurasi untuk OIDC tidak tersedia"
ErrOIDCPrivateAddressDenied: "Alamat Endpoint OIDC tidak dibenarkan oleh dasar keselamatan rangkaian"
ErrOIDCTLSValidation: "Pengesahan sijil TLS OIDC gagal"
ErrOIDCTestExpired: "Ujian pelayar OIDC telah tamat tempoh; jalankan semula ujian"
ErrOIDCLocalCredentialsReadonly: "Nama pengguna dan kata laluan OIDC diurus oleh Provider identiti dan tidak boleh diubah secara tempatan."
ErrOIDCPasswordExpirationUnsupported: "Pengguna OIDC tidak menggunakan dasar tamat tempoh kata laluan tempatan."
ErrOIDCInternal: "Pengesahan OIDC mengalami ralat dalaman. Cuba lagi kemudian."
# 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."
# 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."
ErrAIProxyBackendAccountExists: "Perkhidmatan model ini telah diimport ke dalam kolam akaun AI Gateway."
ErrAIProxyModelGroupInUse: "Kumpulan model sedang digunakan dan tidak boleh dipadam."
ErrAIProxyModelGroupExists: "Nama kumpulan model sudah wujud."
ErrAIProxySensitiveGroupInUse: "Kumpulan kata sensitif sedang digunakan dan tidak boleh dipadam."
ErrAIProxySensitiveGroupExists: "Nama kumpulan kata sensitif sudah wujud."
AIProxyContentPolicyViolation: "Maaf, saya tidak dapat memproses permintaan ini kerana kandungannya mungkin tidak mematuhi dasar kandungan. Sila ubah kandungan dan cuba lagi."
AIBenchmarkRun: "Jalankan penanda aras AI"
# tugas
TaskStart: "{{ .name }} tugas bermula [START]"
TaskEnd: "{{ .name }} tugas tamat [COMPLETED]"
TaskFailed: "{{ .name }} tugas gagal"
TaskTimeout: "{{ .name }} tamat masa"
TaskSuccess: "{{ .name }} tugas berjaya"
TaskRetry: "Mula percubaan semula {{ .name }}"
SubTaskSuccess: "{{ .name }} berjaya"
SubTaskFailed: "{{ .name }} gagal: {{ .err }}"
TaskInstall: "Pasang"
TaskUpgrade: "Kemas kini"
TaskSync: 'Selaraskan'
TaskSyncForNode: "Segerakan Data Nod"
TaskBackup: "Sandaran"
TaskPush: "Hantar"
TaskRsync: "Selaraskan"
SuccessStatus: "{{ .name }} berjaya"
FailedStatus: "{{ .name }} gagal {{ .err }}"
Start: "Mula"
SubTask: "Tugas Sub"
Skip: "Abaikan ralat dan teruskan..."
Success: "Berjaya"
# tugas penghalaan pintar get laluan AI
AIProxySmartRouteCreateTask: "Cipta sampel penghalaan pintar get laluan AI"
AIProxySmartRouteCreateSubTask: "Cipta sampel dan jana vektor"
AIProxySmartRouteCreateStart: "Memulakan penciptaan sampel, jumlah {{ .total }}"
AIProxySmartRouteCreateFailed: "[{{ .current }}/{{ .total }}] Penciptaan gagal: type={{ .type }} label={{ .label }} error={{ .err }}"
AIProxySmartRouteCreateSuccess: "[{{ .current }}/{{ .total }}] Berjaya dicipta: sampleID={{ .id }} type={{ .type }} label={{ .label }}"
AIProxySmartRouteCreateComplete: "Penciptaan selesai: {{ .success }} berjaya, {{ .failed }} gagal"
AIProxySmartRouteCreateError: "Penciptaan sampel gagal: {{ .failed }} gagal, ralat terakhir"
AIProxySmartRouteRebuildTask: "Bina semula vektor sampel penghalaan pintar get laluan AI"
AIProxySmartRouteRebuildSubTask: "Bina semula vektor sampel"
AIProxySmartRouteEmbeddingRequired: "Endpoint dan model Embedding diperlukan"
AIProxySmartRouteRebuildStart: "Memulakan pembinaan semula vektor sampel, jumlah {{ .total }}"
AIProxySmartRouteRebuildFailed: "[{{ .current }}/{{ .total }}] Pembinaan semula gagal: sampleID={{ .id }} type={{ .type }} label={{ .label }} error={{ .err }}"
AIProxySmartRouteRebuildSuccess: "[{{ .current }}/{{ .total }}] Berjaya dibina semula: sampleID={{ .id }} type={{ .type }} label={{ .label }}"
AIProxySmartRouteRebuildComplete: "Pembinaan semula selesai: {{ .success }} berjaya, {{ .failed }} gagal"
AIProxySmartRouteRebuildError: "Pembinaan semula vektor sampel gagal: {{ .failed }} gagal, ralat terakhir"
# tugas kelompok ejen
BatchInstallAgent: "Pasang ejen secara pukal"
DispatchAgentInstallTasks: "Hantar tugas pemasangan ejen"
BatchUpgradeAgent: "Naik taraf ejen secara pukal"
DispatchAgentUpgradeTasks: "Hantar tugas naik taraf ejen"
BatchAgentInstallDispatchFailed: "Nod {{ .node }} gagal menghantar tugas pemasangan {{ .agentType }} Message: {{ .err }}"
BatchAgentInstallSubmitted: "Nod {{ .node }} berjaya menghantar tugas pemasangan {{ .agentType }}!"
BatchAgentUpgradeDispatchFailed: "Nod {{ .node }} gagal menghantar tugas naik taraf {{ .agentType }} Message: {{ .err }}"
BatchAgentUpgradeAlreadyLatest: "Nod {{ .node }} {{ .agent }} sudah pada versi sasaran, dilangkau"
BatchAgentUpgradeSubmitted: "Nod {{ .node }} berjaya menghantar tugas naik taraf {{ .agent }}!"
BatchAgentUpgradeFailed: "Nod {{ .node }} gagal menghantar tugas naik taraf {{ .agent }} Message: {{ .err }}"
BatchInstallAgentSkill: "Hantar Skill secara pukal"
DispatchAgentSkillInstallTasks: "Hantar tugas pemasangan Skill"
BatchAgentSkillDispatchFailed: "Nod {{ .node }} gagal menghantar {{ .skill }} ke {{ .target }} Message: {{ .err }}"
BatchAgentNoAgentsFound: "Nod {{ .node }} tidak menemui ejen {{ .agentType }}, dilangkau"
BatchAgentSkillSkipped: "Nod {{ .node }} {{ .agent }} dilangkau Message: {{ .msg }}"
BatchAgentSkillInstallSubmitted: "Nod {{ .node }} berjaya menghantar tugas pemasangan {{ .skill }} ke {{ .agent }}!"
BatchAgentSkillInstallFailed: "Nod {{ .node }} gagal menghantar tugas pemasangan {{ .skill }} ke {{ .agent }} Message: {{ .err }}"
BatchAgentOperateDispatchFailed: "Nod {{ .node }} gagal menghantar tugas {{ .operate }} {{ .agentType }} Message: {{ .err }}"
BatchAgentOperateSkipped: "Nod {{ .node }} {{ .agent }} dilangkau Message: {{ .msg }}"
BatchAgentOperateSubmitted: "Nod {{ .node }} berjaya menghantar tugas {{ .operate }} {{ .agent }}!"
BatchAgentOperateFailed: "Nod {{ .node }} gagal menghantar tugas {{ .operate }} {{ .agent }} Message: {{ .err }}"
BatchStartAgent: "Mula ejen secara pukal"
DispatchAgentStartTasks: "Hantar tugas mula ejen"
BatchStopAgent: "Henti ejen secara pukal"
DispatchAgentStopTasks: "Hantar tugas henti ejen"
BatchRestartAgent: "Mula semula ejen secara pukal"
DispatchAgentRestartTasks: "Hantar tugas mula semula ejen"
BatchDeleteAgent: "Padam ejen secara pukal"
DispatchAgentDeleteTasks: "Hantar tugas padam ejen"
AgentOperateStart: "Mula"
AgentOperateStop: "Henti"
AgentOperateRestart: "Mula semula"
AgentOperateDelete: "Padam"
# tugas aplikasi dan kemahiran
PushAppInstallTaskToNode: "Hantar tugas pemasangan aplikasi ke nod [{{ .name }}]"
AppInstallTask: "Tugas pemasangan aplikasi"
PushAppFailed: "Gagal menghantar tugas pemasangan aplikasi"
SkillHubInstallTask: "Pasang kemahiran [{{ .name }}]"
SkillHubInstallToTarget: "Pasang kemahiran [{{ .name }}] ke sasaran [{{ .target }}]"
# pustaka skrip
ScriptLibrary: "Pustaka Skrip"
RemoteScriptLibrary: "Pustaka Skrip Jauh"
ScriptSyncSkip: "Pustaka skrip semasa sudah versi terkini"
DownloadData: "Muat turun fail pustaka skrip data.yaml"
DownloadPackage: "Muat turun pakej pustaka skrip"
AnalyticCompletion: "Analisis selesai, sedang menyegerakkan ke pangkalan data..."
# penyegerakan nod
SyncNode: "Selaraskan data ke nod {{ .name }}"
LocalName: "Nama 'local' hanya digunakan untuk pengenalpastian tempatan sistem"
SyncPackageData: "Pakej data segerak"
SyncPackageEncrypt: "Enkripsi pakej data"
SyncRequest: "Permintaan API segerak nod"
SyncFailedRetry: "Segerakan data nod tamat masa (percubaan ke-{{ .index }}), mencuba semula..."
SyncFailed: "Segerakan gagal, sila segerakkan secara manual dalam senarai nod"
SyncSystemProxy: "Tetapan Proksi Sistem"
SyncScripts: "Pustaka Skrip"
SyncBackupAccounts: "Akaun Sandaran"
SyncAlertSetting: "Tetapan Amaran"
SyncCustomApp: "Aplikasi Tersuai"
SyncLanguage: "Bahasa Sistem"
SyncEdition: "Wilayah Operasi"
# naik taraf nod
NodeUpgrade: "Naik taraf node {{ .name }}"
UpgradeCheck: "Periksa kemas kini nod"
UpgradeCheckLocal: "Nod tempatan tidak menyokong peningkatan kelompok, dilangkau..."
UpgradeCheckLatest: "Nod sudah versi terkini, dilangkau..."
NewSSHClient: "Memulakan sambungan SSH"
BackupBeforeUpgrade: "Menyandarkan data sebelum naik taraf"
UploadUpgradeFile: "Sebarkan fail naik taraf"
RestartAfterUpgrade: "Mulakan perkhidmatan selepas naik taraf"
LoadAutoUpgradeNodesFailed: "Gagal memuatkan nod naik taraf automatik, ralat: {{ .err }}"
AutoUpgradeNodes: "Nod naik taraf automatik: {{ .nodes }}"
UpdateAutoUpgradeNodesStatusFailed: "Gagal mengemas kini status nod naik taraf automatik, ralat: {{ .err }}"
# tambah nod
MasterData: "Data Nod Master"
LoadSftpClient: "Dapatkan Klien SFTP"
PackageMasterData: "Hasilkan pakej sandaran nod master"
UploadBackup: "Muat naik data sandaran"
TaskAddNode: "Tambah nod"
LoadNodeArch: "Dapatkan maklumat seni bina nod"
LoadNodeArchDetail: "Mengesan seni bina nod induk: {{ .local }}, seni bina nod anak: {{ .node }}"
LoadNodeUpgradeDetail: "Menggunakan direktori pemasangan sejarah versi v1: {{ .baseDir }}, port mendengar perkhidmatan: {{ .port }}"
SyncAgentBaseInfo: "Sinkronkan maklumat asas nod"
GenerateSSLInfo: "Cipta maklumat SSL nod"
ConnInfoNotMatch: "Maklumat sambungan tidak sepadan"
MakeAgentPackage: "Cipta pakej pemasangan nod"
PrepareNodePackage: "Sediakan pakej sedia ada pada nod anak"
PrepareNodePackageDetail: "Gunakan pakej sedia ada pada nod anak: {{ .name }}"
SyncNodeConfig: "Segerakkan konfigurasi nod"
ErrNodePackagePath: "Masukkan laluan fail mutlak pakej pada nod anak"
ErrNodePackageFile: "Gagal memproses fail pakej {{ .name }}: {{ .err }}"
ErrNodePackageMember: "Pakej mengandungi entri tidak sah atau pendua: {{ .name }}"
ErrNodePackageMismatch: "Pakej mesti sepadan dengan versi nod utama {{ .version }} dan seni bina nod anak {{ .arch }}"
ErrNodePackageMissing: "Fail yang diperlukan tiada dalam pakej: {{ .name }}"
ErrNodePackageVersion: "Versi pakej {{ .version }} tidak sepadan dengan versi nod utama {{ .expected }}"
ErrNodePackageArch: "Seni bina fail boleh laksana Agent tidak sepadan dengan seni bina nod anak {{ .arch }}"
SendAgent: "Muat naik pakej pemasangan nod"
StartService: "Mulakan perkhidmatan"
NoBackupNode: "Nod sandaran kosong. Sila pilih nod sandaran untuk disimpan dan cuba lagi"
# penyegerakan fail dan imej nod
LocalNodeIpFailed: "Gagal mendapatkan IP nod induk. Edit nod induk dan tambahkan alamat IP serta maklumat pengesahan SSH."
HandlePrivateKey: "Kendalikan kunci peribadi nod"
HandlePublicKey: "Kendalikan kunci awam nod"
ExchangeFile: "Mulakan penyegerakan {{ .sourcePath }} dari nod {{ .source }} ke nod {{ .dest }}:{{ .destPath }}"
NodeFile: "Fail nod"
ImageSyncTaskName: "Segerakkan {{ .count }} imej"
SSLSyncTaskName: "Segerakkan {{ .count }} sijil"
AppSyncTaskName: "Segerakkan aplikasi {{ .name }}"
SSLSyncToNode: "Hantar sijil [{{ .cert }}] ke nod [{{ .node }}]"
ImageSyncSave: "Simpan imej {{ .image }}"
ImageSyncSaveTags: "Simpan tag imej {{ .tags }}"
ImageSyncToNode: "Segerakkan imej {{ .image }} ke nod {{ .node }}"
ImageSyncLoad: "Muatkan imej {{ .image }} pada nod {{ .node }}"
ImageSyncClean: "Bersihkan fail sementara imej {{ .image }}"
ImageSyncNoTag: "Imej {{ .image }} tidak mempunyai tag dan akan disimpan menggunakan ID imej"
ImageSyncFrontendTagsIgnored: "Tiada tag ditemui untuk imej {{ .image }} pada nod sumber. Tag frontend telah diabaikan."
ImageSyncHandlePrivateKey: "Kendalikan kunci peribadi nod penyegerakan imej"
ImageSyncHandlePublicKey: "Kendalikan kunci awam nod penyegerakan imej"
ImageSyncTransfer: "Mulakan pemindahan fail sementara imej: {{ .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"
AppKeyVal: "Kunci aplikasi (hanya menyokong bahasa Inggeris)"
AppCreateFileErr: "Gagal mencipta fail {{ .name }} {{ .err }}"
AppCreateDirErr: "Gagal mencipta folder {{ .name }} {{ .err }}"
AppMissKey: "Kunci aplikasi hilang, gunakan -k untuk menetapkan"
AppMissVersion: "Versi aplikasi hilang, gunakan -v untuk menetapkan"
AppVersionExist: "Versi sudah wujud"
AppCreateSuccessful: "Ciptaan berjaya"
AppWriteErr: "Penulisan fail {{ .name }} gagal {{ .err }}"
# 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"
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 }}..."
RestoreStep2: "(2/5) Rollback binari 1Panel berjaya"
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"
UpdatePort: "Kemas kini port panel"
UpdateUserNull: "Ralat: Pengguna kosong"
UpdateUserBlank: "Ralat: Pengguna mengandungi ruang kosong"
UpdateUserFormat: "Ralat: Format pengguna tidak sah Hanya menyokong huruf Inggeris, Cina, nombor, dan _, dengan panjang 3-30 aksara"
UpdateUserErr: "Ralat: Gagal mengemas kini pengguna, {{ .err }}"
UpdateSuccessful: "Kemas kini berjaya"
UpdateUserResult: "Pengguna: {{ .name }}"
UpdatePasswordRead: "Ralat: Gagal membaca maklumat kata laluan pengguna, {{ .err }}"
UpdatePasswordNull: "Ralat: Kata laluan pengguna kosong"
UpdateUPasswordBlank: "Ralat: Kata laluan pengguna mengandungi ruang kosong"
UpdatePasswordFormat: "Ralat: Kata laluan pengguna hanya menyokong huruf, nombor, dan aksara khas (@#$%*_,.?), dengan panjang 8-30 aksara."
UpdatePasswordLen: "Ralat: Sila masukkan kata laluan lebih panjang daripada 6 aksara"
UpdatePasswordRe: "Sahkan kata laluan:"
UpdatePasswordErr: "Ralat: Gagal mengemas kini kata laluan pengguna, {{ .err }}"
UpdatePasswordSame: "Ralat: Kedua-dua kata laluan tidak sepadan, sila semak dan cuba lagi"
UpdatePasswordResult: "Kata laluan pengguna: {{ .name }}"
UpdatePortFormat: "Ralat: Nombor port yang dimasukkan mesti antara 1 hingga 65535"
UpdatePortUsed: "Ralat: Nombor port sudah digunakan, sila semak dan cuba lagi"
UpdatePortErr: "Ralat: Gagal mengemas kini port panel, {{ .err }}"
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."
# aplikasi mudah alih
ErrVerifyToken: "Ralat pengesahan token, sila tetapkan semula dan imbas semula"
ErrInvalidToken: "Token tidak sah, sila tetapkan semula dan imbas semula"
ErrExpiredToken: 'Kod QR tidak lagi sah. Jana kod baharu dan imbas semula.'
# eksport perintah
Name: "Nama"
Command: "Arahan"
# LDAP
ErrLDAPConnectionTest: "Ujian sambungan LDAP gagal. Semak alamat pelayan, akaun pengikatan dan tetapan rangkaian."
ErrLDAPLoginTest: "Ujian log masuk LDAP gagal. Semak nama pengguna dan kata laluan."
LDAPConnectionTestSuccess: "Ujian sambungan LDAP berjaya."
ErrLDAPDirectorySearch: "Gagal membaca pengguna LDAP. Semak tetapan sambungan dan carian."
ErrLDAPConfigLoad: "Gagal memuatkan konfigurasi LDAP."
ErrLDAPConfigSave: "Gagal menyimpan konfigurasi LDAP."
ErrLDAPURLInvalid: "Alamat pelayan LDAP mesti menggunakan ldap:// atau ldaps:// dan mengandungi hos yang sah."
ErrLDAPBindDNRequired: "DN pengikatan diperlukan."
ErrLDAPBindPasswordRequired: "Kata laluan pengikatan diperlukan."
ErrLDAPUserOURequired: "OU pengguna diperlukan."
ErrLDAPConnectTimeoutRange: "Had masa sambungan mestilah antara 1 hingga 120 saat."
ErrLDAPSearchPageSizeRange: "Saiz halaman pertanyaan LDAP mestilah antara 1 hingga 10000."
ErrLDAPResultPageSizeRange: "Saiz halaman hasil tidak boleh melebihi 200."
ErrLDAPAttributeMapOnlyName: "Pemetaan atribut hanya menyokong medan name."
ErrLDAPNameAttributeRequired: "Atribut LDAP yang dipetakan kepada name diperlukan."
ErrLDAPAttributeNameInvalid: "Pemetaan atribut mengandungi nama atribut LDAP yang tidak sah."
ErrLDAPUserFilterRequired: "Penapis pengguna diperlukan."
ErrLDAPUserFilterInvalid: "Penapis pengguna bukan penapis LDAP yang sah."
ErrLDAPAttributeMapObject: "Pemetaan atribut mestilah objek JSON yang sah."
ErrLDAPImportModeInvalid: "Mod import mestilah pengguna terpilih atau semua pengguna."
ErrLDAPImportSelectionRequired: "Pilih sekurang-kurangnya seorang pengguna LDAP untuk diimport."
ErrLDAPImportSelectionInvalid: "Pengguna LDAP yang dipilih tidak sah atau tidak lagi wujud. Baca semula direktori."
ErrLDAPConfigChanged: "Konfigurasi LDAP telah berubah. Baca semula direktori dan pratonton import sekali lagi."
ErrLDAPRoleRequired: "Pilih peranan untuk pengguna LDAP baharu."
ErrLDAPImportPlanIncomplete: "Pelan import LDAP yang tidak lengkap tidak boleh dilaksanakan."
ErrLDAPQueryTokenInvalid: "Hasil pertanyaan LDAP telah tamat tempoh. Baca semula direktori."
ErrLDAPPlanTokenInvalid: "Pratonton import LDAP telah tamat tempoh. Pratonton semula import."
ErrLDAPOperationFailed: "Operasi LDAP gagal. Cuba lagi."
ErrLDAPEntryIdentityMissing: "Entri LDAP tiada ID stabil atau nama pengguna."
ErrLDAPDuplicateExternalID: "LDAP mengembalikan ID pengguna yang berulang."
ErrLDAPUsernameConflict: "Nama pengguna telah digunakan oleh pengguna lain."
ErrLDAPUsernameSourceConflict: "Nama pengguna telah digunakan oleh pengguna tempatan atau sumber pengesahan lain."
ErrLDAPUsernameConcurrentConflict: "Nama pengguna telah diambil oleh pengguna lain semasa import."
ErrLDAPLocalCredentialsReadonly: "Nama pengguna dan kata laluan LDAP diurus oleh LDAP dan tidak boleh diubah secara tempatan."
ErrLDAPPasswordExpirationUnsupported: "Pengguna LDAP tidak menggunakan dasar tamat tempoh kata laluan tempatan."
ErrLDAPSyncSourceDisabled: "Dayakan AD/LDAP sebelum mendayakan atau menjalankan penyegerakan."
ErrLDAPSyncConfigSave: "Gagal menyimpan tetapan penyegerakan LDAP."
ErrLDAPSyncSchedule: "Gagal mengemas kini jadual penyegerakan LDAP."
ErrLDAPSyncCronInvalid: "Masukkan ungkapan Cron lima medan yang sah."
ErrLDAPSyncWeekdayInvalid: "Pilih hari dalam minggu yang sah."
ErrLDAPSyncCronRequired: "Masukkan ungkapan Cron."
ErrLDAPSyncScheduleTypeInvalid: "Pilih jenis jadual penyegerakan yang sah."
ErrLDAPSyncTimeInvalid: "Masukkan masa pelaksanaan yang sah."
ErrLDAPSyncRunning: "Tugas penyegerakan LDAP sedang berjalan."
ErrLDAPSyncDirectoryIncomplete: "LDAP mengembalikan hasil pertanyaan penuh yang tidak lengkap. Tiada status pengguna diubah."
ErrLDAPSyncFailed: "Penyegerakan pengguna LDAP gagal."
LDAPSyncSuccess: "Penyegerakan pengguna LDAP berjaya diselesaikan."
ErrSAML2NotEnabled: "Pengesahan SAML2 tidak didayakan."
ErrSAML2ConfigInvalid: "Konfigurasi SAML2 tidak sah."
ErrSAML2ConfigChanged: "Konfigurasi SAML2 telah berubah. Mulakan pengesahan sekali lagi."
ErrSAML2PanelOriginMissing: "Masukkan URL awam 1Panel yang sah dan hanya mengandungi skema, hos serta port pilihan."
ErrSAML2MetadataInvalid: "Metadata IdP tiada atau tidak sah."
ErrSAML2MetadataURLInvalid: "URL metadata IdP atau titik akhir dalam metadata tidak dibenarkan."
ErrSAML2MetadataFetch: "Gagal memuatkan metadata IdP."
ErrSAML2MetadataCertificate: "Metadata IdP tidak mengandungi sijil tandatangan yang boleh digunakan."
ErrSAML2KeyPairInvalid: "Kunci peribadi dan sijil SP tidak sah atau tidak sepadan."
ErrSAML2NameAttributeMissing: "Atribut nama pengguna SAML2 yang dikonfigurasikan tiada atau tidak sah."
ErrSAML2DefaultRoleInvalid: "Peranan lalai yang dikonfigurasikan untuk SAML2 tidak tersedia."
ErrSAML2SLOUnavailable: "IdP tidak menyediakan perkhidmatan Single Logout yang disokong."
ErrSAML2TestExpired: "Ujian SAML2 telah tamat tempoh. Jalankan sekali lagi."
ErrSAML2LoginExpired: "Permintaan log masuk SAML2 telah tamat tempoh. Cuba lagi."
ErrSAML2InvalidState: "Keadaan log masuk SAML2 tidak sah atau telah digunakan."
ErrSAML2RequestBuild: "Gagal membina permintaan SAML2."
ErrSAML2ResponseInvalid: "Respons SAML2 tidak sah."
ErrSAML2SignatureInvalid: "Tandatangan SAML2 tidak sah."
ErrSAML2Replay: "Mesej SAML2 telah digunakan."
ErrSAML2NameIDMissing: "NameID SAML2 tiada atau tidak sah."
ErrSAML2SessionIndexMissing: "SessionIndex SAML2 tiada atau tidak sah."
ErrSAML2NameConflictLocal: "Nama pengguna SAML2 bercanggah dengan pengguna setempat."
ErrSAML2NameConflictLDAP: "Nama pengguna SAML2 bercanggah dengan pengguna LDAP."
ErrSAML2NameConflictOIDC: "Nama pengguna SAML2 bercanggah dengan pengguna OIDC."
ErrSAML2NameConflictSAML2: "Nama pengguna SAML2 bercanggah dengan identiti SAML2 lain."
ErrSAML2Internal: "Ralat dalaman berlaku semasa pengesahan SAML2. Cuba lagi kemudian."
ErrSAML2LogoutExpired: "Permintaan log keluar SAML2 telah tamat tempoh."
ErrSAML2LogoutInvalid: "Mesej log keluar SAML2 tidak sah."
ErrSAML2LocalCredentialsReadonly: "Nama pengguna dan kata laluan SAML2 diurus oleh penyedia identiti dan tidak boleh diubah secara setempat."
ErrSAML2PasswordExpirationUnsupported: "Pengguna SAML2 tidak menggunakan dasar tamat tempoh kata laluan setempat."
# API key management
ErrAPIKeyConflict: "Kunci API telah berubah. Muat semula dan cuba lagi; gunakan parameter asal untuk mengulangi penciptaan"
ErrAPIKeyNameExists: "Kunci API yang belum dibatalkan dengan nama ini sudah wujud"
ErrAPIKeyNotFound: "Kunci API tidak wujud atau bukan milik pengguna semasa"
ErrAPIKeyAppBindingDisabled: "Pemautan APP melalui kod QR tidak dibenarkan untuk kunci API ini"
ErrAPIKeyTerminalUpgradeRequired: "Sokongan pengesahan terminal melalui kunci API tidak dapat disahkan. Semak sambungan nod dan naik taraf Agent sebelum mencuba lagi."
LocalAppSyncDispatch: "Hantar penyegerakan aplikasi tempatan"
LocalAppSyncDispatchNode: "Hantar penyegerakan aplikasi tempatan ke {{.node}} (tugas nod: {{.taskID}})"
ErrLocalAppSyncDisabled: "Penyegerakan aplikasi tempatan antara nod dinyahdayakan"
# MCP connection document
MCPDocumentTitle: "Arahan persediaan sambungan MCP 1Panel"
MCPDocumentIntro: "Berikan fail ini kepada ejen AI dan minta ia melengkapkan persediaan mengikut dokumen. Fail ini mengandungi Token penuh; simpan secara peribadi."
MCPDocumentTaskTitle: "Tugas konfigurasi untuk ejen AI"
MCPDocumentTask: "Konfigurasikan MCP 1Panel dalam persekitaran semasa untuk klien yang dinyatakan di bawah, kemudian sahkan sambungan dan penemuan alat. Gunakan parameter sambungan dalam blok konfigurasi di bawah."
MCPDocumentClientCodex: "Klien sasaran: Codex. Sahkan dahulu skop konfigurasi dan CODEX_HOME sebenar. Gunakan config.toml yang berkuat kuasa (lalai: ~/.codex/config.toml) dan gabungkan TOML di bawah ke dalam entri mcp_servers yang sepadan."
MCPDocumentClientClaude: "Klien sasaran: Claude. Sahkan dahulu versi klien sebenar. JSON di bawah adalah untuk klien yang menyokong konfigurasi MCP melalui HTTP. Gunakan lokasi konfigurasi atau kaedah pengurusan yang disokong versi tersebut; jangan masukkan konfigurasi HTTP jauh ke dalam entri yang hanya menyokong stdio."
MCPDocumentClientGeneric: "Klien sasaran: klien MCP umum. Kenal pasti dahulu klien yang digunakan dan skop konfigurasi. Tanya pengguna jika tidak pasti; jangan meneka lokasi fail konfigurasi. Gabungkan parameter sambungan di bawah mengikut sintaks klien."
MCPDocumentSteps: |-
1. Sahkan bahawa klien sasaran menyokong Streamable HTTP dan pengepala permintaan Bearer. Jika versinya tidak menyokongnya, jelaskan sebabnya.
2. Baca dan sandarkan konfigurasi sedia ada. Gabungkan satu entri pelayan di bawah sambil mengekalkan tetapan MCP dan klien yang lain. Jika nama itu sudah wujud, kemas kini entri itu sahaja.
3. Tulis nilai URL dan Authorization tepat seperti yang diberikan. Jangan jana semula Token atau ubah kebenaran panel atau keadaan perkhidmatan. Jangan masukkan Token dalam sejarah perintah, log, balasan atau Git.
4. Kekalkan pengesahan sijil untuk HTTPS. Bagi CA peribadi, minta pengguna memberikan CA yang dipercayai; jangan mempercayai sijil pelayan secara automatik atau mematikan pengesahan TLS. Gunakan HTTP hanya pada rangkaian dipercayai; konfigurasikan HTTPS sebelum melalui rangkaian yang tidak dipercayai.
5. Muat semula melalui klien, kemudian sahkan permulaan MCP dan tools/list. Jangan jalankan tools/call atau operasi tulis. Jika muat semula tidak tersedia, laporkan bahawa sesi baharu atau mula semula diperlukan. Menyimpan fail bukan bukti sambungan berjaya.
6. Laporkan klien, lokasi konfigurasi, nama pelayan, hasil sambungan dan penemuan alat, serta masalah yang masih belum selesai. Sembunyikan Token.
MCPDocumentConfigTitle: "Konfigurasi sambungan"
MCPDocumentNotes: "Pelayan panel menyemak kebenaran alat, nod dan akaun pemilik semasa bagi setiap permintaan. Kemas kini konfigurasi klien selepas menjana semula Token. Akses ditolak apabila kelayakan dinyahdayakan, dibatalkan atau tamat tempoh."
MCPDocumentHTTPWarning: "Alamat ini menggunakan HTTP tanpa penyulitan. Konfigurasikan HTTPS sebelum menggunakannya pada rangkaian yang tidak dipercayai."
# MCP management
ErrMCPConflict: "Konflik data MCP. Muat semula dan semak."
ErrMCPSettingsChanged: "Tetapan perkhidmatan berubah. Muat semula dan semak sebelum menyimpan."
ErrMCPCredentialChanged: "Bukti kelayakan berubah. Muat semula dan semak sebelum menghantar."
ErrMCPCredentialRevoked: "Bukti kelayakan dibatalkan. Cipta yang baharu."
ErrMCPCredentialNameExists: "Nama bukti kelayakan sudah wujud. Pilih nama lain."
ErrMCPRequestReused: "Butiran permintaan bercanggah. Tutup dan buka semula tetingkap ini."
ErrMCPInstallationRunning: "Pemasangan sedang berjalan. Semak log pemasangan."
ErrMCPServiceOperationRunning: "Operasi perkhidmatan sedang berjalan. Muat semula selepas selesai."
ErrMCPEndpointManagedByWebsite: "Alamat ini diurus oleh laman web. Ubah dalam tetapan laman web."
ErrMCPWebsiteConfigurationExists: "Pautan atau operasi tertunda wujud. Nyahpilih “Pautkan laman web selepas pemasangan”."
ErrMCPWebsiteAlreadyBound: "Laman web sudah dipautkan. Urus atau buang pautan sedia ada."
ErrMCPWebsiteNotBound: "Tiada laman web dipautkan. Muat semula sebelum memautkan."
ErrMCPWebsiteMissing: "Laman web asal tiada. Buang pautan tidak sah dan pautkan semula."
ErrMCPWebsiteOperationPending: "Operasi laman web belum disahkan. Muat semula dan cuba semula operasi asal."
ErrMCPWebsiteDomainConflict: "Gabungan domain dan port ini sedang digunakan. Tukar domain atau port."
ErrMCPWebsiteOwnershipChanged: "Pemilikan laman web berubah. Semak laman web dan tetapan pautan."
ErrMCPWebsiteDomainChanged: "Domain berubah. Semak dan muat semula status pautan."
ErrMCPWebsiteDirectoryChanged: "Direktori atau keizinan laman web berubah. Pulihkan sebelum mencuba semula."
ErrMCPWebsiteProxyModified: "Konflik konfigurasi proksi. Pulihkan konfigurasi proksi MCP."
ErrMCPWebsiteModified: "Protokol atau tetapan laman web berubah. Semak dan muat semula."
ErrMCPWebsiteRequestChanged: "Rekod operasi tidak sepadan. Muat semula dan sahkan hasil sebelum operasi baharu."
ErrMCPWebsiteProxyNotLoaded: "Proksi MCP belum dimuatkan. Semak tetapan laman web dan OpenResty."
ErrMCPWebsiteStateUnconfirmed: "Status laman web belum disahkan. Semak laman web dan OpenResty, kemudian muat semula."
ErrMCPPolicyChanged: "Katalog alat atau kebenaran berubah. Muat semula dan semak sebelum menyimpan."
ErrMCPCatalogUnavailable: "Katalog alat tidak tersedia. Semak status perkhidmatan."
ErrMCPDisabled: "Perkhidmatan MCP belum didayakan."
ErrMCPSecretKeyUnavailable: "Penyulitan bukti kelayakan tidak tersedia. Cuba lagi kemudian."
ErrMCPSecretInvalid: "Token tidak dapat dinyahsulit. Jana semula."
ErrMCPCredentialInactive: "Bukti kelayakan dinyahdayakan, tamat tempoh atau dibatalkan."
ErrMCPAuditUnavailable: "Audit operasi tidak tersedia. Sahkan hasil operasi dahulu."
ErrMCPEndpointUnavailable: "Tetapkan alamat MCP yang sah dahulu."
ErrMCPWebsitePending: "Hasil operasi laman web belum disahkan. Muat semula dan cuba semula operasi asal."
ErrMCPWebsiteUnavailable: "Pautan laman web tidak tersedia. Semak laman web dan OpenResty."
ErrMCPWebsiteServiceRequired: "Pasang perkhidmatan 1Panel MCP dahulu."
ErrMCPWebsiteHTTPPortRequired: "Gunakan port HTTP OpenResty untuk pautan HTTPS."
# MCP installation tasks
PanelMCP: "1Panel MCP"
MCPInstallPrepare: "Semak perkhidmatan MCP semasa"
MCPInstallPullImage: "Semak dan tarik imej"
MCPInstallCatalog: "Sahkan kontrak alat"
MCPInstallStarting: "Mulakan bekas dan semak kesihatannya"
MCPInstallSaving: "Simpan konfigurasi perkhidmatan"
MCPInstallCompleted: "Pemasangan perkhidmatan MCP selesai"
MCPInstallRollback: "Pemasangan gagal; pulihkan perkhidmatan MCP sebelumnya"
MCPInstallBindWebsite: "Cipta laman web yang dipautkan"
MCPInstallWebsiteFailed: "Perkhidmatan dipasang; pautan laman web gagal. Selesaikan dalam tetapan perkhidmatan."
MCPInstallInterrupted: "Mula semula panel mengganggu pemasangan. Sahkan status perkhidmatan."
MCPInstallFailed: "Pemasangan gagal. Semak Docker, imej dan log panel."
MCPInstallRecoveryFailed: "Pemasangan gagal dan pemulihan tidak lengkap. Sahkan status perkhidmatan."
MCPInstallLocalImage: "Imej sudah tersedia secara setempat; langkau muat turun"
MCPInstallVerifyImage: "Sahkan versi imej dan kontrak perkhidmatan terurus"
MCPInstallVerifiedImage: "Pengesahan imej berjaya"
PHPExtensionsNoTargets: "Tiada nod sasaran yang tinggal selepas mengecualikan nod sumber"
PHPExtensionsSyncTask: "Segerakkan templat sambungan PHP [{{ .name }}]"
PHPExtensionsSyncSkipped: "Nod [{{ .node }}] sudah mempunyai templat yang sama; dilangkau"
MCPInstallCleanup: "Bersihkan bekas terdahulu"
MCPInstallOldContainerRemoved: "Bekas terdahulu dipadam"
MCPInstallOldImageRemoved: "Imej terdahulu dipadam"
MCPInstallOldImageKept: "Imej terdahulu dikekalkan"
MCPInstallOldImageRetained: "Imej terdahulu masih dirujuk atau mempunyai tag lain; imej dikekalkan."
MCPInstallCleanupSkipped: "Bekas terdahulu tiada; langkau pembersihan imej."
MCPInstallCleanupFailed: "Perkhidmatan MCP telah dinaik taraf, tetapi pembersihan sumber lama belum selesai. Semak secara manual."