From 69cfa82b1de1e04e07752688eb6c9588dc8179ab Mon Sep 17 00:00:00 2001 From: Jacky Date: Sun, 24 May 2026 09:22:21 +0800 Subject: [PATCH] feat: self-signed certificate support (#1655) (#1688) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(cert): add self-signed certificate type and config to model Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): generate self-signed leaf certificates Add GenerateSelfSigned / SelfSignedOptions plus five new error codes (50032-50036) and a full TDD test suite covering valid cert output, multiple key types, empty-SAN rejection, and invalid-IP rejection. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): regenerate self-signed certificates with key reuse Add RegenerateSelfSigned, SelfSignedOptionsFromModel, deriveSelfSignedCommonName, loadSelfSignedKey, and parsePrivateKeyPEM to support re-issuing self-signed certificates for the auto-renewal job, reusing the on-disk private key when possible. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): add self-signed certificate renewal worker Add auto-renewal worker for self-signed certificates that mirrors the ACME renewal logic, using a dedicated shouldRenewSelfSignedCert threshold function verified with TDD. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cron): schedule self-signed certificate renewal Register setupSelfSignedCertRenewalJob as a periodic cron job (every 30 minutes) in InitCronJobs, mirroring the existing setupAutoCertJob pattern. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(api): add self-signed certificate generation endpoints Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): add self-signed certificate frontend API Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): add shared self-signed certificate fields component Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): add self-signed certificate generation modal and list entry Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): support self-signed certificates in the editor Co-Authored-By: Claude Opus 4.7 (1M context) * feat(site): generate self-signed certificates from the site editor Extract hasTLSListen/ensureDirective/ensureTLSDirectives into a shared useTLSDirectives composable, refactor ObtainCert.vue to use it, and add SelfSignedCert.vue to the site cert tab so users can generate and apply a self-signed certificate directly from the site editor. Co-Authored-By: Claude Opus 4.7 (1M context) * fix(cert): validate self-signed key type and name IP-only renewals Co-Authored-By: Claude Opus 4.7 (1M context) * refactor(cert): apply code-review cleanup - reuse certcrypto.ParsePEMPrivateKey instead of a hand-rolled PEM private-key parser - stop exporting the unused ensureDirective from useTLSDirectives - use the AutoCertState enum instead of integer literals in certColumns - allocate the renewal Logger only when renewal is attempted, avoiding a per-tick goroutine and empty-log database write for non-due certificates Co-Authored-By: Claude Opus 4.7 (1M context) * fix(cert): address PR #1688 review feedback - clean up the partial certificate directory when the initial write fails, not just the database row - log a warning when the existing self-signed private key cannot be reused so operators notice the public-key fingerprint has changed - defensively copy the model's Domains and IPAddresses slices in SelfSignedOptionsFromModel - require an explicit "Save now" confirmation after generating from the site editor, and write the directives into the editor first so the user can review the diff before saving Co-Authored-By: Claude Opus 4.7 (1M context) * fix(cert): harden self-signed certificate lifecycle Reuse private keys on manual self-signed edits, make certificate writes safer, clean managed self-signed files on delete, and guard renewal against missing config. * fix(cert): harden self-signed frontend handling Avoid undefined certificate redirects, rely on payload defaults for self-signed fields, and parse TLS listen directives precisely. * fix(site): satisfy strict listen regex lint Escape the IPv6 listen closing bracket explicitly so the strict regexp lint rule accepts TLS listen parsing. * fix(cert): harden self-signed key handling Co-authored-by: Jacky * docs(cert): design merging self-signed entry into issue dialog Spec for collapsing the Certificate list header from three actions to two by adding a Self-signed option inside the existing Issue Certificate dialog. Co-Authored-By: Claude Opus 4.7 (1M context) * docs(cert): plan merging self-signed into issue dialog Step-by-step plan that turns the spec into two scoped commits: extend DNSIssueCertificate with a self-signed type, then drop the standalone header button from the certificate list view. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): add self-signed option in issue certificate dialog Extend the Issue Certificate dialog's Certificate Type select with a "Self-signed" option that swaps the form body to SelfSignedCertFields and routes submission through cert.generate_self_signed(). ACME paths (Wildcard / Custom Domains) are unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) * refactor(cert): drop standalone self-signed button from list header Certificate creation is now consolidated under the Issue Certificate dialog (which exposes Self-signed as a Certificate Type option), so the duplicate header entry, its ref, handler, and modal mount are removed. Co-Authored-By: Claude Opus 4.7 (1M context) * docs(cert): design self-signed UX enhancements Adds a reusable StringListInput, renewal-policy hint in the self-signed form, and a required Name field (frontend + backend). Builds on the prior merge spec. Co-Authored-By: Claude Opus 4.7 (1M context) * docs(cert): plan self-signed UX enhancements Six-task plan: extract StringListInput, require Name backend + test, refactor SelfSignedCertFields with renewal hint, hide duplicate alert in editor, seed/filter payloads with Name validation, and adopt StringListInput in the ACME Custom Domains branch. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(ui): add StringListInput component Reusable multi-row text input with Add/Remove buttons. Used in the upcoming refactor of Custom Domains and self-signed Domains / IP Addresses editors so all three share a single editor pattern. Co-Authored-By: Claude Opus 4.7 (1M context) * fix(ui): simplify StringListInput model write and add a11y label Replace the captured-index update closure with v-model:value on items[index] so input events are guaranteed to write to the array slot currently bound to the DOM input. Add an aria-label suffix on the Remove button so screen readers can distinguish rows. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): require Name when generating self-signed certificates Adds binding:"required" to SelfSignedCertRequest.Name so an empty name is rejected at the request boundary, and covers the contract with a new API-level test. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): unify self-signed editor and surface renewal hint Switch Domains and IP Addresses to the shared StringListInput so all self-signed field editors match the Custom Domains pattern. Add an auto-renewal hint (suppressible via hideRenewalNote) and mark Name as required to match the new backend contract. Co-Authored-By: Claude Opus 4.7 (1M context) * chore(cert): suppress duplicate renewal alert in cert editor SelfSignedCertManagement already has its own renewal-status alert; pass hide-renewal-note to SelfSignedCertFields to avoid showing two adjacent alerts saying the same thing. Co-Authored-By: Claude Opus 4.7 (1M context) * feat(cert): seed and filter self-signed payloads, validate Name StringListInput preserves empty placeholder rows for editing; seed arrays with [''] in toSelfSignedPayload / emptySelfSignedPayload / emptyForm so the editor always renders an empty row to type into. Each submit/save path trims and filters the arrays before sending and now rejects an empty Name client-side to match the new server contract. Co-Authored-By: Claude Opus 4.7 (1M context) * refactor(cert): make SelfSignedCertPayload.name required Every factory already seeds name as ''; the optional marker forced defensive (name ?? '').trim() at three call sites. Align the type with reality. Co-Authored-By: Claude Opus 4.7 (1M context) * refactor(cert): use StringListInput for Custom Domains Drop the inline multi-row template + add/remove helpers in favour of the shared StringListInput component, matching the editor used by the self-signed branch. Co-Authored-By: Claude Opus 4.7 (1M context) * chore(ui): regenerate components.d.ts for StringListInput Auto-generated by unplugin-vue-components after the new component was added under app/src/components/StringListInput/. Co-Authored-By: Claude Opus 4.7 (1M context) * fix(cert): render key_type for both legacy and canonical forms The backend's helper.GetKeyType normalizes key_type to its canonical form (EC256, RSA2048…) on every write — self-signed generation as well as the ModifyCert BeforeExecuteHook. The frontend PrivateKeyTypeMask was keyed only by the legacy form (P256, 2048…), so maskRender returned "/" for every cert that took a write path through normalization. Two reported symptoms with the same root cause: - New self-signed cert always shows "/" in the Key Type column - Editing any ACME cert (issue #1697) flips its column to "/" after save Add formatPrivateKeyType / normalizePrivateKeyType helpers that map both forms to the frontend's legacy key. Use them in the list column renderer and when loading certs into the self-signed and ACME editor forms so the ASelect highlights the correct option. Fixes #1697. Co-Authored-By: Claude Opus 4.7 (1M context) * style(cert): cap self-signed fields width at 600px The fields stretched full-width inside the certificate editor page; cap the form at 600px to match AutoCertManagement and keep the editing area readable. Modal consumers were already bounded by their own width, so the change is invisible there. Co-Authored-By: Claude Opus 4.7 (1M context) * chore: update translations --------- Co-authored-by: Claude Opus 4.7 (1M context) Co-authored-by: Cursor Agent Co-authored-by: Hintay --- api/certificate/certificate.go | 36 +- api/certificate/router.go | 2 + api/certificate/self_signed.go | 267 +++ api/certificate/self_signed_test.go | 200 ++ app/components.d.ts | 2 + app/src/api/cert.ts | 47 +- .../StringListInput/StringListInput.vue | 51 + app/src/components/StringListInput/index.ts | 3 + app/src/constants/index.ts | 41 + app/src/language/ar/app.po | 1259 +++++++------ app/src/language/de_DE/app.po | 1399 +++++++------- app/src/language/en/app.po | 710 ++++---- app/src/language/es/app.po | 1362 +++++++------- app/src/language/fr_FR/app.po | 1364 +++++++------- app/src/language/ja_JP/app.po | 1609 ++++++++--------- app/src/language/ko_KR/app.po | 1483 ++++++++------- app/src/language/messages.pot | 677 +++---- app/src/language/pt_PT/app.po | 1276 +++++++------ app/src/language/ru_RU/app.po | 1322 ++++++++------ app/src/language/tr_TR/app.po | 1318 +++++++------- app/src/language/uk_UA/app.po | 1288 +++++++------ app/src/language/vi_VN/app.po | 1289 +++++++------ app/src/language/zh_CN/app.po | 1314 +++++++------- app/src/language/zh_TW/app.po | 1318 +++++++------- .../views/certificate/CertificateEditor.vue | 71 +- .../CertificateList/certColumns.tsx | 18 +- .../components/DNSIssueCertificate.vue | 154 +- .../components/SelfSignedCertFields.vue | 82 + .../components/SelfSignedCertForm.vue | 89 + .../components/SelfSignedCertManagement.vue | 38 + .../site/site_edit/components/Cert/Cert.vue | 4 + .../site_edit/components/Cert/ObtainCert.vue | 57 +- .../components/Cert/SelfSignedCert.vue | 80 + .../site_edit/composables/useTLSDirectives.ts | 78 + ...05-23-merge-self-signed-into-issue-cert.md | 559 ++++++ .../2026-05-23-self-signed-enhancements.md | 942 ++++++++++ ...erge-self-signed-into-issue-cert-design.md | 183 ++ ...6-05-23-self-signed-enhancements-design.md | 232 +++ internal/cert/auto_cert.go | 4 + internal/cert/auto_cert_self_signed.go | 132 ++ internal/cert/auto_cert_self_signed_test.go | 69 + internal/cert/errors.go | 5 + internal/cert/self_signed.go | 183 ++ internal/cert/self_signed_test.go | 208 +++ internal/cert/write_file.go | 79 +- internal/cert/write_file_test.go | 49 + internal/cron/auto_cert.go | 13 + internal/cron/cron.go | 6 + model/cert.go | 64 +- query/certs.gen.go | 6 +- 50 files changed, 13820 insertions(+), 9222 deletions(-) create mode 100644 api/certificate/self_signed.go create mode 100644 api/certificate/self_signed_test.go create mode 100644 app/src/components/StringListInput/StringListInput.vue create mode 100644 app/src/components/StringListInput/index.ts create mode 100644 app/src/views/certificate/components/SelfSignedCertFields.vue create mode 100644 app/src/views/certificate/components/SelfSignedCertForm.vue create mode 100644 app/src/views/certificate/components/SelfSignedCertManagement.vue create mode 100644 app/src/views/site/site_edit/components/Cert/SelfSignedCert.vue create mode 100644 app/src/views/site/site_edit/composables/useTLSDirectives.ts create mode 100644 docs/superpowers/plans/2026-05-23-merge-self-signed-into-issue-cert.md create mode 100644 docs/superpowers/plans/2026-05-23-self-signed-enhancements.md create mode 100644 docs/superpowers/specs/2026-05-23-merge-self-signed-into-issue-cert-design.md create mode 100644 docs/superpowers/specs/2026-05-23-self-signed-enhancements-design.md create mode 100644 internal/cert/auto_cert_self_signed.go create mode 100644 internal/cert/auto_cert_self_signed_test.go create mode 100644 internal/cert/self_signed.go create mode 100644 internal/cert/self_signed_test.go create mode 100644 internal/cert/write_file_test.go diff --git a/api/certificate/certificate.go b/api/certificate/certificate.go index a211ec59..934e20d0 100644 --- a/api/certificate/certificate.go +++ b/api/certificate/certificate.go @@ -3,6 +3,7 @@ package certificate import ( "net/http" "os" + "path/filepath" "github.com/0xJacky/Nginx-UI/internal/cert" "github.com/0xJacky/Nginx-UI/internal/helper" @@ -198,7 +199,40 @@ func ModifyCert(c *gin.Context) { } func RemoveCert(c *gin.Context) { - cosy.Core[model.Cert](c).Destroy() + id := cast.ToUint64(c.Param("id")) + certModel, err := query.Cert.FirstByID(id) + if err != nil { + cosy.ErrHandler(c, err) + return + } + + if err = query.Cert.DeleteByID(id); err != nil { + cosy.ErrHandler(c, err) + return + } + + cleanupSelfSignedCertFiles(certModel) +} + +func cleanupSelfSignedCertFiles(certModel *model.Cert) { + if certModel.AutoCert != model.AutoCertSelfSigned { + return + } + + certPath := certModel.SSLCertificatePath + keyPath := certModel.SSLCertificateKeyPath + sslDir := nginx.GetConfPath("ssl") + certDir := filepath.Dir(certPath) + keyDir := filepath.Dir(keyPath) + if certDir == "." || certDir != keyDir { + return + } + if !helper.IsUnderDirectory(certPath, sslDir) || !helper.IsUnderDirectory(keyPath, sslDir) || !helper.IsUnderDirectory(certDir, sslDir) { + return + } + if err := os.RemoveAll(certDir); err != nil { + logger.Errorf("self-signed cert directory cleanup failed for id %d at %s: %v", certModel.ID, certDir, err) + } } func SyncCertificate(c *gin.Context) { diff --git a/api/certificate/router.go b/api/certificate/router.go index 6491f8b7..ec1ef8d5 100644 --- a/api/certificate/router.go +++ b/api/certificate/router.go @@ -19,6 +19,8 @@ func InitCertificateRouter(r *gin.RouterGroup) { r.PUT("cert_sync", SyncCertificate) r.GET("certificate/dns_providers", GetDNSProvidersList) r.GET("certificate/dns_provider/:code", GetDNSProvider) + r.POST("self_signed_cert", GenerateSelfSignedCert) + r.POST("self_signed_cert/:id", ModifySelfSignedCert) } func InitCertificateWebSocketRouter(r *gin.RouterGroup) { diff --git a/api/certificate/self_signed.go b/api/certificate/self_signed.go new file mode 100644 index 00000000..04e7ca47 --- /dev/null +++ b/api/certificate/self_signed.go @@ -0,0 +1,267 @@ +package certificate + +import ( + "net/http" + "os" + "path/filepath" + "strings" + + "github.com/0xJacky/Nginx-UI/internal/cert" + "github.com/0xJacky/Nginx-UI/internal/helper" + "github.com/0xJacky/Nginx-UI/internal/nginx" + "github.com/0xJacky/Nginx-UI/internal/notification" + "github.com/0xJacky/Nginx-UI/model" + "github.com/0xJacky/Nginx-UI/query" + "github.com/gin-gonic/gin" + "github.com/go-acme/lego/v5/certcrypto" + "github.com/spf13/cast" + "github.com/uozi-tech/cosy" + "github.com/uozi-tech/cosy/logger" + "golang.org/x/net/idna" +) + +// defaultSelfSignedSlug is the fallback certificate-directory slug. +const defaultSelfSignedSlug = "self_signed" + +// SelfSignedCertRequest is the payload for generating or modifying a +// self-signed certificate. +type SelfSignedCertRequest struct { + Name string `json:"name" binding:"required"` + Domains []string `json:"domains" binding:"omitempty"` + IPAddresses []string `json:"ip_addresses" binding:"omitempty,dive,ip"` + KeyType string `json:"key_type" binding:"omitempty,auto_cert_key_type"` + ValidityDays int `json:"validity_days" binding:"omitempty,min=1,max=3650"` + SyncNodeIds []uint64 `json:"sync_node_ids" binding:"omitempty"` +} + +// GenerateSelfSignedCert creates a new self-signed certificate. +func GenerateSelfSignedCert(c *gin.Context) { + var req SelfSignedCertRequest + if !cosy.BindAndValid(c, &req) { + return + } + + opts, err := buildSelfSignedOptions(&req) + if err != nil { + cosy.ErrHandler(c, err) + return + } + + db := model.UseDB() + certModel := &model.Cert{ + Name: req.Name, + Domains: opts.DNSNames, + AutoCert: model.AutoCertSelfSigned, + KeyType: opts.KeyType, + SelfSignedConfig: &model.SelfSignedCertConfig{ + IPAddresses: opts.IPAddresses, + ValidityDays: opts.ValidityDays, + }, + SyncNodeIds: req.SyncNodeIds, + } + if err = db.Create(certModel).Error; err != nil { + cosy.ErrHandler(c, err) + return + } + + // derive a unique, filesystem-safe certificate directory using the row ID + slug := selfSignedSlug(req.Name) + if slug == defaultSelfSignedSlug { + slug = selfSignedSlug(opts.CommonName) + } + dir := nginx.GetConfPath("ssl", slug+"_"+cast.ToString(certModel.ID)) + certPath := filepath.Join(dir, "fullchain.cer") + keyPath := filepath.Join(dir, "private.key") + + if err = writeSelfSignedFiles(certPath, keyPath, opts); err != nil { + // remove the partial directory so a failed generation leaves no orphan files + if rmErr := os.RemoveAll(dir); rmErr != nil { + logger.Errorf("self-signed cert directory cleanup failed for id %d at %s: %v", + certModel.ID, dir, rmErr) + } + // roll back the row so a failed generation leaves no orphan record + if rollbackErr := db.Delete(certModel).Error; rollbackErr != nil { + logger.Errorf("self-signed cert rollback failed for id %d: %v", certModel.ID, rollbackErr) + } + cosy.ErrHandler(c, err) + return + } + + certModel.SSLCertificatePath = certPath + certModel.SSLCertificateKeyPath = keyPath + if err = db.Model(certModel).Updates(map[string]any{ + "ssl_certificate_path": certPath, + "ssl_certificate_key_path": keyPath, + }).Error; err != nil { + logger.Errorf("self-signed cert id %d generated at %s but persisting paths failed: %v", + certModel.ID, dir, err) + if rmErr := os.RemoveAll(dir); rmErr != nil { + logger.Errorf("self-signed cert directory cleanup failed for id %d at %s: %v", + certModel.ID, dir, rmErr) + } + if rollbackErr := db.Delete(certModel).Error; rollbackErr != nil { + logger.Errorf("self-signed cert rollback failed for id %d: %v", certModel.ID, rollbackErr) + } + cosy.ErrHandler(c, err) + return + } + + if err = cert.SyncToRemoteServer(certModel); err != nil { + notification.Error("Sync Certificate Error", err.Error(), nil) + } + + c.JSON(http.StatusOK, Transformer(certModel)) +} + +// ModifySelfSignedCert re-issues an existing self-signed certificate. +func ModifySelfSignedCert(c *gin.Context) { + id := cast.ToUint64(c.Param("id")) + + var req SelfSignedCertRequest + if !cosy.BindAndValid(c, &req) { + return + } + + opts, err := buildSelfSignedOptions(&req) + if err != nil { + cosy.ErrHandler(c, err) + return + } + + certModel, err := query.Cert.FirstByID(id) + if err != nil { + cosy.ErrHandler(c, err) + return + } + if certModel.AutoCert != model.AutoCertSelfSigned { + cosy.ErrHandler(c, cert.ErrCertIsNotSelfSigned) + return + } + if certModel.SSLCertificatePath == "" || certModel.SSLCertificateKeyPath == "" { + cosy.ErrHandler(c, cert.ErrCertPathIsEmpty) + return + } + + // Reuse the existing file paths and private key so sites referencing them keep working. + // The stored key type must continue to describe the reused private key. + opts.KeyType = certModel.GetKeyType() + if err = rewriteSelfSignedFiles(certModel, certModel.SSLCertificatePath, + certModel.SSLCertificateKeyPath, opts); err != nil { + cosy.ErrHandler(c, err) + return + } + + certModel.Name = req.Name + certModel.Domains = opts.DNSNames + certModel.KeyType = opts.KeyType + certModel.SelfSignedConfig = &model.SelfSignedCertConfig{ + IPAddresses: opts.IPAddresses, + ValidityDays: opts.ValidityDays, + } + certModel.SyncNodeIds = req.SyncNodeIds + if err = model.UseDB().Save(certModel).Error; err != nil { + cosy.ErrHandler(c, err) + return + } + + nginx.Reload() + + if err = cert.SyncToRemoteServer(certModel); err != nil { + notification.Error("Sync Certificate Error", err.Error(), nil) + } + + c.JSON(http.StatusOK, Transformer(certModel)) +} + +// buildSelfSignedOptions validates and normalizes the request into +// cert.SelfSignedOptions. +func buildSelfSignedOptions(req *SelfSignedCertRequest) (cert.SelfSignedOptions, error) { + domains := normalizeStringSlice(req.Domains) + ips := normalizeStringSlice(req.IPAddresses) + + if len(domains) == 0 && len(ips) == 0 { + return cert.SelfSignedOptions{}, cert.ErrSelfSignedNoSAN + } + + validityDays := req.ValidityDays + if validityDays <= 0 { + validityDays = cert.SelfSignedDefaultValidityDays + } + + commonName := "" + if len(domains) > 0 { + commonName = domains[0] + } else { + commonName = ips[0] + } + + return cert.SelfSignedOptions{ + CommonName: commonName, + DNSNames: domains, + IPAddresses: ips, + KeyType: helper.GetKeyType(certcrypto.KeyType(req.KeyType)), + ValidityDays: validityDays, + }, nil +} + +// writeSelfSignedFiles generates a self-signed certificate and writes it to +// the given paths. +func writeSelfSignedFiles(certPath, keyPath string, opts cert.SelfSignedOptions) error { + certPEM, keyPEM, err := cert.GenerateSelfSigned(opts) + if err != nil { + return err + } + return writeSelfSignedContent(certPath, keyPath, certPEM, keyPEM) +} + +func rewriteSelfSignedFiles(certModel *model.Cert, certPath, keyPath string, opts cert.SelfSignedOptions) error { + certPEM, keyPEM, err := cert.RegenerateSelfSignedWithOptions(certModel, opts) + if err != nil { + return err + } + return writeSelfSignedContent(certPath, keyPath, certPEM, keyPEM) +} + +func writeSelfSignedContent(certPath, keyPath string, certPEM, keyPEM []byte) error { + content := &cert.Content{ + SSLCertificatePath: certPath, + SSLCertificateKeyPath: keyPath, + SSLCertificate: string(certPEM), + SSLCertificateKey: string(keyPEM), + } + return content.WriteFile() +} + +// normalizeStringSlice trims entries and drops empty strings. +func normalizeStringSlice(in []string) []string { + out := make([]string, 0, len(in)) + for _, s := range in { + if s = strings.TrimSpace(s); s != "" { + out = append(out, s) + } + } + return out +} + +// selfSignedSlug builds a filesystem-safe directory slug from a name. +func selfSignedSlug(name string) string { + name = strings.TrimSpace(name) + if asciiName, err := idna.Lookup.ToASCII(name); err == nil { + name = asciiName + } + + var b strings.Builder + for _, r := range strings.ToLower(name) { + switch { + case r >= 'a' && r <= 'z', r >= '0' && r <= '9', r == '-', r == '.': + b.WriteRune(r) + case r == ' ' || r == '_': + b.WriteRune('_') + } + } + slug := strings.Trim(b.String(), "._-") + if slug == "" { + slug = defaultSelfSignedSlug + } + return slug +} diff --git a/api/certificate/self_signed_test.go b/api/certificate/self_signed_test.go new file mode 100644 index 00000000..f8efa0d5 --- /dev/null +++ b/api/certificate/self_signed_test.go @@ -0,0 +1,200 @@ +package certificate + +import ( + "bytes" + "encoding/json" + "errors" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "sync" + "testing" + + "github.com/0xJacky/Nginx-UI/internal/cert" + "github.com/0xJacky/Nginx-UI/internal/validation" + "github.com/0xJacky/Nginx-UI/model" + "github.com/0xJacky/Nginx-UI/query" + "github.com/0xJacky/Nginx-UI/settings" + "github.com/gin-gonic/gin" + "github.com/go-acme/lego/v5/certcrypto" + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +var selfSignedValidationOnce sync.Once + +func setupSelfSignedAPITest(t *testing.T) *gorm.DB { + t.Helper() + + gin.SetMode(gin.TestMode) + selfSignedValidationOnce.Do(validation.Init) + + db, err := gorm.Open(sqlite.Open("file:"+t.Name()+"?mode=memory&cache=shared"), &gorm.Config{}) + if err != nil { + t.Fatalf("open test db: %v", err) + } + if err := db.AutoMigrate(&model.Cert{}); err != nil { + t.Fatalf("migrate test db: %v", err) + } + + model.Use(db) + query.Use(db) + query.SetDefault(db) + + return db +} + +func TestSelfSignedSlugSanitizesPathTraversal(t *testing.T) { + if got := selfSignedSlug("../../etc"); got != "etc" { + t.Fatalf("selfSignedSlug() = %q, want %q", got, "etc") + } +} + +func TestSelfSignedSlugFallsBackForEmptyInput(t *testing.T) { + if got := selfSignedSlug(""); got != defaultSelfSignedSlug { + t.Fatalf("selfSignedSlug() = %q, want %q", got, defaultSelfSignedSlug) + } +} + +func TestSelfSignedSlugConvertsIDNToPunycode(t *testing.T) { + if got := selfSignedSlug("例如.test"); got != "xn--fsqu6v.test" { + t.Fatalf("selfSignedSlug() = %q, want %q", got, "xn--fsqu6v.test") + } +} + +func TestBuildSelfSignedOptionsRejectsEmptySAN(t *testing.T) { + _, err := buildSelfSignedOptions(&SelfSignedCertRequest{ + Domains: []string{" ", "\t"}, + IPAddresses: []string{""}, + }) + if !errors.Is(err, cert.ErrSelfSignedNoSAN) { + t.Fatalf("buildSelfSignedOptions() error = %v, want %v", err, cert.ErrSelfSignedNoSAN) + } +} + +func TestBuildSelfSignedOptionsNormalizesValues(t *testing.T) { + opts, err := buildSelfSignedOptions(&SelfSignedCertRequest{ + Domains: []string{" example.com ", "", "www.example.com"}, + IPAddresses: []string{" 127.0.0.1 "}, + KeyType: string(certcrypto.EC256), + ValidityDays: 30, + }) + if err != nil { + t.Fatalf("buildSelfSignedOptions() error = %v", err) + } + if opts.CommonName != "example.com" { + t.Fatalf("CommonName = %q, want %q", opts.CommonName, "example.com") + } + if len(opts.DNSNames) != 2 || opts.DNSNames[0] != "example.com" || opts.DNSNames[1] != "www.example.com" { + t.Fatalf("DNSNames = %#v, want normalized domains", opts.DNSNames) + } + if len(opts.IPAddresses) != 1 || opts.IPAddresses[0] != "127.0.0.1" { + t.Fatalf("IPAddresses = %#v, want normalized IP", opts.IPAddresses) + } +} + +func TestGenerateSelfSignedCertRollsBackDBOnFileWriteFailure(t *testing.T) { + db := setupSelfSignedAPITest(t) + + originalConfigDir := settings.NginxSettings.ConfigDir + blockedBase := filepath.Join(t.TempDir(), "nginx.conf.d") + if err := os.WriteFile(blockedBase, []byte("not a directory"), 0o644); err != nil { + t.Fatalf("write blocking file: %v", err) + } + settings.NginxSettings.ConfigDir = blockedBase + t.Cleanup(func() { + settings.NginxSettings.ConfigDir = originalConfigDir + }) + + router := gin.New() + router.POST("/self_signed_cert", GenerateSelfSignedCert) + + body, err := json.Marshal(SelfSignedCertRequest{ + Name: "rollback-test", + Domains: []string{"rollback.example"}, + KeyType: string(certcrypto.EC256), + ValidityDays: 30, + }) + if err != nil { + t.Fatalf("marshal request: %v", err) + } + + recorder := httptest.NewRecorder() + req := httptest.NewRequest(http.MethodPost, "/self_signed_cert", bytes.NewReader(body)) + req.Header.Set("Content-Type", "application/json") + router.ServeHTTP(recorder, req) + + if recorder.Code == http.StatusOK { + t.Fatalf("expected write failure response, got HTTP %d", recorder.Code) + } + + var count int64 + if err := db.Model(&model.Cert{}).Count(&count).Error; err != nil { + t.Fatalf("count cert rows: %v", err) + } + if count != 0 { + t.Fatalf("expected DB rollback to remove cert row, got %d rows", count) + } +} + +func TestCleanupSelfSignedCertFilesRemovesManagedDirectory(t *testing.T) { + originalConfigDir := settings.NginxSettings.ConfigDir + confDir := t.TempDir() + settings.NginxSettings.ConfigDir = confDir + t.Cleanup(func() { + settings.NginxSettings.ConfigDir = originalConfigDir + }) + + certDir := filepath.Join(confDir, "ssl", "example_1") + if err := os.MkdirAll(certDir, 0o755); err != nil { + t.Fatalf("create cert dir: %v", err) + } + certPath := filepath.Join(certDir, "fullchain.cer") + keyPath := filepath.Join(certDir, "private.key") + if err := os.WriteFile(certPath, []byte("cert"), 0o644); err != nil { + t.Fatalf("write cert: %v", err) + } + if err := os.WriteFile(keyPath, []byte("key"), 0o600); err != nil { + t.Fatalf("write key: %v", err) + } + + cleanupSelfSignedCertFiles(&model.Cert{ + AutoCert: model.AutoCertSelfSigned, + SSLCertificatePath: certPath, + SSLCertificateKeyPath: keyPath, + }) + + if _, err := os.Stat(certDir); !os.IsNotExist(err) { + t.Fatalf("expected managed cert directory to be removed, stat err: %v", err) + } +} + +func TestGenerateSelfSignedCertRejectsEmptyName(t *testing.T) { + setupSelfSignedAPITest(t) + + router := gin.New() + router.POST("/self_signed_cert", GenerateSelfSignedCert) + + body, err := json.Marshal(SelfSignedCertRequest{ + Domains: []string{"named.example"}, + KeyType: string(certcrypto.EC256), + ValidityDays: 30, + }) + if err != nil { + t.Fatalf("marshal request: %v", err) + } + + req := httptest.NewRequest(http.MethodPost, "/self_signed_cert", bytes.NewReader(body)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + router.ServeHTTP(rec, req) + + if rec.Code < 400 || rec.Code >= 500 { + t.Fatalf("status = %d, want a 4xx for missing name", rec.Code) + } + if !strings.Contains(strings.ToLower(rec.Body.String()), "name") { + t.Fatalf("response body %q did not mention the missing name field", rec.Body.String()) + } +} diff --git a/app/components.d.ts b/app/components.d.ts index 739f2a7d..e2b7a5cb 100644 --- a/app/components.d.ts +++ b/app/components.d.ts @@ -137,6 +137,7 @@ declare module 'vue' { SensitiveStringSensitiveInput: typeof import('./src/components/SensitiveString/SensitiveInput.vue')['default'] SensitiveStringSensitiveString: typeof import('./src/components/SensitiveString/SensitiveString.vue')['default'] SetLanguageSetLanguage: typeof import('./src/components/SetLanguage/SetLanguage.vue')['default'] + StringListInputStringListInput: typeof import('./src/components/StringListInput/StringListInput.vue')['default'] SwitchAppearanceIconsVPIconMoon: typeof import('./src/components/SwitchAppearance/icons/VPIconMoon.vue')['default'] SwitchAppearanceIconsVPIconSun: typeof import('./src/components/SwitchAppearance/icons/VPIconSun.vue')['default'] SwitchAppearanceSwitchAppearance: typeof import('./src/components/SwitchAppearance/SwitchAppearance.vue')['default'] @@ -277,6 +278,7 @@ declare global { const SensitiveStringSensitiveInput: typeof import('./src/components/SensitiveString/SensitiveInput.vue')['default'] const SensitiveStringSensitiveString: typeof import('./src/components/SensitiveString/SensitiveString.vue')['default'] const SetLanguageSetLanguage: typeof import('./src/components/SetLanguage/SetLanguage.vue')['default'] + const StringListInputStringListInput: typeof import('./src/components/StringListInput/StringListInput.vue')['default'] const SwitchAppearanceIconsVPIconMoon: typeof import('./src/components/SwitchAppearance/icons/VPIconMoon.vue')['default'] const SwitchAppearanceIconsVPIconSun: typeof import('./src/components/SwitchAppearance/icons/VPIconSun.vue')['default'] const SwitchAppearanceSwitchAppearance: typeof import('./src/components/SwitchAppearance/SwitchAppearance.vue')['default'] diff --git a/app/src/api/cert.ts b/app/src/api/cert.ts index 6f4ef0cc..c3897154 100644 --- a/app/src/api/cert.ts +++ b/app/src/api/cert.ts @@ -3,7 +3,8 @@ import type { AcmeUser } from '@/api/acme_user' import type { ModelBase } from '@/api/curd' import type { DnsCredential } from '@/api/dns_credential' import type { PrivateKeyType } from '@/constants' -import { useCurdApi } from '@uozi-admin/request' +import { extendCurdApi, http, useCurdApi } from '@uozi-admin/request' +import { normalizePrivateKeyType, PrivateKeyTypeEnum } from '@/constants' export const CertStatus = { Pending: 'pending', @@ -13,6 +14,11 @@ export const CertStatus = { export type CertStatusType = '' | typeof CertStatus[keyof typeof CertStatus] +export interface SelfSignedCertConfig { + ip_addresses: string[] + validity_days: number +} + export interface Cert extends ModelBase { name: string domains: string[] @@ -35,6 +41,7 @@ export interface Cert extends ModelBase { status: CertStatusType last_error: string last_attempt_at: string | null + self_signed_config?: SelfSignedCertConfig } export interface CertificateInfo { @@ -50,6 +57,42 @@ export interface CertificateResult { key_type: PrivateKeyType } -const cert = useCurdApi('/certs') +export interface SelfSignedCertPayload { + name: string + domains: string[] + ip_addresses: string[] + key_type: string + validity_days: number + sync_node_ids?: number[] +} + +// toSelfSignedPayload maps a persisted Cert to an editable self-signed payload. +export function toSelfSignedPayload(c: Cert): SelfSignedCertPayload { + const domains = c.domains?.length ? [...c.domains] : [''] + const ipAddresses = c.self_signed_config?.ip_addresses?.length + ? [...c.self_signed_config.ip_addresses] + : [''] + // Backend stores key_type in its canonical form (EC256, RSA2048…); the + // form ASelect expects the legacy keys (P256, 2048…). Normalize so the + // option highlights correctly when editing an existing self-signed cert. + const keyType = normalizePrivateKeyType(c.key_type) || PrivateKeyTypeEnum.P256 + return { + name: c.name ?? '', + domains, + ip_addresses: ipAddresses, + key_type: keyType, + validity_days: c.self_signed_config?.validity_days || 365, + sync_node_ids: [...(c.sync_node_ids ?? [])], + } +} + +const cert = extendCurdApi(useCurdApi('/certs'), { + generate_self_signed(payload: SelfSignedCertPayload): Promise { + return http.post('/self_signed_cert', payload) + }, + modify_self_signed(id: number, payload: SelfSignedCertPayload): Promise { + return http.post(`/self_signed_cert/${id}`, payload) + }, +}) export default cert diff --git a/app/src/components/StringListInput/StringListInput.vue b/app/src/components/StringListInput/StringListInput.vue new file mode 100644 index 00000000..8ee5f144 --- /dev/null +++ b/app/src/components/StringListInput/StringListInput.vue @@ -0,0 +1,51 @@ + + + diff --git a/app/src/components/StringListInput/index.ts b/app/src/components/StringListInput/index.ts new file mode 100644 index 00000000..1c9e161b --- /dev/null +++ b/app/src/components/StringListInput/index.ts @@ -0,0 +1,3 @@ +import StringListInput from './StringListInput.vue' + +export default StringListInput diff --git a/app/src/constants/index.ts b/app/src/constants/index.ts index a72b8864..3135e677 100644 --- a/app/src/constants/index.ts +++ b/app/src/constants/index.ts @@ -10,6 +10,7 @@ export enum AutoCertState { Disable = -1, Enable = 1, Sync = 2, + SelfSigned = 3, } export enum NotificationTypeT { @@ -71,3 +72,43 @@ export const PrivateKeyTypeEnum = { P256: 'P256', P384: 'P384', } as const + +// Maps both legacy frontend keys (P256, 2048…) and canonical backend values +// (EC256, RSA2048…) to a single form key. The backend's helper.GetKeyType +// normalizes to the canonical form on write, so cert.key_type read from the +// API may be either form depending on when the row was written. +const PrivateKeyTypeAliasMap: Record = { + 2048: '2048', + RSA2048: '2048', + 3072: '3072', + RSA3072: '3072', + 4096: '4096', + RSA4096: '4096', + 8192: '8192', + RSA8192: '8192', + P256: 'P256', + EC256: 'P256', + P384: 'P384', + EC384: 'P384', +} + +// normalizePrivateKeyType collapses any accepted key_type form to the +// legacy frontend key, so it matches PrivateKeyTypeEnum / form ASelect +// options. Unknown values pass through unchanged. +export function normalizePrivateKeyType(value: string | undefined | null): string { + if (!value) + return '' + return PrivateKeyTypeAliasMap[value] ?? value +} + +// formatPrivateKeyType returns the display label for any accepted form, +// falling back to '/' so table cells stay aligned with maskRender output +// when the value is missing or unknown. +export function formatPrivateKeyType(value: string | undefined | null): string { + if (!value) + return '/' + const normalized = PrivateKeyTypeAliasMap[value] + if (!normalized) + return '/' + return PrivateKeyTypeMask[normalized as PrivateKeyType] +} diff --git a/app/src/language/ar/app.po b/app/src/language/ar/app.po index 44b27e39..e779e092 100644 --- a/app/src/language/ar/app.po +++ b/app/src/language/ar/app.po @@ -5,10 +5,10 @@ msgid "" msgstr "" "PO-Revision-Date: 2026-02-05 13:56+0000\n" "Last-Translator: OpenAI \n" -"Language-Team: Arabic \n" +"Language-Team: Arabic " +"\n" "Language: ar\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" @@ -33,8 +33,7 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] تم إلغاء الشهادة بنجاح" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "[Nginx UI] تم استخدام الشهادة للخادم، إعادة تحميل شهادة TLS للخادم" #: src/language/generate.ts:42 @@ -112,8 +111,8 @@ msgstr "* يتضمن عقدًا من مجموعة %{groupName} وعقدًا مخ #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" "* يتم تخزين ملفات الفهرس في دليل \"log-index\" ضمن مسار تكوين واجهة NGINX " "افتراضيًا." @@ -126,10 +125,6 @@ msgstr "" "* تم قياس مقاييس الأداء على Apple M2 Pro (12 نواة) مع 32 جيجابايت من ذاكرة " "الوصول العشوائي. قد يختلف الأداء الفعلي بناءً على تكوين الأجهزة لديك." -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "%{count} مواقع محددة" @@ -181,7 +176,7 @@ msgstr "إحصائيات UV/PV لمدة 24 ساعة" msgid "2FA" msgstr "المصادقة الثنائية" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "إعدادات المصادقة الثنائية" @@ -189,11 +184,26 @@ msgstr "إعدادات المصادقة الثنائية" msgid "4GB+ RAM recommended" msgstr "يوصى بذاكرة وصول عشوائي 4 جيجابايت فأكثر" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "" +"لا تتم إدارة سجلات A التي تحمل نفس الأسماء في وضع IPv6 فقط. وتظل دون تغيير " +"في DNS." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "ملف تضمين مطلوب مفقود من صندوق الحماية أو تكوين المصدر." +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"لا تتم إدارة سجلات AAAA التي تحمل نفس الأسماء في وضع IPv4 فقط. تبقى دون " +"تغيير في DNS." + #: src/routes/modules/system.ts:38 msgid "About" msgstr "عن" @@ -211,10 +221,6 @@ msgstr "مسار سجل الوصول غير موجود" msgid "Access Logs" msgstr "سجلات الدخول" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -226,10 +232,10 @@ msgstr "إجراء" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -271,7 +277,8 @@ msgstr "إضافة تكوين" msgid "Add Directive Below" msgstr "أضف التوجيه أدناه" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "إضافة نطاق" @@ -279,6 +286,14 @@ msgstr "إضافة نطاق" msgid "Add Header" msgstr "إضافة رأس" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "إضافة عنوان IP" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "إضافة عنصر" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -349,11 +364,6 @@ msgstr "بعد ذلك، قم بتحديث هذه الصفحة وانقر على msgid "All" msgstr "الكل" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "فشل Nginx في التحقق من صحة التكوين." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "جميع المكونات" @@ -363,7 +373,7 @@ msgstr "جميع المكونات" msgid "All Recovery Codes Have Been Used" msgstr "تم استخدام جميع رموز الاسترداد" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -376,8 +386,8 @@ msgid "" "Alternatively, if you cannot download the database, you can manually place " "GeoLite2-City.mmdb in the same directory as app.ini." msgstr "" -"بدلاً من ذلك، إذا لم تتمكن من تنزيل قاعدة البيانات، يمكنك وضع ملف GeoLite2-" -"City.mmdb يدويًا في نفس دليل ملف app.ini." +"بدلاً من ذلك، إذا لم تتمكن من تنزيل قاعدة البيانات، يمكنك وضع ملف " +"GeoLite2-City.mmdb يدويًا في نفس دليل ملف app.ini." #: src/constants/errors/nginx_log.ts:10 msgid "Analytics service not available" @@ -388,8 +398,7 @@ msgid "Any" msgstr "أي" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "يمكن استخدام أي عنوان IP قابل للوصول مع سلطات الشهادات الخاصة" #: src/views/preference/tabs/OpenAISettings.vue:96 @@ -416,10 +425,6 @@ msgstr "نوع API" msgid "App" msgstr "التطبيق" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "تطبيق" @@ -432,7 +437,7 @@ msgstr "أرك" msgid "Are you sure to delete this banned IP immediately?" msgstr "هل أنت متأكد من حذف عنوان IP المحظور هذا على الفور؟" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "هل أنت متأكد من حذف إعداد DDNS هذا؟" @@ -444,7 +449,7 @@ msgstr "هل أنت متأكد من حذف مفتاح المرور هذا على msgid "Are you sure to delete this record?" msgstr "هل أنت متأكد من حذف هذا السجل؟" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "هل أنت متأكد من رغبتك في إنشاء رموز استرداد جديدة؟" @@ -511,6 +516,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud متوافق مع OpenAI. استخدم https://api.atlascloud.ai/v1 ومفتاح " +"API لـ Atlas Cloud." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -520,12 +527,11 @@ msgstr "محاولة الإصلاح" msgid "Attempts" msgstr "محاولات" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "مصادقة" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "المصادقة باستخدام مفتاح المرور" @@ -533,11 +539,6 @@ msgstr "المصادقة باستخدام مفتاح المرور" msgid "Authenticating..." msgstr "يتم المصادقة..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "يتم المصادقة..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -585,15 +586,15 @@ msgstr "تم تعطيل التحديث التلقائي" msgid "Auto refresh enabled" msgstr "تمكين التحديث التلقائي" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "تم تعطيل التجديد التلقائي لـ‎%{name}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "تم تمكين التجديد التلقائي لـ‏%{name}" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert قيد التشغيل، يرجى الانتظار..." @@ -705,14 +706,13 @@ msgstr "مفتاح توقيع النسخ الاحتياطي غير متوفر" #: src/components/Notification/notifications.ts:38 msgid "Backup task %{backup_name} completed successfully, file: %{file_path}" -msgstr "" -"تم إنجاز مهمة النسخ الاحتياطي %{backup_name} بنجاح، الملف: %{file_path}" +msgstr "تم إنجاز مهمة النسخ الاحتياطي %{backup_name} بنجاح، الملف: %{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" -"فشلت مهمة النسخ الاحتياطي %{backup_name} أثناء تحميل التخزين، الخطأ: %{error}" +"فشلت مهمة النسخ الاحتياطي %{backup_name} أثناء تحميل التخزين، الخطأ: " +"%{error}" #: src/components/Notification/notifications.ts:30 msgid "Backup task %{backup_name} failed to execute, error: %{error}" @@ -773,12 +773,6 @@ msgstr "ترقية متعددة" msgid "Belows are selected items that you want to batch modify" msgstr "فيما يلي العناصر المحددة التي تريد تعديلها دفعة واحدة" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "الكتلة فارغة" @@ -817,8 +811,7 @@ msgstr "الذاكرة المؤقتة" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:177 msgid "Cache items not accessed within this time will be removed" -msgstr "" -"سيتم إزالة عناصر الذاكرة المؤقتة التي لم يتم الوصول إليها خلال هذا الوقت" +msgstr "سيتم إزالة عناصر الذاكرة المؤقتة التي لم يتم الوصول إليها خلال هذا الوقت" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:349 msgid "Cache loader processing time threshold" @@ -868,14 +861,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -965,6 +958,10 @@ msgstr "محتوى الشهادة ومحتوى المفتاح الخاص لا ي msgid "Certificate decode error" msgstr "خطأ في فك تشفير الشهادة" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "تمت إضافة توجيهات الشهادة إلى المحرر؛ راجع واحفظ عندما تكون جاهزًا." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "إشعار انتهاء صلاحية الشهادة" @@ -983,6 +980,14 @@ msgstr "انتهاء صلاحية الشهادة قريبًا" msgid "Certificate files downloaded successfully" msgstr "تم تنزيل ملفات الشهادة بنجاح" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "مكون إصدار الشهادة غير جاهز" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "تم إصدار الشهادة بنجاح" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "اسم الشهادة لا يمكن أن يكون فارغًا" @@ -1017,7 +1022,8 @@ msgid "Certificate revoked successfully" msgstr "تم إبطال الشهادة بنجاح" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "صفر" @@ -1027,12 +1033,12 @@ msgstr[3] "حالة الشهادات" msgstr[4] "حالة الشهادات" msgstr[5] "حالة الشهادة" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "نوع الشهادة" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "شهادات" @@ -1053,11 +1059,11 @@ msgstr "طريقة التحدي" msgid "Change Certificate" msgstr "تغيير الشهادة" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "تغيير كلمة المرور" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "صفر" @@ -1101,23 +1107,23 @@ msgstr "فحص الأيقونة" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "تحقق مما إذا كان /var/run/docker.sock موجودًا. إذا كنت تستخدم صورة Docker " -"الرسمية لـ Nginx UI، يرجى التأكد من توصيل مقبس Docker بهذه الطريقة: `-v /var/" -"run/docker.sock:/var/run/docker.sock`. تستخدم صورة Nginx UI الرسمية /var/run/" -"docker.sock للتواصل مع محرك Docker المضيف عبر واجهة برمجة تطبيقات Docker " -"Client. تُستخدم هذه الميزة للتحكم في Nginx في حاوية أخرى وإجراء استبدال " -"الحاوية بدلاً من استبدال الثنائي أثناء التحديثات OTA لـ Nginx UI لضمان تحديث " -"تبعيات الحاوية أيضًا. إذا كنت لا تحتاج إلى هذه الميزة، يرجى إضافة متغير " -"البيئة NGINX_UI_IGNORE_DOCKER_SOCKET=true إلى الحاوية." +"الرسمية لـ Nginx UI، يرجى التأكد من توصيل مقبس Docker بهذه الطريقة: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. تستخدم صورة Nginx UI الرسمية " +"/var/run/docker.sock للتواصل مع محرك Docker المضيف عبر واجهة برمجة تطبيقات " +"Docker Client. تُستخدم هذه الميزة للتحكم في Nginx في حاوية أخرى وإجراء " +"استبدال الحاوية بدلاً من استبدال الثنائي أثناء التحديثات OTA لـ Nginx UI " +"لضمان تحديث تبعيات الحاوية أيضًا. إذا كنت لا تحتاج إلى هذه الميزة، يرجى " +"إضافة متغير البيئة NGINX_UI_IGNORE_DOCKER_SOCKET=true إلى الحاوية." #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 msgid "" @@ -1128,8 +1134,7 @@ msgstr "" "استخدام ميزات Passkeys والحافظة" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "تحقق مما إذا كان دليل conf.d موجودًا ضمن دليل تكوين nginx" #: src/language/generate.ts:7 @@ -1139,26 +1144,26 @@ msgid "" "indexing. You can download it from the Preference page or manually place " "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" -"تحقق مما إذا كانت قاعدة بيانات GeoLite2 متاحة عند تمكين فهرسة السجلات. تتطلب " -"فهرسة السجلات قاعدة بيانات GeoLite2 لتحليل العنوان الجغرافي للـ IP. يمكنك " -"تنزيلها من صفحة التفضيلات أو وضع GeoLite2-City.mmdb يدويًا في نفس المجلد الذي " -"يوجد فيه app.ini" +"تحقق مما إذا كانت قاعدة بيانات GeoLite2 متاحة عند تمكين فهرسة السجلات. " +"تتطلب فهرسة السجلات قاعدة بيانات GeoLite2 لتحليل العنوان الجغرافي للـ IP. " +"يمكنك تنزيلها من صفحة التفضيلات أو وضع GeoLite2-City.mmdb يدويًا في نفس " +"المجلد الذي يوجد فيه app.ini" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" -"تحقق مما إذا كان مسار سجل الوصول إلى nginx موجودًا. بشكل افتراضي، يتم الحصول " -"على هذا المسار من 'nginx -V'. إذا لم يتم الحصول عليه أو إذا كان المسار الذي " -"تم الحصول عليه لا يشير إلى ملف صالح موجود، فسيتم الإبلاغ عن خطأ. في هذه " -"الحالة، تحتاج إلى تعديل ملف التكوين لتحديد مسار سجل الوصول. راجع الوثائق " -"لمزيد من التفاصيل: https://nginxui.com/zh_CN/guide/config-nginx." -"html#accesslogpath" +"تحقق مما إذا كان مسار سجل الوصول إلى nginx موجودًا. بشكل افتراضي، يتم " +"الحصول على هذا المسار من 'nginx -V'. إذا لم يتم الحصول عليه أو إذا كان " +"المسار الذي تم الحصول عليه لا يشير إلى ملف صالح موجود، فسيتم الإبلاغ عن " +"خطأ. في هذه الحالة، تحتاج إلى تعديل ملف التكوين لتحديد مسار سجل الوصول. " +"راجع الوثائق لمزيد من التفاصيل: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1174,28 +1179,29 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" "تحقق مما إذا كان مسار سجل أخطاء nginx موجودًا. بشكل افتراضي، يتم الحصول على " "هذا المسار من 'nginx -V'. إذا تعذر الحصول عليه أو إذا كان المسار الذي تم " -"الحصول عليه لا يشير إلى ملف صالح موجود، فسيتم الإبلاغ عن خطأ. في هذه الحالة، " -"تحتاج إلى تعديل ملف التكوين لتحديد مسار سجل الأخطاء. راجع الوثائق لمزيد من " -"التفاصيل: https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" +"الحصول عليه لا يشير إلى ملف صالح موجود، فسيتم الإبلاغ عن خطأ. في هذه " +"الحالة، تحتاج إلى تعديل ملف التكوين لتحديد مسار سجل الأخطاء. راجع الوثائق " +"لمزيد من التفاصيل: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" -"تحقق مما إذا كان مسار معرف عملية Nginx موجودًا. بشكل افتراضي، يتم الحصول على " -"هذا المسار من الأمر 'nginx -V'. إذا تعذر الحصول عليه، سيتم الإبلاغ عن خطأ. " -"في هذه الحالة، تحتاج إلى تعديل ملف التكوين لتحديد مسار معرف عملية Nginx. " -"راجع الوثائق لمزيد من التفاصيل: https://nginxui.com/zh_CN/guide/config-nginx." -"html#pidpath" +"تحقق مما إذا كان مسار معرف عملية Nginx موجودًا. بشكل افتراضي، يتم الحصول " +"على هذا المسار من الأمر 'nginx -V'. إذا تعذر الحصول عليه، سيتم الإبلاغ عن " +"خطأ. في هذه الحالة، تحتاج إلى تعديل ملف التكوين لتحديد مسار معرف عملية " +"Nginx. راجع الوثائق لمزيد من التفاصيل: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1223,8 +1229,8 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" "تحقق مما إذا كانت الدلائل streams-available و streams-enabled موجودة ضمن " "دليل تكوين nginx" @@ -1246,6 +1252,10 @@ msgstr "خريطة الصين" msgid "Cipher text is too short" msgstr "النص المشفر قصير جدًا" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "تنظيف السجلات المتعارضة" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "تنظيف متغيرات البيئة" @@ -1455,11 +1465,11 @@ msgstr "اسم التكوين" msgid "Configurations" msgstr "التكوينات" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "تكوين" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "تكوين DDNS" @@ -1471,7 +1481,7 @@ msgstr "تكوين SSL" msgid "Confirm Delete" msgstr "تأكيد الحذف" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "تأكيد كلمة المرور الجديدة" @@ -1484,11 +1494,6 @@ msgstr "مطلوب تأكيد" msgid "Connected" msgstr "متصل" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "متصل" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "خطأ في الاتصال، جاري محاولة إعادة الاتصال..." @@ -1501,15 +1506,6 @@ msgstr "فقد الاتصال بهذا الطرف. يرجى التحديث إذ msgid "Connection timeout period" msgstr "فترة مهلة الاتصال" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "محتوى" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "حالة الحاوية غير معروفة" @@ -1522,8 +1518,7 @@ msgstr "محتوى" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "تم النسخ" @@ -1534,19 +1529,13 @@ msgstr "تم النسخ!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "نسخ" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "نسخ الرموز" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "نسخ" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "ترقية نواة" @@ -1647,7 +1636,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "يؤدي إنشاء العميل إلى تسهيل الاتصال بخادم CA" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "بيان الاعتماد" @@ -1679,7 +1668,7 @@ msgstr "الاتصالات النشطة الحالية" msgid "Current Content" msgstr "المحتوى الحالي" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "كلمة المرور الحالية" @@ -1705,11 +1694,11 @@ msgstr "تعبير كرون مخصص" msgid "Custom Directory" msgstr "دليل مخصص" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "نطاقات مخصصة" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "شهادة النطاقات المخصصة" @@ -1770,15 +1759,15 @@ msgstr "ملف قاعدة البيانات غير موجود" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "تم حذف تكوين DDNS" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "نظرة عامة على DDNS" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "تم حفظ DDNS" @@ -1807,7 +1796,7 @@ msgstr "حدد اسم منطقة الذاكرة المشتركة والحجم، #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "حذف" @@ -1892,8 +1881,8 @@ msgstr "عرض تجريبي" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" "تم تمكين وضع العرض التجريبي. يسمح هذا الطرفي بمجموعة صغيرة فقط من الأوامر " "الآمنة للقراءة فقط." @@ -2007,7 +1996,7 @@ msgstr "تعطيل" msgid "Disable" msgstr "تعطيل" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "فشل تعطيل التجديد التلقائي لـ %{name}" @@ -2062,7 +2051,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "تم تعطيل الدفق %{name} من %{node} بنجاح" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2181,19 +2170,17 @@ msgstr "هل تريد %{action} هذا الموقع؟" msgid "Do you want to %{action} this stream?" msgstr "هل تريد %{action} هذا البث؟" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "هل تريد تعطيل التجديد التلقائي للشهادة؟" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "هل تريد تعطيل هذا الموقع؟" +msgstr "هل تريد تعطيل المواقع المحددة؟" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "هل تريد تفعيل هذا البث؟" +msgstr "هل تريد تمكين المواقع المحددة؟" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2212,10 +2199,6 @@ msgstr "هل تريد إزالة هذا المصدر؟" msgid "Docker client not initialized" msgstr "عميل Docker غير مهيأ" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "مقبس Docker موجود" @@ -2224,10 +2207,6 @@ msgstr "مقبس Docker موجود" msgid "Docker socket not exist" msgstr "مقبس Docker غير موجود" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2243,11 +2222,15 @@ msgstr[5] "وثيقة" msgid "Document Count" msgstr "عدد المستندات" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "نطاق" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "النطاقات" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "قائمة النطاقات فارغة، حاول إعادة فتح Auto Cert لـ %{config}" @@ -2294,8 +2277,8 @@ msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -"نظرًا لسياسات الأمان لبعض المتصفحات، لا يمكنك استخدام مفاتيح المرور على مواقع " -"الويب غير HTTPS، إلا عند التشغيل على localhost." +"نظرًا لسياسات الأمان لبعض المتصفحات، لا يمكنك استخدام مفاتيح المرور على " +"مواقع الويب غير HTTPS، إلا عند التشغيل على localhost." #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2393,7 +2376,7 @@ msgstr "تمكين الفهرسة المتقدمة" msgid "Enable Advanced Log Indexing" msgstr "تمكين الفهرسة المتقدمة للسجلات" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "فشل تفعيل التجديد التلقائي لـ %{name}" @@ -2405,7 +2388,7 @@ msgstr "تمكين إكمال التعليمات البرمجية" msgid "Enable compression for content transfer" msgstr "تمكين الضغط لنقل المحتوى" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "تمكين DDNS" @@ -2502,7 +2485,7 @@ msgid "Enable TOTP" msgstr "تفعيل TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2554,10 +2537,19 @@ msgstr "النهاية" msgid "End Date" msgstr "تاريخ الانتهاء" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "أدخل اسم الشهادة" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "أدخل اسم النطاق" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "أدخل عنوان IP" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "أدخل عنوان IP للخادم (مثال: 203.0.113.1 أو 2001:db8::1)" @@ -2571,10 +2563,10 @@ msgid "" "Enter the one-time install secret shown by the install script or found in " "the config directory hidden file to unlock setup." msgstr "" -"أدخل سر التثبيت لمرة واحدة الذي يظهره نص التثبيت أو الموجود في ملف الإعدادات " -"المخفي لفتح الإعداد." +"أدخل سر التثبيت لمرة واحدة الذي يظهره نص التثبيت أو الموجود في ملف " +"الإعدادات المخفي لفتح الإعداد." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "أدخل نطاقك" @@ -2586,7 +2578,7 @@ msgstr "تكوين البيئة فارغ" msgid "Environment variables cleaned" msgstr "تم تنظيف متغيرات البيئة" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2619,8 +2611,8 @@ msgstr "سجلات الأخطاء" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "لا تدعم سجلات الأخطاء التحليل المنظم لأنها تحتوي على رسائل نصية حرة." #: src/views/nginx_log/components/IndexingSettingsModal.vue:272 @@ -2668,7 +2660,7 @@ msgid "Expected Text" msgstr "النص المتوقع" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "منتهي الصلاحية" @@ -2684,22 +2676,17 @@ msgstr "تصدير إكسل" msgid "" "External Account Binding HMAC Key (optional). Should be in Base64 URL " "encoding format." -msgstr "" -"مفتاح HMAC لربط الحساب الخارجي (اختياري). يجب أن يكون بتنسيق Base64 URL." +msgstr "مفتاح HMAC لربط الحساب الخارجي (اختياري). يجب أن يكون بتنسيق Base64 URL." #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" -"معرف مفتاح الربط الحساب الخارجي (اختياري). مطلوب لبعض موفري ACME مثل ZeroSSL." +"معرف مفتاح الربط الحساب الخارجي (اختياري). مطلوب لبعض موفري ACME مثل " +"ZeroSSL." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "حاوية Docker خارجية" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "حاوية Docker خارجية" @@ -2722,6 +2709,7 @@ msgstr "فشل في الحصول على الشهادة" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "فشل" @@ -2961,6 +2949,11 @@ msgstr "فشل إنشاء مفتاح AES: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "فشل في إنشاء متجه التهيئة: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "فشل إنشاء الشهادة الموقعة ذاتيًا" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "فشل في الحصول على معلومات الشهادة" @@ -3290,11 +3283,10 @@ msgid "For commercial or professional use, contact" msgstr "للاستخدام التجاري أو المهني، يرجى الاتصال بـ" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "" -"بالنسبة لسجلات الأخطاء، يرجى استخدام عارض السجلات الخام للحصول على تجربة عرض " -"أفضل." +"بالنسبة لسجلات الأخطاء، يرجى استخدام عارض السجلات الخام للحصول على تجربة " +"عرض أفضل." #: src/components/AutoCertForm/AutoCertForm.vue:140 msgid "" @@ -3306,11 +3298,11 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" -"بالنسبة للشهادات القائمة على IP، يرجى تحديد عنوان IP الخاص بالخادم الذي سيتم " -"تضمينه في الشهادة." +"بالنسبة للشهادات القائمة على IP، يرجى تحديد عنوان IP الخاص بالخادم الذي " +"سيتم تضمينه في الشهادة." #: src/constants/errors/middleware.ts:4 msgid "Form parse failed" @@ -3345,8 +3337,8 @@ msgid "" "Frontend debug mode is active. Enter the debug secret to unlock the mock " "installation flow without sending backend requests." msgstr "" -"وضع تصحيح الواجهة الأمامية نشط. أدخل سر التصحيح لفتح تدفق التثبيت الوهمي دون " -"إرسال طلبات إلى الخلفية." +"وضع تصحيح الواجهة الأمامية نشط. أدخل سر التصحيح لفتح تدفق التثبيت الوهمي " +"دون إرسال طلبات إلى الخلفية." #: src/components/SelfCheck/store.ts:19 msgid "" @@ -3358,15 +3350,15 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" -msgstr "" -"وضع تصحيح الواجهة الأمامية: اكتمل تدفق التثبيت دون إرسال طلب إلى الخلفية" +"Frontend debug mode: install flow completed without sending a backend " +"request" +msgstr "وضع تصحيح الواجهة الأمامية: اكتمل تدفق التثبيت دون إرسال طلب إلى الخلفية" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" -msgstr "" -"وضع تصحيح الواجهة الأمامية: اكتمل تدفق الاستعادة دون إرسال طلب إلى الخلفية" +"Frontend debug mode: restore flow completed without sending a backend " +"request" +msgstr "وضع تصحيح الواجهة الأمامية: اكتمل تدفق الاستعادة دون إرسال طلب إلى الخلفية" #: src/views/nginx_log/structured/components/SearchFilters.vue:65 msgid "Full Text Search" @@ -3380,21 +3372,24 @@ msgstr "دعم البحث النصي الكامل" msgid "General Certificate" msgstr "شهادة عامة" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "توليد" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "توليد" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "إنشاء رموز استرداد جديدة" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "إنشاء رموز استرداد جديدة" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "إنشاء رموز الاسترداد" @@ -3402,6 +3397,14 @@ msgstr "إنشاء رموز الاسترداد" msgid "Generate recovery codes successfully" msgstr "تم إنشاء رموز الاسترداد بنجاح" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "إنشاء شهادة موقعة ذاتياً" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "إنشاء شهادة موقعة ذاتيًا" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "توليد مفتاح خاص لتسجيل الحساب" @@ -3480,6 +3483,10 @@ msgstr "انتقل إلى DNS > بيانات الاعتماد لإنشاء أو msgid "Go to Raw Log Viewer" msgstr "الانتقال إلى عارض السجلات الخام" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "الانتقال إلى رموز الاسترداد" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "غوتيفاي" @@ -3489,8 +3496,8 @@ msgid "" "gRPC health check requires server to implement gRPC Health Check service " "(grpc.health.v1.Health)." msgstr "" -"يتطلب فحص صحة gRPC أن يقوم الخادم بتنفيذ خدمة فحص صحة gRPC (grpc.health.v1." -"Health)." +"يتطلب فحص صحة gRPC أن يقوم الخادم بتنفيذ خدمة فحص صحة gRPC " +"(grpc.health.v1.Health)." #: src/views/dashboard/components/SiteHealthCheckModal.vue:599 msgid "" @@ -3549,10 +3556,6 @@ msgstr "إخفاء" msgid "Hide Assistant" msgstr "إخفاء المساعد" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3574,27 +3577,10 @@ msgid "Home" msgstr "الصفحة الرئيسية" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "المضيف" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "المضيف، مثل @ أو www" @@ -3651,8 +3637,8 @@ msgid "" "If you want to change the storage location, you can set the `IndexPath` of " "`nginx_log` section in the Nginx UI config." msgstr "" -"إذا كنت ترغب في تغيير موقع التخزين، يمكنك تعيين `IndexPath` لقسم `nginx_log` " -"في تكوين واجهة Nginx." +"إذا كنت ترغب في تغيير موقع التخزين، يمكنك تعيين `IndexPath` لقسم " +"`nginx_log` في تكوين واجهة Nginx." #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." @@ -3666,12 +3652,12 @@ msgstr "" "إذا كان لنطاقك سجلات CNAME ولا يمكنك الحصول على شهادات، تحتاج إلى تفعيل هذا " "الخيار." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "استيراد" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "استيراد شهادة" @@ -3734,7 +3720,7 @@ msgstr "جاري الفهرسة..." msgid "Indicator" msgstr "المؤشر" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "معلومات" @@ -3758,7 +3744,7 @@ msgstr "بدء ترقية النواة" msgid "Input the code from the app:" msgstr "أدخل الرمز من التطبيق:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "أدخل رمز الاسترداد:" @@ -3817,12 +3803,12 @@ msgstr "" "لا يُسمح بالتثبيت بعد 10 دقائق من بدء تشغيل النظام، يرجى إعادة تشغيل واجهة " "Nginx." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "فترة" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "الفاصل الزمني (بالثواني)" @@ -3896,7 +3882,7 @@ msgstr "رمز OTP غير صالح" msgid "Invalid padding in decrypted data" msgstr "حشو غير صالح في البيانات المشفرة" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "رمز المرور أو رمز الاسترداد غير صالح" @@ -3949,15 +3935,43 @@ msgstr "عنوان IP" msgid "IP Address / Target" msgstr "عنوان IP / الهدف" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "عناوين IP" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "إشعار شهادة IP" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "إصدار IP" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "IPv4 فقط" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4 ثم IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "IPv6 فقط" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6 ثم IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "فشل الإصدار" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "إصدار شهادة" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "إصدار الشهادة" @@ -3965,10 +3979,18 @@ msgstr "إصدار الشهادة" msgid "Issued certificate successfully" msgstr "تم إصدار الشهادة بنجاح" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "تم الإصدار بنجاح" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "المُصدر: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "جارٍ الإصدار..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "عنصر(عناصر)" @@ -3990,7 +4012,8 @@ msgid "Keepalive Timeout" msgstr "مهلة الاتصال المستمر" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "نوع المفتاح" @@ -4072,7 +4095,7 @@ msgstr "آخر فهرسة" msgid "Last month" msgstr "الشهر الماضي" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "آخر تشغيل" @@ -4088,6 +4111,10 @@ msgstr "آخر تحديث:" msgid "Last used at" msgstr "آخر استخدام في" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "لاحقًا" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "اتركه فارغًا لعدم التغيير" @@ -4109,10 +4136,8 @@ msgid "Leave blank if you don't need this." msgstr "اتركه فارغًا إذا لم تكن بحاجة إلى ذلك." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "اتركه فارغًا للإعداد الافتراضي: /https://api.openai.com" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "اتركه فارغًا لاستخدام نقطة نهاية Atlas Cloud: https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4121,6 +4146,15 @@ msgstr "اتركه فارغًا للإعداد الافتراضي: /https://api. msgid "Leave blank will not change anything" msgstr "تركه فارغًا لن يغير شيئًا" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"رمز الاسترداد القديم مهمل. أنشئ رموز استرداد جديدة للحفاظ على أمان استرداد " +"الحساب." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "لا يُسمح برمز الاسترداد القديم نظرًا لعدم تمكين TOTP" @@ -4158,8 +4192,8 @@ msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name. You can skip this step if DNS is already configured." msgstr "" -"اربط هذا الموقع بسجل DNS. سيتم استخدام server_name كاسم لسجل DNS. يمكنك تخطي " -"هذه الخطوة إذا تم تكوين DNS بالفعل." +"اربط هذا الموقع بسجل DNS. سيتم استخدام server_name كاسم لسجل DNS. يمكنك " +"تخطي هذه الخطوة إذا تم تكوين DNS بالفعل." #: src/views/site/site_edit/components/RightPanel/DNS.vue:466 msgid "Linked DNS Record" @@ -4175,7 +4209,7 @@ msgstr "يستمع" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4223,18 +4257,14 @@ msgstr "جاري التحميل..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "محلي" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "المسار المحلي (مثل، /var/backups)" @@ -4247,19 +4277,19 @@ msgstr "مكان" msgid "Locations" msgstr "أماكن" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "سجل" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" "ملف السجل %{log_path} ليس ملفًا عاديًا. إذا كنت تستخدم nginx-ui في حاوية " -"Docker، يرجى الرجوع إلى https://nginxui.com/zh_CN/guide/config-nginx-log." -"html لمزيد من المعلومات." +"Docker، يرجى الرجوع إلى " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html لمزيد من المعلومات." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4295,14 +4325,13 @@ msgstr "قائمة السجلات" #: src/constants/errors/nginx_log.indexer.ts:2 msgid "Log parser is not initialized; call indexer.InitLogParser() before use" -msgstr "" -"لم يتم تهيئة محول السجلات؛ قم بتشغيل indexer.InitLogParser() قبل الاستخدام" +msgstr "لم يتم تهيئة محول السجلات؛ قم بتشغيل indexer.InitLogParser() قبل الاستخدام" #: src/constants/errors/nginx_log.ts:12 msgid "Log path is not under whitelist" msgstr "مسار السجل ليس ضمن القائمة البيضاء" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "تسجيل الدخول" @@ -4310,7 +4339,7 @@ msgstr "تسجيل الدخول" msgid "Login successful" msgstr "تم تسجيل الدخول بنجاح" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "تم تسجيل الخروج بنجاح" @@ -4320,19 +4349,19 @@ msgstr "تدوير السجلات" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" "بشكل افتراضي، يتم تفعيل تدوير السجلات في معظم توزيعات لينكس الرئيسية " "للمستخدمين الذين يقومون بتثبيت واجهة Nginx UI على الجهاز المضيف، لذا لا " -"تحتاج إلى تعديل معايير في هذه الصفحة. بالنسبة للمستخدمين الذين يقومون بتثبيت " -"واجهة Nginx UI باستخدام حاويات Docker، يمكنك تمكين هذا الخيار يدويًا. سيقوم " -"مجدول المهام crontab الخاص بواجهة Nginx UI بتنفيذ أمر تدوير السجلات في " -"الفاصل الزمني الذي تحدده بالدقائق." +"تحتاج إلى تعديل معايير في هذه الصفحة. بالنسبة للمستخدمين الذين يقومون " +"بتثبيت واجهة Nginx UI باستخدام حاويات Docker، يمكنك تمكين هذا الخيار " +"يدويًا. سيقوم مجدول المهام crontab الخاص بواجهة Nginx UI بتنفيذ أمر تدوير " +"السجلات في الفاصل الزمني الذي تحدده بالدقائق." #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4359,15 +4388,13 @@ msgstr "تم تعطيل وضع الصيانة بنجاح" msgid "Maintenance mode enabled successfully" msgstr "تم تمكين وضع الصيانة بنجاح" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "تم تمكين وضع الصيانة بنجاح" +msgstr "قالب الصيانة (اسم الملف فقط)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "صيانة" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4501,10 +4528,6 @@ msgstr "تصميم الذاكرة" msgid "Memory Usage (RSS)" msgstr "استخدام الذاكرة (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4538,7 +4561,7 @@ msgstr "دقيقة" msgid "Minutes" msgstr "دقائق" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "مرآة" @@ -4567,7 +4590,7 @@ msgid "Modify" msgstr "تعديل" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "تعديل الشهادة" @@ -4599,10 +4622,9 @@ msgstr "شهري" msgid "Monthly on day %{day} at %{time}" msgstr "يوميًا في اليوم %{day} الساعة %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "دليل محمي" +msgstr "الدليل المُثبَّت" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4632,6 +4654,7 @@ msgstr "غير متاح" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4706,7 +4729,7 @@ msgstr "خطأ في عميل ليغو الجديد: {0}" msgid "New name" msgstr "اسم جديد" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "كلمة مرور جديدة" @@ -4722,12 +4745,11 @@ msgstr "خطأ في النقل الجديد: {0}" msgid "New version released" msgstr "تم إصدار نسخة جديدة" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "التالي" @@ -4739,7 +4761,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "الناتج من Nginx -T فارغ" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "مسار سجل الوصول لـ Nginx" @@ -4793,11 +4815,11 @@ msgstr "تمت استعادة تكوين Nginx" msgid "Nginx Configuration Parse Error" msgstr "خطأ في تحليل تكوين Nginx" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "مسار تكوين Nginx" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "مجلد تكوينات Nginx" @@ -4805,7 +4827,7 @@ msgstr "مجلد تكوينات Nginx" msgid "Nginx Control" msgstr "التحكم في Nginx" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "وضع التحكم في Nginx" @@ -4814,7 +4836,7 @@ msgstr "وضع التحكم في Nginx" msgid "Nginx CPU usage rate" msgstr "معدل استخدام وحدة المعالجة المركزية لـ Nginx" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "مسار سجل أخطاء Nginx" @@ -4850,7 +4872,7 @@ msgstr "إن Nginx يعمل" msgid "Nginx Log" msgstr "سجل Nginx" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "قائمة السماح لمجلد سجلات Nginx" @@ -4863,7 +4885,7 @@ msgstr "فهرسة سجلات Nginx..." msgid "Nginx Memory usage" msgstr "استخدام ذاكرة Nginx" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "مسار PID لـ Nginx" @@ -4871,7 +4893,7 @@ msgstr "مسار PID لـ Nginx" msgid "Nginx PID path exists" msgstr "مسار معرف عملية Nginx موجود" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "أمر إعادة تحميل Nginx" @@ -4892,7 +4914,7 @@ msgstr "تم إعادة تحميل Nginx بنجاح" msgid "Nginx reported a configuration syntax error." msgstr "أبلغ Nginx عن خطأ في بناء الجملة للتكوين." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "أمر إعادة تشغيل Nginx" @@ -4908,7 +4930,7 @@ msgstr "تم إعادة تشغيل Nginx بنجاح" msgid "Nginx sbin path exists" msgstr "مسار sbin لـ Nginx موجود" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "أمر اختبار تكوين Nginx" @@ -4931,10 +4953,19 @@ msgstr "تمت استعادة تكوين Nginx UI" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "تمت استعادة تكوين Nginx UI وسيتم إعادة التشغيل تلقائيًا خلال بضع ثوانٍ." +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"سيقوم Nginx UI بتجديد هذه الشهادة تلقائياً مع اقتراب انتهاء صلاحيتها، بناءً " +"على الفاصل الزمني العام لتجديد الشهادات وفترة صلاحية هذه الشهادة." + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "يتضمن Nginx.conf دليل conf.d" @@ -4961,7 +4992,7 @@ msgid "No" msgstr "لا" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "لا إجراء" @@ -4999,10 +5030,6 @@ msgstr "لا توجد إدخالات في الصفحة الحالية" msgid "No geographic data available" msgstr "لا توجد بيانات جغرافية متاحة" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "لم يتم العثور على سجلات في النطاق الزمني المحدد." @@ -5064,7 +5091,7 @@ msgstr "حالة العقدة" msgid "Nodes" msgstr "العقد" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "ليس بعد" @@ -5085,7 +5112,7 @@ msgstr "غير مفهرس" msgid "Not Loaded" msgstr "غير محمل" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "لم يتم تشغيله بعد" @@ -5147,13 +5174,11 @@ msgstr "عدد عمليات العامل المتزامنة، يتم الضبط #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:314 msgid "Number of files processed by cache loader at once" -msgstr "" -"عدد الملفات التي تتم معالجتها بواسطة محمل ذاكرة التخزين المؤقت في وقت واحد" +msgstr "عدد الملفات التي تتم معالجتها بواسطة محمل ذاكرة التخزين المؤقت في وقت واحد" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:252 msgid "Number of files processed by cache manager at once" -msgstr "" -"عدد الملفات التي تتم معالجتها بواسطة مدير ذاكرة التخزين المؤقت في وقت واحد" +msgstr "عدد الملفات التي تتم معالجتها بواسطة مدير ذاكرة التخزين المؤقت في وقت واحد" #: src/composables/usePerformanceMetrics.ts:129 #: src/composables/usePerformanceMetrics.ts:169 @@ -5166,7 +5191,7 @@ msgstr "عدد عمليات العامل" msgid "Obtain cert error: {0}" msgstr "خطأ في الحصول على الشهادة: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "الحصول على شهادة" @@ -5220,7 +5245,7 @@ msgstr "تسجيل الدخول باستخدام OIDC" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5264,10 +5289,6 @@ msgstr "يُسمح فقط بملفات zip" msgid "Open" msgstr "مفتوح" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "قيود المصدر المفتوح" @@ -5284,7 +5305,7 @@ msgstr "إحصائيات نظام التشغيل" msgid "Optional comment for this DNS record" msgstr "تعليق اختياري لسجل DNS هذا" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "أو" @@ -5333,11 +5354,6 @@ msgstr "أخرى" msgid "Otp or recovery code empty" msgstr "رمز OTP أو رمز الاسترداد فارغ" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "الكتابة فوق الملف الموجود" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "الكتابة فوق" @@ -5385,10 +5401,6 @@ msgstr "كلمة المرور" msgid "Password (*)" msgstr "كلمة المرور (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "كلمة المرور غير صحيحة" @@ -5397,11 +5409,11 @@ msgstr "كلمة المرور غير صحيحة" msgid "Password length cannot exceed 20 characters" msgstr "يجب ألا يتجاوز طول كلمة المرور 20 حرفًا" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "تم تحديث كلمة المرور بنجاح" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "كلمات المرور غير متطابقة" @@ -5473,7 +5485,7 @@ msgstr "تم حفظ إعدادات الأداء بنجاح" msgid "Performing core upgrade" msgstr "تنفيذ ترقية النواة" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "المعلومات الشخصية" @@ -5516,12 +5528,17 @@ msgstr "" msgid "Please enter" msgstr "الرجاء إدخال" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "يُرجى إدخال اسم للشهادة" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." -msgstr "" -"يرجى إدخال اسم لمفتاح المرور الذي ترغب في إنشائه ثم انقر على زر موافق أدناه." +msgstr "يرجى إدخال اسم لمفتاح المرور الذي ترغب في إنشائه ثم انقر على زر موافق أدناه." #: src/components/AutoCertForm/AutoCertForm.vue:98 msgid "Please enter a valid IPv4 address (0-255 per octet)" @@ -5535,15 +5552,21 @@ msgstr "الرجاء إدخال عنوان IPv4 أو IPv6 صالح" msgid "Please enter a valid port range" msgstr "الرجاء إدخال نطاق منافذ صالح" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "الرجاء إدخال مجال واحد على الأقل" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "يُرجى إدخال نطاق واحد أو عنوان IP على الأقل" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "الرجاء إدخال سر التثبيت قبل المتابعة" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "يرجى إدخال رمز OTP:" @@ -5590,8 +5613,8 @@ msgstr "" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "يرجى إنشاء رموز استرداد جديدة في التفضيلات على الفور لمنع الإغلاق." #: src/views/config/components/ConfigRightPanel/Basic.vue:27 @@ -5633,8 +5656,7 @@ msgid "Please log in." msgstr "الرجاء تسجيل الدخول." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "يرجى ملاحظة أن تكوين وحدات الوقت أدناه كلها بالثواني." #: src/views/install/components/InstallView.vue:136 @@ -5653,7 +5675,7 @@ msgstr "الرجاء تحديد ملف النسخ الاحتياطي" msgid "Please select a certificate before saving the TLS server configuration." msgstr "يرجى تحديد شهادة قبل حفظ تكوين خادم TLS." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "يرجى تحديد بيانات اعتماد DNS" @@ -5733,10 +5755,6 @@ msgstr "تفضيل" msgid "Preparing lego configurations" msgstr "تحضير تكوينات Lego" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5755,10 +5773,6 @@ msgstr "ستفشل عناوين IP الخاصة (192.168.x.x، 10.x.x.x، 172.16 msgid "private key" msgstr "مفتاح خاص" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "العملية" @@ -5802,12 +5816,13 @@ msgstr "البروتوكول" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" "إعدادات البروتوكول تتأثر فقط عند الاتصال المباشر. إذا كنت تستخدم خادم وكيل " "عكسي، يرجى تكوين البروتوكول بشكل منفصل في خادم الوكيل العكسي." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5846,14 +5861,6 @@ msgstr "أهداف الوكيل" msgid "Public CA Requirements:" msgstr "متطلبات CA العامة:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "رقم الأمن العام" @@ -5954,11 +5961,11 @@ msgstr "نوع السجل" msgid "Record updated" msgstr "تم تحديث السجل" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "السجلات" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "استرداد" @@ -5991,7 +5998,7 @@ msgstr "رسائل إعادة التوجيه (3xx)" msgid "Referer" msgstr "المرجع" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "تحديث" @@ -6000,11 +6007,6 @@ msgstr "تحديث" msgid "Refresh Modules Cache" msgstr "تحديث ذاكرة التخزين المؤقت للوحدات" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "إعادة توليد الاستجابة" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "إعادة توليد الاستجابة" @@ -6061,7 +6063,7 @@ msgid "Reload" msgstr "إعادة تحميل" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "إعادة تحميل Nginx" @@ -6098,16 +6100,12 @@ msgstr "إعادة التحميل" msgid "Reloading nginx" msgstr "إعادة تحميل nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "عن بُعد" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "لم يتم تحديد أي عقد" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "إزالة" @@ -6117,6 +6115,10 @@ msgstr "إزالة" msgid "Remove successfully" msgstr "إزالة بنجاح" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "تمت إزالة %{count} سجلًا متعارضًا: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "تمت الإزالة بنجاح" @@ -6196,8 +6198,8 @@ msgstr "تمت إعادة التسمية بنجاح" msgid "Renew cert error: {0}" msgstr "خطأ في تجديد الشهادة: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "تجديد الشهادة" @@ -6209,8 +6211,7 @@ msgstr "خطأ في تجديد الشهادة" msgid "Renew Certificate Success" msgstr "تجديد الشهادة بنجاح" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "تم التجديد بنجاح" @@ -6338,6 +6339,19 @@ msgstr "استعادة هذه النسخة" msgid "Restored successfully" msgstr "تم الاستعادة بنجاح" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "إعادة المحاولة" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "إعادة محاولة إصدار الشهادة" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "مراجعة أولاً" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6384,11 +6398,6 @@ msgstr "معرّف الجهاز عن بُعد" msgid "Run Mode" msgstr "وضع التشغيل" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "تجديد الشهادة" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "يعمل" @@ -6483,8 +6492,7 @@ msgstr "فشل تحميل S3: {0}" #: src/components/InspectConfig/InspectConfig.vue:39 msgid "Sandbox setup failed before Nginx could validate the configuration." -msgstr "" -"فشل إعداد البيئة التجريبية قبل أن يتمكن Nginx من التحقق من صحة التكوين." +msgstr "فشل إعداد البيئة التجريبية قبل أن يتمكن Nginx من التحقق من صحة التكوين." #: src/components/InspectConfig/InspectConfig.vue:129 #: src/components/InspectConfig/InspectConfig.vue:28 @@ -6507,7 +6515,7 @@ msgstr "السبت" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6517,19 +6525,14 @@ msgstr "السبت" msgid "Save" msgstr "حفظ" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "تكوين التخزين" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "حفظ التوجيه" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "احفظ الآن" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "حفظ الطلب" @@ -6572,15 +6575,19 @@ msgstr "تم حفظ الدفق %{name} في %{node} بنجاح" msgid "Save successful" msgstr "تم الحفظ بنجاح" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "تم الحفظ بنجاح" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "هل حفظ تكوين الموقع الآن؟" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "استجابة الشهادة المحفوظة تفتقد معرّفًا" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6590,6 +6597,14 @@ msgstr "" msgid "Saved successfully" msgstr "تم الحفظ بنجاح" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"فشل حفظ إعدادات الموقع؛ توجيهات الشهادة موجودة في المحرر — راجع التغييرات " +"وأعد المحاولة من زر الحفظ." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "مسار sbin غير موجود" @@ -6638,7 +6653,7 @@ msgstr "حزمة تطوير البرمجيات SDK" msgid "Search" msgstr "بحث" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "البحث عن النطاق أو الموفر أو الهدف" @@ -6670,7 +6685,7 @@ msgstr "البحث عن القوالب" msgid "Secret has been copied" msgstr "تم نسخ السر" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "إعدادات الأمان" @@ -6716,6 +6731,10 @@ msgstr "اختر مجال DNS" msgid "Select existing record" msgstr "تحديد سجل موجود" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "حدد سجلات A/AAAA المطابقة" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6742,6 +6761,24 @@ msgstr "الفحص الذاتي" msgid "Self check failed, Nginx UI may not work properly" msgstr "فشل الفحص الذاتي، قد لا يعمل واجهة NGINX بشكل صحيح" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "شهادة موقعة ذاتيًا" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "شهادة موقعة ذاتيًا" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "تم تطبيق الشهادة الموقعة ذاتيًا" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "تم إنشاء شهادة موقعة ذاتيًا" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6756,7 +6793,7 @@ msgid "Server" msgstr "الخادم" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "خطأ في الخادم" @@ -6784,7 +6821,7 @@ msgstr "حجم جدول تجزئة أسماء الخوادم" msgid "Server names hash table size" msgstr "حجم جدول تجزئة أسماء الخوادم" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "اسم_الخادم غير موجود في التوجيهات" @@ -6834,19 +6871,19 @@ msgstr "تعيين موفر تحدي HTTP01" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"إعدادات.Settings.NginxLogSettings.AccessLogPath فارغة، راجع https://nginxui." -"com/guide/config-nginx.html لمزيد من المعلومات" +"إعدادات.Settings.NginxLogSettings.AccessLogPath فارغة، راجع " +"https://nginxui.com/guide/config-nginx.html لمزيد من المعلومات" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"إعدادات.Settings.NginxLogSettings.ErrorLogPath فارغة، راجع https://nginxui." -"com/guide/config-nginx.html لمزيد من المعلومات" +"إعدادات.Settings.NginxLogSettings.ErrorLogPath فارغة، راجع " +"https://nginxui.com/guide/config-nginx.html لمزيد من المعلومات" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6865,7 +6902,7 @@ msgstr "عرض" msgid "Show Assistant" msgstr "إظهار المساعد" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "تسجيل الدخول باستخدام مفتاح المرور" @@ -6951,10 +6988,6 @@ msgstr "الحجم" msgid "Skip Installation" msgstr "تخطي التثبيت" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "وقت الانتظار بين تكرارات محمل ذاكرة التخزين المؤقت" @@ -6967,6 +7000,10 @@ msgstr "وقت الانتظار بين تكرارات مدير الذاكرة ا msgid "Socket" msgstr "المنفذ" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "بعض المتصفحات ترفض شهادات TLS الصالحة لأكثر من 398 يومًا." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "مرتب حسب" @@ -6983,15 +7020,6 @@ msgstr "راعي" msgid "SSD storage for better I/O performance" msgstr "تخزين SSD لأداء أفضل في الإدخال/الإخراج" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "يُوصى بمعالجتين أو أكثر" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7077,9 +7105,9 @@ msgstr "ثابت" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7154,7 +7182,7 @@ msgstr "دليل Streams-enabled غير موجود" msgid "Structured" msgstr "منظم" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "منفذ حالة ستاب" @@ -7162,7 +7190,7 @@ msgstr "منفذ حالة ستاب" msgid "Stub_status is not enabled" msgstr "لم يتم تمكين Stub_status" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7180,9 +7208,9 @@ msgstr "الأحد" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" "دعم الاتصال مع الخلفية من خلال بروتوكول WebSocket. إذا كنت تستخدم واجهة " "Nginx عبر وكيل عكسي لـ Nginx، يرجى الرجوع إلى هذا الرابط لكتابة ملف التكوين " @@ -7273,6 +7301,7 @@ msgid "Sync strategy" msgstr "استراتيجية المزامنة" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "مزامنة إلى" @@ -7310,21 +7339,13 @@ msgstr "استعادة النظام" msgid "System restored successfully." msgstr "تم استعادة النظام بنجاح." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "الأهداف" @@ -7391,26 +7412,35 @@ msgstr "" "سيتم فحص شهادة النطاق لمدة 30 دقيقة، وسيتم تجديدها إذا مر أكثر من أسبوع أو " "الفترة التي حددتها في الإعدادات منذ إصدارها الأخير." +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"تم إنشاء الشهادة في %{path}، وتمت إضافة توجيهات ssl_certificate إلى كتلة " +"الخادم الحالية. احفظ التكوين الآن، أو راجع التغييرات في المحرر واحفظ يدويًا." + #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "سيتم تعطيل المواقع التالية:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "سيتم تمكين المواقع التالية:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" "يُحتاج إلى قاعدة بيانات GeoLite2 لتحليل العنوان IP الجغرافي دون اتصال " "بالإنترنت. يرجى تنزيلها لتفعيل هذه الميزة." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" "قاعدة بيانات GeoLite2 تقدم معلومات جغرافية عن عناوين IP. يتم استخدامها " "للتحليل الجغرافي غير المتصل في تحليل السجلات." @@ -7419,8 +7449,7 @@ msgstr "" msgid "" "The ICP Number should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." -msgstr "" -"يجب أن يحتوي رقم ICP على أحرف، يونيكود، أرقام، شرطات، نقاط، ونقطتين فقط." +msgstr "يجب أن يحتوي رقم ICP على أحرف، يونيكود، أرقام، شرطات، نقاط، ونقطتين فقط." #: src/views/certificate/components/CertificateContentEditor.vue:205 msgid "The input is not a SSL Certificate" @@ -7434,15 +7463,15 @@ msgstr "المدخل ليس مفتاح شهادة SSL" msgid "" "The linked DNS record was deleted from the DNS server. You can recreate it " "or clear the link." -msgstr "" -"تم حذف سجل DNS المرتبط من خادم DNS. يمكنك إعادة إنشائه أو مسح الارتباط." +msgstr "تم حذف سجل DNS المرتبط من خادم DNS. يمكنك إعادة إنشائه أو مسح الارتباط." #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" -"مسار السجل ليس ضمن المسارات الموجودة في settings.NginxSettings." -"LogDirWhiteList" +"مسار السجل ليس ضمن المسارات الموجودة في " +"settings.NginxSettings.LogDirWhiteList" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 @@ -7454,8 +7483,7 @@ msgstr "" "فقط." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" "النموذج المستخدم لإكمال التعليمات البرمجية، إذا لم يتم تعيينه، سيتم استخدام " "نموذج الدردشة." @@ -7464,8 +7492,7 @@ msgstr "" msgid "" "The node name should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." -msgstr "" -"يجب أن يحتوي اسم العقدة على أحرف، يونيكود، أرقام، شرطات، نقاط، ونقطتين فقط." +msgstr "يجب أن يحتوي اسم العقدة على أحرف، يونيكود، أرقام، شرطات، نقاط، ونقطتين فقط." #: src/views/site/site_add/SiteAdd.vue:190 #: src/views/site/site_edit/components/RightPanel/DNS.vue:445 @@ -7527,7 +7554,7 @@ msgstr "الحد الأقصى النظري للاتصالات المتزامنة msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "أقصى حد نظري لعدد الطلبات في الثانية (RPS):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " @@ -7550,8 +7577,8 @@ msgid "" "This backup uses an unsupported legacy format. Please create a new backup " "with a newer version before restoring." msgstr "" -"يستخدم هذا النسخ الاحتياطي تنسيقًا قديمًا غير مدعوم. يرجى إنشاء نسخة احتياطية " -"جديدة بإصدار أحدث قبل الاستعادة." +"يستخدم هذا النسخ الاحتياطي تنسيقًا قديمًا غير مدعوم. يرجى إنشاء نسخة " +"احتياطية جديدة بإصدار أحدث قبل الاستعادة." #: src/views/certificate/components/AutoCertManagement.vue:35 msgid "This certificate is managed by Nginx UI" @@ -7580,14 +7607,13 @@ msgid "This field should not be empty" msgstr "يجب ألا يكون هذا الحقل فارغًا" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." msgstr "يجب أن يحتوي هذا الحقل على حروف وأحرف يونيكود وأرقام و-_. فقط." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" msgstr "يجب أن يحتوي هذا الحقل فقط على أحرف وأحرف يونيكود وأرقام و -_./:" #: src/components/Notification/notifications.ts:102 @@ -7598,20 +7624,15 @@ msgstr "هذه رسالة اختبار تم إرسالها في %{timestamp} م msgid "" "This mode only previews the installation UI flow and does not change any " "server state." -msgstr "" -"هذا الوضع يعرض فقط تدفق واجهة المستخدم للتثبيت ولا يغير أي حالة في الخادم." - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" +msgstr "هذا الوضع يعرض فقط تدفق واجهة المستخدم للتثبيت ولا يغير أي حالة في الخادم." #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " "After enabling it, you can view performance statistics" msgstr "" -"توفر هذه الوحدة إحصائيات طلبات Nginx وعدد الاتصالات وما إلى ذلك من البيانات. " -"بعد تمكينها، يمكنك عرض إحصائيات الأداء" +"توفر هذه الوحدة إحصائيات طلبات Nginx وعدد الاتصالات وما إلى ذلك من " +"البيانات. بعد تمكينها، يمكنك عرض إحصائيات الأداء" #: src/views/nginx_log/dashboard/components/DateRangeSelector.vue:25 msgid "This month" @@ -7629,11 +7650,17 @@ msgstr "" "هذه العملية ستزيل الشهادة من قاعدة البيانات فقط. لن يتم حذف ملفات الشهادة " "على نظام الملفات." +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "تتم إدارة هذه الشهادة الموقعة ذاتيًا بواسطة Nginx UI ويتم تجديدها تلقائيًا." + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" "تم تكوين هذا الموقع كخادم افتراضي (default_server) لـ HTTPS (المنفذ 443). " "تتطلب شهادات IP دعمًا من سلطة الشهادات (CA) وقد لا تكون متاحة مع جميع موفري " @@ -7641,8 +7668,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" "يستخدم هذا الموقع اسم خادم شامل (_) والذي يشير عادةً إلى شهادة قائمة على " @@ -7692,12 +7719,11 @@ msgid "" "This will restore configuration files and database. Nginx UI will restart " "after the restoration is complete." msgstr "" -"سيؤدي هذا إلى استعادة ملفات التكوين وقاعدة البيانات. سيعاد تشغيل واجهة Nginx " -"بعد اكتمال الاستعادة." +"سيؤدي هذا إلى استعادة ملفات التكوين وقاعدة البيانات. سيعاد تشغيل واجهة " +"Nginx بعد اكتمال الاستعادة." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "سيتم ترقية أو إعادة تثبيت Nginx UI على %{nodeNames} إلى %{version}." #: src/views/preference/tabs/AuthSettings.vue:89 @@ -7768,8 +7794,8 @@ msgstr "" #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" "لضمان عمل تجديد الشهادة التلقائي بشكل طبيعي، نحتاج إلى إضافة موقع يمكنه " @@ -7782,9 +7808,9 @@ msgid "" "provide an OpenAI-compatible API endpoint, so just set the baseUrl to your " "local API." msgstr "" -"لاستخدام نموذج كبير محلي، قم بنشره باستخدام ollama أو vllm أو lmdeploy. توفر " -"هذه الأدوات نقطة نهاية API متوافقة مع OpenAI، لذا ما عليك سوى تعيين baseUrl " -"إلى API المحلي الخاص بك." +"لاستخدام نموذج كبير محلي، قم بنشره باستخدام ollama أو vllm أو lmdeploy. " +"توفر هذه الأدوات نقطة نهاية API متوافقة مع OpenAI، لذا ما عليك سوى تعيين " +"baseUrl إلى API المحلي الخاص بك." #: src/views/dashboard/NginxDashBoard.vue:56 msgid "Toggle failed" @@ -7914,7 +7940,7 @@ msgstr "TTL (ثواني)" msgid "Tuesday" msgstr "الثلاثاء" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "يتطلب المصادقة الثنائية" @@ -7935,10 +7961,6 @@ msgstr "نوع" msgid "Type %{delete} to confirm" msgstr "اكتب %{delete} للتأكيد" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "اكتب أو حدد سجلات A/AAAA" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "اكتب أو اختر المتصفح" @@ -7984,11 +8006,11 @@ msgstr "تنسيق السجل غير مدعوم" msgid "Update already in progress" msgstr "التحديث قيد التنفيذ بالفعل" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "تحديث كلمة المرور" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "تحديث الملف الشخصي" @@ -8077,11 +8099,11 @@ msgstr "عنوان URL" msgid "Use @ for root" msgstr "استخدم @ للجذر" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "استخدم كلمة المرور لمرة واحدة" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "استخدم رمز الاسترداد" @@ -8089,10 +8111,6 @@ msgstr "استخدم رمز الاسترداد" msgid "Use Temporary Path" msgstr "استخدام المسار المؤقت" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "مستخدم" @@ -8106,7 +8124,7 @@ msgstr "وكيل المستخدم" msgid "User banned" msgstr "تم حظر المستخدم" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "تم تحديث معلومات المستخدم بنجاح" @@ -8119,7 +8137,7 @@ msgid "User Profile" msgstr "ملف المستخدم" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "اسم المستخدم" @@ -8137,10 +8155,14 @@ msgstr "زيارة فريدة" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "صالح" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "صالحة لمدة (أيام)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "التحقق من صحة شهادة SSL" @@ -8151,11 +8173,6 @@ msgstr "التحقق من صحة شهادة SSL" msgid "Value" msgstr "القيمة" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "تحقق من السر" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8192,7 +8209,7 @@ msgstr "عرض جميع التنبيهات" msgid "View on GitHub" msgstr "عرض على GitHub" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "عرض رموز الاسترداد" @@ -8220,7 +8237,7 @@ msgstr "الزيارات" msgid "Waiting processes" msgstr "عمليات الانتظار" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8234,8 +8251,8 @@ msgid "" "you have a valid backup file and security token, and carefully select what " "to restore." msgstr "" -"تحذير: ستقوم عملية الاستعادة بالكتابة فوق التكوينات الحالية. تأكد من أن لديك " -"ملف نسخ احتياطي صالحًا ورمزًا أمنيًا، واختر بعناية ما تريد استعادته." +"تحذير: ستقوم عملية الاستعادة بالكتابة فوق التكوينات الحالية. تأكد من أن " +"لديك ملف نسخ احتياطي صالحًا ورمزًا أمنيًا، واختر بعناية ما تريد استعادته." #: src/components/AutoCertForm/AutoCertForm.vue:103 msgid "" @@ -8251,10 +8268,10 @@ msgstr "" msgid "We do not accept any feature requests" msgstr "نحن لا نقبل أي طلبات ميزات" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" "سنقوم بإزالة تكوين HTTPChallenge من هذا الملف وإعادة تحميل Nginx. هل أنت " "متأكد أنك تريد المتابعة؟" @@ -8292,6 +8309,18 @@ msgstr "أسبوعيًا يوم %{day} الساعة %{time}" msgid "Weight" msgstr "الوزن" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"عند التمكين، يمتلك DDNS الأسماء المحددة: يقرن تلقائيًا سجلات العائلة " +"الشقيقة، وينشئ السجلات المفقودة، ويزيل السجلات التي لا يمكن الوصول إلى " +"عائلة IP الخاصة بها. قم بالتعطيل لإدارة السجلات التي حددتها بشكل صريح فقط " +"والحفاظ على حالة DNS الأخرى كما هي." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8308,10 +8337,10 @@ msgid "" "When you enable/disable, delete, or save this site, the nodes set in the " "namespace and the nodes selected below will be synchronized." msgstr "" -"عند تمكين/تعطيل أو حذف أو حفظ هذا الموقع، سيتم مزامنة العقد المحددة في مساحة " -"الاسم والعقد المحددة أدناه." +"عند تمكين/تعطيل أو حذف أو حفظ هذا الموقع، سيتم مزامنة العقد المحددة في " +"مساحة الاسم والعقد المحددة أدناه." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8321,7 +8350,7 @@ msgstr "عند إنشاء رموز استرداد جديدة، يجب عليك msgid "Whether to use a temporary path when writing temporary files" msgstr "ما إذا كان سيتم استخدام مسار مؤقت عند كتابة الملفات المؤقتة" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "شهادة البدل" @@ -8340,7 +8369,7 @@ msgstr "عمليات العامل" msgid "Workers" msgstr "العمال" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "مساحة العمل" @@ -8379,11 +8408,11 @@ msgstr "نعم" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" -"أنت تتصل بهذا الطرف عبر اتصال HTTP غير آمن في نطاق غير محلي. قد يؤدي هذا إلى " -"كشف معلومات حساسة." +"أنت تتصل بهذا الطرف عبر اتصال HTTP غير آمن في نطاق غير محلي. قد يؤدي هذا " +"إلى كشف معلومات حساسة." #: src/constants/errors/config.ts:12 msgid "You are not allowed to delete a file outside of the nginx config path" @@ -8412,26 +8441,49 @@ msgid "" msgstr "لم تقم بتكوين إعدادات Webauthn، لذا لا يمكنك إضافة مفتاح مرور." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" "لم تقم بتمكين المصادقة الثنائية بعد. يرجى تمكين المصادقة الثنائية لإنشاء " "رموز الاسترداد." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "لم تقم بإنشاء رموز الاسترداد بعد." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"لا يزال حسابك يستخدم رمز استرداد قديمًا. قم بإنشاء رموز استرداد جديدة بعد " +"التحقق للحفاظ على أمان استرداد الحساب." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"يستخدم حسابك رمز استرداد قديمًا. قم بإنشاء رموز استرداد جديدة الآن لإكمال " +"الترحيل والحفاظ على أمان استرداد حسابك." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" "قد يكون رمز الاسترداد الحالي الخاص بك قديمًا وغير آمن. يرجى إنشاء رموز " "استرداد جديدة في أقرب وقت ممكن لضمان الأمان." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"لقد تم استخدام رمز الاسترداد القديم الخاص بك ولا يمكن استخدامه مرة أخرى. قم " +"بتوليد رموز استرداد جديدة الآن للحفاظ على إمكانية استرداد الحساب." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "رموزك القديمة لن تعمل بعد الآن." @@ -8443,6 +8495,61 @@ msgstr "مفاتيح المرور الخاصة بك" msgid "Zero-allocation pipeline" msgstr "خط أنابيب بدون تخصيص" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "فشل Nginx في التحقق من صحة التكوين." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "يتم المصادقة..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "متصل" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "محتوى" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "نسخ" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "حاوية Docker خارجية" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "توليد" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "الكتابة فوق الملف الموجود" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "إعادة توليد الاستجابة" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "لم يتم تحديد أي عقد" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "تجديد الشهادة" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "يُوصى بمعالجتين أو أكثر" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "اكتب أو حدد سجلات A/AAAA" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "تحقق من السر" + #~ msgid "OpenAI" #~ msgstr "أوبن أي آي" @@ -8455,8 +8562,7 @@ msgstr "خط أنابيب بدون تخصيص" #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." -#~ msgstr "" -#~ "سنضيف سجل أو أكثر من سجلات TXT إلى سجلات DNS لنطاقك للتحقق من الملكية." +#~ msgstr "سنضيف سجل أو أكثر من سجلات TXT إلى سجلات DNS لنطاقك للتحقق من الملكية." #~ msgid "Settings" #~ msgstr "الإعدادات" @@ -8623,14 +8729,13 @@ msgstr "خط أنابيب بدون تخصيص" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" -#~ "دعم الاتصال مع الخلفية من خلال بروتوكول Server-Sent Events. إذا كنت " -#~ "تستخدم واجهة Nginx UI عبر وكيل عكسي لـ Nginx، يرجى الرجوع إلى هذا الرابط " -#~ "لكتابة ملف التكوين المقابل: https://nginxui.com/guide/nginx-proxy-example." -#~ "html" +#~ "دعم الاتصال مع الخلفية من خلال بروتوكول Server-Sent Events. إذا كنت تستخدم " +#~ "واجهة Nginx UI عبر وكيل عكسي لـ Nginx، يرجى الرجوع إلى هذا الرابط لكتابة " +#~ "ملف التكوين المقابل: https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "إذا تُرك فارغًا، سيتم استخدام دليل CA الافتراضي." @@ -8709,12 +8814,12 @@ msgstr "خط أنابيب بدون تخصيص" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" #~ "تحقق مما إذا كان /var/run/docker.sock موجودًا. إذا كنت تستخدم صورة Docker " -#~ "الرسمية لـ Nginx UI، يرجى التأكد من أن مقبس Docker مثبت بهذه الطريقة: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "الرسمية لـ Nginx UI، يرجى التأكد من أن مقبس Docker مثبت بهذه الطريقة: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgid "Check if the nginx access log path exists" #~ msgstr "تحقق مما إذا كان مسار سجل الوصول لـ nginx موجودًا" @@ -8744,8 +8849,8 @@ msgstr "خط أنابيب بدون تخصيص" #, fuzzy #~ msgid "" -#~ "When you enable/disable, delete, or save this stream, the nodes set in " -#~ "the Node Group and the nodes selected below will be synchronized." +#~ "When you enable/disable, delete, or save this stream, the nodes set in the " +#~ "Node Group and the nodes selected below will be synchronized." #~ msgstr "" #~ "عند تفعيل/تعطيل، حذف، أو حفظ هذا الموقع، سيتم مزامنة العقد المحددة في فئة " #~ "الموقع والعقد المحددة أدناه." @@ -8801,15 +8906,12 @@ msgstr "خط أنابيب بدون تخصيص" #~ msgid "Please upgrade the remote Nginx UI to the latest version" #~ msgstr "يرجى ترقية واجهة Nginx البعيدة إلى أحدث إصدار" -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" #~ msgstr "" #~ "فشل إعادة تسمية %{orig_path} إلى %{new_path} على %{env_name}، الاستجابة: " #~ "%{resp}" -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" #~ msgstr "" #~ "خطأ في إعادة تسمية الموقع %{site} إلى %{new_site} على %{node}، الاستجابة: " #~ "%{resp}" @@ -8824,23 +8926,20 @@ msgstr "خط أنابيب بدون تخصيص" #~ "فشل مزامنة الشهادة %{cert_name} إلى %{env_name}، يرجى ترقية واجهة Nginx " #~ "البعيدة إلى أحدث إصدار" -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "فشل مزامنة الشهادة %{cert_name} إلى %{env_name}، الاستجابة: %{resp}" #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}" -#~ msgstr "" -#~ "فشل مزامنة التكوين %{config_name} إلى %{env_name}، الاستجابة: %{resp}" +#~ msgstr "فشل مزامنة التكوين %{config_name} إلى %{env_name}، الاستجابة: %{resp}" #~ msgid "" -#~ "If you lose your mobile phone, you can use the recovery code to reset " -#~ "your 2FA." +#~ "If you lose your mobile phone, you can use the recovery code to reset your " +#~ "2FA." #~ msgstr "" #~ "إذا فقدت هاتفك المحمول، يمكنك استخدام رمز الاسترداد لإعادة تعيين المصادقة " #~ "الثنائية." -#~ msgid "" -#~ "The recovery code is only displayed once, please save it in a safe place." +#~ msgid "The recovery code is only displayed once, please save it in a safe place." #~ msgstr "رمز الاسترداد يُعرض مرة واحدة فقط، يرجى حفظه في مكان آمن." #~ msgid "Can't scan? Use text key binding" @@ -8850,22 +8949,21 @@ msgstr "خط أنابيب بدون تخصيص" #~ msgstr "اسم المستخدم أو كلمة المرور غير صحيحة" #~ msgid "Too many login failed attempts, please try again later" -#~ msgstr "" -#~ "عدد كبير جدًا من محاولات تسجيل الدخول الفاشلة، يرجى المحاولة مرة أخرى لاحقًا" +#~ msgstr "عدد كبير جدًا من محاولات تسجيل الدخول الفاشلة، يرجى المحاولة مرة أخرى لاحقًا" #~ msgid "DNS record management only" #~ msgstr "إدارة سجلات DNS فقط" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" -#~ "تُستخدم نطاقات DNS لإدارة سجلات DNS في NGINX UI وهي منفصلة عن تحديات " -#~ "شهادات ACME DNS-01." +#~ "تُستخدم نطاقات DNS لإدارة سجلات DNS في NGINX UI وهي منفصلة عن تحديات شهادات " +#~ "ACME DNS-01." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" #~ "حاليًا، تدعم إدارة سجلات DNS فقط Alibaba Cloud DNS وTencent Cloud DNS " #~ "وCloudflare." @@ -8874,9 +8972,8 @@ msgstr "خط أنابيب بدون تخصيص" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " #~ "Credentials and select them in certificate settings." #~ msgstr "" -#~ "لإصدار شهادات ACME DNS-01، أنشئ بيانات اعتماد DNS ضمن DNS > بيانات " -#~ "الاعتماد ثم حددها في إعدادات الشهادة." +#~ "لإصدار شهادات ACME DNS-01، أنشئ بيانات اعتماد DNS ضمن DNS > بيانات الاعتماد " +#~ "ثم حددها في إعدادات الشهادة." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "تستخدم DNS Domains فقط المزوّدين الذين لديهم تطبيقات لإدارة سجلات DNS." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "تستخدم DNS Domains فقط المزوّدين الذين لديهم تطبيقات لإدارة سجلات DNS." diff --git a/app/src/language/de_DE/app.po b/app/src/language/de_DE/app.po index 03a4f221..17e8873c 100644 --- a/app/src/language/de_DE/app.po +++ b/app/src/language/de_DE/app.po @@ -5,14 +5,15 @@ msgstr "" "Language-Team: none\n" "Language: de_DE\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/language/generate.ts:37 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}" msgstr "" -"[Nginx UI] ACME-Benutzer: %{name}, E-Mail: %{email}, CA-Verzeichnis: %{caDir}" +"[Nginx UI] ACME-Benutzer: %{name}, E-Mail: %{email}, CA-Verzeichnis: " +"%{caDir}" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" @@ -27,8 +28,7 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] Zertifikat erfolgreich widerrufen" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "" "[Nginx UI] Zertifikat wurde für den Server verwendet, Server-TLS-Zertifikat " "wird neu geladen" @@ -106,13 +106,12 @@ msgstr "{label} in die Zwischenablage kopiert" #: src/components/SyncNodesPreview/SyncNodesPreview.vue:59 msgid "* Includes nodes from group %{groupName} and manually selected nodes" -msgstr "" -"* Enthält Knoten aus der Gruppe %{groupName} und manuell ausgewählte Knoten" +msgstr "* Enthält Knoten aus der Gruppe %{groupName} und manuell ausgewählte Knoten" #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" "* Indexdateien werden standardmäßig im Verzeichnis \"log-index\" innerhalb " "Ihres NGINX-UI-Konfigurationspfads gespeichert." @@ -122,12 +121,9 @@ msgid "" "* Performance metrics measured on Apple M2 Pro (12-core) with 32GB RAM. " "Actual performance may vary based on your hardware configuration." msgstr "" -"* Leistungskennzahlen gemessen auf Apple M2 Pro (12-Kern) mit 32 GB RAM. Die " -"tatsächliche Leistung kann je nach Ihrer Hardwarekonfiguration variieren." - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" +"* Leistungskennzahlen gemessen auf Apple M2 Pro (12-Kern) mit 32 GB RAM. " +"Die tatsächliche Leistung kann je nach Ihrer Hardwarekonfiguration " +"variieren." #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" @@ -147,8 +143,8 @@ msgid "" "record management in DNS Domains is not supported for this provider." msgstr "" "%{provider} kann für ACME DNS-01-Zertifikats-Challenges verwendet werden, " -"aber die DNS-Eintragsverwaltung in DNS Domains wird für diesen Anbieter nicht " -"unterstützt." +"aber die DNS-Eintragsverwaltung in DNS Domains wird für diesen Anbieter " +"nicht unterstützt." #: src/views/nginx_log/structured/StructuredLogViewer.vue:811 msgid "%{start}-%{end} of %{total} items" @@ -181,7 +177,7 @@ msgstr "24-Stunden-UV/PV-Statistiken" msgid "2FA" msgstr "2FA" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "2FA-Einstellungen" @@ -189,13 +185,28 @@ msgstr "2FA-Einstellungen" msgid "4GB+ RAM recommended" msgstr "4 GB RAM oder mehr empfohlen" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "" +"A-Einträge mit denselben Namen werden im Nur-IPv6-Modus nicht verwaltet. " +"Sie bleiben im DNS unverändert." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "" "Eine erforderliche Include-Datei fehlt in der Sandbox oder der " "Quellkonfiguration." +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"AAAA-Einträge mit denselben Namen werden im Nur-IPv4-Modus nicht verwaltet. " +"Sie bleiben im DNS unverändert." + #: src/routes/modules/system.ts:38 msgid "About" msgstr "Über" @@ -213,10 +224,6 @@ msgstr "Zugriffsprotokollpfad existiert nicht" msgid "Access Logs" msgstr "Zugriffslog" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -228,10 +235,10 @@ msgstr "Aktion" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -273,7 +280,8 @@ msgstr "Konfiguration hinzufügen" msgid "Add Directive Below" msgstr "Anweisung darunter hinzufügen" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "Domain hinzufügen" @@ -281,6 +289,14 @@ msgstr "Domain hinzufügen" msgid "Add Header" msgstr "Header hinzufügen" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "IP-Adresse hinzufügen" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "Element hinzufügen" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -357,11 +373,6 @@ msgstr "" msgid "All" msgstr "Alle" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx konnte die Konfiguration nicht validieren." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "Alle Komponenten" @@ -371,7 +382,7 @@ msgstr "Alle Komponenten" msgid "All Recovery Codes Have Been Used" msgstr "Alle Wiederherstellungscodes wurden verwendet" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -397,8 +408,7 @@ msgid "Any" msgstr "Beliebig" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "" "Jede erreichbare IP-Adresse kann mit privaten Zertifizierungsstellen " "verwendet werden" @@ -427,10 +437,6 @@ msgstr "API-Typ" msgid "App" msgstr "App" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "Anwenden" @@ -443,7 +449,7 @@ msgstr "Arch" msgid "Are you sure to delete this banned IP immediately?" msgstr "Sind Sie sicher, dass Sie diese gesperrte IP sofort löschen möchten?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "Sind Sie sicher, dass Sie diese DDNS-Konfiguration löschen möchten?" @@ -455,10 +461,9 @@ msgstr "Sind Sie sicher, dass Sie diesen Passkey sofort löschen möchten?" msgid "Are you sure to delete this record?" msgstr "Sind Sie sicher, dass Sie diesen Eintrag löschen möchten?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" -msgstr "" -"Sind Sie sicher, dass Sie neue Wiederherstellungscodes generieren möchten?" +msgstr "Sind Sie sicher, dass Sie neue Wiederherstellungscodes generieren möchten?" #: src/views/preference/components/AuthSettings/TOTP.vue:87 msgid "Are you sure to reset 2FA?" @@ -503,8 +508,8 @@ msgstr "Sind Sie sicher, dass Sie diesen Standort entfernen möchten?" #: src/components/NamespaceTabs/NamespaceTabs.vue:146 msgid "Are you sure you want to restart Nginx on the following sync nodes?" msgstr "" -"Sind Sie sicher, dass Sie Nginx auf den folgenden Synchronisationsknoten neu " -"starten möchten?" +"Sind Sie sicher, dass Sie Nginx auf den folgenden Synchronisationsknoten " +"neu starten möchten?" #: src/language/curd.ts:26 msgid "Are you sure you want to restore?" @@ -527,6 +532,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud ist OpenAI-kompatibel. Verwenden Sie " +"https://api.atlascloud.ai/v1 und einen Atlas Cloud API-Schlüssel." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -536,12 +543,11 @@ msgstr "Versuchen zu beheben" msgid "Attempts" msgstr "Versuche" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "Authentifizierung" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "Mit Passkey authentifizieren" @@ -549,11 +555,6 @@ msgstr "Mit Passkey authentifizieren" msgid "Authenticating..." msgstr "Authentifizierung läuft..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "Authentifizierung läuft..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -601,15 +602,15 @@ msgstr "Automatisches Aktualisieren deaktiviert" msgid "Auto refresh enabled" msgstr "Automatisches Aktualisieren aktiviert" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "Automatische Verlängerung deaktiviert für %{name}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "Automatische Verlängerung aktiviert für %{name}" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert wird ausgeführt, bitte warten..." @@ -730,8 +731,7 @@ msgstr "" "%{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" "Sicherungsauftrag %{backup_name} ist beim Hochladen in den Speicher " "fehlgeschlagen, Fehler: %{error}" @@ -795,14 +795,7 @@ msgstr "Stapel-Upgrade" #: src/language/curd.ts:38 msgid "Belows are selected items that you want to batch modify" -msgstr "" -"Hier sind die ausgewählten Elemente, die Sie stapelweise ändern möchten" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" +msgstr "Hier sind die ausgewählten Elemente, die Sie stapelweise ändern möchten" #: src/constants/errors/nginx.ts:3 msgid "Block is nil" @@ -895,14 +888,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -923,8 +916,7 @@ msgstr "Auf den Speicherpfad {0} kann nicht zugegriffen werden: {1}" #: src/constants/errors/user.ts:11 msgid "Cannot change initial user password in demo mode" -msgstr "" -"Das Passwort des ersten Benutzers kann im Demo-Modus nicht geändert werden" +msgstr "Das Passwort des ersten Benutzers kann im Demo-Modus nicht geändert werden" #: src/components/ConfigHistory/DiffViewer.vue:71 msgid "Cannot compare: Missing content" @@ -937,8 +929,8 @@ msgstr "Geschützter Pfad kann nicht gelöscht werden" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:135 msgid "Cannot delete server_name while DNS is linked. Clear DNS link first." msgstr "" -"server_name kann nicht gelöscht werden, solange DNS verknüpft ist. Lösen Sie " -"zuerst die DNS-Verknüpfung." +"server_name kann nicht gelöscht werden, solange DNS verknüpft ist. Lösen " +"Sie zuerst die DNS-Verknüpfung." #: src/constants/errors/config.ts:13 msgid "Cannot delete the nginx config directory" @@ -995,6 +987,12 @@ msgstr "Der Zertifikatsinhalt und der private Schlüssel dürfen nicht leer sein msgid "Certificate decode error" msgstr "Fehler beim Dekodieren des Zertifikats" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" +"Zertifikatsdirektiven zum Editor hinzugefügt; überprüfen und speichern, " +"wenn bereit." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "Hinweis zum Zertifikatsablauf" @@ -1013,6 +1011,14 @@ msgstr "Zertifikat läuft bald ab" msgid "Certificate files downloaded successfully" msgstr "Zertifikatsdateien erfolgreich heruntergeladen" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "Die Komponente zur Zertifikatsausstellung ist nicht bereit" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "Zertifikat erfolgreich ausgestellt" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "Der Zertifikatsname darf nicht leer sein" @@ -1047,17 +1053,18 @@ msgid "Certificate revoked successfully" msgstr "Zertifikat erfolgreich widerrufen" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "Zertifikatsstatus" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "Zertifikatstyp" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "Zertifikate" @@ -1078,11 +1085,11 @@ msgstr "Challenge-Methode" msgid "Change Certificate" msgstr "Zertifikat ändern" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "Passwort ändern" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "Geändertes Zertifikat" @@ -1121,13 +1128,13 @@ msgstr "Favicon prüfen" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "Überprüfen Sie, ob /var/run/docker.sock existiert. Wenn Sie das offizielle " @@ -1137,10 +1144,10 @@ msgstr "" "Docker Client API mit der Docker Engine des Hosts zu kommunizieren. Diese " "Funktion wird verwendet, um Nginx in einem anderen Container zu steuern und " "Container-Ersetzung anstelle von Binär-Ersetzung während OTA-Upgrades von " -"Nginx UI durchzuführen, um sicherzustellen, dass auch Container-" -"Abhängigkeiten aktualisiert werden. Wenn Sie diese Funktion nicht benötigen, " -"fügen Sie die Umgebungsvariable NGINX_UI_IGNORE_DOCKER_SOCKET=true zum " -"Container hinzu." +"Nginx UI durchzuführen, um sicherzustellen, dass auch " +"Container-Abhängigkeiten aktualisiert werden. Wenn Sie diese Funktion nicht " +"benötigen, fügen Sie die Umgebungsvariable " +"NGINX_UI_IGNORE_DOCKER_SOCKET=true zum Container hinzu." #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 msgid "" @@ -1152,11 +1159,10 @@ msgstr "" "Zwischenablage-Funktionen" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "" -"Überprüfen Sie, ob sich das conf.d-Verzeichnis im nginx-" -"Konfigurationsverzeichnis befindet" +"Überprüfen Sie, ob sich das conf.d-Verzeichnis im " +"nginx-Konfigurationsverzeichnis befindet" #: src/language/generate.ts:7 msgid "" @@ -1167,26 +1173,26 @@ msgid "" msgstr "" "Überprüfen Sie, ob die GeoLite2-Datenbank verfügbar ist, wenn die " "Protokollindizierung aktiviert ist. Die GeoLite2-Datenbank ist für die " -"geografische IP-Analyse in der Protokollindizierung erforderlich. Sie können " -"sie auf der Einstellungsseite herunterladen oder GeoLite2-City.mmdb manuell " -"im gleichen Verzeichnis wie app.ini platzieren" +"geografische IP-Analyse in der Protokollindizierung erforderlich. Sie " +"können sie auf der Einstellungsseite herunterladen oder GeoLite2-City.mmdb " +"manuell im gleichen Verzeichnis wie app.ini platzieren" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" "Überprüfen Sie, ob der Pfad für das Nginx-Zugriffsprotokoll existiert. " "Standardmäßig wird dieser Pfad von 'nginx -V' abgerufen. Wenn er nicht " "abgerufen werden kann oder der abgerufene Pfad nicht auf eine gültige, " "vorhandene Datei verweist, wird ein Fehler gemeldet. In diesem Fall müssen " "Sie die Konfigurationsdatei ändern, um den Zugriffsprotokollpfad anzugeben. " -"Weitere Details finden Sie in der Dokumentation: https://nginxui.com/zh_CN/" -"guide/config-nginx.html#accesslogpath" +"Weitere Details finden Sie in der Dokumentation: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1202,29 +1208,29 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" "Überprüfen Sie, ob der Pfad für das Nginx-Fehlerprotokoll existiert. " "Standardmäßig wird dieser Pfad über 'nginx -V' abgerufen. Wenn er nicht " "abgerufen werden kann oder der abgerufene Pfad nicht auf eine gültige, " "vorhandene Datei verweist, wird ein Fehler gemeldet. In diesem Fall müssen " "Sie die Konfigurationsdatei ändern, um den Pfad für das Fehlerprotokoll " -"anzugeben. Weitere Details finden Sie in der Dokumentation: https://nginxui." -"com/zh_CN/guide/config-nginx.html#errorlogpath" +"anzugeben. Weitere Details finden Sie in der Dokumentation: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" "Überprüfen Sie, ob der Nginx-PID-Pfad existiert. Standardmäßig wird dieser " -"Pfad von 'nginx -V' abgerufen. Wenn er nicht abgerufen werden kann, wird ein " -"Fehler gemeldet. In diesem Fall müssen Sie die Konfigurationsdatei ändern, " -"um den Nginx-PID-Pfad anzugeben. Weitere Details finden Sie in der " +"Pfad von 'nginx -V' abgerufen. Wenn er nicht abgerufen werden kann, wird " +"ein Fehler gemeldet. In diesem Fall müssen Sie die Konfigurationsdatei " +"ändern, um den Nginx-PID-Pfad anzugeben. Weitere Details finden Sie in der " "Dokumentation: https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 @@ -1241,8 +1247,7 @@ msgstr "Überprüfen, ob die nginx.conf das sites-enabled-Verzeichnis enthält" #: src/language/generate.ts:17 msgid "Check if the nginx.conf includes the streams-enabled directory" -msgstr "" -"Überprüfen Sie, ob die nginx.conf das streams-enabled-Verzeichnis enthält" +msgstr "Überprüfen Sie, ob die nginx.conf das streams-enabled-Verzeichnis enthält" #: src/language/generate.ts:18 msgid "" @@ -1254,8 +1259,8 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" "Überprüfen Sie, ob die Verzeichnisse streams-available und streams-enabled " "im Nginx-Konfigurationsverzeichnis enthalten sind" @@ -1277,6 +1282,10 @@ msgstr "China-Karte" msgid "Cipher text is too short" msgstr "Der verschlüsselte Text ist zu kurz" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "Widersprüchliche Einträge bereinigen" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Säuberung von Umgebungsvariablen" @@ -1490,11 +1499,11 @@ msgstr "Konf" msgid "Configurations" msgstr "Konfigurationen" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "Konfigurieren" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "DDNS konfigurieren" @@ -1506,7 +1515,7 @@ msgstr "SSL konfigurieren" msgid "Confirm Delete" msgstr "Löschen bestätigen" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "Neues Passwort bestätigen" @@ -1519,33 +1528,18 @@ msgstr "Bestätigung erforderlich" msgid "Connected" msgstr "Verbunden" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "Verbunden" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "Verbindungsfehler, versuche erneut zu verbinden..." #: src/views/terminal/components/TerminalSessionContent.vue:38 msgid "Connection lost for this terminal. Please refresh if needed." -msgstr "" -"Verbindung für dieses Terminal verloren. Bitte aktualisieren Sie bei Bedarf." +msgstr "Verbindung für dieses Terminal verloren. Bitte aktualisieren Sie bei Bedarf." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61 msgid "Connection timeout period" msgstr "Verbindungs-Timeout-Zeitraum" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "Inhalt" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "Container-Status unbekannt" @@ -1558,8 +1552,7 @@ msgstr "Inhalt" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "Kopiert" @@ -1570,19 +1563,13 @@ msgstr "Kopiert!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "Kopieren" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "Codes kopieren" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "Kopieren" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "Core-Upgrade" @@ -1622,8 +1609,8 @@ msgstr "CPU-Auslastung" #: src/views/dashboard/components/ResourceUsageCard.vue:38 msgid "CPU usage is relatively high, consider optimizing Nginx configuration" msgstr "" -"Die CPU-Auslastung ist relativ hoch, erwägen Sie eine Optimierung der Nginx-" -"Konfiguration" +"Die CPU-Auslastung ist relativ hoch, erwägen Sie eine Optimierung der " +"Nginx-Konfiguration" #: src/views/dashboard/ServerAnalytic.vue:200 msgid "CPU:" @@ -1664,8 +1651,8 @@ msgid "" "Create system backups including Nginx configuration and Nginx UI settings. " "Backup files will be automatically downloaded to your computer." msgstr "" -"Erstellen Sie System-Backups, einschließlich der Nginx-Konfiguration und der " -"Nginx-UI-Einstellungen. Die Backup-Dateien werden automatisch auf Ihren " +"Erstellen Sie System-Backups, einschließlich der Nginx-Konfiguration und " +"der Nginx-UI-Einstellungen. Die Backup-Dateien werden automatisch auf Ihren " "Computer heruntergeladen." #: src/views/backup/AutoBackup/AutoBackup.vue:229 @@ -1686,7 +1673,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "Er" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "Zugangsdaten" @@ -1718,7 +1705,7 @@ msgstr "Aktive Verbindungen" msgid "Current Content" msgstr "Aktueller Inhalt" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "Aktuelles Passwort" @@ -1744,11 +1731,11 @@ msgstr "Benutzerdefinierter Cron-Ausdruck" msgid "Custom Directory" msgstr "Benutzerdefiniertes Verzeichnis" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "Benutzerdefinierte Domains" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "Benutzerdefinierte Domänenzertifikate" @@ -1760,8 +1747,7 @@ msgstr "Benutzerdefinierte Header" msgid "" "Customize the name of local node to be displayed in the environment " "indicator." -msgstr "" -"Name des lokalen Knotens anpassen, der im Umgebungsindikator angezeigt wird." +msgstr "Name des lokalen Knotens anpassen, der im Umgebungsindikator angezeigt wird." #: src/views/backup/AutoBackup/components/CronEditor.vue:19 msgid "Daily" @@ -1810,15 +1796,15 @@ msgstr "Datenbankdatei nicht gefunden" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "DDNS-Konfiguration gelöscht" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "DDNS-Übersicht" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS gespeichert" @@ -1851,7 +1837,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "Löschen" @@ -1936,8 +1922,8 @@ msgstr "Demo" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" "Der Demo-Modus ist aktiviert. Dieses Terminal erlaubt nur eine kleine " "Auswahl sicherer, schreibgeschützter Befehle." @@ -2051,7 +2037,7 @@ msgstr "Deaktivieren" msgid "Disable" msgstr "Deaktivieren" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "Automatische Verlängerung für %{name} konnte nicht deaktiviert werden" @@ -2091,8 +2077,7 @@ msgstr "Website %{name} auf %{node} erfolgreich deaktiviert" #: src/components/Notification/notifications.ts:138 msgid "Disable site %{name} maintenance on %{node} failed" -msgstr "" -"Deaktivierung der Wartung der Website %{name} auf %{node} fehlgeschlagen" +msgstr "Deaktivierung der Wartung der Website %{name} auf %{node} fehlgeschlagen" #: src/components/Notification/notifications.ts:142 msgid "Disable site %{name} maintenance on %{node} successfully" @@ -2107,7 +2092,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "Stream %{name} von %{node} erfolgreich deaktiviert" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2228,19 +2213,17 @@ msgstr "Möchten Sie diese Website %{action}?" msgid "Do you want to %{action} this stream?" msgstr "Möchten Sie diesen Stream %{action}?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "Möchtest du die automatische Zertifikatsverlängerung deaktivieren?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?" +msgstr "Möchten Sie die ausgewählten Standorte deaktivieren?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "Möchten Sie diesen Stream aktivieren?" +msgstr "Möchten Sie die ausgewählten Seiten aktivieren?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2259,10 +2242,6 @@ msgstr "Möchten Sie diesen Upstream entfernen?" msgid "Docker client not initialized" msgstr "Docker-Client nicht initialisiert" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Docker-Socket vorhanden" @@ -2271,10 +2250,6 @@ msgstr "Docker-Socket vorhanden" msgid "Docker socket not exist" msgstr "Docker-Socket existiert nicht" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2285,11 +2260,15 @@ msgstr[0] "Dokument" msgid "Document Count" msgstr "Dokumentenanzahl" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "Domain" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "Domänen" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" @@ -2338,9 +2317,9 @@ msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -"Aufgrund der Sicherheitsrichtlinien einiger Browser kannst du Passkeys nicht " -"auf Nicht-HTTPS-Websites verwenden, außer wenn sie auf localhost ausgeführt " -"werden." +"Aufgrund der Sicherheitsrichtlinien einiger Browser kannst du Passkeys " +"nicht auf Nicht-HTTPS-Websites verwenden, außer wenn sie auf localhost " +"ausgeführt werden." #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2438,7 +2417,7 @@ msgstr "Erweiterte Indizierung aktivieren" msgid "Enable Advanced Log Indexing" msgstr "Erweiterte Protokollindizierung aktivieren" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "Aktiviere automatische Verlängerung fehlgeschlagen für %{name}" @@ -2450,7 +2429,7 @@ msgstr "Code-Vervollständigung aktivieren" msgid "Enable compression for content transfer" msgstr "Komprimierung für die Inhaltsübertragung aktivieren" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "DDNS aktivieren" @@ -2512,13 +2491,11 @@ msgstr "Stream erfolgreich aktiviert" #: src/components/Notification/notifications.ts:130 msgid "Enable site %{name} maintenance on %{node} failed" -msgstr "" -"Aktivierung der Wartung für die Website %{name} auf %{node} fehlgeschlagen" +msgstr "Aktivierung der Wartung für die Website %{name} auf %{node} fehlgeschlagen" #: src/components/Notification/notifications.ts:134 msgid "Enable site %{name} maintenance on %{node} successfully" -msgstr "" -"Wartungsmodus für die Website %{name} auf %{node} erfolgreich aktiviert" +msgstr "Wartungsmodus für die Website %{name} auf %{node} erfolgreich aktiviert" #: src/components/Notification/notifications.ts:122 msgid "Enable site %{name} on %{node} failed" @@ -2549,7 +2526,7 @@ msgid "Enable TOTP" msgstr "TOTP aktivieren" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2573,8 +2550,7 @@ msgstr "Erfolgreich aktiviert" #: src/views/preference/tabs/ServerSettings.vue:52 msgid "Enables HTTP/2 support with multiplexing and server push capabilities" -msgstr "" -"Aktiviert HTTP/2-Unterstützung mit Multiplexing und Server-Push-Funktionen" +msgstr "Aktiviert HTTP/2-Unterstützung mit Multiplexing und Server-Push-Funktionen" #: src/views/preference/tabs/ServerSettings.vue:56 msgid "Enables HTTP/3 support based on QUIC protocol for best performance" @@ -2589,8 +2565,9 @@ msgid "" "minimum requirements before proceeding." msgstr "" "Die Aktivierung der erweiterten Protokollindizierung verbraucht erhebliche " -"Rechenressourcen, einschließlich CPU und Speicher. Bitte stellen Sie sicher, " -"dass Ihr System die Mindestanforderungen erfüllt, bevor Sie fortfahren." +"Rechenressourcen, einschließlich CPU und Speicher. Bitte stellen Sie " +"sicher, dass Ihr System die Mindestanforderungen erfüllt, bevor Sie " +"fortfahren." #: src/views/site/site_edit/components/Cert/IssueCert.vue:95 msgid "Encrypt website with Let's Encrypt" @@ -2604,19 +2581,28 @@ msgstr "Ende" msgid "End Date" msgstr "Enddatum" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "Zertifikatsname eingeben" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "Domänennamen eingeben" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "IP-Adresse eingeben" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" -msgstr "" -"Geben Sie die Server-IP-Adresse ein (z.B. 203.0.113.1 oder 2001:db8::1)" +msgstr "Geben Sie die Server-IP-Adresse ein (z.B. 203.0.113.1 oder 2001:db8::1)" #: src/components/SelfCheck/SelfCheck.vue:72 msgid "Enter the install secret to run the system check." msgstr "" -"Geben Sie das Installationsgeheimnis ein, um die Systemprüfung durchzuführen." +"Geben Sie das Installationsgeheimnis ein, um die Systemprüfung " +"durchzuführen." #: src/views/install/components/InstallView.vue:169 msgid "" @@ -2628,7 +2614,7 @@ msgstr "" "Konfigurationsverzeichnisses zu finden ist, um die Einrichtung " "freizuschalten." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "Geben Sie Ihre Domain ein" @@ -2640,7 +2626,7 @@ msgstr "Die Umgebungskonfiguration ist leer" msgid "Environment variables cleaned" msgstr "Umgebungsvariablen gesäubert" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2673,8 +2659,8 @@ msgstr "Feherlogs" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "" "Fehlerprotokolle unterstützen keine strukturierte Analyse, da sie " "Freitextnachrichten enthalten." @@ -2724,7 +2710,7 @@ msgid "Expected Text" msgstr "Erwarteter Text" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "Abgelaufen" @@ -2741,23 +2727,18 @@ msgid "" "External Account Binding HMAC Key (optional). Should be in Base64 URL " "encoding format." msgstr "" -"Externer Account Binding HMAC-Schlüssel (optional). Sollte im Base64 URL-" -"Kodierungsformat sein." +"Externer Account Binding HMAC-Schlüssel (optional). Sollte im Base64 " +"URL-Kodierungsformat sein." #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" "Externe Account-Binding-Schlüssel-ID (optional). Erforderlich für einige " "ACME-Anbieter wie ZeroSSL." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "Externer Docker-Container" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "Externer Docker-Container" @@ -2780,6 +2761,7 @@ msgstr "Zertifikat konnte nicht abgerufen werden" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "Fehlgeschlagen" @@ -3019,6 +3001,11 @@ msgstr "Fehler beim Generieren des AES-Schlüssels: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "Fehler beim Generieren des Initialisierungsvektors: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "Fehler beim Erstellen des selbstsignierten Zertifikats" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "Fehler beim Abrufen von Zertifikatsinformationen" @@ -3270,8 +3257,7 @@ msgstr "Datei existiert" #: src/views/nginx_log/indexing/IndexManagement.vue:64 msgid "File index rebuild started successfully for %{path}" -msgstr "" -"Die Neuerstellung des Dateiindex für %{path} wurde erfolgreich gestartet" +msgstr "Die Neuerstellung des Dateiindex für %{path} wurde erfolgreich gestartet" #: src/constants/errors/config.ts:2 msgid "File name is not allowed: {0}" @@ -3351,28 +3337,27 @@ msgid "For commercial or professional use, contact" msgstr "Für kommerzielle oder berufliche Nutzung kontaktieren Sie" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "" -"Für Fehlerprotokolle verwenden Sie bitte den Raw Log Viewer für eine bessere " -"Anzeigeerfahrung." +"Für Fehlerprotokolle verwenden Sie bitte den Raw Log Viewer für eine " +"bessere Anzeigeerfahrung." #: src/components/AutoCertForm/AutoCertForm.vue:140 msgid "" "For IP-based certificate configurations, only HTTP-01 challenge method is " "supported. DNS-01 challenge is not compatible with IP-based certificates." msgstr "" -"Für IP-basierte Zertifikatskonfigurationen wird nur die HTTP-01-" -"Herausforderungsmethode unterstützt. Die DNS-01-Herausforderung ist nicht " -"mit IP-basierten Zertifikaten kompatibel." +"Für IP-basierte Zertifikatskonfigurationen wird nur die " +"HTTP-01-Herausforderungsmethode unterstützt. Die DNS-01-Herausforderung ist " +"nicht mit IP-basierten Zertifikaten kompatibel." #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" -"Für IP-basierte Zertifikate geben Sie bitte die Server-IP-Adresse an, die im " -"Zertifikat enthalten sein soll." +"Für IP-basierte Zertifikate geben Sie bitte die Server-IP-Adresse an, die " +"im Zertifikat enthalten sein soll." #: src/constants/errors/middleware.ts:4 msgid "Form parse failed" @@ -3421,14 +3406,16 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "" -"Frontend-Debug-Modus: Installationsablauf abgeschlossen, ohne eine Backend-" -"Anfrage zu senden" +"Frontend-Debug-Modus: Installationsablauf abgeschlossen, ohne eine " +"Backend-Anfrage zu senden" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "" "Frontend-Debug-Modus: Wiederherstellungsablauf abgeschlossen, ohne eine " "Backend-Anfrage zu senden" @@ -3445,21 +3432,24 @@ msgstr "Volltextsuche-Unterstützung" msgid "General Certificate" msgstr "Allgemeines Zertifikat" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "Generieren" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "Generieren" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "Neue Wiederherstellungscodes generieren" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "Neue Wiederherstellungscodes generieren" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "Wiederherstellungscodes generieren" @@ -3467,6 +3457,14 @@ msgstr "Wiederherstellungscodes generieren" msgid "Generate recovery codes successfully" msgstr "Wiederherstellungscodes erfolgreich generiert" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "Selbstsigniertes Zertifikat erstellen" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "Selbstsigniertes Zertifikat generieren" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "Generiere privaten Schlüssel zur Registrierung des Kontos" @@ -3497,8 +3495,8 @@ msgid "" "GeoLite2 database not found at {0}. Log indexing requires GeoLite2 database " "for geographic IP analysis" msgstr "" -"GeoLite2-Datenbank nicht gefunden unter {0}. Die Indizierung von Protokollen " -"erfordert die GeoLite2-Datenbank für die geografische IP-Analyse" +"GeoLite2-Datenbank nicht gefunden unter {0}. Die Indizierung von " +"Protokollen erfordert die GeoLite2-Datenbank für die geografische IP-Analyse" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:150 msgid "GeoLite2 Database Required" @@ -3547,6 +3545,10 @@ msgstr "" msgid "Go to Raw Log Viewer" msgstr "Zum Rohprotokoll-Viewer gehen" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "Zu den Wiederherstellungscodes" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3556,17 +3558,17 @@ msgid "" "gRPC health check requires server to implement gRPC Health Check service " "(grpc.health.v1.Health)." msgstr "" -"Die gRPC-Gesundheitsprüfung erfordert, dass der Server den gRPC-" -"Gesundheitsprüfungsdienst (grpc.health.v1.Health) implementiert." +"Die gRPC-Gesundheitsprüfung erfordert, dass der Server den " +"gRPC-Gesundheitsprüfungsdienst (grpc.health.v1.Health) implementiert." #: src/views/dashboard/components/SiteHealthCheckModal.vue:599 msgid "" "gRPCS uses TLS encryption. Server must implement gRPC Health Check service. " "For testing, SSL validation is disabled by default." msgstr "" -"gRPCS verwendet TLS-Verschlüsselung. Der Server muss den gRPC-" -"Gesundheitscheck-Dienst implementieren. Für Tests ist die SSL-Validierung " -"standardmäßig deaktiviert." +"gRPCS verwendet TLS-Verschlüsselung. Der Server muss den " +"gRPC-Gesundheitscheck-Dienst implementieren. Für Tests ist die " +"SSL-Validierung standardmäßig deaktiviert." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67 msgid "GZIP Compression" @@ -3617,10 +3619,6 @@ msgstr "Verstecken" msgid "Hide Assistant" msgstr "Assistent ausblenden" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3642,27 +3640,10 @@ msgid "Home" msgstr "Startseite" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "Host" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "Host, z.B. @ oder www" @@ -3739,12 +3720,12 @@ msgstr "" "Wenn deine Domain CNAME-Einträge hat und du keine Zertifikate erhalten " "kannst, musst du diese Option aktivieren." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "Import" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "Zertifikat importieren" @@ -3757,8 +3738,8 @@ msgid "" "Includes master process, worker processes, cache processes, and other Nginx " "processes" msgstr "" -"Beinhaltet Master-Prozess, Worker-Prozesse, Cache-Prozesse und andere Nginx-" -"Prozesse" +"Beinhaltet Master-Prozess, Worker-Prozesse, Cache-Prozesse und andere " +"Nginx-Prozesse" #: src/views/nginx_log/components/IndexingSettingsModal.vue:252 msgid "Incremental index scanning" @@ -3807,7 +3788,7 @@ msgstr "Indizierung läuft..." msgid "Indicator" msgstr "Indikator" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "Information" @@ -3831,7 +3812,7 @@ msgstr "Initialisierung des Core-Upgraders" msgid "Input the code from the app:" msgstr "Füge den Code aus der App ein:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "Füge den Wiederherstellungscode ein:" @@ -3890,12 +3871,12 @@ msgstr "" "Die Installation ist nach 10 Minuten Systemstart nicht mehr erlaubt. Bitte " "starten Sie die Nginx UI neu." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "Intervall" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "Intervall (Sekunden)" @@ -3969,7 +3950,7 @@ msgstr "Ungültiger OTP-Code" msgid "Invalid padding in decrypted data" msgstr "Ungültige Auffüllung in entschlüsselten Daten" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "Ungültiger Passcode oder Wiederherstellungscode" @@ -4022,15 +4003,43 @@ msgstr "IP-Adresse" msgid "IP Address / Target" msgstr "IP-Adresse / Ziel" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "IP-Adressen" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "IP-Zertifikat-Hinweis" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "IP-Version" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "Nur IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4 dann IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "Nur IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6, dann IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "Ausstellung fehlgeschlagen" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "Zertifikat ausstellen" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "Zertifikat ausstellen" @@ -4038,10 +4047,18 @@ msgstr "Zertifikat ausstellen" msgid "Issued certificate successfully" msgstr "Zertifikat erfolgreich ausgestellt" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "Erfolgreich ausgestellt" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "Aussteller: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "Ausstellen..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "Element(e)" @@ -4063,7 +4080,8 @@ msgid "Keepalive Timeout" msgstr "Keepalive-Timeout" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "Schlüsseltyp" @@ -4145,7 +4163,7 @@ msgstr "Zuletzt indiziert" msgid "Last month" msgstr "Letzter Monat" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "Letzte Ausführung" @@ -4161,6 +4179,10 @@ msgstr "Zuletzt aktualisiert:" msgid "Last used at" msgstr "Zuletzt verwendet am" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "Später" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "Leer lassen für keine Änderung" @@ -4182,10 +4204,10 @@ msgid "Leave blank if you don't need this." msgstr "Lassen Sie dieses Feld leer, wenn Sie es nicht benötigen." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "Leer lassen für den Standard: https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "" +"Leer lassen, um den Atlas Cloud-Endpunkt zu verwenden: " +"https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4194,10 +4216,18 @@ msgstr "Leer lassen für den Standard: https://api.openai.com/" msgid "Leave blank will not change anything" msgstr "Leer lassen ändert nichts" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"Der alte Wiederherstellungscode ist veraltet. Generieren Sie neue " +"Wiederherstellungscodes, um die Kontowiederherstellung sicher zu halten." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" -msgstr "" -"Alter Wiederherstellungscode nicht erlaubt, da TOTP nicht aktiviert ist" +msgstr "Alter Wiederherstellungscode nicht erlaubt, da TOTP nicht aktiviert ist" #: src/components/AutoCertForm/AutoCertForm.vue:268 msgid "Lego disable CNAME Support" @@ -4226,17 +4256,17 @@ msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name." msgstr "" -"Verknüpfen Sie diese Website mit einem DNS-Eintrag. Der server_name wird als " -"Name für den DNS-Eintrag verwendet." +"Verknüpfen Sie diese Website mit einem DNS-Eintrag. Der server_name wird " +"als Name für den DNS-Eintrag verwendet." #: src/views/site/site_add/components/DNSRecordIntegration.vue:247 msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name. You can skip this step if DNS is already configured." msgstr "" -"Verknüpfen Sie diese Website mit einem DNS-Eintrag. Der server_name wird als " -"Name für den DNS-Eintrag verwendet. Sie können diesen Schritt überspringen, " -"wenn DNS bereits konfiguriert ist." +"Verknüpfen Sie diese Website mit einem DNS-Eintrag. Der server_name wird " +"als Name für den DNS-Eintrag verwendet. Sie können diesen Schritt " +"überspringen, wenn DNS bereits konfiguriert ist." #: src/views/site/site_edit/components/RightPanel/DNS.vue:466 msgid "Linked DNS Record" @@ -4252,7 +4282,7 @@ msgstr "Lauschend" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4300,18 +4330,14 @@ msgstr "Wird geladen..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "Lokal" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "Lokaler Pfad (z. B. /var/backups)" @@ -4324,15 +4350,15 @@ msgstr "Ort" msgid "Locations" msgstr "Orte" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "Protokoll" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" "Die Protokolldatei %{log_path} ist keine reguläre Datei. Wenn Sie nginx-ui " "in einem Docker-Container verwenden, finden Sie weitere Informationen unter " @@ -4360,8 +4386,7 @@ msgstr "Log-Indexer nicht verfügbar" #: src/views/nginx_log/structured/StructuredLogViewer.vue:586 msgid "Log indexing completed! Loading updated data..." -msgstr "" -"Protokollindizierung abgeschlossen! Aktualisierte Daten werden geladen..." +msgstr "Protokollindizierung abgeschlossen! Aktualisierte Daten werden geladen..." #: src/constants/errors/nginx_log.parser.ts:3 msgid "Log line exceeds maximum length" @@ -4374,14 +4399,14 @@ msgstr "Protokollliste" #: src/constants/errors/nginx_log.indexer.ts:2 msgid "Log parser is not initialized; call indexer.InitLogParser() before use" msgstr "" -"Der Protokollparser wurde nicht initialisiert; rufen Sie indexer." -"InitLogParser() vor der Verwendung auf" +"Der Protokollparser wurde nicht initialisiert; rufen Sie " +"indexer.InitLogParser() vor der Verwendung auf" #: src/constants/errors/nginx_log.ts:12 msgid "Log path is not under whitelist" msgstr "Der Protokollpfad befindet sich nicht in der Whitelist" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "Login" @@ -4389,7 +4414,7 @@ msgstr "Login" msgid "Login successful" msgstr "Login erfolgreich" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "Logout erfolgreich" @@ -4399,19 +4424,19 @@ msgstr "Logrotate" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" -"Logrotate ist standardmäßig in den meisten gängigen Linux-Distributionen für " -"Benutzer aktiviert, die Nginx UI auf dem Host-Rechner installieren, sodass " -"du die Parameter auf dieser Seite nicht ändern musst. Wenn du Nginx UI mit " -"Docker-Containern installierst, kannst du diese Option manuell aktivieren. " -"Der Crontab-Aufgabenplaner von Nginx UI führt den Logrotate-Befehl in dem " -"von dir in Minuten festgelegten Intervall aus." +"Logrotate ist standardmäßig in den meisten gängigen Linux-Distributionen " +"für Benutzer aktiviert, die Nginx UI auf dem Host-Rechner installieren, " +"sodass du die Parameter auf dieser Seite nicht ändern musst. Wenn du Nginx " +"UI mit Docker-Containern installierst, kannst du diese Option manuell " +"aktivieren. Der Crontab-Aufgabenplaner von Nginx UI führt den " +"Logrotate-Befehl in dem von dir in Minuten festgelegten Intervall aus." #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4438,15 +4463,13 @@ msgstr "Wartungsmodus erfolgreich deaktiviert" msgid "Maintenance mode enabled successfully" msgstr "Wartungsmodus erfolgreich aktiviert" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "Wartungsmodus erfolgreich aktiviert" +msgstr "Wartungsvorlage (nur Dateiname)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "Wartung" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4457,9 +4480,9 @@ msgid "" "Make sure you have configured a reverse proxy for .well-known directory to " "HTTPChallengePort before obtaining the certificate." msgstr "" -"Stellen Sie sicher, dass Sie einen Reverse-Proxy für das .well-known-" -"Verzeichnis zum HTTPChallengePort konfiguriert haben, bevor Sie das " -"Zertifikat erhalten." +"Stellen Sie sicher, dass Sie einen Reverse-Proxy für das " +".well-known-Verzeichnis zum HTTPChallengePort konfiguriert haben, bevor Sie " +"das Zertifikat erhalten." #: src/routes/modules/config.ts:10 #: src/views/config/components/ConfigLeftPanel.vue:114 @@ -4581,10 +4604,6 @@ msgstr "Speicherdesign" msgid "Memory Usage (RSS)" msgstr "Speichernutzung (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4618,7 +4637,7 @@ msgstr "Minute" msgid "Minutes" msgstr "Minuten" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "Spiegel" @@ -4647,7 +4666,7 @@ msgid "Modify" msgstr "Ändern" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "Zertifikat ändern" @@ -4679,10 +4698,9 @@ msgstr "Monatlich" msgid "Monthly on day %{day} at %{time}" msgstr "Monatlich am %{day}. um %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "Geschützter Ordner" +msgstr "Eingebundenes Verzeichnis" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4698,8 +4716,7 @@ msgstr "Mehrzeilige Direktive" #: src/components/AutoCertForm/AutoCertForm.vue:196 msgid "Must be a public IP address accessible from the internet" -msgstr "" -"Muss eine öffentliche IP-Adresse sein, die über das Internet erreichbar ist" +msgstr "Muss eine öffentliche IP-Adresse sein, die über das Internet erreichbar ist" #: src/components/UpstreamDetailModal/UpstreamDetailModal.vue:38 #: src/components/UpstreamDetailModal/UpstreamDetailModal.vue:56 @@ -4713,6 +4730,7 @@ msgstr "N/V" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4787,7 +4805,7 @@ msgstr "Fehler beim neuen Lego-Client: {0}" msgid "New name" msgstr "Neuer Name" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "Neues Passwort" @@ -4803,12 +4821,11 @@ msgstr "Neuer Transportfehler: {0}" msgid "New version released" msgstr "Neue Version veröffentlicht" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "Nächster" @@ -4820,7 +4837,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Die Ausgabe von Nginx -T ist leer" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Nginx Zugriffslog-Pfad" @@ -4874,11 +4891,11 @@ msgstr "Die Nginx-Konfiguration wurde wiederhergestellt" msgid "Nginx Configuration Parse Error" msgstr "Nginx-Konfigurationsanalysefehler" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Nginx-Konfigurationspfad" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Nginx-Konfigurationsverzeichnis" @@ -4886,7 +4903,7 @@ msgstr "Nginx-Konfigurationsverzeichnis" msgid "Nginx Control" msgstr "Nginx-Steuerung" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Nginx-Steuerungsmodus" @@ -4895,7 +4912,7 @@ msgstr "Nginx-Steuerungsmodus" msgid "Nginx CPU usage rate" msgstr "Nginx-CPU-Auslastung" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Nginx Fehlerlog-Pfad" @@ -4931,7 +4948,7 @@ msgstr "Nginx läuft" msgid "Nginx Log" msgstr "Nginx-Log" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Nginx-Log-Verzeichnis-Whitelist" @@ -4944,7 +4961,7 @@ msgstr "Nginx-Protokollindizierung läuft..." msgid "Nginx Memory usage" msgstr "Nginx-Speichernutzung" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Nginx PID-Pfad" @@ -4952,7 +4969,7 @@ msgstr "Nginx PID-Pfad" msgid "Nginx PID path exists" msgstr "Nginx-PID-Pfad existiert" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Befehl zum Neuladen von Nginx" @@ -4973,14 +4990,13 @@ msgstr "Nginx erfolgreich neu geladen" msgid "Nginx reported a configuration syntax error." msgstr "Nginx meldete einen Syntaxfehler in der Konfiguration." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Beffehl zum Neustarten von Nginx" #: src/views/node/Node.vue:102 msgid "Nginx restart operations have been dispatched to remote nodes" -msgstr "" -"Die Nginx-Neustart-Operationen wurden an die entfernten Knoten gesendet" +msgstr "Die Nginx-Neustart-Operationen wurden an die entfernten Knoten gesendet" #: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" @@ -4990,7 +5006,7 @@ msgstr "Nginx erfolgreich neu gestartet" msgid "Nginx sbin path exists" msgstr "Der Nginx sbin-Pfad existiert" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Nginx-Testkonfigurationsbefehl" @@ -5013,12 +5029,22 @@ msgstr "Die Nginx-UI-Konfiguration wurde wiederhergestellt" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "" "Die Nginx-UI-Konfiguration wurde wiederhergestellt und wird in wenigen " "Sekunden automatisch neu gestartet." +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"Nginx UI erneuert dieses Zertifikat automatisch, sobald es sich dem " +"Ablaufdatum nähert, basierend auf dem globalen " +"Zertifikatserneuerungsintervall und der Gültigkeitsdauer dieses Zertifikats." + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf enthält das conf.d-Verzeichnis" @@ -5045,7 +5071,7 @@ msgid "No" msgstr "Nein" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "Keine Aktion" @@ -5083,10 +5109,6 @@ msgstr "Keine Einträge auf der aktuellen Seite" msgid "No geographic data available" msgstr "Keine geografischen Daten verfügbar" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "Keine Protokolle im ausgewählten Zeitraum gefunden." @@ -5148,7 +5170,7 @@ msgstr "Knotenstatus" msgid "Nodes" msgstr "Knoten" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "Nicht nach" @@ -5169,7 +5191,7 @@ msgstr "Nicht indiziert" msgid "Not Loaded" msgstr "Nicht geladen" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "Noch nicht ausgeführt" @@ -5193,17 +5215,17 @@ msgid "" "certificates, please synchronize them to the remote nodes in advance." msgstr "" "Hinweis: Wenn die Konfigurationsdatei andere Konfigurationen oder " -"Zertifikate enthält, synchronisiere sie bitte im Voraus mit den Remote-" -"Knoten." +"Zertifikate enthält, synchronisiere sie bitte im Voraus mit den " +"Remote-Knoten." #: src/views/dashboard/components/SiteHealthCheckModal.vue:603 msgid "" "Note: If the server does not support gRPC Reflection, health checks may " "fail. Please ensure your gRPC server has Reflection enabled." msgstr "" -"Hinweis: Wenn der Server gRPC-Reflexion nicht unterstützt, können Health-" -"Checks fehlschlagen. Bitte stellen Sie sicher, dass Ihr gRPC-Server die " -"Reflexion aktiviert hat." +"Hinweis: Wenn der Server gRPC-Reflexion nicht unterstützt, können " +"Health-Checks fehlschlagen. Bitte stellen Sie sicher, dass Ihr gRPC-Server " +"die Reflexion aktiviert hat." #: src/views/certificate/components/CertificateBasicInfo.vue:24 #: src/views/certificate/components/CertificateContentEditor.vue:105 @@ -5235,13 +5257,11 @@ msgstr "" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:314 msgid "Number of files processed by cache loader at once" -msgstr "" -"Anzahl der Dateien, die vom Cache-Loader gleichzeitig verarbeitet werden" +msgstr "Anzahl der Dateien, die vom Cache-Loader gleichzeitig verarbeitet werden" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:252 msgid "Number of files processed by cache manager at once" -msgstr "" -"Anzahl der Dateien, die vom Cache-Manager gleichzeitig verarbeitet werden" +msgstr "Anzahl der Dateien, die vom Cache-Manager gleichzeitig verarbeitet werden" #: src/composables/usePerformanceMetrics.ts:129 #: src/composables/usePerformanceMetrics.ts:169 @@ -5254,7 +5274,7 @@ msgstr "Anzahl der Worker-Prozesse" msgid "Obtain cert error: {0}" msgstr "Fehler beim Abrufen des Zertifikats: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "Zertifikat abrufen" @@ -5308,7 +5328,7 @@ msgstr "OIDC-Anmeldung" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5353,10 +5373,6 @@ msgstr "Nur ZIP-Dateien sind erlaubt" msgid "Open" msgstr "Offen" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "Open-Source-Einschränkung" @@ -5373,7 +5389,7 @@ msgstr "Betriebssystemstatistiken" msgid "Optional comment for this DNS record" msgstr "Optionaler Kommentar für diesen DNS-Eintrag" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "Oder" @@ -5422,11 +5438,6 @@ msgstr "Andere" msgid "Otp or recovery code empty" msgstr "OTP- oder Wiederherstellungscode leer" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "Zu überschreibende Datei existiert" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "Überschreiben" @@ -5474,10 +5485,6 @@ msgstr "Passwort" msgid "Password (*)" msgstr "Passwort (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "Falsches Passwort" @@ -5486,11 +5493,11 @@ msgstr "Falsches Passwort" msgid "Password length cannot exceed 20 characters" msgstr "Passwort darf nicht länger als 20 Zeichen sein" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "Passwort erfolgreich aktualisiert" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "Passwörter stimmen nicht überein" @@ -5511,8 +5518,7 @@ msgstr "Pfad nicht in den gewährten Zugriffspfaden: {0}" #: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:6 msgid "Path: {0} is not under the nginx conf dir: {1}" -msgstr "" -"Pfad: {0} befindet sich nicht unter dem nginx-Konfigurationsverzeichnis: {1}" +msgstr "Pfad: {0} befindet sich nicht unter dem nginx-Konfigurationsverzeichnis: {1}" #: src/constants/errors/cert.ts:6 msgid "Payload resource is nil" @@ -5563,7 +5569,7 @@ msgstr "Leistungseinstellungen erfolgreich gespeichert" msgid "Performing core upgrade" msgstr "Führe Core-Upgrade aus" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "Persönliche Informationen" @@ -5608,6 +5614,12 @@ msgstr "" msgid "Please enter" msgstr "Bitte eingeben" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "Bitte geben Sie einen Namen für das Zertifikat ein" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5628,15 +5640,21 @@ msgstr "Bitte geben Sie eine gültige IPv4- oder IPv6-Adresse ein" msgid "Please enter a valid port range" msgstr "Bitte geben Sie einen gültigen Portbereich ein" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "Bitte geben Sie mindestens eine Domain ein" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "Bitte geben Sie mindestens eine Domain oder IP-Adresse ein" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "Bitte geben Sie das Installationsgeheimnis ein, bevor Sie fortfahren" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "Bitte gib den OTP-Code ein:" @@ -5647,8 +5665,7 @@ msgstr "Bitte geben Sie das Sicherheitstoken ein" #: src/components/SystemRestore/SystemRestoreContent.vue:236 #: src/components/SystemRestore/SystemRestoreContent.vue:319 msgid "Please enter the security token received during backup" -msgstr "" -"Bitte geben Sie das während der Sicherung erhaltene Sicherheitstoken ein" +msgstr "Bitte geben Sie das während der Sicherung erhaltene Sicherheitstoken ein" #: src/components/AutoCertForm/AutoCertForm.vue:80 msgid "Please enter the server IP address" @@ -5672,23 +5689,23 @@ msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." msgstr "" -"Bitte fülle die API-Authentifizierungsdaten aus, die dir von deinem DNS-" -"Provider zur Verfügung gestellt wurden." +"Bitte fülle die API-Authentifizierungsdaten aus, die dir von deinem " +"DNS-Provider zur Verfügung gestellt wurden." #: src/components/AutoCertForm/AutoCertForm.vue:168 msgid "" "Please first add credentials in Certification > DNS Credentials, and then " "select one of the credentialsbelow to request the API of the DNS provider." msgstr "" -"Bitte füge zuerst Anmeldeinformationen in Zertifikation > DNS-" -"Anmeldeinformationen hinzu und wähle dann eine der unten aufgeführten " +"Bitte füge zuerst Anmeldeinformationen in Zertifikation > " +"DNS-Anmeldeinformationen hinzu und wähle dann eine der unten aufgeführten " "Anmeldeinformationen aus, um die API des DNS-Anbieters anzufordern." #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "" "Bitte generieren Sie sofort neue Wiederherstellungscodes in den " "Einstellungen, um eine Sperrung zu verhindern." @@ -5736,16 +5753,14 @@ msgid "Please log in." msgstr "Bitte melden Sie sich an." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "" -"Bitte beachte, dass die Zeiteinheiten der unten aufgeführten Konfigurationen " -"alle in Sekunden angegeben sind." +"Bitte beachte, dass die Zeiteinheiten der unten aufgeführten " +"Konfigurationen alle in Sekunden angegeben sind." #: src/views/install/components/InstallView.vue:136 msgid "Please resolve all issues before proceeding with installation" -msgstr "" -"Bitte beheben Sie alle Probleme, bevor Sie mit der Installation fortfahren" +msgstr "Bitte beheben Sie alle Probleme, bevor Sie mit der Installation fortfahren" #: src/views/backup/components/BackupCreator.vue:107 msgid "Please save this security token, you will need it for restoration:" @@ -5763,7 +5778,7 @@ msgstr "" "Bitte wählen Sie ein Zertifikat aus, bevor Sie die TLS-Server-Konfiguration " "speichern." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "Bitte wählen Sie eine DNS-Anmeldedaten aus" @@ -5843,10 +5858,6 @@ msgstr "Einstellungen" msgid "Preparing lego configurations" msgstr "Lego-Konfigurationen vorbereiten" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5865,10 +5876,6 @@ msgstr "Private IPs (192.168.x.x, 10.x.x.x, 172.16-31.x.x) schlagen fehl" msgid "private key" msgstr "privater Schlüssel" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "Prozess" @@ -5912,13 +5919,14 @@ msgstr "Protokoll" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" "Die Protokollkonfiguration gilt nur bei direkter Verbindung. Bei Verwendung " "eines Reverse Proxys konfigurieren Sie das Protokoll bitte separat im " "Reverse Proxy." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5957,14 +5965,6 @@ msgstr "Proxy-Ziele" msgid "Public CA Requirements:" msgstr "Anforderungen der öffentlichen CA:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "Öffentliche Sicherheitsnummer" @@ -6065,11 +6065,11 @@ msgstr "Datensatztyp" msgid "Record updated" msgstr "Datensatz aktualisiert" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "Datensätze" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "Wiederherstellung" @@ -6082,9 +6082,9 @@ msgid "" "Recovery codes are used to access your account when you lose access to your " "2FA device. Each code can only be used once." msgstr "" -"Wiederherstellungscodes werden verwendet, um auf Ihr Konto zuzugreifen, wenn " -"Sie keinen Zugriff mehr auf Ihr 2FA-Gerät haben. Jeder Code kann nur einmal " -"verwendet werden." +"Wiederherstellungscodes werden verwendet, um auf Ihr Konto zuzugreifen, " +"wenn Sie keinen Zugriff mehr auf Ihr 2FA-Gerät haben. Jeder Code kann nur " +"einmal verwendet werden." #: src/views/site/site_edit/components/RightPanel/DNS.vue:535 msgid "Recreate DNS Record" @@ -6103,7 +6103,7 @@ msgstr "Umleitungsmeldungen (3xx)" msgid "Referer" msgstr "Referer" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "Aktualisieren" @@ -6112,11 +6112,6 @@ msgstr "Aktualisieren" msgid "Refresh Modules Cache" msgstr "Modul-Cache aktualisieren" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "Auffrischen der Antwort" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "Auffrischen der Antwort" @@ -6175,7 +6170,7 @@ msgid "Reload" msgstr "Neu laden" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Nginx neu laden" @@ -6214,16 +6209,12 @@ msgstr "Lade neu" msgid "Reloading nginx" msgstr "Lade Nginx neu" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "Remote" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "Keine Knoten ausgewählt" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "Löschen" @@ -6233,6 +6224,10 @@ msgstr "Löschen" msgid "Remove successfully" msgstr "Erfolgreich entfernt" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "%{count} widersprüchliche Datensätze entfernt: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "Erfolgreich entfernt" @@ -6250,8 +6245,7 @@ msgstr "Umbenennen" #: src/components/Notification/notifications.ts:86 msgid "Rename %{orig_path} to %{new_path} on %{node_name} failed" -msgstr "" -"Umbenennung von %{orig_path} in %{new_path} auf %{node_name} fehlgeschlagen" +msgstr "Umbenennung von %{orig_path} in %{new_path} auf %{node_name} fehlgeschlagen" #: src/components/Notification/notifications.ts:90 msgid "Rename %{orig_path} to %{new_path} on %{node_name} successfully" @@ -6289,13 +6283,11 @@ msgstr "Umbenennung der Site %{name} in %{new_name} auf %{node} fehlgeschlagen" #: src/components/Notification/notifications.ts:150 msgid "Rename site %{name} to %{new_name} on %{node} successfully" -msgstr "" -"Die Umbenennung der Site %{name} in %{new_name} auf %{node} war erfolgreich" +msgstr "Die Umbenennung der Site %{name} in %{new_name} auf %{node} war erfolgreich" #: src/components/Notification/notifications.ts:186 msgid "Rename stream %{name} to %{new_name} on %{node} failed" -msgstr "" -"Umbenennung des Streams %{name} in %{new_name} auf %{node} fehlgeschlagen" +msgstr "Umbenennung des Streams %{name} in %{new_name} auf %{node} fehlgeschlagen" #: src/components/Notification/notifications.ts:190 msgid "Rename stream %{name} to %{new_name} on %{node} successfully" @@ -6315,8 +6307,8 @@ msgstr "Erfolgreich umbenannt" msgid "Renew cert error: {0}" msgstr "Fehler beim Erneuern des Zertifikats: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "Zertifikat erneuern" @@ -6328,8 +6320,7 @@ msgstr "Fehler bei der Zertifikatsverlängerung" msgid "Renew Certificate Success" msgstr "Zertifikat erfolgreich verlängert" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "Erfolgreich erneuert" @@ -6460,6 +6451,19 @@ msgstr "Diese Version wiederherstellen" msgid "Restored successfully" msgstr "Erfolgreich wiederhergestellt" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "Wiederholen" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "Zertifikatsausstellung erneut versuchen" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "Erst prüfen" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6508,11 +6512,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "Betriebsmodus" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "Zertifikat erneuern" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "Arbeite" @@ -6632,7 +6631,7 @@ msgstr "Samstag" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6642,19 +6641,14 @@ msgstr "Samstag" msgid "Save" msgstr "Speichern" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "Speicherkonfiguration" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "Anweisung speichern" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "Jetzt speichern" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "Reihenfolge speichern" @@ -6697,15 +6691,19 @@ msgstr "Stream %{name} erfolgreich auf %{node} gespeichert" msgid "Save successful" msgstr "Erfolgreich gespeichert" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "Erfolgreich gespeichert" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "Die Seitenkonfiguration jetzt speichern?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "In der gespeicherten Zertifikatsantwort fehlt eine ID." #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6715,6 +6713,15 @@ msgstr "" msgid "Saved successfully" msgstr "Speichern erfolgreich" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"Das Speichern der Site-Konfiguration ist fehlgeschlagen; die " +"Zertifikatanweisungen befinden sich im Editor – überprüfen Sie die " +"Änderungen und versuchen Sie es erneut über die Schaltfläche „Speichern“." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "Sbin-Pfad existiert nicht" @@ -6737,8 +6744,7 @@ msgstr "Scan-Ergebnisse" #: src/views/preference/components/AuthSettings/TOTP.vue:71 msgid "Scan the QR code with your mobile phone to add the account to the app." -msgstr "" -"Scanne den QR-Code mit deinem Handy, um das Konto zur App hinzuzufügen." +msgstr "Scanne den QR-Code mit deinem Handy, um das Konto zur App hinzuzufügen." #: src/views/nginx_log/indexing/components/IndexProgressBar.vue:50 msgid "Scanning" @@ -6764,7 +6770,7 @@ msgstr "SDK" msgid "Search" msgstr "Suchen" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "Suche nach Domain, Anbieter oder Ziel" @@ -6796,7 +6802,7 @@ msgstr "Vorlagen suchen" msgid "Secret has been copied" msgstr "Schlüssel wurde kopiert" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "Sicherheitseinstellungen" @@ -6845,6 +6851,10 @@ msgstr "DNS-Domain auswählen" msgid "Select existing record" msgstr "Vorhandenen Datensatz auswählen" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "Passende A/AAAA-Einträge auswählen" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6873,6 +6883,24 @@ msgstr "" "Selbstprüfung fehlgeschlagen, Nginx UI funktioniert möglicherweise nicht " "ordnungsgemäß" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "Selbstsigniertes Zertifikat" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "Selbstsigniertes Zertifikat" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "Selbstsigniertes Zertifikat angewendet" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "Selbstsigniertes Zertifikat generiert" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6887,7 +6915,7 @@ msgid "Server" msgstr "Server" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "Serverfehler" @@ -6915,7 +6943,7 @@ msgstr "Server-Namen-Hash-Bucket-Größe" msgid "Server names hash table size" msgstr "Größe der Server-Namen-Hash-Tabelle" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "server_name wurde in den Anweisungen nicht gefunden" @@ -6967,16 +6995,16 @@ msgstr "Setze HTTP01-Challengeanbieter" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" "Settings.NginxLogSettings.AccessLogPath ist leer, weitere Informationen " "finden Sie unter https://nginxui.com/guide/config-nginx.html" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" "Settings.NginxLogSettings.ErrorLogPath ist leer, weitere Informationen " "finden Sie unter https://nginxui.com/guide/config-nginx.html" @@ -6998,7 +7026,7 @@ msgstr "Zeige" msgid "Show Assistant" msgstr "Assistent anzeigen" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "Mit einem Passkey anmelden" @@ -7084,10 +7112,6 @@ msgstr "Größe" msgid "Skip Installation" msgstr "Installation überspringen" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "Wartezeit zwischen den Iterationen des Cache-Loaders" @@ -7100,6 +7124,12 @@ msgstr "Wartezeit zwischen den Iterationen des Cache-Managers" msgid "Socket" msgstr "Socket" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "" +"Einige Browser lehnen TLS-Zertifikate ab, die länger als 398 Tage gültig " +"sind." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "Sortiert nach" @@ -7116,15 +7146,6 @@ msgstr "Sponsor" msgid "SSD storage for better I/O performance" msgstr "SSD-Speicher für bessere E/A-Leistung" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "2+ Kerne empfohlen" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7214,9 +7235,9 @@ msgstr "Statisch" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7291,7 +7312,7 @@ msgstr "Streams-enabled-Verzeichnis existiert nicht" msgid "Structured" msgstr "Strukturiert" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Stub-Status-Port" @@ -7299,7 +7320,7 @@ msgstr "Stub-Status-Port" msgid "Stub_status is not enabled" msgstr "Stub_status ist nicht aktiviert" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7317,9 +7338,9 @@ msgstr "Sonntag" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" "Unterstützt die Kommunikation mit dem Backend über das WebSocket-Protokoll. " "Wenn Ihre Nginx-UI über einen Nginx-Reverse-Proxy verwendet wird, lesen Sie " @@ -7363,8 +7384,7 @@ msgstr "Zertifikat synchronisieren" #: src/components/Notification/notifications.ts:70 msgid "Sync Certificate %{cert_name} to %{node_name} failed" -msgstr "" -"Synchronisierung des Zertifikats %{cert_name} zu %{node_name} fehlgeschlagen" +msgstr "Synchronisierung des Zertifikats %{cert_name} zu %{node_name} fehlgeschlagen" #: src/components/Notification/notifications.ts:74 msgid "Sync Certificate %{cert_name} to %{node_name} successfully" @@ -7386,8 +7406,7 @@ msgstr "" #: src/components/Notification/notifications.ts:82 msgid "Sync config %{config_name} to %{node_name} successfully" -msgstr "" -"Konfiguration %{config_name} erfolgreich auf %{node_name} synchronisiert" +msgstr "Konfiguration %{config_name} erfolgreich auf %{node_name} synchronisiert" #: src/components/Notification/notifications.ts:77 src/language/constants.ts:45 msgid "Sync Config Error" @@ -7415,6 +7434,7 @@ msgid "Sync strategy" msgstr "Synchronisierungsstrategie" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "Synchronisieren mit" @@ -7452,21 +7472,13 @@ msgstr "Systemwiederherstellung" msgid "System restored successfully." msgstr "System erfolgreich wiederhergestellt." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "Ziele" @@ -7505,8 +7517,7 @@ msgstr "Test fehlgeschlagen: %{error}" #: src/views/dashboard/components/SiteHealthCheckModal.vue:456 msgid "Test failed: Unable to perform health check" -msgstr "" -"Test fehlgeschlagen: Gesundheitsprüfung konnte nicht durchgeführt werden" +msgstr "Test fehlgeschlagen: Gesundheitsprüfung konnte nicht durchgeführt werden" #: src/views/preference/components/ExternalNotify/ExternalNotifyEditor.vue:53 #: src/views/preference/tabs/ExternalNotify.vue:28 @@ -7532,32 +7543,43 @@ msgid "" "since it was last issued." msgstr "" "Das Zertifikat für die Domain wird alle 30 Minuten überprüft und erneuert, " -"wenn seit der letzten Ausstellung mehr als 1 Woche oder der von Ihnen in den " -"Einstellungen festgelegte Zeitraum vergangen ist." +"wenn seit der letzten Ausstellung mehr als 1 Woche oder der von Ihnen in " +"den Einstellungen festgelegte Zeitraum vergangen ist." + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"Das Zertifikat wurde unter %{path} erstellt und die " +"ssl_certificate-Direktiven wurden zum aktuellen Server-Block hinzugefügt. " +"Speichern Sie die Konfiguration jetzt, oder überprüfen Sie die Änderungen " +"im Editor und speichern Sie sie manuell." #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "Die folgenden Websites werden deaktiviert:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "Die folgenden Websites werden aktiviert:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" "Die GeoLite2-Datenbank ist für die Offline-Geografische IP-Analyse " "erforderlich. Bitte laden Sie sie herunter, um diese Funktion zu aktivieren." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" -"Die GeoLite2-Datenbank bietet geografische Informationen zu IP-Adressen. Sie " -"wird für die Offline-Geographieanalyse in Loganalysen verwendet." +"Die GeoLite2-Datenbank bietet geografische Informationen zu IP-Adressen. " +"Sie wird für die Offline-Geographieanalyse in Loganalysen verwendet." #: src/views/preference/tabs/NodeSettings.vue:37 msgid "" @@ -7580,15 +7602,16 @@ msgid "" "The linked DNS record was deleted from the DNS server. You can recreate it " "or clear the link." msgstr "" -"Der verknüpfte DNS-Eintrag wurde vom DNS-Server gelöscht. Sie können ihn neu " -"erstellen oder die Verknüpfung löschen." +"Der verknüpfte DNS-Eintrag wurde vom DNS-Server gelöscht. Sie können ihn " +"neu erstellen oder die Verknüpfung löschen." #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" -"Der Protokollpfad befindet sich nicht unter den Pfaden in settings." -"NginxSettings.LogDirWhiteList" +"Der Protokollpfad befindet sich nicht unter den Pfaden in " +"settings.NginxSettings.LogDirWhiteList" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 @@ -7600,8 +7623,7 @@ msgstr "" "Doppelpunkte und Punkte enthalten." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" "Das Modell, das für die Code-Vervollständigung verwendet wird. Wenn nicht " "festgelegt, wird das Chat-Modell verwendet." @@ -7641,17 +7663,17 @@ msgid "" "version. To avoid potential errors, please upgrade the remote Nginx UI to " "match the local version." msgstr "" -"Die Version vom entfernten Nginx-UI ist nicht mit der lokalen Nginx-UI-" -"Version kompatibel. Um potenzielle Fehler zu vermeiden, aktualisiere bitte " -"das entfernte Nginx-UI, um die lokale Version anzupassen." +"Die Version vom entfernten Nginx-UI ist nicht mit der lokalen " +"Nginx-UI-Version kompatibel. Um potenzielle Fehler zu vermeiden, " +"aktualisiere bitte das entfernte Nginx-UI, um die lokale Version anzupassen." #: src/components/AutoCertForm/AutoCertForm.vue:155 msgid "" "The server_name in the current configuration must be the domain name you " "need to get the certificate, supportmultiple domains." msgstr "" -"Der server_name in der aktuellen Konfiguration muss der Domainname sein, für " -"den Sie das Zertifikat benötigen, und mehrere Domains unterstützen." +"Der server_name in der aktuellen Konfiguration muss der Domainname sein, " +"für den Sie das Zertifikat benötigen, und mehrere Domains unterstützen." #: src/views/preference/tabs/CertSettings.vue:23 #: src/views/preference/tabs/HTTPSettings.vue:14 @@ -7675,7 +7697,7 @@ msgstr "Theoretische maximale gleichzeitige Verbindungen:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "Theoretische maximale RPS (Requests Per Second):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " @@ -7731,17 +7753,14 @@ msgid "This field should not be empty" msgstr "Dieses Feld darf nicht leer sein" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." -msgstr "" -"Dieses Feld sollte nur Buchstaben, Unicode-Zeichen, Zahlen und -_ enthalten." +msgid "This field should only contain letters, unicode characters, numbers, and -_." +msgstr "Dieses Feld sollte nur Buchstaben, Unicode-Zeichen, Zahlen und -_ enthalten." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" -msgstr "" -"Dieses Feld darf nur Buchstaben, Unicode-Zeichen, Zahlen und -_./: enthalten" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" +msgstr "Dieses Feld darf nur Buchstaben, Unicode-Zeichen, Zahlen und -_./: enthalten" #: src/components/Notification/notifications.ts:102 msgid "This is a test message sent at %{timestamp} from Nginx UI." @@ -7757,10 +7776,6 @@ msgstr "" "Dieser Modus zeigt nur den Installations-UI-Ablauf an und ändert keinen " "Serverstatus." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " @@ -7785,27 +7800,35 @@ msgstr "" "Diese Aktion entfernt das Zertifikat nur aus der Datenbank. Die " "Zertifikatsdateien im Dateisystem werden nicht gelöscht." +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "" +"Dieses selbstsignierte Zertifikat wird von Nginx UI verwaltet und " +"automatisch erneuert." + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" "Diese Website ist als Standard-Server (default_server) für HTTPS (Port 443) " "konfiguriert. IP-Zertifikate erfordern die Unterstützung einer " -"Zertifizierungsstelle (CA) und sind möglicherweise nicht bei allen ACME-" -"Anbietern verfügbar." +"Zertifizierungsstelle (CA) und sind möglicherweise nicht bei allen " +"ACME-Anbietern verfügbar." #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" "Diese Website verwendet einen Wildcard-Servernamen (_), der normalerweise " "auf ein IP-basiertes Zertifikat hinweist. IP-Zertifikate erfordern die " -"Unterstützung einer Zertifizierungsstelle (CA) und sind möglicherweise nicht " -"bei allen ACME-Anbietern verfügbar." +"Unterstützung einer Zertifizierungsstelle (CA) und sind möglicherweise " +"nicht bei allen ACME-Anbietern verfügbar." #: src/views/backup/components/BackupCreator.vue:141 msgid "" @@ -7858,8 +7881,7 @@ msgstr "" "Nginx UI wird nach Abschluss der Wiederherstellung neu gestartet." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" "Dies wird das Nginx UI auf %{nodeNames} auf %{version} aktualisieren oder " "neu installieren." @@ -7936,8 +7958,8 @@ msgstr "" #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" "Um sicherzustellen, dass die automatische Zertifikatserneuerung normal " @@ -7949,9 +7971,9 @@ msgid "" "provide an OpenAI-compatible API endpoint, so just set the baseUrl to your " "local API." msgstr "" -"Um ein lokales großes Modell zu verwenden, implementiere es mit ollama, vllm " -"oder lmdeploy. Sie bieten einen OpenAI-kompatiblen API-Endpunkt, also setze " -"die baseUrl auf deine lokale API." +"Um ein lokales großes Modell zu verwenden, implementiere es mit ollama, " +"vllm oder lmdeploy. Sie bieten einen OpenAI-kompatiblen API-Endpunkt, also " +"setze die baseUrl auf deine lokale API." #: src/views/dashboard/NginxDashBoard.vue:56 msgid "Toggle failed" @@ -8043,8 +8065,8 @@ msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." msgstr "" -"TOTP ist eine Zwei-Faktor-Authentifizierungsmethode, die einen zeitbasierten " -"Einmalpasswortalgorithmus verwendet." +"TOTP ist eine Zwei-Faktor-Authentifizierungsmethode, die einen " +"zeitbasierten Einmalpasswortalgorithmus verwendet." #: src/views/nginx_log/structured/StructuredLogViewer.vue:781 msgid "Traffic" @@ -8083,7 +8105,7 @@ msgstr "TTL (Sekunden)" msgid "Tuesday" msgstr "Dienstag" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "Zwei-Faktor-Authentifizierung erforderlich" @@ -8104,10 +8126,6 @@ msgstr "Typ" msgid "Type %{delete} to confirm" msgstr "Geben Sie %{delete} zur Bestätigung ein" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "Geben Sie A/AAAA-Datensätze ein oder wählen Sie sie aus" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "Browser eingeben oder auswählen" @@ -8153,11 +8171,11 @@ msgstr "Nicht unterstütztes Log-Format" msgid "Update already in progress" msgstr "Aktualisierung läuft bereits" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "Passwort aktualisieren" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "Profil aktualisieren" @@ -8246,11 +8264,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "Verwenden Sie @ für die Root-Domain" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "Benutze OTP" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "Benuzte Wiederherstellungscode" @@ -8258,10 +8276,6 @@ msgstr "Benuzte Wiederherstellungscode" msgid "Use Temporary Path" msgstr "Temporären Pfad verwenden" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "Benutzer" @@ -8275,7 +8289,7 @@ msgstr "User-Agent" msgid "User banned" msgstr "Benutzer gesperrt" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "Benutzerinformationen erfolgreich aktualisiert" @@ -8288,7 +8302,7 @@ msgid "User Profile" msgstr "Benutzerprofil" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "Benutzername" @@ -8306,10 +8320,14 @@ msgstr "UV" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "Gültig" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "Gültig für (Tage)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "SSL-Zertifikat validieren" @@ -8320,11 +8338,6 @@ msgstr "SSL-Zertifikat validieren" msgid "Value" msgstr "Wert" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "Geheimnis überprüfen" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8361,7 +8374,7 @@ msgstr "Alle Benachrichtigungen anzeigen" msgid "View on GitHub" msgstr "Auf GitHub anzeigen" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "Wiederherstellungscodes anzeigen" @@ -8389,7 +8402,7 @@ msgstr "Besuche" msgid "Waiting processes" msgstr "Warteverfahren" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8423,10 +8436,10 @@ msgstr "" msgid "We do not accept any feature requests" msgstr "Wir akzeptieren keine Funktionsanfragen" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" "Wir werden die HTTPChallenge-Konfiguration aus dieser Datei entfernen und " "das Nginx neu laden. Möchtest du fortfahren?" @@ -8464,6 +8477,19 @@ msgstr "Wöchentlich am %{day} um %{time}" msgid "Weight" msgstr "Gewicht" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"Wenn aktiviert, besitzt DDNS die ausgewählten Namen: Es koppelt automatisch " +"verwandte Familien-Datensätze, erstellt fehlende Datensätze und entfernt " +"Datensätze, deren IP-Familie nicht erreichbar ist. Deaktivieren Sie die " +"Option, um nur die explizit ausgewählten Datensätze zu verwalten und den " +"gesamten anderen DNS-Zustand unverändert zu lassen." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8485,13 +8511,13 @@ msgstr "" "werden die im Namespace festgelegten Knoten und die unten ausgewählten " "Knoten synchronisiert." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." msgstr "" -"Wenn Sie neue Wiederherstellungscodes generieren, müssen Sie die neuen Codes " -"herunterladen oder ausdrucken." +"Wenn Sie neue Wiederherstellungscodes generieren, müssen Sie die neuen " +"Codes herunterladen oder ausdrucken." #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:159 msgid "Whether to use a temporary path when writing temporary files" @@ -8499,7 +8525,7 @@ msgstr "" "Ob ein temporärer Pfad beim Schreiben temporärer Dateien verwendet werden " "soll" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "Wildcard-Zertifikat" @@ -8518,7 +8544,7 @@ msgstr "Worker-Prozesse" msgid "Workers" msgstr "Worker" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "Arbeitsplatz" @@ -8557,11 +8583,12 @@ msgstr "Ja" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" -"Sie greifen auf dieses Terminal über eine unsichere HTTP-Verbindung in einer " -"Nicht-Localhost-Domäne zu. Dies könnte sensible Informationen preisgeben." +"Sie greifen auf dieses Terminal über eine unsichere HTTP-Verbindung in " +"einer Nicht-Localhost-Domäne zu. Dies könnte sensible Informationen " +"preisgeben." #: src/constants/errors/config.ts:12 msgid "You are not allowed to delete a file outside of the nginx config path" @@ -8592,18 +8619,35 @@ msgstr "" "keinen Passkey hinzufügen." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" "Sie haben die 2FA noch nicht aktiviert. Bitte aktivieren Sie die 2FA, um " "Wiederherstellungscodes zu generieren." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "Sie haben noch keine Wiederherstellungscodes generiert." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"Ihr Konto verwendet noch einen veralteten Wiederherstellungscode. " +"Generieren Sie nach der Überprüfung neue Wiederherstellungscodes, um die " +"Kontowiederherstellung abzusichern." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"Ihr Konto verwendet einen veralteten Wiederherstellungscode. Generieren Sie " +"jetzt neue Wiederherstellungscodes, um die Migration abzuschließen und die " +"Konto-Wiederherstellung sicher zu halten." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" @@ -8611,8 +8655,17 @@ msgstr "" "Bitte generieren Sie so bald wie möglich neue Wiederherstellungscodes, um " "die Sicherheit zu gewährleisten." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"Ihr bisheriger Wiederherstellungscode wurde verwendet und kann nicht erneut " +"verwendet werden. Generieren Sie jetzt neue Wiederherstellungscodes, um die " +"Kontowiederherstellung verfügbar zu halten." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "Ihre alten Codes funktionieren nicht mehr." @@ -8624,6 +8677,61 @@ msgstr "Deine Passkeys" msgid "Zero-allocation pipeline" msgstr "Allokationsfreie Pipeline" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx konnte die Konfiguration nicht validieren." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "Authentifizierung läuft..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Verbunden" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "Inhalt" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "Kopieren" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "Externer Docker-Container" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "Generieren" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "Zu überschreibende Datei existiert" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "Auffrischen der Antwort" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "Keine Knoten ausgewählt" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "Zertifikat erneuern" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "2+ Kerne empfohlen" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "Geben Sie A/AAAA-Datensätze ein oder wählen Sie sie aus" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "Geheimnis überprüfen" + #~ msgid "OpenAI" #~ msgstr "OpenAI" @@ -8633,8 +8741,7 @@ msgstr "Allokationsfreie Pipeline" #~ "manipuliert worden sein" #~ msgid "Once the verification is complete, the records will be removed." -#~ msgstr "" -#~ "Sobaöd die Überprüfung abgeschlossen ist, werden die Einträge entfernt." +#~ msgstr "Sobaöd die Überprüfung abgeschlossen ist, werden die Einträge entfernt." #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " @@ -8808,15 +8915,15 @@ msgstr "Allokationsfreie Pipeline" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" #~ "Unterstützung der Kommunikation mit dem Backend über das Server-Sent " #~ "Events-Protokoll. Wenn Ihre Nginx UI über einen Nginx-Reverse-Proxy " #~ "verwendet wird, lesen Sie bitte diesen Link, um die entsprechende " -#~ "Konfigurationsdatei zu schreiben: https://nginxui.com/guide/nginx-proxy-" -#~ "example.html" +#~ "Konfigurationsdatei zu schreiben: " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "Wenn leer, wird das Standard-CA-Verzeichnis verwendet." @@ -8858,8 +8965,7 @@ msgstr "Allokationsfreie Pipeline" #~ msgstr "Massenaktion erfolgreich angewendet" #~ msgid "Are you sure you want to apply to all selected?" -#~ msgstr "" -#~ "Sind Sie sicher, dass Sie dies auf alle Ausgewählten anwenden möchten?" +#~ msgstr "Sind Sie sicher, dass Sie dies auf alle Ausgewählten anwenden möchten?" #~ msgid "Are you sure you want to delete this item permanently?" #~ msgstr "Sind Sie sicher, dass Sie diesen Artikel endgültig löschen möchten?" @@ -8896,17 +9002,15 @@ msgstr "Allokationsfreie Pipeline" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" -#~ "Überprüfen Sie, ob /var/run/docker.sock existiert. Wenn Sie das " -#~ "offizielle Nginx UI Docker-Image verwenden, stellen Sie sicher, dass der " -#~ "Docker-Socket wie folgt eingehängt ist: `-v /var/run/docker.sock:/var/run/" -#~ "docker.sock`." +#~ "Überprüfen Sie, ob /var/run/docker.sock existiert. Wenn Sie das offizielle " +#~ "Nginx UI Docker-Image verwenden, stellen Sie sicher, dass der Docker-Socket " +#~ "wie folgt eingehängt ist: `-v /var/run/docker.sock:/var/run/docker.sock`." #~ msgid "Check if the nginx access log path exists" -#~ msgstr "" -#~ "Überprüfen Sie, ob der Pfad für das Nginx-Zugriffsprotokoll existiert" +#~ msgstr "Überprüfen Sie, ob der Pfad für das Nginx-Zugriffsprotokoll existiert" #~ msgid "Check if the nginx error log path exists" #~ msgstr "Überprüfen Sie, ob der Pfad für das Nginx-Fehlerprotokoll existiert" @@ -8934,8 +9038,8 @@ msgstr "Allokationsfreie Pipeline" #, fuzzy #~ msgid "" -#~ "When you enable/disable, delete, or save this stream, the nodes set in " -#~ "the Node Group and the nodes selected below will be synchronized." +#~ "When you enable/disable, delete, or save this stream, the nodes set in the " +#~ "Node Group and the nodes selected below will be synchronized." #~ msgstr "" #~ "Wenn du diese Seite aktivierst/deaktivierst, löschst oder speicherst, " #~ "werden die Knoten, die in der Seitenkategorie festgelegt sind, und die " @@ -8996,14 +9100,11 @@ msgstr "Allokationsfreie Pipeline" #~ msgstr "Speichern erfolgreich" #, fuzzy -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" #~ msgstr "Speichern erfolgreich" #, fuzzy -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" #~ msgstr "Speichern erfolgreich" #, fuzzy @@ -9017,8 +9118,7 @@ msgstr "Allokationsfreie Pipeline" #~ msgstr "Speichern erfolgreich" #, fuzzy -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "Speichern erfolgreich" #, fuzzy @@ -9032,8 +9132,8 @@ msgstr "Allokationsfreie Pipeline" #~ msgstr "Scannt nicht möglich? Verwenden Sie die Texttastenbindung" #~ msgid "" -#~ "If you lose your mobile phone, you can use the recovery code to reset " -#~ "your 2FA." +#~ "If you lose your mobile phone, you can use the recovery code to reset your " +#~ "2FA." #~ msgstr "" #~ "Wenn du dein Handy verlierst, kannst du den Wiederherstellungscode " #~ "verwenden, um dein 2FA zurückzusetzen." @@ -9041,15 +9141,13 @@ msgstr "Allokationsfreie Pipeline" #~ msgid "Incorrect username or password" #~ msgstr "Falcher Benutzername oder Passwort" -#~ msgid "" -#~ "The recovery code is only displayed once, please save it in a safe place." +#~ msgid "The recovery code is only displayed once, please save it in a safe place." #~ msgstr "" #~ "Der Wiederherstellungscode wird nur einmal angezeigt, bitte speichere ihn " #~ "an einem sicheren Ort." #~ msgid "Too many login failed attempts, please try again later" -#~ msgstr "" -#~ "Zu viele fehlgeschlagene Anmeldeversuche, bitte versuche es später erneut" +#~ msgstr "Zu viele fehlgeschlagene Anmeldeversuche, bitte versuche es später erneut" #, fuzzy #~ msgid "" @@ -9097,15 +9195,15 @@ msgstr "Allokationsfreie Pipeline" #~ msgstr "Nur DNS-Eintragsverwaltung" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" #~ "DNS-Domains werden in NGINX UI zur Verwaltung von DNS-Einträgen verwendet " #~ "und sind von ACME DNS-01-Zertifikats-Challenges getrennt." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" #~ "Derzeit unterstützt die DNS-Eintragsverwaltung nur Alibaba Cloud DNS, " #~ "Tencent Cloud DNS und Cloudflare." @@ -9118,6 +9216,7 @@ msgstr "Allokationsfreie Pipeline" #~ "unter DNS > Zugangsdaten und wählen Sie diese in den " #~ "Zertifikatseinstellungen aus." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains verwenden nur Anbieter mit Implementierungen für die DNS-Eintragsverwaltung." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "" +#~ "DNS Domains verwenden nur Anbieter mit Implementierungen für die " +#~ "DNS-Eintragsverwaltung." diff --git a/app/src/language/en/app.po b/app/src/language/en/app.po index 327e62fd..e569cc91 100644 --- a/app/src/language/en/app.po +++ b/app/src/language/en/app.po @@ -104,10 +104,6 @@ msgid "" "Actual performance may vary based on your hardware configuration." msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "" @@ -117,8 +113,8 @@ msgid "" "%{provider} can be used for ACME DNS-01 certificate challenges and DNS " "record management in DNS Domains." msgstr "" -"%{provider} can be used for ACME DNS-01 certificate challenges and DNS record " -"management in DNS Domains." +"%{provider} can be used for ACME DNS-01 certificate challenges and DNS " +"record management in DNS Domains." #: src/views/dns/components/DNSChallenge.vue:62 msgid "" @@ -159,7 +155,7 @@ msgstr "" msgid "2FA" msgstr "" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "" @@ -167,11 +163,23 @@ msgstr "" msgid "4GB+ RAM recommended" msgstr "" +#: src/views/dns/DDNSManager.vue:86 +msgid "" +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "" + #: src/components/InspectConfig/InspectConfig.vue:37 msgid "" "A required include file is missing from the sandbox or source configuration." msgstr "" +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" + #: src/routes/modules/system.ts:38 msgid "About" msgstr "" @@ -189,10 +197,6 @@ msgstr "" msgid "Access Logs" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -204,10 +208,10 @@ msgstr "" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -249,7 +253,8 @@ msgstr "" msgid "Add Directive Below" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "" @@ -257,6 +262,14 @@ msgstr "" msgid "Add Header" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -327,10 +340,6 @@ msgstr "" msgid "All" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -msgid "All checks passed you may save the configuration." -msgstr "" - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "" @@ -340,7 +349,7 @@ msgstr "" msgid "All Recovery Codes Have Been Used" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -389,10 +398,6 @@ msgstr "" msgid "App" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "" @@ -405,7 +410,7 @@ msgstr "" msgid "Are you sure to delete this banned IP immediately?" msgstr "" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "" @@ -417,7 +422,7 @@ msgstr "" msgid "Are you sure to delete this record?" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "" @@ -493,12 +498,11 @@ msgstr "" msgid "Attempts" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "" @@ -506,10 +510,6 @@ msgstr "" msgid "Authenticating..." msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -msgid "Authentication method" -msgstr "" - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -557,15 +557,15 @@ msgstr "" msgid "Auto refresh enabled" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "" @@ -743,12 +743,6 @@ msgstr "" msgid "Belows are selected items that you want to batch modify" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "" @@ -833,14 +827,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -930,6 +924,10 @@ msgstr "" msgid "Certificate decode error" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "" @@ -948,6 +946,14 @@ msgstr "" msgid "Certificate files downloaded successfully" msgstr "" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "" @@ -982,18 +988,19 @@ msgid "Certificate revoked successfully" msgstr "" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "" msgstr[1] "" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "" @@ -1014,11 +1021,11 @@ msgstr "" msgid "Change Certificate" msgstr "" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "" @@ -1169,6 +1176,10 @@ msgstr "" msgid "Cipher text is too short" msgstr "" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "" @@ -1378,11 +1389,11 @@ msgstr "" msgid "Configurations" msgstr "" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "" @@ -1394,7 +1405,7 @@ msgstr "" msgid "Confirm Delete" msgstr "" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "" @@ -1407,10 +1418,6 @@ msgstr "" msgid "Connected" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -msgid "Connection" -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "" @@ -1423,14 +1430,6 @@ msgstr "" msgid "Connection timeout period" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -msgid "Container" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "" @@ -1443,8 +1442,7 @@ msgstr "" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "" @@ -1455,18 +1453,13 @@ msgstr "" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -msgid "Copy fix" -msgstr "" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "" @@ -1565,7 +1558,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "" @@ -1597,7 +1590,7 @@ msgstr "" msgid "Current Content" msgstr "" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "" @@ -1623,11 +1616,11 @@ msgstr "" msgid "Custom Directory" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "" @@ -1688,15 +1681,15 @@ msgstr "" msgid "DDNS" msgstr "" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "" @@ -1725,7 +1718,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "" @@ -1923,7 +1916,7 @@ msgstr "" msgid "Disable" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "" @@ -1978,7 +1971,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2097,7 +2090,7 @@ msgstr "" msgid "Do you want to %{action} this stream?" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "" @@ -2126,10 +2119,6 @@ msgstr "" msgid "Docker client not initialized" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "" @@ -2138,10 +2127,6 @@ msgstr "" msgid "Docker socket not exist" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2153,11 +2138,15 @@ msgstr[1] "" msgid "Document Count" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" @@ -2301,7 +2290,7 @@ msgstr "" msgid "Enable Advanced Log Indexing" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "" @@ -2313,7 +2302,7 @@ msgstr "" msgid "Enable compression for content transfer" msgstr "" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "" @@ -2410,7 +2399,7 @@ msgid "Enable TOTP" msgstr "" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2459,10 +2448,19 @@ msgstr "" msgid "End Date" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "" @@ -2477,7 +2475,7 @@ msgid "" "the config directory hidden file to unlock setup." msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "" @@ -2489,7 +2487,7 @@ msgstr "" msgid "Environment variables cleaned" msgstr "" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2571,7 +2569,7 @@ msgid "Expected Text" msgstr "" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "" @@ -2595,11 +2593,7 @@ msgid "" "like ZeroSSL." msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:89 -msgid "External Container" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "" @@ -2622,6 +2616,7 @@ msgstr "" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "" @@ -2861,6 +2856,11 @@ msgstr "" msgid "Failed to generate initialization vector: {0}" msgstr "" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "" @@ -3268,20 +3268,24 @@ msgstr "" msgid "General Certificate" msgstr "" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -msgid "Generate keypair" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "" @@ -3289,6 +3293,14 @@ msgstr "" msgid "Generate recovery codes successfully" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "" @@ -3365,6 +3377,10 @@ msgstr "" msgid "Go to Raw Log Viewer" msgstr "" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "" @@ -3430,10 +3446,6 @@ msgstr "" msgid "Hide Assistant" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3455,27 +3467,10 @@ msgid "Home" msgstr "" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "" @@ -3541,12 +3536,12 @@ msgid "" "need to enable this option." msgstr "" -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "" @@ -3607,7 +3602,7 @@ msgstr "" msgid "Indicator" msgstr "" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "" @@ -3631,7 +3626,7 @@ msgstr "" msgid "Input the code from the app:" msgstr "" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "" @@ -3688,12 +3683,12 @@ msgid "" "restart the Nginx UI." msgstr "" -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "" @@ -3767,7 +3762,7 @@ msgstr "" msgid "Invalid padding in decrypted data" msgstr "" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "" @@ -3820,15 +3815,43 @@ msgstr "" msgid "IP Address / Target" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "" @@ -3836,10 +3859,18 @@ msgstr "" msgid "Issued certificate successfully" msgstr "" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "" + #: src/language/curd.ts:6 msgid "item(s)" msgstr "" @@ -3859,7 +3890,8 @@ msgid "Keepalive Timeout" msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "" @@ -3941,7 +3973,7 @@ msgstr "" msgid "Last month" msgstr "" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "" @@ -3957,6 +3989,10 @@ msgstr "" msgid "Last used at" msgstr "" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "" @@ -3989,6 +4025,13 @@ msgstr "" msgid "Leave blank will not change anything" msgstr "" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "" @@ -4089,18 +4132,14 @@ msgstr "" #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "" @@ -4113,7 +4152,7 @@ msgstr "" msgid "Locations" msgstr "" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "" @@ -4164,7 +4203,7 @@ msgstr "" msgid "Log path is not under whitelist" msgstr "" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "" @@ -4172,7 +4211,7 @@ msgstr "" msgid "Login successful" msgstr "" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "" @@ -4215,11 +4254,11 @@ msgstr "" msgid "Maintenance mode enabled successfully" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:38 +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:41 +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" msgstr "" @@ -4353,10 +4392,6 @@ msgstr "" msgid "Memory Usage (RSS)" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4390,7 +4425,7 @@ msgstr "" msgid "Minutes" msgstr "" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "" @@ -4419,7 +4454,7 @@ msgid "Modify" msgstr "" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "" @@ -4451,7 +4486,7 @@ msgstr "" msgid "Monthly on day %{day} at %{time}" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:44 +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" msgstr "" @@ -4483,6 +4518,7 @@ msgstr "" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4555,7 +4591,7 @@ msgstr "" msgid "New name" msgstr "" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "" @@ -4571,12 +4607,11 @@ msgstr "" msgid "New version released" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "" @@ -4588,7 +4623,7 @@ msgstr "" msgid "Nginx -T output is empty" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "" @@ -4642,11 +4677,11 @@ msgstr "" msgid "Nginx Configuration Parse Error" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "" @@ -4654,7 +4689,7 @@ msgstr "" msgid "Nginx Control" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "" @@ -4663,7 +4698,7 @@ msgstr "" msgid "Nginx CPU usage rate" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "" @@ -4699,7 +4734,7 @@ msgstr "" msgid "Nginx Log" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "" @@ -4712,7 +4747,7 @@ msgstr "" msgid "Nginx Memory usage" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "" @@ -4720,7 +4755,7 @@ msgstr "" msgid "Nginx PID path exists" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "" @@ -4741,7 +4776,7 @@ msgstr "" msgid "Nginx reported a configuration syntax error." msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "" @@ -4757,7 +4792,7 @@ msgstr "" msgid "Nginx sbin path exists" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "" @@ -4784,6 +4819,13 @@ msgid "" "few seconds." msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "" @@ -4810,7 +4852,7 @@ msgid "No" msgstr "" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "" @@ -4848,10 +4890,6 @@ msgstr "" msgid "No geographic data available" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "" @@ -4911,7 +4949,7 @@ msgstr "" msgid "Nodes" msgstr "" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "" @@ -4932,7 +4970,7 @@ msgstr "" msgid "Not Loaded" msgstr "" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "" @@ -5007,7 +5045,7 @@ msgstr "" msgid "Obtain cert error: {0}" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "" @@ -5059,7 +5097,7 @@ msgstr "" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5101,10 +5139,6 @@ msgstr "" msgid "Open" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "" @@ -5121,7 +5155,7 @@ msgstr "" msgid "Optional comment for this DNS record" msgstr "" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "" @@ -5170,10 +5204,6 @@ msgstr "" msgid "Otp or recovery code empty" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -msgid "override file" -msgstr "" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "" @@ -5218,10 +5248,6 @@ msgstr "" msgid "Password (*)" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "" @@ -5230,11 +5256,11 @@ msgstr "" msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "" @@ -5306,7 +5332,7 @@ msgstr "" msgid "Performing core upgrade" msgstr "" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "" @@ -5347,6 +5373,12 @@ msgstr "" msgid "Please enter" msgstr "" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5365,15 +5397,21 @@ msgstr "" msgid "Please enter a valid port range" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "" @@ -5481,7 +5519,7 @@ msgstr "" msgid "Please select a certificate before saving the TLS server configuration." msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "" @@ -5561,10 +5599,6 @@ msgstr "" msgid "Preparing lego configurations" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5583,10 +5617,6 @@ msgstr "" msgid "private key" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "" @@ -5633,7 +5663,7 @@ msgid "" "reverse proxy, please configure the protocol separately in the reverse proxy." msgstr "" -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5672,14 +5702,6 @@ msgstr "" msgid "Public CA Requirements:" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "" @@ -5780,11 +5802,11 @@ msgstr "" msgid "Record updated" msgstr "" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "" @@ -5815,7 +5837,7 @@ msgstr "" msgid "Referer" msgstr "" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "" @@ -5824,10 +5846,6 @@ msgstr "" msgid "Refresh Modules Cache" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -msgid "Regenerate keypair" -msgstr "" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "" @@ -5884,7 +5902,7 @@ msgid "Reload" msgstr "" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "" @@ -5921,15 +5939,12 @@ msgstr "" msgid "Reloading nginx" msgstr "" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -msgid "Remote address detected" -msgstr "" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "" @@ -5939,6 +5954,10 @@ msgstr "" msgid "Remove successfully" msgstr "" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "" @@ -6018,8 +6037,8 @@ msgstr "" msgid "Renew cert error: {0}" msgstr "" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "" @@ -6031,8 +6050,7 @@ msgstr "" msgid "Renew Certificate Success" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "" @@ -6158,6 +6176,19 @@ msgstr "" msgid "Restored successfully" msgstr "" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6202,10 +6233,6 @@ msgstr "" msgid "Run Mode" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -msgid "Run verification" -msgstr "" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "" @@ -6323,7 +6350,7 @@ msgstr "" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6333,18 +6360,14 @@ msgstr "" msgid "Save" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -msgid "Save configuration" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "" @@ -6387,14 +6410,18 @@ msgstr "" msgid "Save successful" msgstr "" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" msgstr "" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 @@ -6405,6 +6432,12 @@ msgstr "" msgid "Saved successfully" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor review the changes and retry from the Save button." +msgstr "" + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "" @@ -6453,7 +6486,7 @@ msgstr "" msgid "Search" msgstr "" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "" @@ -6485,7 +6518,7 @@ msgstr "" msgid "Secret has been copied" msgstr "" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "" @@ -6503,8 +6536,8 @@ msgid "" "Select a DNS provider to see whether it supports DNS record management in " "DNS Domains." msgstr "" -"Select a DNS provider to see whether it supports DNS record management in DNS " -"Domains." +"Select a DNS provider to see whether it supports DNS record management in " +"DNS Domains." #: src/views/certificate/ACMEUser.vue:50 msgid "" @@ -6531,6 +6564,10 @@ msgstr "" msgid "Select existing record" msgstr "" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6557,6 +6594,24 @@ msgstr "" msgid "Self check failed, Nginx UI may not work properly" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6571,7 +6626,7 @@ msgid "Server" msgstr "" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "" @@ -6599,7 +6654,7 @@ msgstr "" msgid "Server names hash table size" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "" @@ -6674,7 +6729,7 @@ msgstr "" msgid "Show Assistant" msgstr "" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "" @@ -6758,10 +6813,6 @@ msgstr "" msgid "Skip Installation" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "" @@ -6774,6 +6825,10 @@ msgstr "" msgid "Socket" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "" + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "" @@ -6790,14 +6845,6 @@ msgstr "" msgid "SSD storage for better I/O performance" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -msgid "SSH key (recommended)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -6883,9 +6930,9 @@ msgstr "" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -6958,7 +7005,7 @@ msgstr "" msgid "Structured" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "" @@ -6966,7 +7013,7 @@ msgstr "" msgid "Stub_status is not enabled" msgstr "" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7074,6 +7121,7 @@ msgid "Sync strategy" msgstr "" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "" @@ -7111,21 +7159,13 @@ msgstr "" msgid "System restored successfully." msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "" @@ -7190,6 +7230,13 @@ msgid "" "since it was last issued." msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" + #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" msgstr "" @@ -7307,7 +7354,7 @@ msgstr "" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " @@ -7375,10 +7422,6 @@ msgid "" "server state." msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " @@ -7399,6 +7442,12 @@ msgid "" "certificate files on the file system will not be deleted." msgstr "" +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "" + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" "This site is configured as a default server (default_server) for HTTPS (port " @@ -7656,7 +7705,7 @@ msgstr "" msgid "Tuesday" msgstr "" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "" @@ -7677,10 +7726,6 @@ msgstr "" msgid "Type %{delete} to confirm" msgstr "" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "" @@ -7726,11 +7771,11 @@ msgstr "" msgid "Update already in progress" msgstr "" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "" @@ -7819,11 +7864,11 @@ msgstr "" msgid "Use @ for root" msgstr "" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "" @@ -7831,10 +7876,6 @@ msgstr "" msgid "Use Temporary Path" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "" @@ -7848,7 +7889,7 @@ msgstr "" msgid "User banned" msgstr "" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "" @@ -7861,7 +7902,7 @@ msgid "User Profile" msgstr "" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "" @@ -7879,10 +7920,14 @@ msgstr "" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "" @@ -7893,10 +7938,6 @@ msgstr "" msgid "Value" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -msgid "Verify" -msgstr "" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -7933,7 +7974,7 @@ msgstr "" msgid "View on GitHub" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "" @@ -7961,7 +8002,7 @@ msgstr "" msgid "Waiting processes" msgstr "" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -7987,7 +8028,7 @@ msgstr "" msgid "We do not accept any feature requests" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" "We will remove the HTTPChallenge configuration from this file and reload the " "Nginx. Are you sure you want to continue?" @@ -8026,6 +8067,14 @@ msgstr "" msgid "Weight" msgstr "" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8040,7 +8089,7 @@ msgid "" "namespace and the nodes selected below will be synchronized." msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8050,7 +8099,7 @@ msgstr "" msgid "Whether to use a temporary path when writing temporary files" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "" @@ -8069,7 +8118,7 @@ msgstr "" msgid "Workers" msgstr "" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "" @@ -8143,18 +8192,36 @@ msgid "" "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "" +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "" @@ -8190,6 +8257,7 @@ msgstr "" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " #~ "Credentials and select them in certificate settings." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains only use providers with DNS record management implementations." +#~ msgid "" +#~ "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "" +#~ "DNS Domains only use providers with DNS record management implementations." diff --git a/app/src/language/es/app.po b/app/src/language/es/app.po index 14a0b4e4..229c728e 100644 --- a/app/src/language/es/app.po +++ b/app/src/language/es/app.po @@ -7,11 +7,11 @@ msgstr "" "POT-Creation-Date: \n" "PO-Revision-Date: 2025-11-25 15:35+0000\n" "Last-Translator: OpenAI \n" -"Language-Team: Spanish \n" +"Language-Team: Spanish " +"\n" "Language: es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13.3\n" @@ -37,16 +37,14 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] Certificado revocado con éxito" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "" "[Nginx UI] El certificado se utilizó para el servidor, recargando el " "certificado TLS del servidor" #: src/language/generate.ts:42 msgid "[Nginx UI] Creating client facilitates communication with the CA server" -msgstr "" -"[Nginx UI] Creando cliente para facilitar la comunicación con el servidor CA" +msgstr "[Nginx UI] Creando cliente para facilitar la comunicación con el servidor CA" #: src/language/generate.ts:43 msgid "[Nginx UI] Environment variables cleaned" @@ -115,13 +113,12 @@ msgstr "{label} copiado al portapapeles" #: src/components/SyncNodesPreview/SyncNodesPreview.vue:59 msgid "* Includes nodes from group %{groupName} and manually selected nodes" -msgstr "" -"* Incluye nodos del grupo %{groupName} y nodos seleccionados manualmente" +msgstr "* Incluye nodos del grupo %{groupName} y nodos seleccionados manualmente" #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" "* Los archivos de índice se almacenan en el directorio \"log-index\" dentro " "de la ruta de configuración de NGINX UI de forma predeterminada." @@ -134,10 +131,6 @@ msgstr "" "* Métricas de rendimiento medidas en Apple M2 Pro (12 núcleos) con 32 GB de " "RAM. El rendimiento real puede variar según la configuración de su hardware." -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "%{count} sitios seleccionados" @@ -147,16 +140,17 @@ msgid "" "%{provider} can be used for ACME DNS-01 certificate challenges and DNS " "record management in DNS Domains." msgstr "" -"%{provider} se puede usar para desafíos de certificados ACME DNS-01 y gestión " -"de registros DNS en DNS Domains." +"%{provider} se puede usar para desafíos de certificados ACME DNS-01 y " +"gestión de registros DNS en DNS Domains." #: src/views/dns/components/DNSChallenge.vue:62 msgid "" "%{provider} can be used for ACME DNS-01 certificate challenges, but DNS " "record management in DNS Domains is not supported for this provider." msgstr "" -"%{provider} se puede usar para desafíos de certificados ACME DNS-01, pero la " -"gestión de registros DNS en DNS Domains no es compatible con este proveedor." +"%{provider} se puede usar para desafíos de certificados ACME DNS-01, pero " +"la gestión de registros DNS en DNS Domains no es compatible con este " +"proveedor." #: src/views/nginx_log/structured/StructuredLogViewer.vue:811 msgid "%{start}-%{end} of %{total} items" @@ -189,7 +183,7 @@ msgstr "Estadísticas UV/PV de 24 horas" msgid "2FA" msgstr "2FA" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "Configuración de 2FA" @@ -197,13 +191,28 @@ msgstr "Configuración de 2FA" msgid "4GB+ RAM recommended" msgstr "Se recomienda 4 GB de RAM o más" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "" +"Los registros A con los mismos nombres no se administran en modo solo IPv6. " +"Permanecen sin cambios en el DNS." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "" "Falta un archivo de inclusión requerido en la configuración del sandbox o " "del origen." +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"Los registros AAAA con los mismos nombres no se gestionan en modo solo " +"IPv4. Permanecen sin cambios en el DNS." + #: src/routes/modules/system.ts:38 msgid "About" msgstr "Acerca de" @@ -221,10 +230,6 @@ msgstr "La ruta del registro de acceso no existe" msgid "Access Logs" msgstr "Logs de acceso" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -236,10 +241,10 @@ msgstr "Acción" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -281,7 +286,8 @@ msgstr "Agregar configuración" msgid "Add Directive Below" msgstr "Añadir directiva a continuación" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "Agregar dominio" @@ -289,6 +295,14 @@ msgstr "Agregar dominio" msgid "Add Header" msgstr "Agregar encabezado" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "Añadir dirección IP" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "Agregar elemento" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -338,8 +352,8 @@ msgstr "Indexación avanzada habilitada con éxito" #: src/views/nginx_log/components/IndexingSettingsModal.vue:292 msgid "Advanced log indexing features are free and open source for all users" msgstr "" -"Las funciones avanzadas de indexación de registros son gratuitas y de código " -"abierto para todos los usuarios" +"Las funciones avanzadas de indexación de registros son gratuitas y de " +"código abierto para todos los usuarios" #: src/views/nginx_log/components/IndexingSettingsModal.vue:80 msgid "Advanced memory pooling system" @@ -363,11 +377,6 @@ msgstr "" msgid "All" msgstr "Todos" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx no pudo validar la configuración." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "Todos los componentes" @@ -377,7 +386,7 @@ msgstr "Todos los componentes" msgid "All Recovery Codes Have Been Used" msgstr "Todos los códigos de recuperación han sido utilizados" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -402,8 +411,7 @@ msgid "Any" msgstr "Cualquiera" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "" "Cualquier dirección IP accesible puede utilizarse con autoridades de " "certificación privadas" @@ -432,10 +440,6 @@ msgstr "Tipo de API" msgid "App" msgstr "Aplicación" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "Aplicar" @@ -448,7 +452,7 @@ msgstr "Arquitectura" msgid "Are you sure to delete this banned IP immediately?" msgstr "¿Está seguro de eliminar esta IP bloqueada inmediatamente?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "¿Estás seguro de que quieres eliminar esta configuración de DDNS?" @@ -460,7 +464,7 @@ msgstr "¿Está seguro de eliminar esta llave de acceso inmediatamente?" msgid "Are you sure to delete this record?" msgstr "¿Estás seguro de eliminar este registro?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "¿Estás seguro de generar nuevos códigos de recuperación?" @@ -531,6 +535,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud es compatible con OpenAI. Utilice https://api.atlascloud.ai/v1 " +"y una clave API de Atlas Cloud." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -540,12 +546,11 @@ msgstr "Intentar solucionar" msgid "Attempts" msgstr "Intentos" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "Autenticación" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "Autenticarse con una llave de acceso" @@ -553,11 +558,6 @@ msgstr "Autenticarse con una llave de acceso" msgid "Authenticating..." msgstr "Autenticando..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "Autenticando..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -605,15 +605,15 @@ msgstr "Actualización automática desactivada" msgid "Auto refresh enabled" msgstr "Actualización automática habilitada" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "Renovación automática deshabilitada por %{name}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "Renovación automática habilitada por %{name}" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert está en ejecución, por favor espere..." @@ -699,8 +699,7 @@ msgstr "Falló la verificación de integridad de la copia de seguridad" #: src/constants/errors/backup.ts:63 msgid "Backup manifest is missing required file entry: {0}" -msgstr "" -"Falta la entrada de archivo requerida en el manifiesto de respaldo: {0}" +msgstr "Falta la entrada de archivo requerida en el manifiesto de respaldo: {0}" #: src/views/backup/AutoBackup/AutoBackup.vue:50 msgid "Backup Path" @@ -717,7 +716,8 @@ msgstr "La ruta de copia de seguridad no es un directorio: {0}" #: src/constants/errors/backup.ts:65 msgid "Backup path is required for custom directory backup" msgstr "" -"La ruta de respaldo es necesaria para el respaldo de directorio personalizado" +"La ruta de respaldo es necesaria para el respaldo de directorio " +"personalizado" #: src/views/backup/AutoBackup/components/CronEditor.vue:141 msgid "Backup Schedule" @@ -734,8 +734,7 @@ msgstr "" "%{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" "La tarea de copia de seguridad %{backup_name} falló durante la carga en el " "almacenamiento, error: %{error}" @@ -803,12 +802,6 @@ msgstr "" "A continuación se muestran los elementos seleccionados que desea modificar " "por lotes" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "El bloque es nulo" @@ -849,8 +842,8 @@ msgstr "Caché" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:177 msgid "Cache items not accessed within this time will be removed" msgstr "" -"Los elementos de la caché a los que no se acceda dentro de este tiempo serán " -"eliminados" +"Los elementos de la caché a los que no se acceda dentro de este tiempo " +"serán eliminados" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:349 msgid "Cache loader processing time threshold" @@ -900,14 +893,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -1001,6 +994,12 @@ msgstr "El contenido del certificado y la clave privada no pueden estar vacíos" msgid "Certificate decode error" msgstr "Error de decodificación del certificado" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" +"Directivas de certificado añadidas al editor; revise y guarde cuando esté " +"listo." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "Aviso de caducidad del certificado" @@ -1019,6 +1018,14 @@ msgstr "Certificado a punto de expirar" msgid "Certificate files downloaded successfully" msgstr "Archivos de certificado descargados correctamente" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "El componente de emisión de certificados no está listo" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "Certificado emitido correctamente" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "El nombre del certificado no puede estar vacío" @@ -1053,18 +1060,19 @@ msgid "Certificate revoked successfully" msgstr "Certificado revocado con éxito" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "Estado del Certificado" msgstr[1] "Estado de los Certificados" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "Tipo de certificado" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "Certificados" @@ -1085,11 +1093,11 @@ msgstr "Método de desafío" msgid "Change Certificate" msgstr "Cambiar Certificado" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "Cambiar contraseña" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "Cambiar Certificado" @@ -1129,13 +1137,13 @@ msgstr "Verificar favicon" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "Verifique si /var/run/docker.sock existe. Si está utilizando la imagen " @@ -1158,8 +1166,7 @@ msgstr "" "y evita el uso de Passkeys y funciones del portapapeles" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "" "Verifique si el directorio conf.d está dentro del directorio de " "configuración de nginx" @@ -1171,20 +1178,20 @@ msgid "" "indexing. You can download it from the Preference page or manually place " "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" -"Verifique si la base de datos GeoLite2 está disponible cuando se habilita el " -"indizado de registros. La base de datos GeoLite2 es necesaria para el " +"Verifique si la base de datos GeoLite2 está disponible cuando se habilita " +"el indizado de registros. La base de datos GeoLite2 es necesaria para el " "análisis geográfico de IP en el indizado de registros. Puede descargarla " "desde la página de Preferencias o colocar GeoLite2-City.mmdb manualmente en " "el mismo directorio que app.ini" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" "Verifique si existe la ruta del registro de acceso de nginx. Por defecto, " "esta ruta se obtiene de 'nginx -V'. Si no se puede obtener o la ruta " @@ -1207,8 +1214,8 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" "Verifique si existe la ruta del registro de errores de nginx. Por defecto, " "esta ruta se obtiene de 'nginx -V'. Si no se puede obtener o la ruta " @@ -1222,14 +1229,14 @@ msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" "Verifique si existe la ruta del PID de Nginx. Por defecto, esta ruta se " "obtiene de 'nginx -V'. Si no se puede obtener, se reportará un error. En " "este caso, debe modificar el archivo de configuración para especificar la " -"ruta del PID de Nginx. Consulte la documentación para más detalles: https://" -"nginxui.com/zh_CN/guide/config-nginx.html#pidpath" +"ruta del PID de Nginx. Consulte la documentación para más detalles: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1257,11 +1264,11 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" -"Verificar si los directorios streams-available y streams-enabled están en el " -"directorio de configuración de nginx" +"Verificar si los directorios streams-available y streams-enabled están en " +"el directorio de configuración de nginx" #: src/views/dashboard/components/SiteHealthCheckModal.vue:625 msgid "Check Interval (seconds)" @@ -1280,6 +1287,10 @@ msgstr "Mapa de China" msgid "Cipher text is too short" msgstr "El texto cifrado es demasiado corto" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "Limpiar registros conflictivos" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Borrar las variables de entorno" @@ -1304,7 +1315,8 @@ msgstr "Limpiado exitoso" #: src/components/SystemRestore/SystemRestoreContent.vue:303 msgid "Click or drag backup file to this area to upload" msgstr "" -"Haga clic o arrastre el archivo de copia de seguridad a esta área para cargar" +"Haga clic o arrastre el archivo de copia de seguridad a esta área para " +"cargar" #: src/language/curd.ts:51 src/language/curd.ts:55 msgid "Click or drag files to this area to upload" @@ -1473,8 +1485,8 @@ msgstr "El archivo de configuración se probó exitosamente" #: src/components/InspectConfig/InspectConfig.vue:149 msgid "Configuration file is test successful in isolated sandbox" msgstr "" -"El archivo de configuración se ha probado con éxito en un entorno de sandbox " -"aislado" +"El archivo de configuración se ha probado con éxito en un entorno de " +"sandbox aislado" #: src/components/ConfigHistory/ConfigHistory.vue:147 msgid "Configuration History" @@ -1492,11 +1504,11 @@ msgstr "Nombre de la configuración" msgid "Configurations" msgstr "Configuraciones" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "Configurar" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "Configurar DDNS" @@ -1508,7 +1520,7 @@ msgstr "Configurar SSL" msgid "Confirm Delete" msgstr "Confirmar eliminación" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "Confirmar nueva contraseña" @@ -1521,11 +1533,6 @@ msgstr "Confirmación requerida" msgid "Connected" msgstr "Conectado" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "Conectado" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "Error de conexión, intentando reconectar..." @@ -1538,15 +1545,6 @@ msgstr "Se perdió la conexión para este terminal. Actualice si es necesario." msgid "Connection timeout period" msgstr "Período de tiempo de espera de conexión" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "Contenido" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "Estado del contenedor desconocido" @@ -1559,8 +1557,7 @@ msgstr "Contenido" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "Copiado" @@ -1571,19 +1568,13 @@ msgstr "¡Copiado!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "Copiar" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "Copiar códigos" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "Copiar" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "Actualización del kernel" @@ -1623,8 +1614,8 @@ msgstr "Uso de CPU" #: src/views/dashboard/components/ResourceUsageCard.vue:38 msgid "CPU usage is relatively high, consider optimizing Nginx configuration" msgstr "" -"El uso de la CPU es relativamente alto, considere optimizar la configuración " -"de Nginx" +"El uso de la CPU es relativamente alto, considere optimizar la " +"configuración de Nginx" #: src/views/dashboard/ServerAnalytic.vue:200 msgid "CPU:" @@ -1687,7 +1678,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "La creación de un cliente facilita la comunicación con el servidor CA" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "Credencial" @@ -1719,7 +1710,7 @@ msgstr "Conexiones activas actuales" msgid "Current Content" msgstr "Contenido actual" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "Contraseña actual" @@ -1745,11 +1736,11 @@ msgstr "Expresión cron personalizada" msgid "Custom Directory" msgstr "Directorio personalizado" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "Dominios personalizados" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "Certificado de Dominios Personalizados" @@ -1812,22 +1803,21 @@ msgstr "Archivo de base de datos no encontrado" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "Configuración DDNS eliminada" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "Resumen de DDNS" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS guardado" #: src/constants/errors/geolite.ts:12 msgid "Decompression succeeded but failed to delete compressed file: {0}" -msgstr "" -"Descompresión exitosa pero falló al eliminar el archivo comprimido: {0}" +msgstr "Descompresión exitosa pero falló al eliminar el archivo comprimido: {0}" #: src/constants/errors/middleware.ts:3 msgid "Decryption failed" @@ -1852,7 +1842,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "Eliminar" @@ -1937,8 +1927,8 @@ msgstr "Demostración" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" "El modo de demostración está habilitado. Esta terminal solo permite un " "pequeño conjunto de comandos seguros de solo lectura." @@ -2052,7 +2042,7 @@ msgstr "Desactivar" msgid "Disable" msgstr "Desactivar" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "Error al desactivar la renovación automática para %{name}" @@ -2107,7 +2097,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "Deshabilitar el flujo %{name} desde %{node} con éxito" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2226,19 +2216,17 @@ msgstr "¿Desea %{action} este sitio?" msgid "Do you want to %{action} this stream?" msgstr "¿Quieres %{action} este flujo?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "¿Desea deshabilitar la renovación automática de certificado?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "¿Quieres deshabilitar este sitio?" +msgstr "¿Desea deshabilitar los sitios seleccionados?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "¿Quieres habilitar esta transmisión?" +msgstr "¿Desea habilitar los sitios seleccionados?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2257,10 +2245,6 @@ msgstr "¿Quieres eliminar esta transmisión?" msgid "Docker client not initialized" msgstr "Cliente de Docker no inicializado" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "El socket de Docker existe" @@ -2269,10 +2253,6 @@ msgstr "El socket de Docker existe" msgid "Docker socket not exist" msgstr "El socket de Docker no existe" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2284,16 +2264,20 @@ msgstr[1] "Documentos" msgid "Document Count" msgstr "Recuento de documentos" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "Dominio" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "Dominios" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" -"La lista de dominios está vacía, intente reabrir la certificación automática " -"para %{config}" +"La lista de dominios está vacía, intente reabrir la certificación " +"automática para %{config}" #: src/views/certificate/components/CertificateDownload.vue:94 msgid "Download Certificate Files" @@ -2338,8 +2322,8 @@ msgid "" "non-HTTPS websites, except when running on localhost." msgstr "" "Debido a las políticas de seguridad de algunos navegadores, no es posible " -"utilizar claves de acceso en sitios web que no sean HTTPS, excepto cuando se " -"ejecutan en el host local." +"utilizar claves de acceso en sitios web que no sean HTTPS, excepto cuando " +"se ejecutan en el host local." #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2437,7 +2421,7 @@ msgstr "Habilitar indexación avanzada" msgid "Enable Advanced Log Indexing" msgstr "Habilitar indexación avanzada de registros" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "No se pudo activar la renovación automática por %{name}" @@ -2449,7 +2433,7 @@ msgstr "Habilitar finalización de código" msgid "Enable compression for content transfer" msgstr "Habilitar compresión para transferencia de contenido" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "Habilitar DDNS" @@ -2546,7 +2530,7 @@ msgid "Enable TOTP" msgstr "Habilitar TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2587,8 +2571,8 @@ msgid "" "minimum requirements before proceeding." msgstr "" "Habilitar el indexado avanzado de registros consumirá recursos " -"computacionales significativos, incluidos CPU y memoria. Asegúrese de que su " -"sistema cumpla con los requisitos mínimos antes de continuar." +"computacionales significativos, incluidos CPU y memoria. Asegúrese de que " +"su sistema cumpla con los requisitos mínimos antes de continuar." #: src/views/site/site_edit/components/Cert/IssueCert.vue:95 msgid "Encrypt website with Let's Encrypt" @@ -2602,18 +2586,26 @@ msgstr "Fin" msgid "End Date" msgstr "Fecha de finalización" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "Introduzca el nombre del certificado" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "Ingresar nombre de dominio" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "Introducir dirección IP" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "Ingrese la dirección IP del servidor (ej. 203.0.113.1 o 2001:db8::1)" #: src/components/SelfCheck/SelfCheck.vue:72 msgid "Enter the install secret to run the system check." -msgstr "" -"Ingrese el secreto de instalación para ejecutar la verificación del sistema." +msgstr "Ingrese el secreto de instalación para ejecutar la verificación del sistema." #: src/views/install/components/InstallView.vue:169 msgid "" @@ -2624,7 +2616,7 @@ msgstr "" "instalación o que se encuentra en el archivo oculto del directorio de " "configuración para desbloquear la configuración." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "Ingrese su dominio" @@ -2636,7 +2628,7 @@ msgstr "La configuración del entorno está vacía" msgid "Environment variables cleaned" msgstr "Variables de entorno limpiadas" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2669,8 +2661,8 @@ msgstr "Logs de error" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "" "Los registros de errores no admiten análisis estructurado ya que contienen " "mensajes de texto libre." @@ -2720,7 +2712,7 @@ msgid "Expected Text" msgstr "Texto esperado" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "Vencido" @@ -2742,18 +2734,13 @@ msgstr "" #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" "ID de clave de vinculación de cuenta externa (opcional). Requerido por " "algunos proveedores ACME como ZeroSSL." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "Contenedor Docker externo" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "Contenedor Docker externo" @@ -2776,6 +2763,7 @@ msgstr "Falla al obtener el certificado" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "Fallido" @@ -2786,8 +2774,8 @@ msgstr "Error al adjuntar a la instancia de ejecución: {0}" #: src/constants/errors/backup.ts:5 msgid "Failed to backup Nginx config files: {0}" msgstr "" -"Error al hacer copia de seguridad de los archivos de configuración de Nginx: " -"{0}" +"Error al hacer copia de seguridad de los archivos de configuración de " +"Nginx: {0}" #: src/constants/errors/backup.ts:4 msgid "Failed to backup Nginx UI files: {0}" @@ -3017,6 +3005,11 @@ msgstr "Error al generar la clave AES: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "Error al generar el vector de inicialización: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "Error al generar el certificado autofirmado" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "No se pudo obtener la información del certificado" @@ -3256,8 +3249,7 @@ msgstr "El contenido del archivo contiene caracteres de control no válidos" #: src/constants/errors/config.ts:5 msgid "File content contains restricted nginx directive: {0}" -msgstr "" -"El contenido del archivo contiene una directiva de nginx restringida: {0}" +msgstr "El contenido del archivo contiene una directiva de nginx restringida: {0}" #: src/constants/errors/config.ts:3 msgid "File content must be valid UTF-8 text" @@ -3269,8 +3261,7 @@ msgstr "El archivo existe" #: src/views/nginx_log/indexing/IndexManagement.vue:64 msgid "File index rebuild started successfully for %{path}" -msgstr "" -"Reconstrucción del índice de archivos iniciada correctamente para %{path}" +msgstr "Reconstrucción del índice de archivos iniciada correctamente para %{path}" #: src/constants/errors/config.ts:2 msgid "File name is not allowed: {0}" @@ -3350,8 +3341,7 @@ msgid "For commercial or professional use, contact" msgstr "Para uso comercial o profesional, contacte con" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "" "Para los registros de errores, utilice el Visor de Registros sin Procesar " "para una mejor experiencia de visualización." @@ -3361,14 +3351,14 @@ msgid "" "For IP-based certificate configurations, only HTTP-01 challenge method is " "supported. DNS-01 challenge is not compatible with IP-based certificates." msgstr "" -"Para configuraciones de certificados basados en IP, solo se admite el método " -"de desafío HTTP-01. El desafío DNS-01 no es compatible con certificados " -"basados en IP." +"Para configuraciones de certificados basados en IP, solo se admite el " +"método de desafío HTTP-01. El desafío DNS-01 no es compatible con " +"certificados basados en IP." #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" "Para certificados basados en IP, especifique la dirección IP del servidor " "que se incluirá en el certificado." @@ -3420,14 +3410,16 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "" "Modo de depuración de frontend: flujo de instalación completado sin enviar " "una solicitud al backend" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "" "Modo de depuración de frontend: flujo de restauración completado sin enviar " "una solicitud al backend" @@ -3444,21 +3436,24 @@ msgstr "Soporte de búsqueda de texto completo" msgid "General Certificate" msgstr "Certificado General" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "Generar" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "Generar" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "Generar nuevos códigos de recuperación" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "Generar nuevos códigos de recuperación" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "Generar códigos de recuperación" @@ -3466,6 +3461,14 @@ msgstr "Generar códigos de recuperación" msgid "Generate recovery codes successfully" msgstr "Códigos de recuperación generados con éxito" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "Generar certificado autofirmado" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "Generar certificado autofirmado" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "Generando clave privada para registrar cuenta" @@ -3544,6 +3547,10 @@ msgstr "Ir a DNS > Credenciales para crear o administrar credenciales" msgid "Go to Raw Log Viewer" msgstr "Ir al Visor de Registros en Bruto" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "Ir a códigos de recuperación" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3614,10 +3621,6 @@ msgstr "Ocultar" msgid "Hide Assistant" msgstr "Ocultar asistente" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3639,27 +3642,10 @@ msgid "Home" msgstr "Inicio" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "Host" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "Host, p. ej. @ o www" @@ -3710,8 +3696,7 @@ msgstr "" msgid "" "If you want to automatically revoke the old certificate, please enable this " "option." -msgstr "" -"Si desea revocar automáticamente el certificado antiguo, active esta opción." +msgstr "Si desea revocar automáticamente el certificado antiguo, active esta opción." #: src/views/nginx_log/components/IndexingSettingsModal.vue:167 msgid "" @@ -3724,8 +3709,7 @@ msgstr "" #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." -msgstr "" -"Si su navegador admite WebAuthn Passkey, aparecerá un cuadro de diálogo." +msgstr "Si su navegador admite WebAuthn Passkey, aparecerá un cuadro de diálogo." #: src/components/AutoCertForm/AutoCertForm.vue:271 msgid "" @@ -3735,12 +3719,12 @@ msgstr "" "Si su dominio tiene registros CNAME y no puede obtener certificados, " "necesita habilitar esta opción." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "Importar" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "Importar Certificado" @@ -3753,8 +3737,8 @@ msgid "" "Includes master process, worker processes, cache processes, and other Nginx " "processes" msgstr "" -"Incluye proceso maestro, procesos worker, procesos de caché y otros procesos " -"de Nginx" +"Incluye proceso maestro, procesos worker, procesos de caché y otros " +"procesos de Nginx" #: src/views/nginx_log/components/IndexingSettingsModal.vue:252 msgid "Incremental index scanning" @@ -3803,7 +3787,7 @@ msgstr "Indexando..." msgid "Indicator" msgstr "Indicador" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "Información" @@ -3827,7 +3811,7 @@ msgstr "Inicializando la actualización del kernel" msgid "Input the code from the app:" msgstr "Ingrese el código de la aplicación:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "Ingrese el código de recuperación:" @@ -3876,8 +3860,7 @@ msgstr "Instalación" #: src/constants/errors/system.ts:3 msgid "Installation is not allowed after 10 minutes of system startup" -msgstr "" -"No se permite la instalación después de 10 minutos del inicio del sistema" +msgstr "No se permite la instalación después de 10 minutos del inicio del sistema" #: src/views/install/components/TimeoutAlert.vue:11 msgid "" @@ -3887,12 +3870,12 @@ msgstr "" "No se permite la instalación después de 10 minutos del inicio del sistema, " "por favor reinicie la interfaz de Nginx." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "Intervalo" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "Intervalo (segundos)" @@ -3966,7 +3949,7 @@ msgstr "Código OTP inválido" msgid "Invalid padding in decrypted data" msgstr "Relleno no válido en los datos descifrados" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "Código de acceso o código de recuperación inválido" @@ -4019,15 +4002,43 @@ msgstr "Dirección IP" msgid "IP Address / Target" msgstr "Dirección IP / Destino" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "Direcciones IP" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "Aviso de certificado IP" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "Versión IP" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "Solo IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4 luego IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "Solo IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6 y luego IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "Emisión fallida" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "Emitir certificado" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "Emitir certificado" @@ -4035,10 +4046,18 @@ msgstr "Emitir certificado" msgid "Issued certificate successfully" msgstr "Certificado emitido con éxito" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "Emitido correctamente" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "Emisor: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "Emisión en curso..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "elemento(s)" @@ -4060,7 +4079,8 @@ msgid "Keepalive Timeout" msgstr "Tiempo de espera de Keepalive" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "Tipo llave" @@ -4142,7 +4162,7 @@ msgstr "Última indexación" msgid "Last month" msgstr "Mes pasado" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "Última ejecución" @@ -4158,6 +4178,10 @@ msgstr "Última actualización:" msgid "Last used at" msgstr "Último uso" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "Más tarde" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "Para no modificar dejar en blanco" @@ -4179,10 +4203,10 @@ msgid "Leave blank if you don't need this." msgstr "Déjelo en blanco si no lo necesita." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "Dejar en blanco para el valor predeterminado: https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "" +"Déjelo en blanco para usar el endpoint de Atlas Cloud: " +"https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4191,10 +4215,18 @@ msgstr "Dejar en blanco para el valor predeterminado: https://api.openai.com/" msgid "Leave blank will not change anything" msgstr "Dejarlo en blanco no cambiará nada" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"El código de recuperación heredado está obsoleto. Genere nuevos códigos de " +"recuperación para mantener segura la recuperación de la cuenta." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" -msgstr "" -"Código de recuperación heredado no permitido ya que TOTP no está habilitado" +msgstr "Código de recuperación heredado no permitido ya que TOTP no está habilitado" #: src/components/AutoCertForm/AutoCertForm.vue:268 msgid "Lego disable CNAME Support" @@ -4249,7 +4281,7 @@ msgstr "Escuchando" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4297,18 +4329,14 @@ msgstr "Cargando..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "Local" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "Ruta local (ej., /var/backups)" @@ -4321,19 +4349,20 @@ msgstr "Ubicación" msgid "Locations" msgstr "Ubicaciones" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "Registro" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" "El archivo de registro %{log_path} no es un archivo regular. Si está " -"utilizando nginx-ui en un contenedor Docker, consulte https://nginxui.com/" -"zh_CN/guide/config-nginx-log.html para obtener más información." +"utilizando nginx-ui en un contenedor Docker, consulte " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html para obtener más " +"información." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4370,14 +4399,14 @@ msgstr "Lista de registros" #: src/constants/errors/nginx_log.indexer.ts:2 msgid "Log parser is not initialized; call indexer.InitLogParser() before use" msgstr "" -"El analizador de registros no está inicializado; llame a indexer." -"InitLogParser() antes de usarlo" +"El analizador de registros no está inicializado; llame a " +"indexer.InitLogParser() antes de usarlo" #: src/constants/errors/nginx_log.ts:12 msgid "Log path is not under whitelist" msgstr "La ruta del registro no está en la lista blanca" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "Acceso" @@ -4385,7 +4414,7 @@ msgstr "Acceso" msgid "Login successful" msgstr "Acceso exitoso" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "Cierre de sesión exitoso" @@ -4395,20 +4424,20 @@ msgstr "Rotación de logs" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" "Logrotate, de forma predeterminada, está habilitado en la mayoría de las " "distribuciones de Linux para los usuarios que instalan Nginx UI en la " "máquina host, por lo que no es necesario modificar los parámetros en esta " "página. Para los usuarios que instalan Nginx UI usando contenedores Docker, " "pueden habilitar esta opción manualmente. El programador de tareas crontab " -"de Nginx UI ejecutará el comando logrotate en el intervalo que establezca en " -"minutos." +"de Nginx UI ejecutará el comando logrotate en el intervalo que establezca " +"en minutos." #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4435,15 +4464,13 @@ msgstr "Modo de mantenimiento desactivado correctamente" msgid "Maintenance mode enabled successfully" msgstr "Modo de mantenimiento activado correctamente" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "Modo de mantenimiento activado correctamente" +msgstr "Plantilla de mantenimiento (solo nombre de archivo)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "Mantenimiento" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4454,8 +4481,8 @@ msgid "" "Make sure you have configured a reverse proxy for .well-known directory to " "HTTPChallengePort before obtaining the certificate." msgstr "" -"Asegúrese de haber configurado un proxy reverso para el directorio .well-" -"known en HTTPChallengePort antes de obtener el certificado." +"Asegúrese de haber configurado un proxy reverso para el directorio " +".well-known en HTTPChallengePort antes de obtener el certificado." #: src/routes/modules/config.ts:10 #: src/views/config/components/ConfigLeftPanel.vue:114 @@ -4577,10 +4604,6 @@ msgstr "Diseño de memoria" msgid "Memory Usage (RSS)" msgstr "Uso de memoria (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4614,7 +4637,7 @@ msgstr "Minuto" msgid "Minutes" msgstr "Minutos" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "Espejo" @@ -4643,7 +4666,7 @@ msgid "Modify" msgstr "Modificar" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "Modificar Certificado" @@ -4675,10 +4698,9 @@ msgstr "Mensual" msgid "Monthly on day %{day} at %{time}" msgstr "Mensualmente el día %{day} a las %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "Directorio protegido" +msgstr "Directorio montado" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4708,6 +4730,7 @@ msgstr "N/A" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4782,7 +4805,7 @@ msgstr "Error en el nuevo cliente de lego: {0}" msgid "New name" msgstr "Nuevo nombre" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "Nueva contraseña" @@ -4798,12 +4821,11 @@ msgstr "Error de transporte nuevo: {0}" msgid "New version released" msgstr "Se liberó una nueva versión" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "Siguiente" @@ -4815,7 +4837,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "La salida de Nginx -T está vacía" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Ruta de registro de acceso de Nginx" @@ -4869,11 +4891,11 @@ msgstr "La configuración de Nginx ha sido restaurada" msgid "Nginx Configuration Parse Error" msgstr "Error de análisis de configuración de Nginx" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Ruta de configuración de Nginx" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Directorio de configuraciones de Nginx" @@ -4881,7 +4903,7 @@ msgstr "Directorio de configuraciones de Nginx" msgid "Nginx Control" msgstr "Control de Nginx" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Modo de control de Nginx" @@ -4890,7 +4912,7 @@ msgstr "Modo de control de Nginx" msgid "Nginx CPU usage rate" msgstr "Tasa de uso de CPU de Nginx" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Ruta de registro de errores de Nginx" @@ -4926,7 +4948,7 @@ msgstr "Nginx está en ejecución" msgid "Nginx Log" msgstr "Registro Nginx" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Lista blanca de directorios de registro de Nginx" @@ -4939,7 +4961,7 @@ msgstr "Indexación de registros de Nginx..." msgid "Nginx Memory usage" msgstr "Uso de memoria de Nginx" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Ruta del PID de Nginx" @@ -4947,7 +4969,7 @@ msgstr "Ruta del PID de Nginx" msgid "Nginx PID path exists" msgstr "La ruta del PID de Nginx existe" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Comando de recarga de Nginx" @@ -4968,14 +4990,13 @@ msgstr "Nginx recargado con éxito" msgid "Nginx reported a configuration syntax error." msgstr "Nginx informó de un error de sintaxis en la configuración." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Comando de reinicio de Nginx" #: src/views/node/Node.vue:102 msgid "Nginx restart operations have been dispatched to remote nodes" -msgstr "" -"Las operaciones de reinicio de Nginx se han enviado a los nodos remotos" +msgstr "Las operaciones de reinicio de Nginx se han enviado a los nodos remotos" #: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" @@ -4985,7 +5006,7 @@ msgstr "Nginx reiniciado con éxito" msgid "Nginx sbin path exists" msgstr "El camino sbin de Nginx existe" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Comando de prueba de configuración de Nginx" @@ -5008,12 +5029,22 @@ msgstr "La configuración de Nginx UI ha sido restaurada" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "" "La configuración de Nginx UI ha sido restaurada y se reiniciará " "automáticamente en unos segundos." +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"Nginx UI renovará automáticamente este certificado a medida que se acerque " +"su vencimiento, basándose en el intervalo global de renovación de " +"certificados y en el período de validez de este certificado." + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf incluye el directorio conf.d" @@ -5040,7 +5071,7 @@ msgid "No" msgstr "No" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "Sin acción" @@ -5078,10 +5109,6 @@ msgstr "No hay entradas en la página actual" msgid "No geographic data available" msgstr "No hay datos geográficos disponibles" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "No se encontraron registros en el intervalo de tiempo seleccionado." @@ -5108,8 +5135,8 @@ msgid "" "the server IP address below for the certificate." msgstr "" "No se encontró ninguna dirección IP específica en la configuración de " -"server_name. Especifique la dirección IP del servidor a continuación para el " -"certificado." +"server_name. Especifique la dirección IP del servidor a continuación para " +"el certificado." #: src/views/nginx_log/structured/StructuredLogViewer.vue:836 msgid "No structured log data available" @@ -5144,7 +5171,7 @@ msgstr "Estado del nodo" msgid "Nodes" msgstr "Nodos" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "No después de" @@ -5165,7 +5192,7 @@ msgstr "No indexado" msgid "Not Loaded" msgstr "No cargado" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "Aún no ejecutado" @@ -5197,8 +5224,9 @@ msgid "" "Note: If the server does not support gRPC Reflection, health checks may " "fail. Please ensure your gRPC server has Reflection enabled." msgstr "" -"Nota: Si el servidor no admite Reflexión gRPC, los controles de salud pueden " -"fallar. Asegúrese de que su servidor gRPC tenga la Reflexión habilitada." +"Nota: Si el servidor no admite Reflexión gRPC, los controles de salud " +"pueden fallar. Asegúrese de que su servidor gRPC tenga la Reflexión " +"habilitada." #: src/views/certificate/components/CertificateBasicInfo.vue:24 #: src/views/certificate/components/CertificateContentEditor.vue:105 @@ -5247,7 +5275,7 @@ msgstr "Número de procesos de trabajo" msgid "Obtain cert error: {0}" msgstr "Error al obtener el certificado: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "Obtener certificado" @@ -5301,7 +5329,7 @@ msgstr "Inicio de sesión OIDC" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5346,10 +5374,6 @@ msgstr "Solo se permiten archivos ZIP" msgid "Open" msgstr "Abierto" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "Limitación de código abierto" @@ -5366,7 +5390,7 @@ msgstr "Estadísticas del sistema operativo" msgid "Optional comment for this DNS record" msgstr "Comentario opcional para este registro DNS" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "O" @@ -5415,11 +5439,6 @@ msgstr "Otros" msgid "Otp or recovery code empty" msgstr "Código OTP o de recuperación vacío" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "Sobrescribir archivo existente" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "Sobrescribir" @@ -5457,8 +5476,8 @@ msgid "" msgstr "" "Las llaves de acceso son credenciales de autenticación web que validan su " "identidad mediante el tacto, el reconocimiento facial, una contraseña de " -"dispositivo o un PIN. Se pueden utilizar como reemplazo de contraseña o como " -"método de autenticación de dos factores." +"dispositivo o un PIN. Se pueden utilizar como reemplazo de contraseña o " +"como método de autenticación de dos factores." #: src/views/other/Login.vue:308 src/views/user/userColumns.tsx:16 msgid "Password" @@ -5468,10 +5487,6 @@ msgstr "Contraseña" msgid "Password (*)" msgstr "Contraseña (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "Contraseña incorrecta" @@ -5480,11 +5495,11 @@ msgstr "Contraseña incorrecta" msgid "Password length cannot exceed 20 characters" msgstr "La longitud de la contraseña no puede exceder los 20 caracteres" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "Contraseña actualizada correctamente" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "Las contraseñas no coinciden" @@ -5505,8 +5520,7 @@ msgstr "La ruta no está en las rutas de acceso concedidas: {0}" #: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:6 msgid "Path: {0} is not under the nginx conf dir: {1}" -msgstr "" -"La ruta: {0} no está dentro del directorio de configuración de nginx: {1}" +msgstr "La ruta: {0} no está dentro del directorio de configuración de nginx: {1}" #: src/constants/errors/cert.ts:6 msgid "Payload resource is nil" @@ -5557,7 +5571,7 @@ msgstr "Configuración de rendimiento guardada correctamente" msgid "Performing core upgrade" msgstr "Realizando la actualizaciónd el kernel" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "Información personal" @@ -5572,8 +5586,7 @@ msgstr "El texto plano está vacío" #: src/views/site/site_add/components/DNSRecordIntegration.vue:373 #: src/views/site/site_edit/components/RightPanel/DNS.vue:667 msgid "Please add a DNS domain first in the DNS management section." -msgstr "" -"Por favor, agregue un dominio DNS primero en la sección de gestión de DNS" +msgstr "Por favor, agregue un dominio DNS primero en la sección de gestión de DNS" #: src/views/install/components/InstallView.vue:133 msgid "Please complete the system check first" @@ -5603,6 +5616,12 @@ msgstr "" msgid "Please enter" msgstr "Por favor ingrese" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "Por favor, introduzca un nombre para el certificado" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5623,15 +5642,21 @@ msgstr "Por favor, introduzca una dirección IPv4 o IPv6 válida" msgid "Please enter a valid port range" msgstr "Por favor, introduzca un rango de puertos válido" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "Por favor, ingrese al menos un dominio" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "Por favor, introduzca al menos un dominio o dirección IP" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "Por favor, introduzca el secreto de instalación antes de continuar" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "Por favor, ingrese el código OTP:" @@ -5668,8 +5693,8 @@ msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." msgstr "" -"Por favor, complete las credenciales de autenticación API proporcionadas por " -"su proveedor de DNS." +"Por favor, complete las credenciales de autenticación API proporcionadas " +"por su proveedor de DNS." #: src/components/AutoCertForm/AutoCertForm.vue:168 msgid "" @@ -5677,14 +5702,14 @@ msgid "" "select one of the credentialsbelow to request the API of the DNS provider." msgstr "" "Primero agregue las credenciales en Certificación > Credenciales de DNS y " -"luego seleccione una de las credenciales de aquí debajo para llamar a la API " -"del proveedor de DNS." +"luego seleccione una de las credenciales de aquí debajo para llamar a la " +"API del proveedor de DNS." #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "" "Por favor, genere nuevos códigos de recuperación en las preferencias de " "inmediato para evitar el bloqueo." @@ -5732,16 +5757,14 @@ msgid "Please log in." msgstr "Por favor, inicie sesión." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "" "Tenga en cuenta que las siguientes configuraciones de unidades de tiempo " "están todas en segundos." #: src/views/install/components/InstallView.vue:136 msgid "Please resolve all issues before proceeding with installation" -msgstr "" -"Por favor, resuelva todos los problemas antes de proceder con la instalación" +msgstr "Por favor, resuelva todos los problemas antes de proceder con la instalación" #: src/views/backup/components/BackupCreator.vue:107 msgid "Please save this security token, you will need it for restoration:" @@ -5759,7 +5782,7 @@ msgstr "" "Por favor, seleccione un certificado antes de guardar la configuración del " "servidor TLS." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "Por favor, seleccione una credencial de DNS" @@ -5839,10 +5862,6 @@ msgstr "Configuración" msgid "Preparing lego configurations" msgstr "Preparar la configuración de LEGO" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5861,10 +5880,6 @@ msgstr "Las IPs privadas (192.168.x.x, 10.x.x.x, 172.16-31.x.x) fallarán" msgid "private key" msgstr "clave privada" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "Proceso" @@ -5908,13 +5923,14 @@ msgstr "Protocolo" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" -"La configuración del protocolo solo tiene efecto al conectarse directamente. " -"Si utiliza un proxy inverso, configure el protocolo por separado en el proxy " -"inverso." +"La configuración del protocolo solo tiene efecto al conectarse " +"directamente. Si utiliza un proxy inverso, configure el protocolo por " +"separado en el proxy inverso." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5953,14 +5969,6 @@ msgstr "Objetivos del proxy" msgid "Public CA Requirements:" msgstr "Requisitos de CA pública:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "Número de Seguridad Pública" @@ -6061,11 +6069,11 @@ msgstr "Tipo de registro" msgid "Record updated" msgstr "Registro actualizado" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "Registros" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "Recuperación" @@ -6099,7 +6107,7 @@ msgstr "Mensajes de redirección (3xx)" msgid "Referer" msgstr "Referente" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "Actualizar" @@ -6108,11 +6116,6 @@ msgstr "Actualizar" msgid "Refresh Modules Cache" msgstr "Actualizar caché de módulos" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "Regenerar respuesta" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "Regenerar respuesta" @@ -6171,7 +6174,7 @@ msgid "Reload" msgstr "Recargar" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Recargar Nginx" @@ -6208,16 +6211,12 @@ msgstr "Recargando" msgid "Reloading nginx" msgstr "Recargando Nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "Remoto" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "No se han seleccionado nodos" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "Eliminar" @@ -6227,6 +6226,10 @@ msgstr "Eliminar" msgid "Remove successfully" msgstr "Eliminado con éxito" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "Se eliminaron %{count} registro(s) conflictivos: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "Eliminado con éxito" @@ -6248,8 +6251,7 @@ msgstr "Error al renombrar %{orig_path} a %{new_path} en %{node_name}" #: src/components/Notification/notifications.ts:90 msgid "Rename %{orig_path} to %{new_path} on %{node_name} successfully" -msgstr "" -"Se ha renombrado %{orig_path} a %{new_path} en %{node_name} correctamente" +msgstr "Se ha renombrado %{orig_path} a %{new_path} en %{node_name} correctamente" #: src/components/Notification/notifications.ts:85 src/language/constants.ts:42 msgid "Rename Remote Config Error" @@ -6283,8 +6285,7 @@ msgstr "Error al renombrar el sitio %{name} a %{new_name} en %{node}" #: src/components/Notification/notifications.ts:150 msgid "Rename site %{name} to %{new_name} on %{node} successfully" -msgstr "" -"El sitio %{name} se ha renombrado a %{new_name} en %{node} correctamente" +msgstr "El sitio %{name} se ha renombrado a %{new_name} en %{node} correctamente" #: src/components/Notification/notifications.ts:186 msgid "Rename stream %{name} to %{new_name} on %{node} failed" @@ -6308,8 +6309,8 @@ msgstr "Renombrado con éxito" msgid "Renew cert error: {0}" msgstr "Error al renovar el certificado: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "Renovar Certificado" @@ -6321,8 +6322,7 @@ msgstr "Error al renovar el Certificado" msgid "Renew Certificate Success" msgstr "Renovado de Certificado exitoso" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "Renovado con éxito" @@ -6451,6 +6451,19 @@ msgstr "Restaurar esta versión" msgid "Restored successfully" msgstr "Restaurado con éxito" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "Reintentar" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "Reintentar emisión de certificado" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "Revisar primero" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6499,11 +6512,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "Modo de ejecución" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "Renovar Certificado" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "Corriendo" @@ -6623,7 +6631,7 @@ msgstr "Sábado" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6633,19 +6641,14 @@ msgstr "Sábado" msgid "Save" msgstr "Guardar" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "Configuración de almacenamiento" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "Guardar Directiva" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "Guardar ahora" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "Guardar orden" @@ -6688,15 +6691,19 @@ msgstr "Flujo %{name} guardado en %{node} correctamente" msgid "Save successful" msgstr "Guardado exitosamente" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "Guardado con éxito" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "¿Guardar la configuración del sitio ahora?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "La respuesta del certificado guardado no tiene un ID." #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6706,6 +6713,15 @@ msgstr "" msgid "Saved successfully" msgstr "Guardado con éxito" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"Error al guardar la configuración del sitio; las directivas del certificado " +"están en el editor — revise los cambios y vuelva a intentarlo desde el " +"botón Guardar." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "La ruta de sbin no existe" @@ -6756,7 +6772,7 @@ msgstr "SDK" msgid "Search" msgstr "Buscar" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "Buscar dominio, proveedor o objetivo" @@ -6788,7 +6804,7 @@ msgstr "Buscar plantillas" msgid "Secret has been copied" msgstr "El secreto ha sido copiado" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "Configuración de seguridad" @@ -6806,8 +6822,8 @@ msgid "" "Select a DNS provider to see whether it supports DNS record management in " "DNS Domains." msgstr "" -"Seleccione un proveedor DNS para ver si admite la gestión de registros DNS en " -"DNS Domains." +"Seleccione un proveedor DNS para ver si admite la gestión de registros DNS " +"en DNS Domains." #: src/views/certificate/ACMEUser.vue:50 msgid "" @@ -6836,6 +6852,10 @@ msgstr "Seleccionar dominio DNS" msgid "Select existing record" msgstr "Seleccionar registro existente" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "Seleccionar registros A/AAAA coincidentes" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6864,6 +6884,24 @@ msgstr "" "La autocomprobación falló, la interfaz de usuario de Nginx puede no " "funcionar correctamente" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "Certificado autofirmado" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "Certificado autofirmado" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "Certificado autofirmado aplicado" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "Certificado autofirmado generado" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6878,7 +6916,7 @@ msgid "Server" msgstr "Servidor" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "Error del servidor" @@ -6906,7 +6944,7 @@ msgstr "Tamaño del cubo hash de nombres de servidor" msgid "Server names hash table size" msgstr "Tamaño de la tabla hash de nombres de servidor" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "No se encuentra server_name en las directivas" @@ -6958,19 +6996,19 @@ msgstr "Usando el proveedor de desafíos HTTP01" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath está vacío, consulte https://nginxui." -"com/guide/config-nginx.html para obtener más información" +"Settings.NginxLogSettings.AccessLogPath está vacío, consulte " +"https://nginxui.com/guide/config-nginx.html para obtener más información" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath está vacío, consulte https://nginxui." -"com/guide/config-nginx.html para obtener más información" +"Settings.NginxLogSettings.ErrorLogPath está vacío, consulte " +"https://nginxui.com/guide/config-nginx.html para obtener más información" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6989,7 +7027,7 @@ msgstr "Mostrar" msgid "Show Assistant" msgstr "Mostrar asistente" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "Iniciar sesión con una llave de acceso" @@ -7075,10 +7113,6 @@ msgstr "Tamaño" msgid "Skip Installation" msgstr "Omitir instalación" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "Tiempo de espera entre iteraciones del cargador de caché" @@ -7091,6 +7125,10 @@ msgstr "Tiempo de espera entre iteraciones del administrador de caché" msgid "Socket" msgstr "Socket" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "Algunos navegadores rechazan certificados TLS válidos por más de 398 días." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "Ordenado por" @@ -7107,15 +7145,6 @@ msgstr "Patrocinador" msgid "SSD storage for better I/O performance" msgstr "Almacenamiento SSD para un mejor rendimiento de E/S" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "Se recomiendan 2+ núcleos" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7205,9 +7234,9 @@ msgstr "Estático" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7282,7 +7311,7 @@ msgstr "El directorio streams-enabled no existe" msgid "Structured" msgstr "Estructurado" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Puerto de estado stub" @@ -7290,7 +7319,7 @@ msgstr "Puerto de estado stub" msgid "Stub_status is not enabled" msgstr "Stub_status no está habilitado" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7308,9 +7337,9 @@ msgstr "Domingo" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" "Permite la comunicación con el backend a través del protocolo WebSocket. Si " "su interfaz de Nginx se utiliza a través de un proxy inverso de Nginx, " @@ -7374,8 +7403,7 @@ msgstr "Error al sincronizar la configuración %{config_name} a %{node_name}" #: src/components/Notification/notifications.ts:82 msgid "Sync config %{config_name} to %{node_name} successfully" -msgstr "" -"Configuración %{config_name} sincronizada con %{node_name} correctamente" +msgstr "Configuración %{config_name} sincronizada con %{node_name} correctamente" #: src/components/Notification/notifications.ts:77 src/language/constants.ts:45 msgid "Sync Config Error" @@ -7403,6 +7431,7 @@ msgid "Sync strategy" msgstr "Estrategia de sincronización" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "Sincronizar con" @@ -7440,21 +7469,13 @@ msgstr "Restauración del sistema" msgid "System restored successfully." msgstr "Sistema restaurado correctamente." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "Objetivos" @@ -7522,26 +7543,36 @@ msgstr "" "renovado si ha pasado más de 1 semana o el período que configuró en ajustes " "desde que fue emitido por última vez." +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"El certificado se ha generado en %{path} y las directivas ssl_certificate " +"se han añadido al bloque de servidor actual. Guarde la configuración ahora " +"o revise los cambios en el editor y guárdelos manualmente." + #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "Los siguientes sitios serán desactivados:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "Los siguientes sitios se habilitarán:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" -"La base de datos GeoLite2 es necesaria para el análisis geográfico de IP sin " -"conexión. Descárguela para habilitar esta función." +"La base de datos GeoLite2 es necesaria para el análisis geográfico de IP " +"sin conexión. Descárguela para habilitar esta función." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" "La base de datos GeoLite2 proporciona información geográfica para " "direcciones IP. Se utiliza para el análisis geográfico fuera de línea en " @@ -7568,15 +7599,16 @@ msgid "" "The linked DNS record was deleted from the DNS server. You can recreate it " "or clear the link." msgstr "" -"El registro DNS vinculado fue eliminado del servidor DNS. Puedes recrearlo o " -"borrar el enlace." +"El registro DNS vinculado fue eliminado del servidor DNS. Puedes recrearlo " +"o borrar el enlace." #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" -"La ruta del registro no está bajo las rutas en settings.NginxSettings." -"LogDirWhiteList" +"La ruta del registro no está bajo las rutas en " +"settings.NginxSettings.LogDirWhiteList" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 @@ -7588,8 +7620,7 @@ msgstr "" "dos puntos y puntos." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" "El modelo utilizado para la finalización de código, si no se establece, se " "utilizará el modelo de chat." @@ -7663,7 +7694,7 @@ msgstr "Conexiones concurrentes máximas teóricas:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "Máximo teórico de RPS (Solicitudes Por Segundo):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " @@ -7719,17 +7750,14 @@ msgid "This field should not be empty" msgstr "Este campo no debe estar vacío" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." -msgstr "" -"Este campo solo debe contener letras, caracteres Unicode, números y -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." +msgstr "Este campo solo debe contener letras, caracteres Unicode, números y -_." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" -msgstr "" -"Este campo solo debe contener letras, caracteres Unicode, números y -_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" +msgstr "Este campo solo debe contener letras, caracteres Unicode, números y -_./:" #: src/components/Notification/notifications.ts:102 msgid "This is a test message sent at %{timestamp} from Nginx UI." @@ -7743,10 +7771,6 @@ msgstr "" "Este modo solo muestra el flujo de la interfaz de usuario de instalación y " "no cambia ningún estado del servidor." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " @@ -7772,27 +7796,35 @@ msgstr "" "Esta operación solo eliminará el certificado de la base de datos. Los " "archivos del certificado en el sistema de archivos no se eliminarán." +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "" +"Este certificado autofirmado es administrado por Nginx UI y se renueva " +"automáticamente." + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" -"Este sitio está configurado como un servidor predeterminado (default_server) " -"para HTTPS (puerto 443). Los certificados IP requieren el soporte de una " -"Autoridad de Certificación (CA) y pueden no estar disponibles con todos los " -"proveedores de ACME." +"Este sitio está configurado como un servidor predeterminado " +"(default_server) para HTTPS (puerto 443). Los certificados IP requieren el " +"soporte de una Autoridad de Certificación (CA) y pueden no estar " +"disponibles con todos los proveedores de ACME." #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" "Este sitio utiliza un nombre de servidor comodín (_) que normalmente indica " -"un certificado basado en IP. Los certificados IP requieren el soporte de una " -"Autoridad de Certificación (CA) y pueden no estar disponibles con todos los " -"proveedores de ACME." +"un certificado basado en IP. Los certificados IP requieren el soporte de " +"una Autoridad de Certificación (CA) y pueden no estar disponibles con todos " +"los proveedores de ACME." #: src/views/backup/components/BackupCreator.vue:141 msgid "" @@ -7821,8 +7853,7 @@ msgstr "" #: src/views/nginx_log/indexing/IndexManagement.vue:56 msgid "This will rebuild the index data for this specific file: %{path}" -msgstr "" -"Esto reconstruirá los datos del índice para este archivo específico: %{path}" +msgstr "Esto reconstruirá los datos del índice para este archivo específico: %{path}" #: src/components/SystemRestore/SystemRestoreContent.vue:253 #: src/components/SystemRestore/SystemRestoreContent.vue:336 @@ -7843,8 +7874,7 @@ msgstr "" "interfaz de Nginx se reiniciará una vez completada la restauración." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" "Esto actualizará o reinstalará la interfaz de usuario de Nginx en " "%{nodeNames} a %{version}." @@ -7895,7 +7925,8 @@ msgstr "para confirmar la eliminación" #: src/views/certificate/components/RemoveCert.vue:134 msgid "To confirm revocation, please type \"Revoke\" in the field below:" msgstr "" -"Para confirmar la revocación, escriba \"Revocar\" en el campo a continuación:" +"Para confirmar la revocación, escriba \"Revocar\" en el campo a " +"continuación:" #: src/views/preference/components/AuthSettings/TOTP.vue:70 msgid "" @@ -7912,21 +7943,21 @@ msgid "" "and restart Nginx UI." msgstr "" "Para garantizar la seguridad, no se puede agregar la configuración de " -"Webauthn a través de la UI. Configure manualmente lo siguiente en el archivo " -"de configuración app.ini y reinicie Nginx UI." +"Webauthn a través de la UI. Configure manualmente lo siguiente en el " +"archivo de configuración app.ini y reinicie Nginx UI." #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" -"Para garantizar que la renovación automática del certificado pueda funcionar " -"con normalidad, debemos agregar una ubicación para transmitir la solicitud " -"de la autoridad al backend, y debemos guardar este archivo y volver a cargar " -"Nginx. ¿Estás seguro de que quieres continuar?" +"Para garantizar que la renovación automática del certificado pueda " +"funcionar con normalidad, debemos agregar una ubicación para transmitir la " +"solicitud de la autoridad al backend, y debemos guardar este archivo y " +"volver a cargar Nginx. ¿Estás seguro de que quieres continuar?" #: src/views/preference/tabs/OpenAISettings.vue:44 msgid "" @@ -8045,8 +8076,7 @@ msgstr "Basura" #: src/views/nginx_log/structured/StructuredLogViewer.vue:829 msgid "Try adjusting your search criteria or navigate to different pages." -msgstr "" -"Intente ajustar sus criterios de búsqueda o navegar a diferentes páginas." +msgstr "Intente ajustar sus criterios de búsqueda o navegar a diferentes páginas." #: src/views/nginx_log/structured/StructuredLogViewer.vue:839 msgid "Try adjusting your search criteria or time range." @@ -8067,7 +8097,7 @@ msgstr "TTL (segundos)" msgid "Tuesday" msgstr "Martes" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "Se requiere autenticación de dos factores" @@ -8088,10 +8118,6 @@ msgstr "Tipo" msgid "Type %{delete} to confirm" msgstr "Escriba %{delete} para confirmar" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "Escriba o seleccione registros A/AAAA" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "Escriba o seleccione el navegador" @@ -8137,11 +8163,11 @@ msgstr "Formato de registro no compatible" msgid "Update already in progress" msgstr "Actualización ya en proceso" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "Actualizar contraseña" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "Actualizar perfil" @@ -8230,11 +8256,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "Usa @ para la raíz" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "Usar OTP" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "Usar código de recuperación" @@ -8242,10 +8268,6 @@ msgstr "Usar código de recuperación" msgid "Use Temporary Path" msgstr "Usar ruta temporal" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "Usuario" @@ -8259,7 +8281,7 @@ msgstr "Agente de usuario" msgid "User banned" msgstr "Usuario bloqueado" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "Información del usuario actualizada correctamente" @@ -8272,7 +8294,7 @@ msgid "User Profile" msgstr "Perfil de usuario" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "Nombre de usuario" @@ -8290,10 +8312,14 @@ msgstr "UV" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "Válido" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "Válido por (días)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "Validar certificado SSL" @@ -8304,11 +8330,6 @@ msgstr "Validar certificado SSL" msgid "Value" msgstr "Valor" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "Verificar secreto" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8345,7 +8366,7 @@ msgstr "Ver todas las notificaciones" msgid "View on GitHub" msgstr "Ver en GitHub" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "Ver códigos de recuperación" @@ -8373,7 +8394,7 @@ msgstr "Visitas" msgid "Waiting processes" msgstr "Procesos de espera" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8398,18 +8419,18 @@ msgid "" "or consider using a private CA." msgstr "" "Advertencia: Parece que esta es una dirección IP privada. Las entidades de " -"certificación públicas como Let's Encrypt no pueden emitir certificados para " -"IPs privadas. Utilice una dirección IP pública o considere usar una entidad " -"de certificación privada." +"certificación públicas como Let's Encrypt no pueden emitir certificados " +"para IPs privadas. Utilice una dirección IP pública o considere usar una " +"entidad de certificación privada." #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "No aceptamos solicitudes de funciones" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" "Eliminaremos la configuración de HTTPChallenge de este archivo y " "recargaremos Nginx. ¿Estás seguro de que quieres continuar?" @@ -8447,6 +8468,19 @@ msgstr "Semanalmente el %{day} a las %{time}" msgid "Weight" msgstr "Peso" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"Cuando está habilitado, DDNS posee los nombres seleccionados: empareja " +"automáticamente registros de la misma familia, crea registros faltantes y " +"elimina aquellos cuyas familias de IP no son accesibles. Deshabilítelo para " +"gestionar solo los registros que haya seleccionado explícitamente y " +"mantener intacto el resto del estado DNS." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8467,7 +8501,7 @@ msgstr "" "establecidos en el espacio de nombres y los nodos seleccionados a " "continuación se sincronizarán." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8479,7 +8513,7 @@ msgstr "" msgid "Whether to use a temporary path when writing temporary files" msgstr "Si se debe usar una ruta temporal al escribir archivos temporales" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "Certificado comodín" @@ -8498,7 +8532,7 @@ msgstr "Procesos de trabajo" msgid "Workers" msgstr "Trabajadores" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "Espacio de trabajo" @@ -8537,8 +8571,8 @@ msgstr "Si" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" "Estás accediendo a esta terminal a través de una conexión HTTP insegura en " "un dominio que no es localhost. Esto puede exponer información sensible." @@ -8546,8 +8580,8 @@ msgstr "" #: src/constants/errors/config.ts:12 msgid "You are not allowed to delete a file outside of the nginx config path" msgstr "" -"No tienes permiso para eliminar un archivo fuera de la ruta de configuración " -"de nginx" +"No tienes permiso para eliminar un archivo fuera de la ruta de " +"configuración de nginx" #: src/views/system/Upgrade.vue:224 msgid "You are using the latest version" @@ -8574,18 +8608,35 @@ msgstr "" "llave de acceso." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" "Aún no has habilitado la autenticación en dos pasos. Por favor, habilítala " "para generar códigos de recuperación." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "Aún no has generado códigos de recuperación." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"Su cuenta aún utiliza un código de recuperación heredado. Genere nuevos " +"códigos de recuperación después de la verificación para mantener segura la " +"recuperación de la cuenta." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"Tu cuenta utiliza un código de recuperación heredado obsoleto. Genera " +"nuevos códigos de recuperación ahora para completar la migración y mantener " +"segura la recuperación de la cuenta." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" @@ -8593,8 +8644,17 @@ msgstr "" "inseguro. Por favor, genere nuevos códigos de recuperación lo antes posible " "para garantizar la seguridad." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"Tu código de recuperación heredado ya ha sido usado y no puede volver a " +"utilizarse. Genera nuevos códigos de recuperación ahora para mantener " +"disponible la recuperación de cuenta." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "Tus códigos antiguos ya no funcionarán." @@ -8606,6 +8666,61 @@ msgstr "Sus llaves de acceso" msgid "Zero-allocation pipeline" msgstr "Canalización sin asignación" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx no pudo validar la configuración." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "Autenticando..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Conectado" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "Contenido" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "Copiar" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "Contenedor Docker externo" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "Generar" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "Sobrescribir archivo existente" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "Regenerar respuesta" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "No se han seleccionado nodos" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "Renovar Certificado" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "Se recomiendan 2+ núcleos" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "Escriba o seleccione registros A/AAAA" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "Verificar secreto" + #~ msgid "OpenAI" #~ msgstr "OpenAI" @@ -8615,15 +8730,14 @@ msgstr "Canalización sin asignación" #~ "sido alterado" #~ msgid "Once the verification is complete, the records will be removed." -#~ msgstr "" -#~ "Una vez que se complete la verificación, los registros se eliminarán." +#~ msgstr "Una vez que se complete la verificación, los registros se eliminarán." #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." #~ msgstr "" -#~ "Agregaremos uno o más registros TXT a los registros DNS de su dominio " -#~ "para verificar la propiedad." +#~ "Agregaremos uno o más registros TXT a los registros DNS de su dominio para " +#~ "verificar la propiedad." #~ msgid "Settings" #~ msgstr "Configuración" @@ -8707,9 +8821,7 @@ msgstr "Canalización sin asignación" #~ msgstr "Rendimiento sostenido en hardware moderno" #~ msgid "Backup path not in granted access paths: {0}" -#~ msgstr "" -#~ "La ruta de copia de seguridad no está en las rutas de acceso concedidas: " -#~ "{0}" +#~ msgstr "La ruta de copia de seguridad no está en las rutas de acceso concedidas: {0}" #~ msgid "Build with" #~ msgstr "Desarrollado con" @@ -8724,8 +8836,7 @@ msgstr "Canalización sin asignación" #~ msgstr "Error al evaluar los enlaces simbólicos: {0}" #~ msgid "Failed to restore Nginx UI files: {0}" -#~ msgstr "" -#~ "Error al restaurar los archivos de la interfaz de usuario de Nginx: {0}" +#~ msgstr "Error al restaurar los archivos de la interfaz de usuario de Nginx: {0}" #~ msgid "Failed to write to zip buffer: {0}" #~ msgstr "Error al escribir en el búfer ZIP: {0}" @@ -8746,8 +8857,7 @@ msgstr "Canalización sin asignación" #~ msgstr "El punto de conexión de S3 no es válido: {0}" #~ msgid "Storage path not in granted access paths: {0}" -#~ msgstr "" -#~ "La ruta de almacenamiento no está en las rutas de acceso concedidas: {0}" +#~ msgstr "La ruta de almacenamiento no está en las rutas de acceso concedidas: {0}" #~ msgid "files" #~ msgstr "archivos" @@ -8794,15 +8904,15 @@ msgstr "Canalización sin asignación" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" -#~ "Soporte para la comunicación con el backend a través del protocolo Server-" -#~ "Sent Events. Si su Nginx UI se está utilizando a través de un proxy " +#~ "Soporte para la comunicación con el backend a través del protocolo " +#~ "Server-Sent Events. Si su Nginx UI se está utilizando a través de un proxy " #~ "inverso de Nginx, consulte este enlace para escribir el archivo de " -#~ "configuración correspondiente: https://nginxui.com/guide/nginx-proxy-" -#~ "example.html" +#~ "configuración correspondiente: " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "Si se deja en blanco, se utilizará el directorio CA predeterminado." @@ -8872,8 +8982,8 @@ msgstr "Canalización sin asignación" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" #~ "Verifique si /var/run/docker.sock existe. Si está utilizando la imagen " #~ "oficial de Docker de Nginx UI, asegúrese de que el socket de Docker esté " @@ -8892,8 +9002,7 @@ msgstr "Canalización sin asignación" #~ msgstr "Base de datos (Opcional, default: database)" #~ msgid "The filename cannot contain the following characters: %{c}" -#~ msgstr "" -#~ "El nombre del archivo no puede contener los siguientes caracteres: %{c}" +#~ msgstr "El nombre del archivo no puede contener los siguientes caracteres: %{c}" #, fuzzy #~ msgid "AutoCert is running, please wait" @@ -8908,8 +9017,8 @@ msgstr "Canalización sin asignación" #, fuzzy #~ msgid "" -#~ "When you enable/disable, delete, or save this stream, the nodes set in " -#~ "the Node Group and the nodes selected below will be synchronized." +#~ "When you enable/disable, delete, or save this stream, the nodes set in the " +#~ "Node Group and the nodes selected below will be synchronized." #~ msgstr "" #~ "Cuando habilite/deshabilite, elimine o guarde este sitio, los nodos " #~ "configurados en la categoría del sitio y los nodos seleccionados a " @@ -8940,8 +9049,7 @@ msgstr "Canalización sin asignación" #~ msgstr "Desplegado con éxito" #~ msgid "Disable site %{site} on %{node} error, response: %{resp}" -#~ msgstr "" -#~ "Error al deshabilitar el sitio %{site} en %{node}, respuesta: %{resp}" +#~ msgstr "Error al deshabilitar el sitio %{site} en %{node}, respuesta: %{resp}" #~ msgid "Do you want to deploy this file to remote server?" #~ msgid_plural "Do you want to deploy this file to remote servers?" @@ -8964,26 +9072,23 @@ msgstr "Canalización sin asignación" #~ msgid "Please upgrade the remote Nginx UI to the latest version" #~ msgstr "" #~ "Sincronización de la configuración %{cert_name} a %{env_name} falló, por " -#~ "favor actualiza la interfaz de usuario de Nginx en el servidor remoto a " -#~ "la última versión" +#~ "favor actualiza la interfaz de usuario de Nginx en el servidor remoto a la " +#~ "última versión" -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" #~ msgstr "" #~ "Renombrar %{orig_path} a %{new_path} en %{env_name} falló, respuesta: " #~ "%{resp}" #, fuzzy -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" #~ msgstr "Renombrar %{orig_path} a %{new_path} en %{env_name} con éxito" #, fuzzy #~ msgid "Save site %{site} to %{node} error, response: %{resp}" #~ msgstr "" -#~ "Sincronización del Certificado %{cert_name} a %{env_name} falló, " -#~ "respuesta: %{resp}" +#~ "Sincronización del Certificado %{cert_name} a %{env_name} falló, respuesta: " +#~ "%{resp}" #~ msgid "" #~ "Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " @@ -8992,11 +9097,10 @@ msgstr "Canalización sin asignación" #~ "Sincronización del Certificado %{cert_name} a %{env_name} fallida, por " #~ "favor actualice la interfaz de Nginx remota a la última versión" -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "" -#~ "Sincronización del Certificado %{cert_name} a %{env_name} falló, " -#~ "respuesta: %{resp}" +#~ "Sincronización del Certificado %{cert_name} a %{env_name} falló, respuesta: " +#~ "%{resp}" #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}" #~ msgstr "" @@ -9007,8 +9111,8 @@ msgstr "Canalización sin asignación" #~ msgstr "¿No puede escanear? Utilice la vinculación con una llave de texto" #~ msgid "" -#~ "If you lose your mobile phone, you can use the recovery code to reset " -#~ "your 2FA." +#~ "If you lose your mobile phone, you can use the recovery code to reset your " +#~ "2FA." #~ msgstr "" #~ "Si pierde su teléfono móvil, puede usar el código de recuperación para " #~ "restablecer su 2FA." @@ -9016,11 +9120,10 @@ msgstr "Canalización sin asignación" #~ msgid "Incorrect username or password" #~ msgstr "Nombre de usuario o contraseña incorrectos" -#~ msgid "" -#~ "The recovery code is only displayed once, please save it in a safe place." +#~ msgid "The recovery code is only displayed once, please save it in a safe place." #~ msgstr "" -#~ "El código de recuperación se muestra solo una vez, por favor guárdalo en " -#~ "un lugar seguro." +#~ "El código de recuperación se muestra solo una vez, por favor guárdalo en un " +#~ "lugar seguro." #~ msgid "Too many login failed attempts, please try again later" #~ msgstr "" @@ -9095,9 +9198,9 @@ msgstr "Canalización sin asignación" #~ "Once the verification is complete, the records will be removed.\n" #~ "Please note that the unit of time configurations below are all in seconds." #~ msgstr "" -#~ "Complete las credenciales de autenticación de la API proporcionadas por " -#~ "su proveedor de DNS. Agregaremos uno o más registros TXT a los registros " -#~ "DNS de su dominio para verificar la propiedad. Una vez que se complete la " +#~ "Complete las credenciales de autenticación de la API proporcionadas por su " +#~ "proveedor de DNS. Agregaremos uno o más registros TXT a los registros DNS " +#~ "de su dominio para verificar la propiedad. Una vez que se complete la " #~ "verificación, se eliminarán los registros. Tenga en cuenta que las " #~ "configuraciones de tiempo que aparecen debajo están todas en segundos." @@ -9114,13 +9217,13 @@ msgstr "Canalización sin asignación" #~ msgstr "Tema" #~ msgid "" -#~ "Such as Reload and Configs, regex can configure as `/api/nginx/reload|/" -#~ "api/nginx/test|/api/config/.+`, please see system api" +#~ "Such as Reload and Configs, regex can configure as " +#~ "`/api/nginx/reload|/api/nginx/test|/api/config/.+`, please see system api" #~ msgstr "" #~ "Las reglas de sincronización de operación de `Recarga` y `Gestión de " -#~ "Configuración` se pueden configurar como `/api/nginx/reload|/api/nginx/" -#~ "test|/api/config/.+`, consulte la API del sistema para obtener más " -#~ "detalles" +#~ "Configuración` se pueden configurar como " +#~ "`/api/nginx/reload|/api/nginx/test|/api/config/.+`, consulte la API del " +#~ "sistema para obtener más detalles" #~ msgid "SyncApiRegex" #~ msgstr "Expresión Regular de la API" @@ -9134,15 +9237,15 @@ msgstr "Canalización sin asignación" #~ msgstr "Solo gestión de registros DNS" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" #~ "Los dominios DNS se usan para gestionar registros DNS en NGINX UI y son " #~ "independientes de los desafíos de certificados ACME DNS-01." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" #~ "Actualmente, la gestión de registros DNS solo admite Alibaba Cloud DNS, " #~ "Tencent Cloud DNS y Cloudflare." @@ -9154,6 +9257,7 @@ msgstr "Canalización sin asignación" #~ "Para emitir certificados con ACME DNS-01, cree credenciales DNS en DNS > " #~ "Credenciales y selecciónelas en la configuración del certificado." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains solo utiliza proveedores con implementaciones de gestión de registros DNS." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "" +#~ "DNS Domains solo utiliza proveedores con implementaciones de gestión de " +#~ "registros DNS." diff --git a/app/src/language/fr_FR/app.po b/app/src/language/fr_FR/app.po index 4cacf9d6..b95d0988 100644 --- a/app/src/language/fr_FR/app.po +++ b/app/src/language/fr_FR/app.po @@ -5,11 +5,11 @@ msgstr "" "POT-Creation-Date: \n" "PO-Revision-Date: 2025-02-13 01:42+0000\n" "Last-Translator: Picman \n" -"Language-Team: French \n" +"Language-Team: French " +"\n" "Language: fr_FR\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.9.2\n" @@ -22,8 +22,7 @@ msgstr "" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" -msgstr "" -"[Nginx UI] Sauvegarde du certificat actuel pour une révocation ultérieure" +msgstr "[Nginx UI] Sauvegarde du certificat actuel pour une révocation ultérieure" #: src/language/generate.ts:39 msgid "[Nginx UI] Certificate renewed successfully" @@ -34,8 +33,7 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] Certificat révoqué avec succès" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "" "[Nginx UI] Le certificat a été utilisé pour le serveur, rechargement du " "certificat TLS du serveur" @@ -119,11 +117,11 @@ msgstr "" #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" -"* Les fichiers d'index sont stockés par défaut dans le répertoire \"log-" -"index\" du chemin de configuration de NGINX UI." +"* Les fichiers d'index sont stockés par défaut dans le répertoire " +"\"log-index\" du chemin de configuration de NGINX UI." #: src/views/nginx_log/components/IndexingSettingsModal.vue:215 msgid "" @@ -134,10 +132,6 @@ msgstr "" "de RAM. Les performances réelles peuvent varier selon votre configuration " "matérielle." -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "%{count} sites sélectionnés" @@ -147,17 +141,17 @@ msgid "" "%{provider} can be used for ACME DNS-01 certificate challenges and DNS " "record management in DNS Domains." msgstr "" -"%{provider} peut être utilisé pour les défis de certificat ACME DNS-01 et la " -"gestion des enregistrements DNS dans DNS Domains." +"%{provider} peut être utilisé pour les défis de certificat ACME DNS-01 et " +"la gestion des enregistrements DNS dans DNS Domains." #: src/views/dns/components/DNSChallenge.vue:62 msgid "" "%{provider} can be used for ACME DNS-01 certificate challenges, but DNS " "record management in DNS Domains is not supported for this provider." msgstr "" -"%{provider} peut être utilisé pour les défis de certificat ACME DNS-01, mais " -"la gestion des enregistrements DNS dans DNS Domains n'est pas prise en charge " -"pour ce fournisseur." +"%{provider} peut être utilisé pour les défis de certificat ACME DNS-01, " +"mais la gestion des enregistrements DNS dans DNS Domains n'est pas prise en " +"charge pour ce fournisseur." #: src/views/nginx_log/structured/StructuredLogViewer.vue:811 msgid "%{start}-%{end} of %{total} items" @@ -190,7 +184,7 @@ msgstr "Statistiques UV/PV sur 24 heures" msgid "2FA" msgstr "2fa" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "Options 2FA" @@ -198,13 +192,28 @@ msgstr "Options 2FA" msgid "4GB+ RAM recommended" msgstr "4 Go de RAM ou plus recommandés" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "" +"Les enregistrements A portant les mêmes noms ne sont pas gérés en mode IPv6 " +"uniquement. Ils restent inchangés dans le DNS." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "" "Un fichier d'inclusion requis est manquant dans le bac à sable ou la " "configuration source." +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"Les enregistrements AAAA portant les mêmes noms ne sont pas gérés en mode " +"IPv4 uniquement. Ils restent inchangés dans le DNS." + #: src/routes/modules/system.ts:38 msgid "About" msgstr "À propos" @@ -222,10 +231,6 @@ msgstr "Le chemin du journal d'accès n'existe pas" msgid "Access Logs" msgstr "Journaux d'accès" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -237,10 +242,10 @@ msgstr "Action" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -282,7 +287,8 @@ msgstr "Ajouter une configuration" msgid "Add Directive Below" msgstr "Ajouter une directive" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "Ajouter un domaine" @@ -290,6 +296,14 @@ msgstr "Ajouter un domaine" msgid "Add Header" msgstr "Ajouter un en-tête" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "Ajouter une adresse IP" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "Ajouter un élément" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -330,8 +344,7 @@ msgstr "Mode avancé" #: src/views/nginx_log/NginxLogList.vue:397 msgid "Advanced indexing enabled but failed to start rebuild" -msgstr "" -"Indexation avancée activée mais échec du démarrage de la reconstruction" +msgstr "Indexation avancée activée mais échec du démarrage de la reconstruction" #: src/views/nginx_log/NginxLogList.vue:388 msgid "Advanced indexing enabled successfully" @@ -365,11 +378,6 @@ msgstr "" msgid "All" msgstr "Tous" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx n'a pas pu valider la configuration." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "Tous les composants" @@ -379,7 +387,7 @@ msgstr "Tous les composants" msgid "All Recovery Codes Have Been Used" msgstr "Tous les codes de récupération ont été utilisés" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -405,8 +413,7 @@ msgid "Any" msgstr "Tous" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "" "Toute adresse IP accessible peut être utilisée avec des autorités de " "certification privées" @@ -435,10 +442,6 @@ msgstr "Type d'API" msgid "App" msgstr "Application" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "Appliquer" @@ -451,7 +454,7 @@ msgstr "Arch" msgid "Are you sure to delete this banned IP immediately?" msgstr "Êtes-vous sûr de vouloir supprimer immédiatement cette IP bannie ?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "Êtes-vous sûr de vouloir supprimer cette configuration DDNS ?" @@ -463,14 +466,13 @@ msgstr "Êtes-vous sûr de vouloir supprimer immédiatement cette clé d'accès msgid "Are you sure to delete this record?" msgstr "Êtes-vous sûr de vouloir supprimer cet enregistrement ?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "Êtes-vous sûr de vouloir générer de nouveaux codes de récupération ?" #: src/views/preference/components/AuthSettings/TOTP.vue:87 msgid "Are you sure to reset 2FA?" -msgstr "" -"Êtes-vous sûr de vouloir réinitialiser l'authentification à deux facteurs ?" +msgstr "Êtes-vous sûr de vouloir réinitialiser l'authentification à deux facteurs ?" #: src/components/Notification/Notification.vue:117 #: src/views/notification/Notification.vue:40 @@ -535,6 +537,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud est compatible avec OpenAI. Utilisez " +"https://api.atlascloud.ai/v1 et une clé API Atlas Cloud." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -544,12 +548,11 @@ msgstr "Tenter de corriger" msgid "Attempts" msgstr "Tentatives" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "Authentification" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "S'authentifier avec une clé d'accès" @@ -557,11 +560,6 @@ msgstr "S'authentifier avec une clé d'accès" msgid "Authenticating..." msgstr "Authentification en cours..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "Authentification en cours..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -609,15 +607,15 @@ msgstr "Actualisation automatique désactivée" msgid "Auto refresh enabled" msgstr "Actualisation automatique activée" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "Renouvellement automatique désactivé pour %{name}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "Renouvellement automatique activé pour %{name}" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert est en cours d'exécution, veuillez patienter..." @@ -703,8 +701,7 @@ msgstr "Échec de la vérification de l'intégrité de la sauvegarde" #: src/constants/errors/backup.ts:63 msgid "Backup manifest is missing required file entry: {0}" -msgstr "" -"Le manifeste de sauvegarde ne contient pas l'entrée de fichier requise : {0}" +msgstr "Le manifeste de sauvegarde ne contient pas l'entrée de fichier requise : {0}" #: src/views/backup/AutoBackup/AutoBackup.vue:50 msgid "Backup Path" @@ -739,8 +736,7 @@ msgstr "" "%{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" "La tâche de sauvegarde %{backup_name} a échoué lors du téléchargement vers " "le stockage, erreur : %{error}" @@ -804,14 +800,7 @@ msgstr "Mise à jour par lot" #: src/language/curd.ts:38 msgid "Belows are selected items that you want to batch modify" -msgstr "" -"Ci-dessous sont sélectionnés les éléments que vous voulez modifier en masse" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" +msgstr "Ci-dessous sont sélectionnés les éléments que vous voulez modifier en masse" #: src/constants/errors/nginx.ts:3 msgid "Block is nil" @@ -838,9 +827,10 @@ msgid "" "requirements and understand the performance implications. This will start " "indexing existing log files immediately." msgstr "" -"En activant l'indexation avancée, vous reconnaissez que votre système répond " -"aux exigences et comprenez les implications en termes de performances. Cela " -"commencera à indexer immédiatement les fichiers journaux existants." +"En activant l'indexation avancée, vous reconnaissez que votre système " +"répond aux exigences et comprenez les implications en termes de " +"performances. Cela commencera à indexer immédiatement les fichiers journaux " +"existants." #: src/views/certificate/ACMEUser.vue:39 msgid "CA Dir" @@ -852,8 +842,7 @@ msgstr "Cache" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:177 msgid "Cache items not accessed within this time will be removed" -msgstr "" -"Les éléments du cache non consultés pendant cette période seront supprimés" +msgstr "Les éléments du cache non consultés pendant cette période seront supprimés" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:349 msgid "Cache loader processing time threshold" @@ -904,14 +893,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -932,8 +921,7 @@ msgstr "Impossible d'accéder au chemin de stockage {0} : {1}" #: src/constants/errors/user.ts:11 msgid "Cannot change initial user password in demo mode" -msgstr "" -"Impossible de modifier le mot de passe de l'utilisateur initial en mode démo" +msgstr "Impossible de modifier le mot de passe de l'utilisateur initial en mode démo" #: src/components/ConfigHistory/DiffViewer.vue:71 msgid "Cannot compare: Missing content" @@ -1004,6 +992,12 @@ msgstr "Le contenu du certificat et la clé privée ne peuvent pas être vides" msgid "Certificate decode error" msgstr "Erreur de décodage du certificat" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" +"Directives de certificat ajoutées à l'éditeur ; vérifiez et enregistrez " +"lorsque vous êtes prêt." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "Avis d'expiration du certificat" @@ -1022,6 +1016,14 @@ msgstr "Certificat expirant bientôt" msgid "Certificate files downloaded successfully" msgstr "Fichiers de certificat téléchargés avec succès" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "Le composant d'émission de certificats n'est pas prêt" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "Certificat émis avec succès" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "Le nom du certificat ne peut pas être vide" @@ -1056,17 +1058,18 @@ msgid "Certificate revoked successfully" msgstr "Certificat révoqué avec succès" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "État du certificat" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "Type de certificat" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "Certificats" @@ -1087,11 +1090,11 @@ msgstr "Méthode de challenge" msgid "Change Certificate" msgstr "Changer de certificat" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "Changer le mot de passe" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "Certificat modifié" @@ -1130,22 +1133,22 @@ msgstr "Vérifier le favicon" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "Vérifiez si /var/run/docker.sock existe. Si vous utilisez l'image Docker " "officielle de Nginx UI, assurez-vous que le socket Docker est monté comme " -"ceci : `-v /var/run/docker.sock:/var/run/docker.sock`. L'image officielle de " -"Nginx UI utilise /var/run/docker.sock pour communiquer avec le moteur Docker " -"de l'hôte via l'API Docker Client. Cette fonctionnalité est utilisée pour " -"contrôler Nginx dans un autre conteneur et effectuer un remplacement de " -"conteneur plutôt qu'un remplacement binaire lors des mises à jour OTA de " +"ceci : `-v /var/run/docker.sock:/var/run/docker.sock`. L'image officielle " +"de Nginx UI utilise /var/run/docker.sock pour communiquer avec le moteur " +"Docker de l'hôte via l'API Docker Client. Cette fonctionnalité est utilisée " +"pour contrôler Nginx dans un autre conteneur et effectuer un remplacement " +"de conteneur plutôt qu'un remplacement binaire lors des mises à jour OTA de " "Nginx UI pour s'assurer que les dépendances du conteneur sont également " "mises à jour. Si vous n'avez pas besoin de cette fonctionnalité, ajoutez la " "variable d'environnement NGINX_UI_IGNORE_DOCKER_SOCKET=true au conteneur." @@ -1160,8 +1163,7 @@ msgstr "" "presse-papiers" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "" "Vérifiez si le répertoire conf.d se trouve dans le répertoire de " "configuration de nginx" @@ -1176,24 +1178,25 @@ msgstr "" "Vérifiez si la base de données GeoLite2 est disponible lorsque l'indexation " "des journaux est activée. La base de données GeoLite2 est nécessaire pour " "l'analyse géographique des adresses IP dans l'indexation des journaux. Vous " -"pouvez la télécharger depuis la page des Préférences ou placer GeoLite2-City." -"mmdb manuellement dans le même répertoire que app.ini" +"pouvez la télécharger depuis la page des Préférences ou placer " +"GeoLite2-City.mmdb manuellement dans le même répertoire que app.ini" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" -"Vérifiez si le chemin du journal d'accès nginx existe. Par défaut, ce chemin " -"est obtenu à partir de 'nginx -V'. S'il ne peut pas être obtenu ou si le " -"chemin obtenu ne pointe pas vers un fichier valide existant, une erreur sera " -"signalée. Dans ce cas, vous devez modifier le fichier de configuration pour " -"spécifier le chemin du journal d'accès. Consultez la documentation pour plus " -"de détails : https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" +"Vérifiez si le chemin du journal d'accès nginx existe. Par défaut, ce " +"chemin est obtenu à partir de 'nginx -V'. S'il ne peut pas être obtenu ou " +"si le chemin obtenu ne pointe pas vers un fichier valide existant, une " +"erreur sera signalée. Dans ce cas, vous devez modifier le fichier de " +"configuration pour spécifier le chemin du journal d'accès. Consultez la " +"documentation pour plus de détails : " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1209,30 +1212,30 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" -"Vérifiez si le chemin du journal des erreurs de nginx existe. Par défaut, ce " -"chemin est obtenu à partir de 'nginx -V'. S'il ne peut pas être obtenu ou si " -"le chemin obtenu ne pointe pas vers un fichier valide existant, une erreur " -"sera signalée. Dans ce cas, vous devez modifier le fichier de configuration " -"pour spécifier le chemin du journal des erreurs. Consultez la documentation " -"pour plus de détails : https://nginxui.com/zh_CN/guide/config-nginx." -"html#errorlogpath" +"Vérifiez si le chemin du journal des erreurs de nginx existe. Par défaut, " +"ce chemin est obtenu à partir de 'nginx -V'. S'il ne peut pas être obtenu " +"ou si le chemin obtenu ne pointe pas vers un fichier valide existant, une " +"erreur sera signalée. Dans ce cas, vous devez modifier le fichier de " +"configuration pour spécifier le chemin du journal des erreurs. Consultez la " +"documentation pour plus de détails : " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" "Vérifiez si le chemin du PID de Nginx existe. Par défaut, ce chemin est " -"obtenu à partir de 'nginx -V'. S'il ne peut pas être obtenu, une erreur sera " -"signalée. Dans ce cas, vous devez modifier le fichier de configuration pour " -"spécifier le chemin du PID de Nginx. Consultez la documentation pour plus de " -"détails: https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" +"obtenu à partir de 'nginx -V'. S'il ne peut pas être obtenu, une erreur " +"sera signalée. Dans ce cas, vous devez modifier le fichier de configuration " +"pour spécifier le chemin du PID de Nginx. Consultez la documentation pour " +"plus de détails: https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1260,11 +1263,11 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" -"Vérifier si les répertoires streams-available et streams-enabled se trouvent " -"dans le répertoire de configuration de nginx" +"Vérifier si les répertoires streams-available et streams-enabled se " +"trouvent dans le répertoire de configuration de nginx" #: src/views/dashboard/components/SiteHealthCheckModal.vue:625 msgid "Check Interval (seconds)" @@ -1283,6 +1286,10 @@ msgstr "Carte de la Chine" msgid "Cipher text is too short" msgstr "Texte de chiffrement trop court" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "Nettoyer les enregistrements conflictuels" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Nettoyage des variables d'environnement" @@ -1312,13 +1319,11 @@ msgstr "" #: src/language/curd.ts:51 src/language/curd.ts:55 msgid "Click or drag files to this area to upload" -msgstr "" -"Cliquez ou faites glisser des fichiers dans cette zone pour les télécharger" +msgstr "Cliquez ou faites glisser des fichiers dans cette zone pour les télécharger" #: src/language/curd.ts:52 src/language/curd.ts:56 msgid "Click or drag folders to this area to upload" -msgstr "" -"Cliquez ou faites glisser des dossiers dans cette zone pour télécharger" +msgstr "Cliquez ou faites glisser des dossiers dans cette zone pour télécharger" #: src/views/preference/components/AuthSettings/TOTP.vue:112 msgid "Click to copy" @@ -1481,8 +1486,8 @@ msgstr "Le fichier de configuration est testé avec succès" #: src/components/InspectConfig/InspectConfig.vue:149 msgid "Configuration file is test successful in isolated sandbox" msgstr "" -"Le fichier de configuration a été testé avec succès dans un environnement de " -"bac à sable isolé" +"Le fichier de configuration a été testé avec succès dans un environnement " +"de bac à sable isolé" #: src/components/ConfigHistory/ConfigHistory.vue:147 msgid "Configuration History" @@ -1500,11 +1505,11 @@ msgstr "Nom de la configuration" msgid "Configurations" msgstr "Configurations" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "Configurer" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "Configurer DDNS" @@ -1516,7 +1521,7 @@ msgstr "Configurer SSL" msgid "Confirm Delete" msgstr "Confirmer la suppression" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "Confirmer le nouveau mot de passe" @@ -1529,11 +1534,6 @@ msgstr "Confirmation requise" msgid "Connected" msgstr "Connecté" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "Connecté" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "Erreur de connexion, tentative de reconnexion..." @@ -1546,15 +1546,6 @@ msgstr "Connexion perdue pour ce terminal. Veuillez actualiser si nécessaire." msgid "Connection timeout period" msgstr "Période de délai de connexion" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "Contenu" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "Statut du conteneur inconnu" @@ -1567,8 +1558,7 @@ msgstr "Contenu" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "Copié" @@ -1579,19 +1569,13 @@ msgstr "Copié !" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "Copier" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "Copier Codes" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "Copier" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "Mise à jour du core" @@ -1695,7 +1679,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "La création du client facilite la communication avec le serveur CA" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "Identifiant" @@ -1727,7 +1711,7 @@ msgstr "Connexions actives actuelles" msgid "Current Content" msgstr "Contenu actuel" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "Mot de passe actuel" @@ -1753,11 +1737,11 @@ msgstr "Expression cron personnalisée" msgid "Custom Directory" msgstr "Répertoire personnalisé" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "Domaines personnalisés" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "Certificat de domaines personnalisés" @@ -1820,15 +1804,15 @@ msgstr "Fichier de base de données introuvable" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "Configuration DDNS supprimée" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "Aperçu du DDNS" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS enregistré" @@ -1861,7 +1845,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "Supprimer" @@ -1946,8 +1930,8 @@ msgstr "Démo" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" "Le mode démo est activé. Ce terminal n'autorise qu'un petit ensemble de " "commandes sécurisées en lecture seule." @@ -2061,7 +2045,7 @@ msgstr "Désactiver" msgid "Disable" msgstr "Désactiver" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "Échec de la désactivation du renouvellement automatique pour %{name}" @@ -2101,8 +2085,7 @@ msgstr "Site %{name} désactivé sur %{node} avec succès" #: src/components/Notification/notifications.ts:138 msgid "Disable site %{name} maintenance on %{node} failed" -msgstr "" -"Échec de la désactivation de la maintenance du site %{name} sur %{node}" +msgstr "Échec de la désactivation de la maintenance du site %{name} sur %{node}" #: src/components/Notification/notifications.ts:142 msgid "Disable site %{name} maintenance on %{node} successfully" @@ -2117,7 +2100,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "Désactivation du flux %{name} depuis %{node} réussie" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2226,8 +2209,7 @@ msgstr "DNS01" #: src/components/AutoCertForm/AutoCertForm.vue:261 msgid "Do not enable this option unless you are sure that you need it." -msgstr "" -"N'activez pas cette option sauf si vous êtes sûr d'en avoir avez besoin." +msgstr "N'activez pas cette option sauf si vous êtes sûr d'en avoir avez besoin." #: src/views/site/components/SiteStatusSelect.vue:120 msgid "Do you want to %{action} this site?" @@ -2237,19 +2219,17 @@ msgstr "Voulez-vous %{action} ce site ?" msgid "Do you want to %{action} this stream?" msgstr "Voulez-vous %{action} ce flux ?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "Voulez-vous désactiver le renouvellement automatique des certificats ?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "Voulez-vous désactiver ce site ?" +msgstr "Voulez-vous désactiver les sites sélectionnés ?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "Voulez-vous activer ce flux ?" +msgstr "Voulez-vous activer les sites sélectionnés ?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2268,10 +2248,6 @@ msgstr "Voulez-vous supprimer cet upstream ?" msgid "Docker client not initialized" msgstr "Client Docker non initialisé" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Le socket Docker existe" @@ -2280,10 +2256,6 @@ msgstr "Le socket Docker existe" msgid "Docker socket not exist" msgstr "Le socket Docker n'existe pas" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2294,15 +2266,18 @@ msgstr[0] "Document" msgid "Document Count" msgstr "Nombre de documents" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "Domaine" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "Domaines" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" -msgstr "" -"La liste des domaines est vide, essayez de rouvrir Auto Cert pour %{config}" +msgstr "La liste des domaines est vide, essayez de rouvrir Auto Cert pour %{config}" #: src/views/certificate/components/CertificateDownload.vue:94 msgid "Download Certificate Files" @@ -2446,7 +2421,7 @@ msgstr "Activer l'indexation avancée" msgid "Enable Advanced Log Indexing" msgstr "Activer l'indexation avancée des journaux" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "Échec de l'activation du renouvellement automatique pour %{name}" @@ -2458,7 +2433,7 @@ msgstr "Activer la complétion de code" msgid "Enable compression for content transfer" msgstr "Activer la compression pour le transfert de contenu" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "Activer DDNS" @@ -2555,7 +2530,7 @@ msgid "Enable TOTP" msgstr "Activer TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2612,18 +2587,26 @@ msgstr "Fin" msgid "End Date" msgstr "Date de fin" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "Saisir le nom du certificat" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "Entrez le nom de domaine" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "Saisir l'adresse IP" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "Entrez l'adresse IP du serveur (ex. 203.0.113.1 ou 2001:db8::1)" #: src/components/SelfCheck/SelfCheck.vue:72 msgid "Enter the install secret to run the system check." -msgstr "" -"Entrez le secret d'installation pour exécuter la vérification du système." +msgstr "Entrez le secret d'installation pour exécuter la vérification du système." #: src/views/install/components/InstallView.vue:169 msgid "" @@ -2634,7 +2617,7 @@ msgstr "" "d'installation ou trouvé dans le fichier caché du répertoire de " "configuration pour déverrouiller l'installation." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "Entrez votre domaine" @@ -2646,7 +2629,7 @@ msgstr "La configuration de l'environnement est vide" msgid "Environment variables cleaned" msgstr "Variables d'environnement nettoyées" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2679,8 +2662,8 @@ msgstr "Journaux d'erreurs" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "" "Les journaux d'erreurs ne prennent pas en charge l'analyse structurée car " "ils contiennent des messages texte libres." @@ -2730,7 +2713,7 @@ msgid "Expected Text" msgstr "Texte attendu" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "Expiré" @@ -2752,18 +2735,13 @@ msgstr "" #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" "ID de clé de liaison de compte externe (facultatif). Requis pour certains " "fournisseurs ACME comme ZeroSSL." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "Conteneur Docker externe" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "Conteneur Docker externe" @@ -2786,6 +2764,7 @@ msgstr "Échec de l'obtention du certificat" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "Échec" @@ -3025,6 +3004,11 @@ msgstr "Échec de la génération de la clé AES : {0}" msgid "Failed to generate initialization vector: {0}" msgstr "Échec de la génération du vecteur d'initialisation : {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "Échec de la génération du certificat auto-signé" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "Échec de l'obtention des informations sur le certificat" @@ -3276,8 +3260,7 @@ msgstr "Le fichier existe" #: src/views/nginx_log/indexing/IndexManagement.vue:64 msgid "File index rebuild started successfully for %{path}" -msgstr "" -"La reconstruction de l'index du fichier a démarré avec succès pour %{path}" +msgstr "La reconstruction de l'index du fichier a démarré avec succès pour %{path}" #: src/constants/errors/config.ts:2 msgid "File name is not allowed: {0}" @@ -3357,8 +3340,7 @@ msgid "For commercial or professional use, contact" msgstr "Pour un usage commercial ou professionnel, contactez" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "" "Pour les journaux d'erreurs, veuillez utiliser le Visualiseur de Journaux " "Bruts pour une meilleure expérience de visualisation." @@ -3374,8 +3356,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" "Pour les certificats basés sur IP, veuillez spécifier l'adresse IP du " "serveur qui sera incluse dans le certificat." @@ -3427,14 +3409,16 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "" -"Mode débogage frontend : flux d'installation terminé sans envoyer de requête " -"backend" +"Mode débogage frontend : flux d'installation terminé sans envoyer de " +"requête backend" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "" "Mode de débogage frontend : flux de restauration terminé sans envoyer de " "requête backend" @@ -3451,21 +3435,24 @@ msgstr "Prise en charge de la recherche en texte intégral" msgid "General Certificate" msgstr "Certificat général" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "Générer" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "Générer" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "Générer de nouveaux codes de récupération" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "Générer nouveaux codes de récupération" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "Générer codes de récupération" @@ -3473,6 +3460,14 @@ msgstr "Générer codes de récupération" msgid "Generate recovery codes successfully" msgstr "Codes de récupération générés avec succès" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "Générer un certificat auto-signé" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "Générer un certificat auto-signé" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "Génération de clé privée pour l'enregistrement du compte" @@ -3521,8 +3516,7 @@ msgstr "Échec de la récupération des données" #: src/constants/errors/cert.ts:12 msgid "Get dns credential error: {0}" -msgstr "" -"Erreur lors de la récupération des informations d'identification DNS : {0}" +msgstr "Erreur lors de la récupération des informations d'identification DNS : {0}" #: src/views/node/BatchUpgrader.vue:182 src/views/system/Upgrade.vue:188 msgid "Get release information error" @@ -3553,6 +3547,10 @@ msgstr "Allez dans DNS > Identifiants pour créer ou gérer les identifiants" msgid "Go to Raw Log Viewer" msgstr "Aller au visualiseur de logs bruts" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "Accéder aux codes de récupération" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3562,8 +3560,8 @@ msgid "" "gRPC health check requires server to implement gRPC Health Check service " "(grpc.health.v1.Health)." msgstr "" -"La vérification de santé gRPC nécessite que le serveur implémente le service " -"de vérification de santé gRPC (grpc.health.v1.Health)." +"La vérification de santé gRPC nécessite que le serveur implémente le " +"service de vérification de santé gRPC (grpc.health.v1.Health)." #: src/views/dashboard/components/SiteHealthCheckModal.vue:599 msgid "" @@ -3571,8 +3569,8 @@ msgid "" "For testing, SSL validation is disabled by default." msgstr "" "gRPCS utilise le chiffrement TLS. Le serveur doit implémenter le service de " -"vérification de santé gRPC. Pour les tests, la validation SSL est désactivée " -"par défaut." +"vérification de santé gRPC. Pour les tests, la validation SSL est " +"désactivée par défaut." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67 msgid "GZIP Compression" @@ -3623,10 +3621,6 @@ msgstr "Cacher" msgid "Hide Assistant" msgstr "Masquer l'assistant" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3635,8 +3629,7 @@ msgstr "Élevé" #: src/views/dashboard/components/PerformanceStatisticsCard.vue:87 msgid "Higher value means better connection reuse" -msgstr "" -"Une valeur plus élevée signifie une meilleure réutilisation de la connexion" +msgstr "Une valeur plus élevée signifie une meilleure réutilisation de la connexion" #: src/views/config/components/ConfigLeftPanel.vue:255 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:100 @@ -3649,27 +3642,10 @@ msgid "Home" msgstr "Menu principal" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "Hôte" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "Hôte, par ex. @ ou www" @@ -3729,9 +3705,9 @@ msgid "" "If you want to change the storage location, you can set the `IndexPath` of " "`nginx_log` section in the Nginx UI config." msgstr "" -"Si vous souhaitez modifier l'emplacement de stockage, vous pouvez définir le " -"`IndexPath` de la section `nginx_log` dans la configuration de l'interface " -"Nginx." +"Si vous souhaitez modifier l'emplacement de stockage, vous pouvez définir " +"le `IndexPath` de la section `nginx_log` dans la configuration de " +"l'interface Nginx." #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." @@ -3744,15 +3720,15 @@ msgid "" "If your domain has CNAME records and you cannot obtain certificates, you " "need to enable this option." msgstr "" -"Si votre domaine possède des entrées CNAME et que vous ne pouvez pas obtenir " -"de certificats, activez cette option." +"Si votre domaine possède des entrées CNAME et que vous ne pouvez pas " +"obtenir de certificats, activez cette option." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "Importer" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "Importer un certificat" @@ -3815,7 +3791,7 @@ msgstr "Indexation en cours..." msgid "Indicator" msgstr "Indicateur" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "Info" @@ -3839,7 +3815,7 @@ msgstr "Initialisation du programme de mise à niveau du core" msgid "Input the code from the app:" msgstr "Entrez le code de l'application :" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "Entrez le code de récupération :" @@ -3888,23 +3864,22 @@ msgstr "Installation" #: src/constants/errors/system.ts:3 msgid "Installation is not allowed after 10 minutes of system startup" -msgstr "" -"L'installation n'est pas autorisée après 10 minutes de démarrage du système" +msgstr "L'installation n'est pas autorisée après 10 minutes de démarrage du système" #: src/views/install/components/TimeoutAlert.vue:11 msgid "" "Installation is not allowed after 10 minutes of system startup, please " "restart the Nginx UI." msgstr "" -"L'installation n'est pas autorisée après 10 minutes de démarrage du système, " -"veuillez redémarrer l'interface Nginx." +"L'installation n'est pas autorisée après 10 minutes de démarrage du " +"système, veuillez redémarrer l'interface Nginx." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "Intervalle" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "Intervalle (secondes)" @@ -3978,7 +3953,7 @@ msgstr "Code otp invalide" msgid "Invalid padding in decrypted data" msgstr "Remplissage invalide dans les données décryptées" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "Code de vérification ou code de récupération invalide" @@ -4031,15 +4006,43 @@ msgstr "Adresse IP" msgid "IP Address / Target" msgstr "Adresse IP / Cible" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "Adresses IP" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "Avis de certificat IP" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "Version IP" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "IPv4 uniquement" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4 puis IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "IPv6 uniquement" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6 puis IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "Émission échouée" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "Émettre un certificat" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "Émettre un certificat" @@ -4047,10 +4050,18 @@ msgstr "Émettre un certificat" msgid "Issued certificate successfully" msgstr "Certificat délivré avec succès" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "Émis avec succès" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "Auteur : %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "Émission en cours..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "élément(s)" @@ -4072,7 +4083,8 @@ msgid "Keepalive Timeout" msgstr "Délai d'expiration Keepalive" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "Type de clé" @@ -4154,7 +4166,7 @@ msgstr "Dernière indexation" msgid "Last month" msgstr "Mois dernier" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "Dernière exécution" @@ -4170,6 +4182,10 @@ msgstr "Dernière mise à jour:" msgid "Last used at" msgstr "Dernière utilisation le" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "Plus tard" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "Laisser vide pour aucun changement" @@ -4191,10 +4207,10 @@ msgid "Leave blank if you don't need this." msgstr "Laissez vide si vous n'en avez pas besoin." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "Laissez vide pour la valeur par défaut : https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "" +"Laissez vide pour utiliser le point de terminaison Atlas Cloud : " +"https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4203,6 +4219,15 @@ msgstr "Laissez vide pour la valeur par défaut : https://api.openai.com/" msgid "Leave blank will not change anything" msgstr "Laisser vide ne changera rien" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"Le code de récupération hérité est obsolète. Générez de nouveaux codes de " +"récupération pour sécuriser la récupération de votre compte." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "Ancien code de récupération non autorisé car TOTP n'est pas activé" @@ -4260,7 +4285,7 @@ msgstr "En écoute" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4308,18 +4333,14 @@ msgstr "Chargement..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "Local" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "Chemin local (par ex., /var/backups)" @@ -4332,19 +4353,20 @@ msgstr "Emplacement" msgid "Locations" msgstr "Emplacements" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "Journal" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" "Le fichier journal %{log_path} n'est pas un fichier régulier. Si vous " -"utilisez nginx-ui dans un conteneur Docker, veuillez consulter https://" -"nginxui.com/zh_CN/guide/config-nginx-log.html pour plus d'informations." +"utilisez nginx-ui dans un conteneur Docker, veuillez consulter " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html pour plus " +"d'informations." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4368,8 +4390,7 @@ msgstr "Indexeur de journaux non disponible" #: src/views/nginx_log/structured/StructuredLogViewer.vue:586 msgid "Log indexing completed! Loading updated data..." -msgstr "" -"Indexation des journaux terminée ! Chargement des données mises à jour..." +msgstr "Indexation des journaux terminée ! Chargement des données mises à jour..." #: src/constants/errors/nginx_log.parser.ts:3 msgid "Log line exceeds maximum length" @@ -4382,14 +4403,14 @@ msgstr "Liste des journaux" #: src/constants/errors/nginx_log.indexer.ts:2 msgid "Log parser is not initialized; call indexer.InitLogParser() before use" msgstr "" -"L'analyseur de journaux n'est pas initialisé ; appelez indexer." -"InitLogParser() avant utilisation" +"L'analyseur de journaux n'est pas initialisé ; appelez " +"indexer.InitLogParser() avant utilisation" #: src/constants/errors/nginx_log.ts:12 msgid "Log path is not under whitelist" msgstr "Le chemin du journal n'est pas dans la liste blanche" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "Connexion" @@ -4397,7 +4418,7 @@ msgstr "Connexion" msgid "Login successful" msgstr "Connexion réussie" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "Déconnexion réussie" @@ -4407,20 +4428,20 @@ msgstr "Logrotate" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" "Logrotate est activé par défaut dans la plupart des distributions Linux " "grand public pour les utilisateurs qui installent Nginx UI directement sur " "la machine hôte. Vous n'avez donc pas besoin de modifier les paramètres de " -"cette page. Pour les utilisateurs qui installent Nginx UI via des conteneurs " -"Docker, vous pouvez activer manuellement cette option. Le planificateur de " -"tâches crontab de Nginx UI exécutera la commande logrotate à l'intervalle " -"que vous avez défini en minutes." +"cette page. Pour les utilisateurs qui installent Nginx UI via des " +"conteneurs Docker, vous pouvez activer manuellement cette option. Le " +"planificateur de tâches crontab de Nginx UI exécutera la commande logrotate " +"à l'intervalle que vous avez défini en minutes." #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4447,15 +4468,13 @@ msgstr "Mode maintenance désactivé avec succès" msgid "Maintenance mode enabled successfully" msgstr "Mode maintenance activé avec succès" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "Mode maintenance activé avec succès" +msgstr "Modèle de maintenance (nom de fichier uniquement)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "Maintenance" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4466,8 +4485,8 @@ msgid "" "Make sure you have configured a reverse proxy for .well-known directory to " "HTTPChallengePort before obtaining the certificate." msgstr "" -"Assurez-vous d'avoir configuré un proxy inverse pour le répertoire .well-" -"known vers HTTPChallengePort avant d'obtenir le certificat." +"Assurez-vous d'avoir configuré un proxy inverse pour le répertoire " +".well-known vers HTTPChallengePort avant d'obtenir le certificat." #: src/routes/modules/config.ts:10 #: src/views/config/components/ConfigLeftPanel.vue:114 @@ -4589,10 +4608,6 @@ msgstr "Conception de la mémoire" msgid "Memory Usage (RSS)" msgstr "Utilisation de la mémoire (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4626,7 +4641,7 @@ msgstr "Minute" msgid "Minutes" msgstr "Minutes" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "Miroir" @@ -4655,7 +4670,7 @@ msgid "Modify" msgstr "Modifier" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "Modifier le certificat" @@ -4687,10 +4702,9 @@ msgstr "Mensuel" msgid "Monthly on day %{day} at %{time}" msgstr "Mensuellement le jour %{day} à %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "Répertoire protégé" +msgstr "Répertoire monté" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4720,6 +4734,7 @@ msgstr "N/D" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4759,8 +4774,8 @@ msgid "" "Need more DNS providers? Support us through donations or contact us for " "commercial collaboration" msgstr "" -"Vous avez besoin de plus de fournisseurs DNS ? Soutenez-nous par des dons ou " -"contactez-nous pour une collaboration commerciale" +"Vous avez besoin de plus de fournisseurs DNS ? Soutenez-nous par des dons " +"ou contactez-nous pour une collaboration commerciale" #: src/views/dashboard/NginxDashBoard.vue:195 msgid "Need to enable the stub_status module" @@ -4794,7 +4809,7 @@ msgstr "Erreur du nouveau client lego : {0}" msgid "New name" msgstr "Nouveau nom" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "Nouveau mot de passe" @@ -4810,12 +4825,11 @@ msgstr "Erreur de nouveau transport : {0}" msgid "New version released" msgstr "Nouvelle version publiée" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "Suivant" @@ -4827,7 +4841,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "La sortie de Nginx -T est vide" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Chemin du journal d'accès Nginx" @@ -4881,11 +4895,11 @@ msgstr "La configuration de Nginx a été restaurée" msgid "Nginx Configuration Parse Error" msgstr "Erreur d'analyse de configuration Nginx" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Chemin de configuration de Nginx" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Répertoire des configurations Nginx" @@ -4893,7 +4907,7 @@ msgstr "Répertoire des configurations Nginx" msgid "Nginx Control" msgstr "Contrôle Nginx" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Mode de contrôle Nginx" @@ -4902,7 +4916,7 @@ msgstr "Mode de contrôle Nginx" msgid "Nginx CPU usage rate" msgstr "Taux d'utilisation du CPU par Nginx" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Chemin du journal des erreurs Nginx" @@ -4938,7 +4952,7 @@ msgstr "Nginx est en cours d'exécution" msgid "Nginx Log" msgstr "Journal Nginx" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Liste blanche des répertoires de journaux Nginx" @@ -4951,7 +4965,7 @@ msgstr "Indexation des logs Nginx..." msgid "Nginx Memory usage" msgstr "Utilisation de la mémoire par Nginx" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Chemin du PID de Nginx" @@ -4959,7 +4973,7 @@ msgstr "Chemin du PID de Nginx" msgid "Nginx PID path exists" msgstr "Le chemin du PID de Nginx existe" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Commande de rechargement de Nginx" @@ -4970,8 +4984,7 @@ msgstr "Échec du rechargement de Nginx : {0}" #: src/views/node/Node.vue:88 msgid "Nginx reload operations have been dispatched to remote nodes" -msgstr "" -"Les opérations de rechargement de Nginx ont été envoyées aux nœuds distants" +msgstr "Les opérations de rechargement de Nginx ont été envoyées aux nœuds distants" #: src/components/NginxControl/NginxControl.vue:26 msgid "Nginx reloaded successfully" @@ -4981,14 +4994,13 @@ msgstr "Nginx a été rechargé avec succès" msgid "Nginx reported a configuration syntax error." msgstr "Nginx a signalé une erreur de syntaxe dans la configuration." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Commande de redémarrage de Nginx" #: src/views/node/Node.vue:102 msgid "Nginx restart operations have been dispatched to remote nodes" -msgstr "" -"Les opérations de redémarrage de Nginx ont été envoyées aux nœuds distants" +msgstr "Les opérations de redémarrage de Nginx ont été envoyées aux nœuds distants" #: src/components/NginxControl/NginxControl.vue:40 msgid "Nginx restarted successfully" @@ -4998,7 +5010,7 @@ msgstr "Nginx a redémarré avec succès" msgid "Nginx sbin path exists" msgstr "Le chemin sbin de Nginx existe" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Commande de test de configuration Nginx" @@ -5021,12 +5033,22 @@ msgstr "La configuration de Nginx UI a été restaurée" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "" "La configuration de Nginx UI a été restaurée et redémarrera automatiquement " "dans quelques secondes." +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"Nginx UI renouvellera automatiquement ce certificat à l'approche de son " +"expiration, en fonction de l'intervalle global de renouvellement des " +"certificats et de la période de validité de ce certificat." + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf inclut le répertoire conf.d" @@ -5053,7 +5075,7 @@ msgid "No" msgstr "Non" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "Aucune action" @@ -5091,10 +5113,6 @@ msgstr "Aucune entrée dans la page actuelle" msgid "No geographic data available" msgstr "Aucune donnée géographique disponible" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "Aucun journal trouvé dans la plage de temps sélectionnée." @@ -5156,7 +5174,7 @@ msgstr "État du nœud" msgid "Nodes" msgstr "Nœuds" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "Pas après" @@ -5177,7 +5195,7 @@ msgstr "Non indexé" msgid "Not Loaded" msgstr "Non chargé" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "Pas encore exécuté" @@ -5259,7 +5277,7 @@ msgstr "Nombre de processus de travail" msgid "Obtain cert error: {0}" msgstr "Erreur lors de l'obtention du certificat : {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "Obtenir un certificat" @@ -5313,7 +5331,7 @@ msgstr "Connexion OIDC" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5358,10 +5376,6 @@ msgstr "Seuls les fichiers ZIP sont autorisés" msgid "Open" msgstr "Ouvert" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "Limitation du logiciel libre" @@ -5378,7 +5392,7 @@ msgstr "Statistiques du système d'exploitation" msgid "Optional comment for this DNS record" msgstr "Commentaire facultatif pour cet enregistrement DNS" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "Ou" @@ -5427,11 +5441,6 @@ msgstr "Autres" msgid "Otp or recovery code empty" msgstr "Code OTP ou de récupération vide" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "Écraser le fichier existant" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "Remplacer" @@ -5480,10 +5489,6 @@ msgstr "Mot de passe" msgid "Password (*)" msgstr "Mot de passe (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "Mot de passe incorrect" @@ -5492,11 +5497,11 @@ msgstr "Mot de passe incorrect" msgid "Password length cannot exceed 20 characters" msgstr "La longueur du mot de passe ne peut pas dépasser 20 caractères" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "Mot de passe mis à jour avec succès" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "Les mots de passe ne correspondent pas" @@ -5518,8 +5523,8 @@ msgstr "Le chemin n'est pas dans les chemins d'accès accordés : {0}" #: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:6 msgid "Path: {0} is not under the nginx conf dir: {1}" msgstr "" -"Le chemin : {0} ne se trouve pas dans le répertoire de configuration nginx : " -"{1}" +"Le chemin : {0} ne se trouve pas dans le répertoire de configuration nginx " +": {1}" #: src/constants/errors/cert.ts:6 msgid "Payload resource is nil" @@ -5570,7 +5575,7 @@ msgstr "Paramètres de performance enregistrés avec succès" msgid "Performing core upgrade" msgstr "Exécution de la mise à niveau du core" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "Informations personnelles" @@ -5615,6 +5620,12 @@ msgstr "" msgid "Please enter" msgstr "Veuillez saisir" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "Veuillez saisir un nom pour le certificat" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5635,15 +5646,21 @@ msgstr "Veuillez entrer une adresse IPv4 ou IPv6 valide" msgid "Please enter a valid port range" msgstr "Veuillez entrer une plage de ports valide" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "Veuillez saisir au moins un domaine" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "Veuillez saisir au moins un domaine ou une adresse IP" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "Veuillez entrer le secret d'installation avant de continuer" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "Veuillez entrer le code OTP :" @@ -5693,8 +5710,8 @@ msgstr "" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "" "Veuillez générer immédiatement de nouveaux codes de récupération dans les " "préférences pour éviter un verrouillage." @@ -5742,16 +5759,14 @@ msgid "Please log in." msgstr "Veuillez vous connecter." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "" "Veuillez noter que les unités de temps des configurations ci-dessous sont " "toutes en secondes." #: src/views/install/components/InstallView.vue:136 msgid "Please resolve all issues before proceeding with installation" -msgstr "" -"Veuillez résoudre tous les problèmes avant de procéder à l'installation" +msgstr "Veuillez résoudre tous les problèmes avant de procéder à l'installation" #: src/views/backup/components/BackupCreator.vue:107 msgid "Please save this security token, you will need it for restoration:" @@ -5769,7 +5784,7 @@ msgstr "" "Veuillez sélectionner un certificat avant d'enregistrer la configuration du " "serveur TLS." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "Veuillez sélectionner un identifiant DNS" @@ -5849,10 +5864,6 @@ msgstr "Préférence" msgid "Preparing lego configurations" msgstr "Préparation des configurations Lego" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5871,10 +5882,6 @@ msgstr "Les IP privées (192.168.x.x, 10.x.x.x, 172.16-31.x.x) échoueront" msgid "private key" msgstr "clé privée" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "Processus" @@ -5918,13 +5925,14 @@ msgstr "Protocole" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" "La configuration du protocole ne prend effet que lors d'une connexion " -"directe. Si vous utilisez un proxy inverse, veuillez configurer le protocole " -"séparément dans le proxy inverse." +"directe. Si vous utilisez un proxy inverse, veuillez configurer le " +"protocole séparément dans le proxy inverse." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5963,14 +5971,6 @@ msgstr "Cibles du proxy" msgid "Public CA Requirements:" msgstr "Exigences de l'AC publique :" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "Numéro de sécurité publique" @@ -6071,11 +6071,11 @@ msgstr "Type d'enregistrement" msgid "Record updated" msgstr "Enregistrement mis à jour" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "Enregistrements" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "Récupération" @@ -6109,7 +6109,7 @@ msgstr "Messages de redirection (3xx)" msgid "Referer" msgstr "Référent" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "Actualiser" @@ -6118,11 +6118,6 @@ msgstr "Actualiser" msgid "Refresh Modules Cache" msgstr "Actualiser le cache des modules" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "Régénérer la réponse" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "Régénérer la réponse" @@ -6181,7 +6176,7 @@ msgid "Reload" msgstr "Recharger" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Recharger nginx" @@ -6209,7 +6204,8 @@ msgstr "Rechargement distant de Nginx réussi" #: src/components/NamespaceTabs/NamespaceTabs.vue:85 msgid "Reload request failed, please check your network connection" msgstr "" -"La demande de rechargement a échoué, veuillez vérifier votre connexion réseau" +"La demande de rechargement a échoué, veuillez vérifier votre connexion " +"réseau" #: src/components/NginxControl/NginxControl.vue:77 msgid "Reloading" @@ -6219,16 +6215,12 @@ msgstr "Rechargement" msgid "Reloading nginx" msgstr "Rechargement de nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "Distant" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "Aucun nœud sélectionné" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "Supprimer" @@ -6238,6 +6230,10 @@ msgstr "Supprimer" msgid "Remove successfully" msgstr "Suppression réussie" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "%{count} enregistrement(s) conflictuel(s) supprimé(s) : %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "Supprimé avec succès" @@ -6317,8 +6313,8 @@ msgstr "Renommé avec succès" msgid "Renew cert error: {0}" msgstr "Erreur de renouvellement du certificat : {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "Renouveler le certificat" @@ -6330,8 +6326,7 @@ msgstr "Erreur de renouvellement du certificat" msgid "Renew Certificate Success" msgstr "Renouvellement du certificat réussi" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "Renouvellement réussi" @@ -6423,8 +6418,7 @@ msgstr "Redémarrage distant de Nginx réussi" #: src/components/NamespaceTabs/NamespaceTabs.vue:105 msgid "Restart request failed, please check your network connection" -msgstr "" -"La demande de redémarrage a échoué, veuillez vérifier votre connexion réseau" +msgstr "La demande de redémarrage a échoué, veuillez vérifier votre connexion réseau" #: src/components/NginxControl/NginxControl.vue:82 msgid "Restarting" @@ -6461,6 +6455,19 @@ msgstr "Restaurer cette version" msgid "Restored successfully" msgstr "Rétabli avec succès" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "Réessayer" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "Réessayer l'émission du certificat" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "Revoir d’abord" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6509,11 +6516,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "Mode d'exécution" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "Renouveler le certificat" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "En cours d'éxécution" @@ -6633,7 +6635,7 @@ msgstr "Samedi" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6643,19 +6645,14 @@ msgstr "Samedi" msgid "Save" msgstr "Enregistrer" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "Configuration du stockage" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "Enregistrer la directive" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "Enregistrer maintenant" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "Enregistrer l'ordre" @@ -6698,15 +6695,19 @@ msgstr "Flux %{name} enregistré sur %{node} avec succès" msgid "Save successful" msgstr "Enregistrement réussi" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "Sauvegarde réussie" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "Enregistrer la configuration du site maintenant ?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "La réponse du certificat enregistré ne contient pas d'identifiant." #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6716,6 +6717,15 @@ msgstr "" msgid "Saved successfully" msgstr "Enregistré avec succès" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"Échec de l’enregistrement de la configuration du site ; les directives du " +"certificat se trouvent dans l’éditeur — vérifiez les modifications et " +"réessayez à l’aide du bouton Enregistrer." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "Le chemin sbin n'existe pas" @@ -6766,7 +6776,7 @@ msgstr "SDK" msgid "Search" msgstr "Rechercher" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "Rechercher un domaine, un fournisseur ou une cible" @@ -6798,7 +6808,7 @@ msgstr "Rechercher des modèles" msgid "Secret has been copied" msgstr "Le secret a été copié" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "Paramètres de sécurité" @@ -6816,8 +6826,8 @@ msgid "" "Select a DNS provider to see whether it supports DNS record management in " "DNS Domains." msgstr "" -"Sélectionnez un fournisseur DNS pour voir s'il prend en charge la gestion des " -"enregistrements DNS dans DNS Domains." +"Sélectionnez un fournisseur DNS pour voir s'il prend en charge la gestion " +"des enregistrements DNS dans DNS Domains." #: src/views/certificate/ACMEUser.vue:50 msgid "" @@ -6846,6 +6856,10 @@ msgstr "Sélectionner un domaine DNS" msgid "Select existing record" msgstr "Sélectionner un enregistrement existant" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "Sélectionner les enregistrements A/AAAA correspondants" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6874,6 +6888,24 @@ msgstr "" "L'auto-vérification a échoué, l'interface utilisateur Nginx peut ne pas " "fonctionner correctement" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "Certificat auto-signé" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "Certificat auto-signé" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "Certificat auto-signé appliqué" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "Certificat auto-signé généré" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6888,7 +6920,7 @@ msgid "Server" msgstr "Serveur" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "Erreur du serveur" @@ -6916,7 +6948,7 @@ msgstr "Taille du seau de hachage des noms de serveur" msgid "Server names hash table size" msgstr "Taille de la table de hachage des noms de serveur" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "server_name introuvable dans les directives" @@ -6968,19 +7000,19 @@ msgstr "Configuration du fournisseur de défi HTTP01" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath est vide, consultez https://nginxui." -"com/guide/config-nginx.html pour plus d'informations" +"Settings.NginxLogSettings.AccessLogPath est vide, consultez " +"https://nginxui.com/guide/config-nginx.html pour plus d'informations" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath est vide, consultez https://nginxui." -"com/guide/config-nginx.html pour plus d'informations" +"Settings.NginxLogSettings.ErrorLogPath est vide, consultez " +"https://nginxui.com/guide/config-nginx.html pour plus d'informations" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6999,7 +7031,7 @@ msgstr "Afficher" msgid "Show Assistant" msgstr "Afficher l'assistant" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "Se connecter avec une clé d'accès" @@ -7085,10 +7117,6 @@ msgstr "Taille" msgid "Skip Installation" msgstr "Ignorer l'installation" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "Temps d'attente entre les itérations du chargeur de cache" @@ -7101,6 +7129,12 @@ msgstr "Temps d'attente entre les itérations du gestionnaire de cache" msgid "Socket" msgstr "Socket" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "" +"Certains navigateurs rejettent les certificats TLS valides plus de 398 " +"jours." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "Trié par" @@ -7117,15 +7151,6 @@ msgstr "Sponsor" msgid "SSD storage for better I/O performance" msgstr "Stockage SSD pour de meilleures performances d'E/S" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "2+ cœurs recommandés" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7215,9 +7240,9 @@ msgstr "Statique" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7292,7 +7317,7 @@ msgstr "Le répertoire streams-enabled n'existe pas" msgid "Structured" msgstr "Structuré" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Port d'état stub" @@ -7300,7 +7325,7 @@ msgstr "Port d'état stub" msgid "Stub_status is not enabled" msgstr "Stub_status n'est pas activé" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7318,14 +7343,14 @@ msgstr "Dimanche" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" -msgstr "" -"Prend en charge la communication avec le backend via le protocole WebSocket. " -"Si votre interface Nginx est utilisée via un proxy inverse Nginx, veuillez " -"consulter ce lien pour écrire le fichier de configuration correspondant : " +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " "https://nginxui.com/guide/nginx-proxy-example.html" +msgstr "" +"Prend en charge la communication avec le backend via le protocole " +"WebSocket. Si votre interface Nginx est utilisée via un proxy inverse " +"Nginx, veuillez consulter ce lien pour écrire le fichier de configuration " +"correspondant : https://nginxui.com/guide/nginx-proxy-example.html" #: src/language/curd.ts:53 src/language/curd.ts:57 msgid "Support single or batch upload of files" @@ -7364,8 +7389,7 @@ msgstr "Certificat synchronisé" #: src/components/Notification/notifications.ts:70 msgid "Sync Certificate %{cert_name} to %{node_name} failed" -msgstr "" -"Échec de la synchronisation du certificat %{cert_name} vers %{node_name}" +msgstr "Échec de la synchronisation du certificat %{cert_name} vers %{node_name}" #: src/components/Notification/notifications.ts:74 msgid "Sync Certificate %{cert_name} to %{node_name} successfully" @@ -7387,8 +7411,7 @@ msgstr "" #: src/components/Notification/notifications.ts:82 msgid "Sync config %{config_name} to %{node_name} successfully" -msgstr "" -"Configuration %{config_name} synchronisée avec %{node_name} avec succès" +msgstr "Configuration %{config_name} synchronisée avec %{node_name} avec succès" #: src/components/Notification/notifications.ts:77 src/language/constants.ts:45 msgid "Sync Config Error" @@ -7416,6 +7439,7 @@ msgid "Sync strategy" msgstr "Stratégie de synchronisation" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "Synchroniser vers" @@ -7453,21 +7477,13 @@ msgstr "Restauration du système" msgid "System restored successfully." msgstr "Système restauré avec succès." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "Cibles" @@ -7532,21 +7548,32 @@ msgid "" "since it was last issued." msgstr "" "Le certificat du domaine sera vérifié toutes les 30 minutes et sera " -"renouvelé s'il a été émis il y a plus d'une semaine ou depuis la période que " -"vous avez définie dans les paramètres." +"renouvelé s'il a été émis il y a plus d'une semaine ou depuis la période " +"que vous avez définie dans les paramètres." + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"Le certificat a été généré à l'emplacement %{path} et les directives " +"ssl_certificate ont été ajoutées au bloc serveur actuel. Enregistrez la " +"configuration maintenant, ou examinez les modifications dans l'éditeur et " +"enregistrez-les manuellement." #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "Les sites suivants seront désactivés :" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "Les sites suivants seront activés :" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" "La base de données GeoLite2 est nécessaire pour l'analyse géographique des " "adresses IP hors ligne. Veuillez la télécharger pour activer cette " @@ -7554,8 +7581,8 @@ msgstr "" #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" "La base de données GeoLite2 fournit des informations géographiques pour les " "adresses IP. Elle est utilisée pour l'analyse géographique hors ligne dans " @@ -7587,10 +7614,11 @@ msgstr "" #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" -"Le chemin du journal ne se trouve pas sous les chemins dans settings." -"NginxSettings.LogDirWhiteList" +"Le chemin du journal ne se trouve pas sous les chemins dans " +"settings.NginxSettings.LogDirWhiteList" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 @@ -7602,8 +7630,7 @@ msgstr "" "des traits d'union, des tirets, des deux-points et des points." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" "Le modèle utilisé pour la complétion de code, s'il n'est pas défini, le " "modèle de chat sera utilisé." @@ -7678,15 +7705,15 @@ msgstr "Connexions simultanées maximales théoriques :" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "RPS maximum théorique (Requêtes Par Seconde) :" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " "lose access to your account." msgstr "" -"Ces codes sont le dernier recours pour accéder à votre compte si vous perdez " -"votre mot de passe et vos seconds facteurs. Si vous ne trouvez pas ces " -"codes, vous perdrez l'accès à votre compte." +"Ces codes sont le dernier recours pour accéder à votre compte si vous " +"perdez votre mot de passe et vos seconds facteurs. Si vous ne trouvez pas " +"ces codes, vous perdrez l'accès à votre compte." #: src/routes/modules/system.ts:45 msgid "Third-party Components" @@ -7694,8 +7721,7 @@ msgstr "Composants tiers" #: src/views/certificate/components/AutoCertManagement.vue:45 msgid "This Auto Cert item is invalid, please remove it." -msgstr "" -"Cet élément de certificat automatique est invalide, veuillez le supprimer." +msgstr "Cet élément de certificat automatique est invalide, veuillez le supprimer." #: src/constants/errors/backup.ts:62 msgid "" @@ -7735,16 +7761,15 @@ msgid "This field should not be empty" msgstr "Ce champ ne doit pas être vide" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." msgstr "" "Ce champ ne doit contenir que des lettres, des caractères Unicode, des " "chiffres et -_." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" msgstr "" "Ce champ ne doit contenir que des lettres, des caractères Unicode, des " "chiffres et -_./:" @@ -7761,10 +7786,6 @@ msgstr "" "Ce mode prévisualise uniquement le flux de l'interface utilisateur " "d'installation et ne modifie aucun état du serveur." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " @@ -7790,11 +7811,17 @@ msgstr "" "Cette opération ne supprimera que le certificat de la base de données. Les " "fichiers de certificat sur le système de fichiers ne seront pas supprimés." +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "Ce certificat auto-signé est géré par Nginx UI et renouvelé automatiquement." + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" "Ce site est configuré comme un serveur par défaut (default_server) pour " "HTTPS (port 443). Les certificats IP nécessitent le support d'une Autorité " @@ -7803,8 +7830,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" "Ce site utilise un nom de serveur générique (_) qui indique généralement un " @@ -7840,8 +7867,7 @@ msgstr "" #: src/views/nginx_log/indexing/IndexManagement.vue:56 msgid "This will rebuild the index data for this specific file: %{path}" -msgstr "" -"Cela reconstruira les données d'index pour ce fichier spécifique : %{path}" +msgstr "Cela reconstruira les données d'index pour ce fichier spécifique : %{path}" #: src/components/SystemRestore/SystemRestoreContent.vue:253 #: src/components/SystemRestore/SystemRestoreContent.vue:336 @@ -7862,8 +7888,7 @@ msgstr "" "L'interface Nginx redémarrera une fois la restauration terminée." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" "Cela mettra à jour ou réinstallera l'interface Nginx sur %{nodeNames} vers " "la version %{version}." @@ -7914,8 +7939,8 @@ msgstr "pour confirmer la suppression" #: src/views/certificate/components/RemoveCert.vue:134 msgid "To confirm revocation, please type \"Revoke\" in the field below:" msgstr "" -"Pour confirmer la révocation, veuillez taper \"Révoquer\" dans le champ ci-" -"dessous :" +"Pour confirmer la révocation, veuillez taper \"Révoquer\" dans le champ " +"ci-dessous :" #: src/views/preference/components/AuthSettings/TOTP.vue:70 msgid "" @@ -7940,12 +7965,12 @@ msgstr "" #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" -"Pour nous assurer que le renouvellement automatique de la certification peut " -"fonctionner normalement, nous devons ajouter un emplacement qui peut " +"Pour nous assurer que le renouvellement automatique de la certification " +"peut fonctionner normalement, nous devons ajouter un emplacement qui peut " "transmettre la demande de l'autorité au backend, et nous devons enregistrer " "ce fichier et recharger le Nginx. Êtes-vous sûr de vouloir continuer?" @@ -8089,7 +8114,7 @@ msgstr "TTL (secondes)" msgid "Tuesday" msgstr "Mardi" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "Authentification à deux facteurs requise" @@ -8110,10 +8135,6 @@ msgstr "Type" msgid "Type %{delete} to confirm" msgstr "Tapez %{delete} pour confirmer" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "Saisissez ou sélectionnez des enregistrements A/AAAA" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "Saisissez ou sélectionnez un navigateur" @@ -8159,11 +8180,11 @@ msgstr "Format de journal non pris en charge" msgid "Update already in progress" msgstr "Mise à jour déjà en cours" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "Mettre à jour le mot de passe" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "Mettre à jour le profil" @@ -8252,11 +8273,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "Utilisez @ pour la racine" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "Utiliser OTP" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "Utiliser un code de récupération" @@ -8264,10 +8285,6 @@ msgstr "Utiliser un code de récupération" msgid "Use Temporary Path" msgstr "Utiliser un chemin temporaire" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "Utilisateur" @@ -8281,7 +8298,7 @@ msgstr "Agent utilisateur" msgid "User banned" msgstr "Utilisateur banni" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "Informations utilisateur mises à jour avec succès" @@ -8294,7 +8311,7 @@ msgid "User Profile" msgstr "Profil utilisateur" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "Nom d'utilisateur" @@ -8312,10 +8329,14 @@ msgstr "UV" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "Valide" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "Valide pendant (jours)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "Valider le certificat SSL" @@ -8326,11 +8347,6 @@ msgstr "Valider le certificat SSL" msgid "Value" msgstr "Valeur" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "Vérifier le secret" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8367,7 +8383,7 @@ msgstr "Voir toutes les notifications" msgid "View on GitHub" msgstr "Voir sur GitHub" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "Afficher les codes de récupération" @@ -8395,7 +8411,7 @@ msgstr "Visites" msgid "Waiting processes" msgstr "Processus d'attente" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8419,19 +8435,19 @@ msgid "" "Encrypt cannot issue certificates for private IPs. Use a public IP address " "or consider using a private CA." msgstr "" -"Avertissement : Il s'agit apparemment d'une adresse IP privée. Les autorités " -"de certification publiques comme Let's Encrypt ne peuvent pas émettre de " -"certificats pour les IP privées. Utilisez une adresse IP publique ou " -"envisagez d'utiliser une autorité de certification privée." +"Avertissement : Il s'agit apparemment d'une adresse IP privée. Les " +"autorités de certification publiques comme Let's Encrypt ne peuvent pas " +"émettre de certificats pour les IP privées. Utilisez une adresse IP " +"publique ou envisagez d'utiliser une autorité de certification privée." #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "Nous n'acceptons aucune demande de fonctionnalité" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" "Nous allons supprimer la configuration HTTPChallenge de ce fichier et " "recharger le Nginx. Êtes-vous sûr de vouloir continuer?" @@ -8469,6 +8485,19 @@ msgstr "Hebdomadairement le %{day} à %{time}" msgid "Weight" msgstr "Poids" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"Lorsqu'elle est activée, DDNS possède les noms sélectionnés : elle apparie " +"automatiquement les enregistrements de la même famille, crée les " +"enregistrements manquants et supprime ceux dont la famille d'IP est " +"inaccessible. Désactivez-la pour ne gérer que les enregistrements que vous " +"avez explicitement sélectionnés et laisser le reste de l'état DNS inchangé." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8486,11 +8515,11 @@ msgid "" "When you enable/disable, delete, or save this site, the nodes set in the " "namespace and the nodes selected below will be synchronized." msgstr "" -"Lorsque vous activez/désactivez, supprimez ou enregistrez ce site, les nœuds " -"définis dans l'espace de noms et les nœuds sélectionnés ci-dessous seront " -"synchronisés." +"Lorsque vous activez/désactivez, supprimez ou enregistrez ce site, les " +"nœuds définis dans l'espace de noms et les nœuds sélectionnés ci-dessous " +"seront synchronisés." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8504,7 +8533,7 @@ msgstr "" "S'il faut utiliser un chemin temporaire lors de l'écriture de fichiers " "temporaires" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "Certificat générique" @@ -8523,7 +8552,7 @@ msgstr "Processus de travail" msgid "Workers" msgstr "Workers" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "Espace de travail" @@ -8562,8 +8591,8 @@ msgstr "Oui" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" "Vous accédez à ce terminal via une connexion HTTP non sécurisée sur un " "domaine non localhost. Cela peut exposer des informations sensibles." @@ -8599,18 +8628,35 @@ msgstr "" "pas ajouter de clé d'accès." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" "Vous n'avez pas encore activé la 2FA. Veuillez activer la 2FA pour générer " "des codes de récupération." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "Vous n'avez pas encore généré de codes de récupération." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"Votre compte utilise encore un code de récupération obsolète. Générez de " +"nouveaux codes de récupération après vérification pour sécuriser la " +"récupération de compte." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"Votre compte utilise un ancien code de récupération obsolète. Générez de " +"nouveaux codes de récupération maintenant pour terminer la migration et " +"sécuriser la récupération du compte." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" @@ -8618,8 +8664,17 @@ msgstr "" "Veuillez générer de nouveaux codes de récupération dès que possible pour " "assurer la sécurité." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"Votre ancien code de récupération a été utilisé et ne peut plus l'être. " +"Générez de nouveaux codes de récupération dès maintenant pour conserver la " +"récupération de compte disponible." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "Vos anciens codes ne fonctionneront plus." @@ -8631,6 +8686,61 @@ msgstr "Vos clés d'accès" msgid "Zero-allocation pipeline" msgstr "Pipeline sans allocation" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx n'a pas pu valider la configuration." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "Authentification en cours..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Connecté" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "Contenu" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "Copier" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "Conteneur Docker externe" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "Générer" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "Écraser le fichier existant" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "Régénérer la réponse" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "Aucun nœud sélectionné" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "Renouveler le certificat" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "2+ cœurs recommandés" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "Saisissez ou sélectionnez des enregistrements A/AAAA" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "Vérifier le secret" + #~ msgid "OpenAI" #~ msgstr "OpenAI" @@ -8640,15 +8750,14 @@ msgstr "Pipeline sans allocation" #~ "peut-être été falsifié" #~ msgid "Once the verification is complete, the records will be removed." -#~ msgstr "" -#~ "Une fois la vérification terminée, les enregistrements seront supprimés." +#~ msgstr "Une fois la vérification terminée, les enregistrements seront supprimés." #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." #~ msgstr "" -#~ "Nous ajouterons un ou plusieurs enregistrements TXT aux enregistrements " -#~ "DNS de votre domaine pour vérifier la propriété." +#~ "Nous ajouterons un ou plusieurs enregistrements TXT aux enregistrements DNS " +#~ "de votre domaine pour vérifier la propriété." #~ msgid "Settings" #~ msgstr "Paramètres" @@ -8732,8 +8841,7 @@ msgstr "Pipeline sans allocation" #~ msgstr "Performances soutenues sur du matériel moderne" #~ msgid "Backup path not in granted access paths: {0}" -#~ msgstr "" -#~ "Le chemin de sauvegarde n'est pas dans les chemins d'accès accordés : {0}" +#~ msgstr "Le chemin de sauvegarde n'est pas dans les chemins d'accès accordés : {0}" #~ msgid "Build with" #~ msgstr "Build avec" @@ -8749,15 +8857,14 @@ msgstr "Pipeline sans allocation" #~ msgid "Failed to restore Nginx UI files: {0}" #~ msgstr "" -#~ "Échec de la restauration des fichiers de l'interface utilisateur de " -#~ "Nginx : {0}" +#~ "Échec de la restauration des fichiers de l'interface utilisateur de Nginx : " +#~ "{0}" #~ msgid "Failed to write to zip buffer: {0}" #~ msgstr "Échec de l'écriture dans le tampon ZIP : {0}" #~ msgid "Hash verification failed: file integrity compromised" -#~ msgstr "" -#~ "Échec de la vérification du hachage : intégrité du fichier compromise" +#~ msgstr "Échec de la vérification du hachage : intégrité du fichier compromise" #~ msgid "S3 bucket access denied: {0}" #~ msgstr "Accès au compartiment S3 refusé : {0}" @@ -8772,8 +8879,7 @@ msgstr "Pipeline sans allocation" #~ msgstr "Le point de terminaison S3 est invalide : {0}" #~ msgid "Storage path not in granted access paths: {0}" -#~ msgstr "" -#~ "Le chemin de stockage n'est pas dans les chemins d'accès accordés: {0}" +#~ msgstr "Le chemin de stockage n'est pas dans les chemins d'accès accordés: {0}" #~ msgid "files" #~ msgstr "fichiers" @@ -8820,15 +8926,15 @@ msgstr "Pipeline sans allocation" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" #~ "Prise en charge de la communication avec le backend via le protocole " #~ "Server-Sent Events. Si votre interface Nginx est utilisée via un proxy " #~ "inverse Nginx, veuillez consulter ce lien pour écrire le fichier de " -#~ "configuration correspondant : https://nginxui.com/guide/nginx-proxy-" -#~ "example.html" +#~ "configuration correspondant : " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "Si vide, le répertoire CA sera utilisé." @@ -8870,8 +8976,7 @@ msgstr "Pipeline sans allocation" #~ msgstr "Action groupée appliquée avec succès" #~ msgid "Are you sure you want to apply to all selected?" -#~ msgstr "" -#~ "Êtes-vous sûr de vouloir appliquer à tous les éléments sélectionnés ?" +#~ msgstr "Êtes-vous sûr de vouloir appliquer à tous les éléments sélectionnés ?" #~ msgid "Are you sure you want to recover this item?" #~ msgstr "Êtes-vous sûr de vouloir récupérer cet élément ?" @@ -8899,8 +9004,8 @@ msgstr "Pipeline sans allocation" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" #~ "Vérifiez si /var/run/docker.sock existe. Si vous utilisez l'image Docker " #~ "officielle de Nginx UI, assurez-vous que le socket Docker est monté comme " @@ -8919,8 +9024,7 @@ msgstr "Pipeline sans allocation" #~ msgstr "Base de données (Facultatif, par défaut : database)" #~ msgid "The filename cannot contain the following characters: %{c}" -#~ msgstr "" -#~ "Le nom de fichier ne peut pas contenir les caractères suivants : %{c}" +#~ msgstr "Le nom de fichier ne peut pas contenir les caractères suivants : %{c}" #, fuzzy #~ msgid "AutoCert is running, please wait" @@ -8989,14 +9093,11 @@ msgstr "Pipeline sans allocation" #~ msgstr "Dupliqué avec succès" #, fuzzy -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" #~ msgstr "Dupliqué avec succès" #, fuzzy -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" #~ msgstr "Dupliqué avec succès" #, fuzzy @@ -9010,8 +9111,7 @@ msgstr "Pipeline sans allocation" #~ msgstr "Dupliqué avec succès" #, fuzzy -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "Dupliqué avec succès" #, fuzzy @@ -9087,8 +9187,8 @@ msgstr "Pipeline sans allocation" #~ "Please note that the unit of time configurations below are all in seconds." #~ msgstr "" #~ "Veuillez remplir les identifiants d'authentification de l'API fournis par " -#~ "votre fournisseur DNS. Nous ajouterons un ou plusieurs enregistrements " -#~ "TXT aux enregistrements DNS de votre domaine pour la vérification de la " +#~ "votre fournisseur DNS. Nous ajouterons un ou plusieurs enregistrements TXT " +#~ "aux enregistrements DNS de votre domaine pour la vérification de la " #~ "propriété. Une fois la vérification terminée, les enregistrements seront " #~ "supprimés. Veuillez noter que les configurations de temps ci-dessous sont " #~ "toutes en secondes." @@ -9115,27 +9215,27 @@ msgstr "Pipeline sans allocation" #~ msgstr "Gestion des enregistrements DNS uniquement" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" #~ "Les domaines DNS servent à gérer les enregistrements DNS dans NGINX UI et " #~ "sont distincts des défis de certificat ACME DNS-01." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" -#~ "Actuellement, la gestion des enregistrements DNS prend uniquement en " -#~ "charge Alibaba Cloud DNS, Tencent Cloud DNS et Cloudflare." +#~ "Actuellement, la gestion des enregistrements DNS prend uniquement en charge " +#~ "Alibaba Cloud DNS, Tencent Cloud DNS et Cloudflare." #~ msgid "" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " #~ "Credentials and select them in certificate settings." #~ msgstr "" -#~ "Pour l'émission de certificats ACME DNS-01, créez des identifiants DNS " -#~ "dans DNS > Identifiants et sélectionnez-les dans les paramètres du " -#~ "certificat." +#~ "Pour l'émission de certificats ACME DNS-01, créez des identifiants DNS dans " +#~ "DNS > Identifiants et sélectionnez-les dans les paramètres du certificat." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains utilise uniquement les fournisseurs disposant d’implémentations de gestion des enregistrements DNS." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "" +#~ "DNS Domains utilise uniquement les fournisseurs disposant d’implémentations " +#~ "de gestion des enregistrements DNS." diff --git a/app/src/language/ja_JP/app.po b/app/src/language/ja_JP/app.po index 37217ba5..d0bd5268 100644 --- a/app/src/language/ja_JP/app.po +++ b/app/src/language/ja_JP/app.po @@ -7,20 +7,18 @@ msgstr "" "POT-Creation-Date: \n" "PO-Revision-Date: 2025-05-11 11:32+0800\n" "Last-Translator: Kohki Makimoto \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese " +"\n" "Language: ja_JP\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.6\n" #: src/language/generate.ts:37 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}" -msgstr "" -"[Nginx UI] ACME ユーザー: %{name}、メール: %{email}、CA ディレクトリ: " -"%{caDir}" +msgstr "[Nginx UI] ACME ユーザー: %{name}、メール: %{email}、CA ディレクトリ: %{caDir}" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" @@ -35,11 +33,8 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] 証明書の失効に成功しました" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" -msgstr "" -"[Nginx UI] サーバーで証明書が使用されました、サーバーのTLS 証明書を再読み込み" -"中" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgstr "[Nginx UI] サーバーで証明書が使用されました、サーバーのTLS 証明書を再読み込み中" #: src/language/generate.ts:42 msgid "[Nginx UI] Creating client facilitates communication with the CA server" @@ -116,23 +111,17 @@ msgstr "* グループ %{groupName} のノードと手動で選択したノー #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." -msgstr "" -"* インデックスファイルはデフォルトでNGINX UI 設定パス内の「log-index」ディレ" -"クトリに保存されます。" +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." +msgstr "* インデックスファイルはデフォルトでNGINX UI 設定パス内の「log-index」ディレクトリに保存されます。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:215 msgid "" "* Performance metrics measured on Apple M2 Pro (12-core) with 32GB RAM. " "Actual performance may vary based on your hardware configuration." msgstr "" -"* パフォーマンス指標は、Apple M2 Pro(12コア)と32GB RAMで測定されました。実" -"際のパフォーマンスはハードウェア構成によって異なる場合があります。" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" +"* パフォーマンス指標は、Apple M2 Pro(12コア)と32GB " +"RAMで測定されました。実際のパフォーマンスはハードウェア構成によって異なる場合があります。" #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" @@ -183,7 +172,7 @@ msgstr "24 時間 UV/PV 統計" msgid "2FA" msgstr "二要素認証" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "ニ要素認証設定" @@ -191,12 +180,21 @@ msgstr "ニ要素認証設定" msgid "4GB+ RAM recommended" msgstr "4GB 以上のRAMを推奨" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." -msgstr "" -"サンドボックスまたはソース構成から必要なインクルードファイルが欠落していま" -"す。" +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "IPv6 のみモードでは、同じ名前の A レコードは管理されません。DNS でそのまま残ります。" + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." +msgstr "サンドボックスまたはソース構成から必要なインクルードファイルが欠落しています。" + +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "IPv4 のみモードでは、同じ名前の AAAA レコードは管理されません。それらは DNS 上で変更されずにそのまま残ります。" #: src/routes/modules/system.ts:38 msgid "About" @@ -215,10 +213,6 @@ msgstr "アクセスログのパスが存在しません" msgid "Access Logs" msgstr "アクセスログ" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -230,10 +224,10 @@ msgstr "操作" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -275,7 +269,8 @@ msgstr "設定を追加" msgid "Add Directive Below" msgstr "ディレクティブを追加" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "ドメインを追加" @@ -283,6 +278,14 @@ msgstr "ドメインを追加" msgid "Add Header" msgstr "ヘッダーを追加" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "IP アドレスを追加" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "項目を追加" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -331,9 +334,7 @@ msgstr "高度なインデックス作成が有効になりました" #: src/views/nginx_log/components/IndexingSettingsModal.vue:292 msgid "Advanced log indexing features are free and open source for all users" -msgstr "" -"高度なログインデックス機能は、すべてのユーザーに無料でオープンソースとして提" -"供されます" +msgstr "高度なログインデックス機能は、すべてのユーザーに無料でオープンソースとして提供されます" #: src/views/nginx_log/components/IndexingSettingsModal.vue:80 msgid "Advanced memory pooling system" @@ -355,11 +356,6 @@ msgstr "その後、このページを更新し、再度パスキーを追加を msgid "All" msgstr "すべて" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx は設定の検証に失敗しました。" - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "すべてのコンポーネント" @@ -369,21 +365,19 @@ msgstr "すべてのコンポーネント" msgid "All Recovery Codes Have Been Used" msgstr "すべてのリカバリーコードが使用済みです" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." -msgstr "" -"選択したすべてのサブドメインは同じ DNS プロバイダーに属している必要がありま" -"す。そうでない場合、証明書の申請は失敗します。" +msgstr "選択したすべてのサブドメインは同じ DNS プロバイダーに属している必要があります。そうでない場合、証明書の申請は失敗します。" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:160 msgid "" "Alternatively, if you cannot download the database, you can manually place " "GeoLite2-City.mmdb in the same directory as app.ini." msgstr "" -"あるいは、データベースをダウンロードできない場合は、GeoLite2-City.mmdb を手動" -"で app.ini と同じディレクトリに配置することもできます。" +"あるいは、データベースをダウンロードできない場合は、GeoLite2-City.mmdb を手動で app.ini " +"と同じディレクトリに配置することもできます。" #: src/constants/errors/nginx_log.ts:10 msgid "Analytics service not available" @@ -394,8 +388,7 @@ msgid "Any" msgstr "任意" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "到達可能なIPアドレスは、プライベート認証局で使用できます" #: src/views/preference/tabs/OpenAISettings.vue:96 @@ -422,10 +415,6 @@ msgstr "APIタイプ" msgid "App" msgstr "アプリ" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "適用" @@ -438,7 +427,7 @@ msgstr "アーキテクチャ" msgid "Are you sure to delete this banned IP immediately?" msgstr "このIPアドレス制限を削除してもよろしいですか?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "このDDNS 設定を削除してもよろしいですか?" @@ -450,7 +439,7 @@ msgstr "このパスキーをすぐに削除してもよろしいですか?" msgid "Are you sure to delete this record?" msgstr "このレコードを削除してもよろしいですか?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "新しいリカバリーコードを生成してもよろしいですか?" @@ -517,6 +506,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud は OpenAI 互換です。 https://api.atlascloud.ai/v1 と Atlas Cloud API " +"キーを使用してください。" #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -526,12 +517,11 @@ msgstr "修正を試みる" msgid "Attempts" msgstr "試行回数" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "認証" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "「パスキーで認証する」" @@ -539,11 +529,6 @@ msgstr "「パスキーで認証する」" msgid "Authenticating..." msgstr "認証中..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "認証中..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -591,15 +576,15 @@ msgstr "自動更新が無効になりました" msgid "Auto refresh enabled" msgstr "自動更新が有効になりました" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "%{name}の自動更新が無効になっています" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "%{name}の自動更新が有効になっています" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert が実行中です。お待ちください..." @@ -659,9 +644,7 @@ msgstr "バックエンド" msgid "" "Background indexing in progress. Data will be updated automatically when " "ready." -msgstr "" -"バックグラウンドでのインデックス作成中です。準備が整い次第、データは自動的に" -"更新されます。" +msgstr "バックグラウンドでのインデックス作成中です。準備が整い次第、データは自動的に更新されます。" #: src/constants/errors/nginx_log.ts:14 msgid "Background log service not available" @@ -713,21 +696,15 @@ msgstr "バックアップ署名キーが利用できません" #: src/components/Notification/notifications.ts:38 msgid "Backup task %{backup_name} completed successfully, file: %{file_path}" -msgstr "" -"バックアップタスク %{backup_name} が正常に完了しました、ファイル: " -"%{file_path}" +msgstr "バックアップタスク %{backup_name} が正常に完了しました、ファイル: %{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" -msgstr "" -"バックアップタスク %{backup_name} のストレージへのアップロード中に失敗しまし" -"た。エラー: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" +msgstr "バックアップタスク %{backup_name} のストレージへのアップロード中に失敗しました。エラー: %{error}" #: src/components/Notification/notifications.ts:30 msgid "Backup task %{backup_name} failed to execute, error: %{error}" -msgstr "" -"バックアップタスク %{backup_name} の実行に失敗しました。エラー: %{error}" +msgstr "バックアップタスク %{backup_name} の実行に失敗しました。エラー: %{error}" #: src/views/backup/AutoBackup/AutoBackup.vue:24 msgid "Backup Type" @@ -784,12 +761,6 @@ msgstr "バッチアップグレード" msgid "Belows are selected items that you want to batch modify" msgstr "以下は一括修正したい選択項目です" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "ブロックがnilです" @@ -815,8 +786,7 @@ msgid "" "requirements and understand the performance implications. This will start " "indexing existing log files immediately." msgstr "" -"高度なインデックス作成を有効にすることで、システムが要件を満たしていることを" -"確認し、パフォーマンスへの影響を理解したものとみなされます。これにより、既存" +"高度なインデックス作成を有効にすることで、システムが要件を満たしていることを確認し、パフォーマンスへの影響を理解したものとみなされます。これにより、既存" "のログファイルのインデックス作成が直ちに開始されます。" #: src/views/certificate/ACMEUser.vue:39 @@ -871,22 +841,22 @@ msgid "" "Calculated based on worker_processes * worker_connections. Actual " "performance depends on hardware, configuration, and workload" msgstr "" -"worker_processes * worker_connections に基づいて計算されます。実際のパフォー" -"マンスはハードウェア、設定、およびワークロードに依存します" +"worker_processes * worker_connections " +"に基づいて計算されます。実際のパフォーマンスはハードウェア、設定、およびワークロードに依存します" #: src/components/LLM/ChatMessage.vue:245 #: src/components/NgxConfigEditor/NgxServer.vue:61 #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -919,9 +889,7 @@ msgstr "保護されたパスを削除できません" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:135 msgid "Cannot delete server_name while DNS is linked. Clear DNS link first." -msgstr "" -"DNSがリンクされている間はserver_nameを削除できません。まずDNSリンクを解除して" -"ください。" +msgstr "DNSがリンクされている間はserver_nameを削除できません。まずDNSリンクを解除してください。" #: src/constants/errors/config.ts:13 msgid "Cannot delete the nginx config directory" @@ -978,6 +946,10 @@ msgstr "証明書の内容と秘密鍵の内容は空にできません" msgid "Certificate decode error" msgstr "証明書のデコードエラー" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "証明書ディレクティブがエディターに追加されました。準備ができたら確認して保存してください。" + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "証明書有効期限のお知らせ" @@ -996,6 +968,14 @@ msgstr "証明書の有効期限が近づいています" msgid "Certificate files downloaded successfully" msgstr "証明書ファイルが正常にダウンロードされました" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "証明書発行コンポーネントは準備ができていません" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "証明書が正常に発行されました" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "証明書名は空にできません" @@ -1030,17 +1010,18 @@ msgid "Certificate revoked successfully" msgstr "証明書の失効に成功しました" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "証明書のステータス" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "証明書の種類" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "証明書" @@ -1061,11 +1042,11 @@ msgstr "チャレンジタイプ" msgid "Change Certificate" msgstr "証明書を変更する" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "パスワードを変更する" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "変更された証明書" @@ -1104,38 +1085,34 @@ msgstr "ファビコンをチェック" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" -"/var/run/docker.sock が存在するか確認してください。Nginx UI 公式 Docker イ" -"メージを使用している場合は、Docker ソケットを次のようにマウントしてください: " -"`-v /var/run/docker.sock:/var/run/docker.sock`。Nginx UI 公式イメージは /var/" -"run/docker.sock を使用して、Docker Client API を介してホストの Docker Engine " +"/var/run/docker.sock が存在するか確認してください。Nginx UI 公式 Docker " +"イメージを使用している場合は、Docker ソケットを次のようにマウントしてください: `-v " +"/var/run/docker.sock:/var/run/docker.sock`。Nginx UI 公式イメージは " +"/var/run/docker.sock を使用して、Docker Client API を介してホストの Docker Engine " "と通信します。この機能は、別のコンテナ内で Nginx を制御し、Nginx UI の OTA " -"アップグレード時にバイナリの置き換えではなくコンテナの置き換えを実行するため" -"に使用され、コンテナの依存関係もアップグレードされるようにします。この機能が" -"必要ない場合は、環境変数 NGINX_UI_IGNORE_DOCKER_SOCKET=true をコンテナに追加" -"してください。" +"アップグレード時にバイナリの置き換えではなくコンテナの置き換えを実行するために使用され、コンテナの依存関係もアップグレードされるようにします。この機能が" +"必要ない場合は、環境変数 NGINX_UI_IGNORE_DOCKER_SOCKET=true をコンテナに追加してください。" #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 msgid "" "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and " "prevents using Passkeys and clipboard features" msgstr "" -"HTTPS が有効かどうかを確認します。localhost 以外で HTTP を使用するとセキュリ" -"ティ上危険であり、Passkeys やクリップボード機能の使用が妨げられます" +"HTTPS が有効かどうかを確認します。localhost 以外で HTTP を使用するとセキュリティ上危険であり、Passkeys " +"やクリップボード機能の使用が妨げられます" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" -msgstr "" -"conf.d ディレクトリが nginx の設定ディレクトリの下にあるか確認してください" +msgid "Check if the conf.d directory is under the nginx configuration directory" +msgstr "conf.d ディレクトリが nginx の設定ディレクトリの下にあるか確認してください" #: src/language/generate.ts:7 msgid "" @@ -1144,26 +1121,23 @@ msgid "" "indexing. You can download it from the Preference page or manually place " "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" -"ログインデックスが有効な場合、GeoLite2 データベースが利用可能かどうかを確認し" -"てください。GeoLite2 データベースは、ログインデックスの地理的 IP 分析に必要で" -"す。設定ページからダウンロードするか、app.ini と同じディレクトリに GeoLite2-" -"City.mmdb を手動で配置できます" +"ログインデックスが有効な場合、GeoLite2 データベースが利用可能かどうかを確認してください。GeoLite2 " +"データベースは、ログインデックスの地理的 IP 分析に必要です。設定ページからダウンロードするか、app.ini と同じディレクトリに " +"GeoLite2-City.mmdb を手動で配置できます" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" -"nginx のアクセスログのパスが存在するか確認してください。デフォルトでは、この" -"パスは 'nginx -V' から取得されます。取得できない場合、または取得したパスが有" -"効な既存のファイルを指していない場合、エラーが報告されます。この場合、設定" -"ファイルを変更してアクセスログのパスを指定する必要があります。詳細については" -"ドキュメントを参照してください: https://nginxui.com/zh_CN/guide/config-nginx." -"html#accesslogpath" +"nginx のアクセスログのパスが存在するか確認してください。デフォルトでは、このパスは 'nginx -V' " +"から取得されます。取得できない場合、または取得したパスが有効な既存のファイルを指していない場合、エラーが報告されます。この場合、設定ファイルを変更してア" +"クセスログのパスを指定する必要があります。詳細についてはドキュメントを参照してください: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1179,28 +1153,26 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" -"nginx のエラーログのパスが存在するか確認してください。デフォルトでは、このパ" -"スは 'nginx -V' から取得されます。取得できない場合、または取得したパスが有効" -"な既存のファイルを指していない場合、エラーが報告されます。この場合、設定ファ" -"イルを変更してエラーログのパスを指定する必要があります。詳細についてはドキュ" -"メントを参照してください: https://nginxui.com/zh_CN/guide/config-nginx." -"html#errorlogpath" +"nginx のエラーログのパスが存在するか確認してください。デフォルトでは、このパスは 'nginx -V' " +"から取得されます。取得できない場合、または取得したパスが有効な既存のファイルを指していない場合、エラーが報告されます。この場合、設定ファイルを変更してエ" +"ラーログのパスを指定する必要があります。詳細についてはドキュメントを参照してください: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" "NginxのPIDパスが存在するか確認してください。デフォルトでは、このパスは'nginx " -"-V'から取得されます。取得できない場合、エラーが報告されます。この場合、設定" -"ファイルを変更してNginxのPIDパスを指定する必要があります。詳細はドキュメント" -"を参照してください: https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" +"-V'" +"から取得されます。取得できない場合、エラーが報告されます。この場合、設定ファイルを変更してNginxのPIDパスを指定する必要があります。詳細はドキュメ" +"ントを参照してください: https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1222,17 +1194,13 @@ msgstr "nginx.conf に streams-enabled ディレクトリが含まれている msgid "" "Check if the sites-available and sites-enabled directories are under the " "nginx configuration directory" -msgstr "" -"nginx の設定ディレクトリに sites-available と sites-enabled ディレクトリがあ" -"るか確認する" +msgstr "nginx の設定ディレクトリに sites-available と sites-enabled ディレクトリがあるか確認する" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" -msgstr "" -"nginxの設定ディレクトリにstreams-availableとstreams-enabledディレクトリがある" -"か確認する" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" +msgstr "nginxの設定ディレクトリにstreams-availableとstreams-enabledディレクトリがあるか確認する" #: src/views/dashboard/components/SiteHealthCheckModal.vue:625 msgid "Check Interval (seconds)" @@ -1251,6 +1219,10 @@ msgstr "中国地図" msgid "Cipher text is too short" msgstr "暗号文が短すぎます" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "競合するレコードをクリーンアップ" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "環境変数を削除する" @@ -1274,8 +1246,7 @@ msgstr "正常に削除しました" #: src/components/SystemRestore/SystemRestoreContent.vue:220 #: src/components/SystemRestore/SystemRestoreContent.vue:303 msgid "Click or drag backup file to this area to upload" -msgstr "" -"この領域にバックアップファイルをクリックまたはドラッグしてアップロードします" +msgstr "この領域にバックアップファイルをクリックまたはドラッグしてアップロードします" #: src/language/curd.ts:51 src/language/curd.ts:55 msgid "Click or drag files to this area to upload" @@ -1461,11 +1432,11 @@ msgstr "設定名" msgid "Configurations" msgstr "設定" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "設定" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "DDNSを設定" @@ -1477,7 +1448,7 @@ msgstr "SSLを設定する" msgid "Confirm Delete" msgstr "削除の確認" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "新しいパスワードを確認" @@ -1490,11 +1461,6 @@ msgstr "確認が必要です" msgid "Connected" msgstr "接続済み" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "接続済み" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "接続エラー、再接続を試みています..." @@ -1507,15 +1473,6 @@ msgstr "この端末との接続が失われました。必要に応じて更新 msgid "Connection timeout period" msgstr "接続タイムアウト期間" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "コンテンツ" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "コンテナの状態が不明です" @@ -1528,8 +1485,7 @@ msgstr "コンテンツ" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "コピーしました" @@ -1540,19 +1496,13 @@ msgstr "コピーしました!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "コピー" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "コードをコピー" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "コピー" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "コアアップグレード" @@ -1591,8 +1541,7 @@ msgstr "CPU 使用率" #: src/views/dashboard/components/ResourceUsageCard.vue:38 msgid "CPU usage is relatively high, consider optimizing Nginx configuration" -msgstr "" -"CPU 使用率が比較的高いため、Nginxの設定を最適化することを検討してください" +msgstr "CPU 使用率が比較的高いため、Nginxの設定を最適化することを検討してください" #: src/views/dashboard/ServerAnalytic.vue:200 msgid "CPU:" @@ -1632,9 +1581,7 @@ msgstr "レコードを作成" msgid "" "Create system backups including Nginx configuration and Nginx UI settings. " "Backup files will be automatically downloaded to your computer." -msgstr "" -"Nginx 設定と Nginx UI 設定を含むシステムバックアップを作成します。バックアッ" -"プファイルは自動的にコンピュータにダウンロードされます。" +msgstr "Nginx 設定と Nginx UI 設定を含むシステムバックアップを作成します。バックアップファイルは自動的にコンピュータにダウンロードされます。" #: src/views/backup/AutoBackup/AutoBackup.vue:229 #: src/views/namespace/columns.ts:85 @@ -1654,7 +1601,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "クライアントを作成することで CA サーバーとの通信が容易になります" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "認証情報" @@ -1686,7 +1633,7 @@ msgstr "現在のアクティブな接続" msgid "Current Content" msgstr "現在の内容" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "現在のパスワード" @@ -1712,11 +1659,11 @@ msgstr "カスタム cron 式" msgid "Custom Directory" msgstr "カスタムディレクトリ" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "カスタムドメイン" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "カスタムドメイン証明書" @@ -1777,15 +1724,15 @@ msgstr "データベース ファイルが見つかりません" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "DDNS 設定が削除されました" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "DDNS 概要" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNSが保存されました" @@ -1814,7 +1761,7 @@ msgstr "共有メモリゾーンの名前とサイズを定義します(例: p #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "削除" @@ -1899,11 +1846,9 @@ msgstr "デモ" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." -msgstr "" -"デモモードが有効です。このターミナルでは、安全な読み取り専用コマンドの小さな" -"セットのみが許可されます。" +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." +msgstr "デモモードが有効です。このターミナルでは、安全な読み取り専用コマンドの小さなセットのみが許可されます。" #: src/views/config/components/ConfigRightPanel/Basic.vue:60 msgid "Deploy" @@ -2014,7 +1959,7 @@ msgstr "無効化" msgid "Disable" msgstr "無効化" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "%{name} の自動更新の無効化に失敗しました" @@ -2069,7 +2014,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "ストリーム %{name} を %{node} から無効化しました" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2188,19 +2133,17 @@ msgstr "このサイトを%{action}しますか?" msgid "Do you want to %{action} this stream?" msgstr "このストリームを%{action}しますか?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "自動証明書更新を無効にしますか?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "このストリームを無効にしますか?" +msgstr "選択したサイトを無効にしますか?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "このストリームを有効にしますか?" +msgstr "選択されたサイトを有効にしますか?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2219,10 +2162,6 @@ msgstr "このアップストリームを削除しますか?" msgid "Docker client not initialized" msgstr "Docker クライアントが初期化されていません" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Docker ソケットが存在します" @@ -2231,10 +2170,6 @@ msgstr "Docker ソケットが存在します" msgid "Docker socket not exist" msgstr "Dockerソケットが存在しません" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2245,11 +2180,15 @@ msgstr[0] "ドキュメント" msgid "Document Count" msgstr "ドキュメント数" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "ドメイン" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "ドメイン" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "ドメインリストが空です。%{config} の自動証明書を再度開いてみてください" @@ -2295,9 +2234,7 @@ msgstr "ドライランモードが有効です" msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." -msgstr "" -"一部のブラウザのセキュリティポリシーのため、localhostで実行している場合を除" -"き、非 HTTPSウェブサイトではパスキーを使用できません。" +msgstr "一部のブラウザのセキュリティポリシーのため、localhostで実行している場合を除き、非 HTTPSウェブサイトではパスキーを使用できません。" #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2395,7 +2332,7 @@ msgstr "高度なインデックス作成を有効にする" msgid "Enable Advanced Log Indexing" msgstr "高度なログインデックスを有効にする" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "%{name} の自動更新の有効化に失敗しました" @@ -2407,7 +2344,7 @@ msgstr "コード補完を有効にする" msgid "Enable compression for content transfer" msgstr "コンテンツ転送の圧縮を有効にする" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "DDNS を有効にする" @@ -2504,7 +2441,7 @@ msgid "Enable TOTP" msgstr "TOTP を有効にする" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2532,9 +2469,7 @@ msgstr "多重化とサーバープッシュ機能を備えたHTTP/2サポート #: src/views/preference/tabs/ServerSettings.vue:56 msgid "Enables HTTP/3 support based on QUIC protocol for best performance" -msgstr "" -"最高のパフォーマンスを得るためにQUICプロトコルに基づくHTTP/3サポートを有効に" -"します" +msgstr "最高のパフォーマンスを得るためにQUICプロトコルに基づくHTTP/3サポートを有効にします" #: src/views/nginx_log/components/IndexingSettingsModal.vue:110 msgid "" @@ -2542,9 +2477,8 @@ msgid "" "resources including CPU and memory. Please ensure your system meets the " "minimum requirements before proceeding." msgstr "" -"高度なログインデックスを有効にすると、CPUやメモリを含む大幅な計算リソースを消" -"費します。続行する前に、システムが最低要件を満たしていることを確認してくださ" -"い。" +"高度なログインデックスを有効にすると、CPUやメモリを含む大幅な計算リソースを消費します。続行する前に、システムが最低要件を満たしていることを確認してく" +"ださい。" #: src/views/site/site_edit/components/Cert/IssueCert.vue:95 msgid "Encrypt website with Let's Encrypt" @@ -2558,30 +2492,36 @@ msgstr "終了" msgid "End Date" msgstr "終了日" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "証明書名を入力" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "ドメイン名を入力" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "IP アドレスを入力" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" -msgstr "" -"サーバーのIPアドレスを入力してください(例:203.0.113.1 または 2001:db8::1)" +msgstr "サーバーのIPアドレスを入力してください(例:203.0.113.1 または 2001:db8::1)" #: src/components/SelfCheck/SelfCheck.vue:72 msgid "Enter the install secret to run the system check." -msgstr "" -"システムチェックを実行するには、インストールシークレットを入力してください。" +msgstr "システムチェックを実行するには、インストールシークレットを入力してください。" #: src/views/install/components/InstallView.vue:169 msgid "" "Enter the one-time install secret shown by the install script or found in " "the config directory hidden file to unlock setup." msgstr "" -"セットアップを解除するには、インストールスクリプトに表示される、または設定" -"ディレクトリの隠しファイルにあるワンタイムインストールシークレットを入力して" -"ください。" +"セットアップを解除するには、インストールスクリプトに表示される、または設定ディレクトリの隠しファイルにあるワンタイムインストールシークレットを入力してく" +"ださい。" -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "ドメインを入力してください" @@ -2593,7 +2533,7 @@ msgstr "環境設定が空です" msgid "Environment variables cleaned" msgstr "環境変数をクリーンアップしました" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2626,11 +2566,9 @@ msgstr "エラーログ" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." -msgstr "" -"エラーログは自由形式のテキストメッセージを含むため、構造化された分析をサポー" -"トしていません。" +"Error logs do not support structured analysis as they contain free-form " +"text messages." +msgstr "エラーログは自由形式のテキストメッセージを含むため、構造化された分析をサポートしていません。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:272 msgid "Error pattern recognition" @@ -2677,7 +2615,7 @@ msgid "Expected Text" msgstr "予期されるテキスト" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "期限切れ" @@ -2693,24 +2631,15 @@ msgstr "Excel にエクスポート" msgid "" "External Account Binding HMAC Key (optional). Should be in Base64 URL " "encoding format." -msgstr "" -"外部アカウントバインディング HMAC キー(オプション)。Base64 URL エンコード形" -"式である必要があります。" +msgstr "外部アカウントバインディング HMAC キー(オプション)。Base64 URL エンコード形式である必要があります。" #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." -msgstr "" -"外部アカウントバインディングキーID(オプション)。ZeroSSLなどの一部のACMEプロ" -"バイダーで必要です。" +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." +msgstr "外部アカウントバインディングキーID(オプション)。ZeroSSLなどの一部のACMEプロバイダーで必要です。" -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "外部 Docker コンテナ" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "外部 Docker コンテナ" @@ -2733,6 +2662,7 @@ msgstr "証明書の取得に失敗しました" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "失敗" @@ -2972,6 +2902,11 @@ msgstr "AESキーの生成に失敗しました: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "初期化ベクトルの生成に失敗しました: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "自己署名証明書の生成に失敗しました" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "証明書情報の取得に失敗しました" @@ -3301,27 +3236,20 @@ msgid "For commercial or professional use, contact" msgstr "商用または専門的な利用の場合は、以下までご連絡ください" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." -msgstr "" -"エラーログについては、より良い閲覧体験のためにRaw Log Viewerをご利用くださ" -"い。" +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." +msgstr "エラーログについては、より良い閲覧体験のためにRaw Log Viewerをご利用ください。" #: src/components/AutoCertForm/AutoCertForm.vue:140 msgid "" "For IP-based certificate configurations, only HTTP-01 challenge method is " "supported. DNS-01 challenge is not compatible with IP-based certificates." -msgstr "" -"IPベースの証明書構成では、HTTP-01チャレンジ方式のみがサポートされています。" -"DNS-01チャレンジはIPベースの証明書と互換性がありません。" +msgstr "IPベースの証明書構成では、HTTP-01チャレンジ方式のみがサポートされています。DNS-01チャレンジはIPベースの証明書と互換性がありません。" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." -msgstr "" -"IPベースの証明書の場合、証明書に含まれるサーバーIPアドレスを指定してくださ" -"い。" +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." +msgstr "IPベースの証明書の場合、証明書に含まれるサーバーIPアドレスを指定してください。" #: src/constants/errors/middleware.ts:4 msgid "Form parse failed" @@ -3356,31 +3284,26 @@ msgid "" "Frontend debug mode is active. Enter the debug secret to unlock the mock " "installation flow without sending backend requests." msgstr "" -"フロントエンドデバッグモードが有効です。バックエンドにリクエストを送信せずに" -"モックインストールフローを解除するには、デバッグシークレットを入力してくださ" +"フロントエンドデバッグモードが有効です。バックエンドにリクエストを送信せずにモックインストールフローを解除するには、デバッグシークレットを入力してくださ" "い。" #: src/components/SelfCheck/store.ts:19 msgid "" "Frontend debug mode is active. Secret verification is mocked locally and no " "backend request is sent." -msgstr "" -"フロントエンドのデバッグモードが有効です。シークレット検証はローカルで模擬さ" -"れ、バックエンドへのリクエストは送信されません。" +msgstr "フロントエンドのデバッグモードが有効です。シークレット検証はローカルで模擬され、バックエンドへのリクエストは送信されません。" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" -msgstr "" -"フロントエンドデバッグモード:バックエンドリクエストを送信せずにインストール" -"フローが完了しました" +"Frontend debug mode: install flow completed without sending a backend " +"request" +msgstr "フロントエンドデバッグモード:バックエンドリクエストを送信せずにインストールフローが完了しました" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" -msgstr "" -"フロントエンドデバッグモード:バックエンドリクエストを送信せずに復元フローが" -"完了しました" +"Frontend debug mode: restore flow completed without sending a backend " +"request" +msgstr "フロントエンドデバッグモード:バックエンドリクエストを送信せずに復元フローが完了しました" #: src/views/nginx_log/structured/components/SearchFilters.vue:65 msgid "Full Text Search" @@ -3394,21 +3317,24 @@ msgstr "全文検索サポート" msgid "General Certificate" msgstr "一般証明書" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "生成" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "生成" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "新しいリカバリコードを生成" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "新しいリカバリーコードを生成" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "リカバリーコードを生成" @@ -3416,6 +3342,14 @@ msgstr "リカバリーコードを生成" msgid "Generate recovery codes successfully" msgstr "リカバリーコードの生成に成功しました" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "自己署名証明書を生成" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "自己署名証明書を生成" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "アカウント登録用の秘密鍵を生成中" @@ -3446,8 +3380,8 @@ msgid "" "GeoLite2 database not found at {0}. Log indexing requires GeoLite2 database " "for geographic IP analysis" msgstr "" -"GeoLite2 データベースが {0} に見つかりません。ログのインデックス作成には、地" -"理的な IP 分析のための GeoLite2 データベースが必要です" +"GeoLite2 データベースが {0} に見つかりません。ログのインデックス作成には、地理的な IP 分析のための GeoLite2 " +"データベースが必要です" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:150 msgid "GeoLite2 Database Required" @@ -3494,6 +3428,10 @@ msgstr "DNS > 認証情報に移動して、認証情報を作成または管理 msgid "Go to Raw Log Viewer" msgstr "生ログビューアへ移動" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "リカバリーコードへ移動" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3502,17 +3440,15 @@ msgstr "Gotify" msgid "" "gRPC health check requires server to implement gRPC Health Check service " "(grpc.health.v1.Health)." -msgstr "" -"gRPCヘルスチェックでは、サーバーがgRPCヘルスチェックサービス(grpc.health.v1." -"Health)を実装している必要があります。" +msgstr "gRPCヘルスチェックでは、サーバーがgRPCヘルスチェックサービス(grpc.health.v1.Health)を実装している必要があります。" #: src/views/dashboard/components/SiteHealthCheckModal.vue:599 msgid "" "gRPCS uses TLS encryption. Server must implement gRPC Health Check service. " "For testing, SSL validation is disabled by default." msgstr "" -"gRPCSはTLS 暗号化を使用します。サーバーはgRPCヘルスチェックサービスを実装する" -"必要があります。テストでは、SSL 検証はデフォルトで無効になっています。" +"gRPCSはTLS 暗号化を使用します。サーバーはgRPCヘルスチェックサービスを実装する必要があります。テストでは、SSL " +"検証はデフォルトで無効になっています。" #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67 msgid "GZIP Compression" @@ -3563,10 +3499,6 @@ msgstr "非表示" msgid "Hide Assistant" msgstr "アシスタントを非表示" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3588,27 +3520,10 @@ msgid "Home" msgstr "ホーム" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "ホスト" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "ホスト、例: @ または www" @@ -3650,45 +3565,36 @@ msgstr "ICP 番号" msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." -msgstr "" -"IP からのログイン失敗試行回数が禁止閾値分以内に最大試行回数に達した場合、そ" -"の IP は一定期間禁止されます。" +msgstr "IP からのログイン失敗試行回数が禁止閾値分以内に最大試行回数に達した場合、その IP は一定期間禁止されます。" #: src/components/AutoCertForm/AutoCertForm.vue:280 msgid "" "If you want to automatically revoke the old certificate, please enable this " "option." -msgstr "" -"古い証明書を自動的に失効させたい場合は、このオプションを有効にしてください。" +msgstr "古い証明書を自動的に失効させたい場合は、このオプションを有効にしてください。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:167 msgid "" "If you want to change the storage location, you can set the `IndexPath` of " "`nginx_log` section in the Nginx UI config." -msgstr "" -"保存場所を変更したい場合は、Nginx UI 設定の `nginx_log` セクションの " -"`IndexPath` を設定できます。" +msgstr "保存場所を変更したい場合は、Nginx UI 設定の `nginx_log` セクションの `IndexPath` を設定できます。" #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." -msgstr "" -"お使いのブラウザがWebAuthnパスキーに対応している場合、ダイアログボックスが表" -"示されます。" +msgstr "お使いのブラウザがWebAuthnパスキーに対応している場合、ダイアログボックスが表示されます。" #: src/components/AutoCertForm/AutoCertForm.vue:271 msgid "" "If your domain has CNAME records and you cannot obtain certificates, you " "need to enable this option." -msgstr "" -"ドメインにCNAMEレコードがあり、証明書を取得できない場合は、このオプションを有" -"効にする必要があります。" +msgstr "ドメインにCNAMEレコードがあり、証明書を取得できない場合は、このオプションを有効にする必要があります。" -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "インポート" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "証明書をインポート" @@ -3700,9 +3606,7 @@ msgstr "非アクティブ時間" msgid "" "Includes master process, worker processes, cache processes, and other Nginx " "processes" -msgstr "" -"マスタープロセス、ワーカープロセス、キャッシュプロセス、その他のNginxプロセス" -"を含む" +msgstr "マスタープロセス、ワーカープロセス、キャッシュプロセス、その他のNginxプロセスを含む" #: src/views/nginx_log/components/IndexingSettingsModal.vue:252 msgid "Incremental index scanning" @@ -3751,7 +3655,7 @@ msgstr "インデックス作成中..." msgid "Indicator" msgstr "指標" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "情報" @@ -3775,7 +3679,7 @@ msgstr "コアアップグレーダーの初期化中" msgid "Input the code from the app:" msgstr "アプリからコードを入力してください:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "リカバリーコードを入力してください:" @@ -3830,16 +3734,14 @@ msgstr "システム起動後 10 分経過するとインストールは許可 msgid "" "Installation is not allowed after 10 minutes of system startup, please " "restart the Nginx UI." -msgstr "" -"システム起動から10 分後はインストールが許可されません。Nginx UIを再起動してく" -"ださい。" +msgstr "システム起動から10 分後はインストールが許可されません。Nginx UIを再起動してください。" -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "間隔" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "間隔(秒)" @@ -3913,7 +3815,7 @@ msgstr "無効なOTPコード" msgid "Invalid padding in decrypted data" msgstr "復号化データのパディングが無効です" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "無効なパスコードまたはリカバリーコード" @@ -3966,15 +3868,43 @@ msgstr "IPアドレス" msgid "IP Address / Target" msgstr "IPアドレス / ターゲット" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "IPアドレス" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "IP 証明書の通知" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "IP バージョン" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "IPv4 のみ" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4、次に IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "IPv6のみ" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6 次に IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "発行に失敗しました" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "証明書を発行" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "証明書を発行" @@ -3982,10 +3912,18 @@ msgstr "証明書を発行" msgid "Issued certificate successfully" msgstr "証明書の発行に成功しました" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "発行に成功しました" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "発行者: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "発行中..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "アイテム" @@ -3998,16 +3936,15 @@ msgstr "JWT シークレット" msgid "" "Keep your recovery codes as safe as your password. We recommend saving them " "with a password manager." -msgstr "" -"リカバリーコードはパスワードと同じように安全に保管してください。パスワードマ" -"ネージャーでの保存をお勧めします。" +msgstr "リカバリーコードはパスワードと同じように安全に保管してください。パスワードマネージャーでの保存をお勧めします。" #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60 msgid "Keepalive Timeout" msgstr "キープアライブタイムアウト" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "鍵の種類" @@ -4089,7 +4026,7 @@ msgstr "最終インデックス日時" msgid "Last month" msgstr "先月" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "最終実行" @@ -4105,14 +4042,17 @@ msgstr "最終更新日:" msgid "Last used at" msgstr "最終使用日時" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "後で" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "変更しない場合は空欄のままにしてください" #: src/views/preference/tabs/OpenAISettings.vue:33 msgid "Leave blank for the default: https://api.openai.com/" -msgstr "" -"デフォルトのままにする場合、空欄のままにしてください: https://api.openai.com/" +msgstr "デフォルトのままにする場合、空欄のままにしてください: https://api.openai.com/" #: src/language/curd.ts:39 msgid "Leave blank if do not want to modify" @@ -4127,11 +4067,8 @@ msgid "Leave blank if you don't need this." msgstr "必要なければ空白のままにしてください。" #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "" -"デフォルトのままにする場合、空欄のままにしてください: https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "空白のままにすると、Atlas Cloud エンドポイントを使用します: https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4140,10 +4077,16 @@ msgstr "" msgid "Leave blank will not change anything" msgstr "空白のままにすると何も変更されません" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "従来の復旧コードは非推奨です。アカウントの復旧を安全に保つために、新しい復旧コードを生成してください。" + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" -msgstr "" -"TOTPが有効になっていないため、従来のリカバリーコードは許可されていません" +msgstr "TOTPが有効になっていないため、従来のリカバリーコードは許可されていません" #: src/components/AutoCertForm/AutoCertForm.vue:268 msgid "Lego disable CNAME Support" @@ -4171,17 +4114,15 @@ msgstr "リンク" msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name." -msgstr "" -"このサイトをDNSレコードにリンクします。server_nameがDNSレコード名として使用さ" -"れます。" +msgstr "このサイトをDNSレコードにリンクします。server_nameがDNSレコード名として使用されます。" #: src/views/site/site_add/components/DNSRecordIntegration.vue:247 msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name. You can skip this step if DNS is already configured." msgstr "" -"このサイトをDNSレコードにリンクします。server_nameがDNSレコード名として使用さ" -"れます。DNSがすでに設定されている場合は、この手順をスキップできます。" +"このサイトをDNSレコードにリンクします。server_" +"nameがDNSレコード名として使用されます。DNSがすでに設定されている場合は、この手順をスキップできます。" #: src/views/site/site_edit/components/RightPanel/DNS.vue:466 msgid "Linked DNS Record" @@ -4197,7 +4138,7 @@ msgstr "リスニング" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4245,18 +4186,14 @@ msgstr "読み込み中..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "ローカル" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "ローカルパス(例:/var/backups)" @@ -4269,19 +4206,18 @@ msgstr "ロケーション" msgid "Locations" msgstr "ロケーション" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "ログ" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" -"ログファイル %{log_path} は通常のファイルではありません。Docker コンテナで " -"nginx-ui を使用している場合は、詳細について https://nginxui.com/zh_CN/guide/" -"config-nginx-log.html を参照してください。" +"ログファイル %{log_path} は通常のファイルではありません。Docker コンテナで nginx-ui を使用している場合は、詳細について " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html を参照してください。" #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4317,15 +4253,13 @@ msgstr "ログリスト" #: src/constants/errors/nginx_log.indexer.ts:2 msgid "Log parser is not initialized; call indexer.InitLogParser() before use" -msgstr "" -"ログ パーサーが初期化されていません。使用前に indexer.InitLogParser() を呼び" -"出してください" +msgstr "ログ パーサーが初期化されていません。使用前に indexer.InitLogParser() を呼び出してください" #: src/constants/errors/nginx_log.ts:12 msgid "Log path is not under whitelist" msgstr "ログパスはホワイトリストに含まれていません" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "ログイン" @@ -4333,7 +4267,7 @@ msgstr "ログイン" msgid "Login successful" msgstr "ログインに成功しました" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "ログアウトしました" @@ -4343,19 +4277,17 @@ msgstr "ログローテート" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" -"Logrotate は、ホストマシンに Nginx UI をインストールするユーザー向けに、ほと" -"んどの主流な Linux ディストリビューションでデフォルトで有効になっています。そ" -"のため、このページのパラメータを変更する必要はありません。Docker コンテナを使" -"用して Nginx UI をインストールするユーザーは、このオプションを手動で有効にす" -"ることができます。Nginx UI の crontab タスクスケジューラは、設定した間隔(分" -"単位)で logrotate コマンドを実行します。" +"Logrotate は、ホストマシンに Nginx UI をインストールするユーザー向けに、ほとんどの主流な Linux " +"ディストリビューションでデフォルトで有効になっています。そのため、このページのパラメータを変更する必要はありません。Docker コンテナを使用して " +"Nginx UI をインストールするユーザーは、このオプションを手動で有効にすることができます。Nginx UI の crontab " +"タスクスケジューラは、設定した間隔(分単位)で logrotate コマンドを実行します。" #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4382,15 +4314,13 @@ msgstr "メンテナンスモードを無効にしました" msgid "Maintenance mode enabled successfully" msgstr "メンテナンスモードが有効になりました" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "メンテナンスモードが有効になりました" +msgstr "メンテナンステンプレート (ファイル名のみ)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "メンテナンス" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4401,8 +4331,8 @@ msgid "" "Make sure you have configured a reverse proxy for .well-known directory to " "HTTPChallengePort before obtaining the certificate." msgstr "" -"証明書を取得する前に、.well-known ディレクトリのリバースプロキシを " -"HTTPChallengePort に設定していることを確認してください。" +"証明書を取得する前に、.well-known ディレクトリのリバースプロキシを HTTPChallengePort " +"に設定していることを確認してください。" #: src/routes/modules/config.ts:10 #: src/views/config/components/ConfigLeftPanel.vue:114 @@ -4524,10 +4454,6 @@ msgstr "メモリ設計" msgid "Memory Usage (RSS)" msgstr "メモリ使用量 (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4561,7 +4487,7 @@ msgstr "分" msgid "Minutes" msgstr "分" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "ミラー" @@ -4590,7 +4516,7 @@ msgid "Modify" msgstr "変更" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "証明書を変更" @@ -4622,10 +4548,9 @@ msgstr "毎月" msgid "Monthly on day %{day} at %{time}" msgstr "毎月%{day}日%{time}に" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "保護されたディレクトリ" +msgstr "マウントされたディレクトリ" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4641,8 +4566,7 @@ msgstr "複数行ディレクティブ" #: src/components/AutoCertForm/AutoCertForm.vue:196 msgid "Must be a public IP address accessible from the internet" -msgstr "" -"インターネットからアクセス可能なパブリックIPアドレスでなければなりません" +msgstr "インターネットからアクセス可能なパブリックIPアドレスでなければなりません" #: src/components/UpstreamDetailModal/UpstreamDetailModal.vue:38 #: src/components/UpstreamDetailModal/UpstreamDetailModal.vue:56 @@ -4656,6 +4580,7 @@ msgstr "該当なし" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4694,9 +4619,7 @@ msgstr "名前空間" msgid "" "Need more DNS providers? Support us through donations or contact us for " "commercial collaboration" -msgstr "" -"さらに多くのDNSプロバイダーが必要ですか?寄付でサポートするか、商業協力のため" -"にご連絡ください" +msgstr "さらに多くのDNSプロバイダーが必要ですか?寄付でサポートするか、商業協力のためにご連絡ください" #: src/views/dashboard/NginxDashBoard.vue:195 msgid "Need to enable the stub_status module" @@ -4730,7 +4653,7 @@ msgstr "新しいレゴクライアントエラー: {0}" msgid "New name" msgstr "新しい名前" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "新しいパスワード" @@ -4746,12 +4669,11 @@ msgstr "新しい転送エラー: {0}" msgid "New version released" msgstr "新しいバージョンがリリースされました" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "次へ" @@ -4763,7 +4685,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Nginx -T の出力が空です" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Nginx アクセスログパス" @@ -4817,11 +4739,11 @@ msgstr "Nginxの設定が復元されました" msgid "Nginx Configuration Parse Error" msgstr "Nginx 設定解析エラー" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Nginx 設定ファイルのパス" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Nginx 設定ディレクトリ" @@ -4829,7 +4751,7 @@ msgstr "Nginx 設定ディレクトリ" msgid "Nginx Control" msgstr "Nginx コントロール" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Nginx 制御モード" @@ -4838,7 +4760,7 @@ msgstr "Nginx 制御モード" msgid "Nginx CPU usage rate" msgstr "NginxのCPU 使用率" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Nginx エラーログのパス" @@ -4874,7 +4796,7 @@ msgstr "Nginx は実行中です" msgid "Nginx Log" msgstr "Nginx ログ" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Nginx ログディレクトリホワイトリスト" @@ -4887,7 +4809,7 @@ msgstr "Nginx ログのインデックス作成中..." msgid "Nginx Memory usage" msgstr "Nginxメモリ使用量" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Nginx PID パス" @@ -4895,7 +4817,7 @@ msgstr "Nginx PID パス" msgid "Nginx PID path exists" msgstr "Nginx PID パスが存在します" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Nginx リロードコマンド" @@ -4916,7 +4838,7 @@ msgstr "Nginxのリロードが成功しました" msgid "Nginx reported a configuration syntax error." msgstr "Nginx が設定構文エラーを報告しました。" -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Nginx 再起動コマンド" @@ -4932,7 +4854,7 @@ msgstr "Nginxの再起動が成功しました" msgid "Nginx sbin path exists" msgstr "Nginx の Sbin パスが存在します" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Nginx 設定テストコマンド" @@ -4955,10 +4877,17 @@ msgstr "Nginx UI の設定が復元されました" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "Nginx UI の設定が復元され、数秒後に自動的に再起動します。" +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "Nginx UI は、グローバルな証明書更新間隔とこの証明書の有効期間に基づいて、証明書の有効期限が近づくと自動的に更新します。" + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf は conf.d ディレクトリを含んでいます" @@ -4985,7 +4914,7 @@ msgid "No" msgstr "いいえ" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "アクションなし" @@ -5023,10 +4952,6 @@ msgstr "現在のページにエントリがありません" msgid "No geographic data available" msgstr "地理データが利用できません" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "選択した時間範囲にログが見つかりませんでした。" @@ -5051,9 +4976,7 @@ msgstr "サイトが見つかりません" msgid "" "No specific IP address found in server_name configuration. Please specify " "the server IP address below for the certificate." -msgstr "" -"server_name の設定で特定のIPアドレスが見つかりませんでした。証明書のために" -"サーバーのIPアドレスを以下で指定してください。" +msgstr "server_name の設定で特定のIPアドレスが見つかりませんでした。証明書のためにサーバーのIPアドレスを以下で指定してください。" #: src/views/nginx_log/structured/StructuredLogViewer.vue:836 msgid "No structured log data available" @@ -5088,7 +5011,7 @@ msgstr "ノードステータス" msgid "Nodes" msgstr "ノード" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "有効期限" @@ -5109,7 +5032,7 @@ msgstr "未インデックス" msgid "Not Loaded" msgstr "ロードされていません" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "まだ実行されていません" @@ -5131,18 +5054,15 @@ msgstr "注記" msgid "" "Note, if the configuration file include other configurations or " "certificates, please synchronize them to the remote nodes in advance." -msgstr "" -"設定ファイルに他の設定や証明書が含まれている場合は、事前にリモートノードに同" -"期してください。" +msgstr "設定ファイルに他の設定や証明書が含まれている場合は、事前にリモートノードに同期してください。" #: src/views/dashboard/components/SiteHealthCheckModal.vue:603 msgid "" "Note: If the server does not support gRPC Reflection, health checks may " "fail. Please ensure your gRPC server has Reflection enabled." msgstr "" -"注: サーバーが gRPC リフレクションをサポートしていない場合、ヘルスチェックが" -"失敗する可能性があります。gRPC サーバーでリフレクションが有効になっていること" -"を確認してください。" +"注: サーバーが gRPC リフレクションをサポートしていない場合、ヘルスチェックが失敗する可能性があります。gRPC " +"サーバーでリフレクションが有効になっていることを確認してください。" #: src/views/certificate/components/CertificateBasicInfo.vue:24 #: src/views/certificate/components/CertificateContentEditor.vue:105 @@ -5189,7 +5109,7 @@ msgstr "ワーカープロセスの数" msgid "Obtain cert error: {0}" msgstr "証明書の取得エラー: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "証明書を取得する" @@ -5205,9 +5125,7 @@ msgstr "OCSP Must Staple" msgid "" "OCSP Must Staple may cause errors for some users on first access using " "Firefox." -msgstr "" -"OCSP Must Staple は、Firefox を使用した初回アクセス時に一部のユーザーでエラー" -"を引き起こす可能性があります。" +msgstr "OCSP Must Staple は、Firefox を使用した初回アクセス時に一部のユーザーでエラーを引き起こす可能性があります。" #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164 @@ -5243,7 +5161,7 @@ msgstr "OIDCログイン" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5275,9 +5193,7 @@ msgstr "オンライン数" msgid "" "Only backups created by versions that support signed manifests can be " "restored. Legacy backups are no longer supported." -msgstr "" -"署名付きマニフェストをサポートするバージョンで作成されたバックアップのみが復" -"元可能です。従来のバックアップはサポートされなくなりました。" +msgstr "署名付きマニフェストをサポートするバージョンで作成されたバックアップのみが復元可能です。従来のバックアップはサポートされなくなりました。" #: src/components/SystemRestore/SystemRestoreContent.vue:83 msgid "Only zip files are allowed" @@ -5287,10 +5203,6 @@ msgstr "ZIPファイルのみ許可されています" msgid "Open" msgstr "開いている" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "オープンソースの制限" @@ -5307,7 +5219,7 @@ msgstr "オペレーティングシステムの統計" msgid "Optional comment for this DNS record" msgstr "このDNSレコードのオプションコメント" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "または" @@ -5356,11 +5268,6 @@ msgstr "その他" msgid "Otp or recovery code empty" msgstr "OTPまたはリカバリーコードが空です" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "既存のファイルを上書きする" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "上書き" @@ -5396,9 +5303,8 @@ msgid "" "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -"パスキーは、タッチ、顔認証、デバイスパスワード、または PIN を使用して身元を確" -"認する WebAuthn 認証情報です。パスワードの代わりや 2FA 方法として使用できま" -"す。" +"パスキーは、タッチ、顔認証、デバイスパスワード、または PIN を使用して身元を確認する WebAuthn 認証情報です。パスワードの代わりや 2FA " +"方法として使用できます。" #: src/views/other/Login.vue:308 src/views/user/userColumns.tsx:16 msgid "Password" @@ -5408,10 +5314,6 @@ msgstr "パスワード" msgid "Password (*)" msgstr "パスワード (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "パスワードが間違っています" @@ -5420,11 +5322,11 @@ msgstr "パスワードが間違っています" msgid "Password length cannot exceed 20 characters" msgstr "パスワードの長さは20 文字を超えることはできません" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "パスワードが正常に更新されました" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "パスワードが一致しません" @@ -5496,7 +5398,7 @@ msgstr "パフォーマンス設定が正常に保存されました" msgid "Performing core upgrade" msgstr "コアアップグレードを実行中" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "個人情報" @@ -5521,9 +5423,7 @@ msgstr "まずシステムチェックを完了してください" msgid "" "Please configure server_name directive in the configuration before linking " "DNS records." -msgstr "" -"DNSレコードをリンクする前に、設定でserver_nameディレクティブを構成してくださ" -"い。" +msgstr "DNSレコードをリンクする前に、設定でserver_nameディレクティブを構成してください。" #: src/components/AutoCertForm/DNSChallenge.vue:131 msgid "Please create DNS credentials first in DNS > Credentials" @@ -5533,14 +5433,18 @@ msgstr "まず DNS > 認証情報で DNS 認証情報を作成してください msgid "" "Please enable the stub_status module to get request statistics, connection " "count, etc." -msgstr "" -"リクエスト統計や接続数などを取得するには、stub_statusモジュールを有効にしてく" -"ださい。" +msgstr "リクエスト統計や接続数などを取得するには、stub_statusモジュールを有効にしてください。" #: src/language/curd.ts:67 msgid "Please enter" msgstr "入力してください" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "証明書の名前を入力してください" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5559,15 +5463,21 @@ msgstr "有効なIPv4またはIPv6アドレスを入力してください" msgid "Please enter a valid port range" msgstr "有効なポート範囲を入力してください" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "少なくとも1つのドメインを入力してください" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "少なくとも1つのドメインまたはIPアドレスを入力してください" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "続行する前にインストールシークレットを入力してください" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "OTPコードを入力してください:" @@ -5608,17 +5518,15 @@ msgid "" "Please first add credentials in Certification > DNS Credentials, and then " "select one of the credentialsbelow to request the API of the DNS provider." msgstr "" -"まず、Certification > DNS Credentials で認証情報を追加し、その後、以下の認証" -"情報のいずれかを選択してDNSプロバイダーのAPIをリクエストしてください。" +"まず、Certification > DNS Credentials " +"で認証情報を追加し、その後、以下の認証情報のいずれかを選択してDNSプロバイダーのAPIをリクエストしてください。" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." -msgstr "" -"ロックアウトを防ぐため、設定からすぐに新しいリカバリーコードを生成してくださ" -"い。" +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." +msgstr "ロックアウトを防ぐため、設定からすぐに新しいリカバリーコードを生成してください。" #: src/views/config/components/ConfigRightPanel/Basic.vue:27 #: src/views/config/components/Rename.vue:65 @@ -5633,15 +5541,13 @@ msgstr "フォルダ名を入力してください" msgid "" "Please input name, this will be used as the filename of the new " "configuration!" -msgstr "" -"名前を入力してください。これは新しい設定のファイル名として使用されます!" +msgstr "名前を入力してください。これは新しい設定のファイル名として使用されます!" #: src/views/site/site_list/SiteDuplicate.vue:33 msgid "" "Please input name, this will be used as the filename of the new " "configuration." -msgstr "" -"名前を入力してください。これは新しい設定のファイル名として使用されます。" +msgstr "名前を入力してください。これは新しい設定のファイル名として使用されます。" #: src/views/install/components/InstallForm.vue:29 msgid "Please input your E-mail!" @@ -5661,8 +5567,7 @@ msgid "Please log in." msgstr "ログインしてください。" #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "以下の時間設定の単位はすべて秒であることに注意してください。" #: src/views/install/components/InstallView.vue:136 @@ -5681,7 +5586,7 @@ msgstr "バックアップファイルを選択してください" msgid "Please select a certificate before saving the TLS server configuration." msgstr "TLSサーバー設定を保存する前に証明書を選択してください。" -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "DNS 認証情報を選択してください" @@ -5761,10 +5666,6 @@ msgstr "設定" msgid "Preparing lego configurations" msgstr "Lego 設定を準備中" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5783,10 +5684,6 @@ msgstr "プライベートIP(192.168.x.x、10.x.x.x、172.16-31.x.x)は失 msgid "private key" msgstr "秘密鍵" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "プロセス" @@ -5830,12 +5727,11 @@ msgstr "プロトコル" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." -msgstr "" -"プロトコル設定は直接接続時にのみ有効です。リバースプロキシを使用している場合" -"は、リバースプロキシで個別にプロトコルを設定してください。" +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." +msgstr "プロトコル設定は直接接続時にのみ有効です。リバースプロキシを使用している場合は、リバースプロキシで個別にプロトコルを設定してください。" -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5874,14 +5770,6 @@ msgstr "プロキシターゲット" msgid "Public CA Requirements:" msgstr "公開 CAの要件:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "公安番号" @@ -5982,11 +5870,11 @@ msgstr "レコードタイプ" msgid "Record updated" msgstr "レコードが更新されました" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "レコード" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "復旧" @@ -5998,9 +5886,7 @@ msgstr "リカバリーコード" msgid "" "Recovery codes are used to access your account when you lose access to your " "2FA device. Each code can only be used once." -msgstr "" -"リカバリーコードは、2FAデバイスへのアクセスを失った場合にアカウントにアクセス" -"するために使用されます。各コードは一度しか使用できません。" +msgstr "リカバリーコードは、2FAデバイスへのアクセスを失った場合にアカウントにアクセスするために使用されます。各コードは一度しか使用できません。" #: src/views/site/site_edit/components/RightPanel/DNS.vue:535 msgid "Recreate DNS Record" @@ -6019,7 +5905,7 @@ msgstr "リダイレクトメッセージ (3xx)" msgid "Referer" msgstr "リファラー" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "更新" @@ -6028,11 +5914,6 @@ msgstr "更新" msgid "Refresh Modules Cache" msgstr "モジュールキャッシュを更新" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "応答を再生成" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "応答を再生成" @@ -6045,9 +5926,7 @@ msgstr "登録" msgid "" "Register a user or use this account to issue a certificate through an HTTP " "proxy." -msgstr "" -"ユーザーを登録するか、このアカウントを使用してHTTPプロキシ経由で証明書を発行" -"します。" +msgstr "ユーザーを登録するか、このアカウントを使用してHTTPプロキシ経由で証明書を発行します。" #: src/views/certificate/ACMEUser.vue:133 msgid "Register failed" @@ -6091,7 +5970,7 @@ msgid "Reload" msgstr "再読み込み" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Nginx をリロード" @@ -6128,16 +6007,12 @@ msgstr "再読み込み中" msgid "Reloading nginx" msgstr "nginx をリロード中" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "リモート" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "ノードが選択されていません" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "削除" @@ -6147,6 +6022,10 @@ msgstr "削除" msgid "Remove successfully" msgstr "削除に成功しました" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "競合するレコードを %{count} 件削除しました: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "正常に削除されました" @@ -6164,8 +6043,7 @@ msgstr "名前を変更" #: src/components/Notification/notifications.ts:86 msgid "Rename %{orig_path} to %{new_path} on %{node_name} failed" -msgstr "" -"%{node_name} 上の %{orig_path} から %{new_path} への名前変更に失敗しました" +msgstr "%{node_name} 上の %{orig_path} から %{new_path} への名前変更に失敗しました" #: src/components/Notification/notifications.ts:90 msgid "Rename %{orig_path} to %{new_path} on %{node_name} successfully" @@ -6199,8 +6077,7 @@ msgstr "リモートストリームの名前変更成功" #: src/components/Notification/notifications.ts:146 msgid "Rename site %{name} to %{new_name} on %{node} failed" -msgstr "" -"サイト %{name} を %{new_name} にリネームする際に %{node} で失敗しました" +msgstr "サイト %{name} を %{new_name} にリネームする際に %{node} で失敗しました" #: src/components/Notification/notifications.ts:150 msgid "Rename site %{name} to %{new_name} on %{node} successfully" @@ -6208,8 +6085,7 @@ msgstr "サイト %{name} を %{new_name} にリネームしました(%{node} #: src/components/Notification/notifications.ts:186 msgid "Rename stream %{name} to %{new_name} on %{node} failed" -msgstr "" -"ストリーム %{name} を %{new_name} にリネームする際に %{node} で失敗しました" +msgstr "ストリーム %{name} を %{new_name} にリネームする際に %{node} で失敗しました" #: src/components/Notification/notifications.ts:190 msgid "Rename stream %{name} to %{new_name} on %{node} successfully" @@ -6229,8 +6105,8 @@ msgstr "名前の変更に成功しました" msgid "Renew cert error: {0}" msgstr "証明書の更新エラー: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "証明書を更新" @@ -6242,8 +6118,7 @@ msgstr "証明書の更新エラー" msgid "Renew Certificate Success" msgstr "証明書の更新に成功しました" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "証明書の更新に成功しました" @@ -6294,9 +6169,7 @@ msgid "" "Resident Set Size: Actual memory resident in physical memory, including all " "shared library memory, which will be repeated calculated for multiple " "processes" -msgstr "" -"Resident Set Size: 物理メモリに実際に存在するメモリで、共有ライブラリのメモリ" -"を含み、複数のプロセスに対して繰り返し計算されます" +msgstr "Resident Set Size: 物理メモリに実際に存在するメモリで、共有ライブラリのメモリを含み、複数のプロセスに対して繰り返し計算されます" #: src/views/nginx_log/components/IndexingSettingsModal.vue:109 msgid "Resource Usage Warning" @@ -6371,6 +6244,19 @@ msgstr "このバージョンを復元" msgid "Restored successfully" msgstr "正常に復元されました" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "再試行" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "証明書の発行を再試行" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "まず確認" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6392,15 +6278,12 @@ msgstr "この証明書を失効させる" msgid "" "Revoking a certificate will affect any services currently using it. This " "action cannot be undone." -msgstr "" -"証明書を失効させると、現在それを使用しているすべてのサービスに影響します。こ" -"の操作は元に戻せません。" +msgstr "証明書を失効させると、現在それを使用しているすべてのサービスに影響します。この操作は元に戻せません。" #: src/views/site/site_add/components/DNSRecordIntegration.vue:356 #: src/views/site/site_edit/components/RightPanel/DNS.vue:650 msgid "Route traffic through proxy for additional protection and features" -msgstr "" -"追加の保護と機能のためにプロキシを経由してトラフィックをルーティングする" +msgstr "追加の保護と機能のためにプロキシを経由してトラフィックをルーティングする" #: src/views/preference/tabs/AuthSettings.vue:72 msgid "RP Display Name" @@ -6418,11 +6301,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "実行モード" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "証明書を更新" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "実行中" @@ -6517,8 +6395,7 @@ msgstr "S3アップロードに失敗しました: {0}" #: src/components/InspectConfig/InspectConfig.vue:39 msgid "Sandbox setup failed before Nginx could validate the configuration." -msgstr "" -"Nginx が設定を検証する前に、サンドボックスのセットアップが失敗しました。" +msgstr "Nginx が設定を検証する前に、サンドボックスのセットアップが失敗しました。" #: src/components/InspectConfig/InspectConfig.vue:129 #: src/components/InspectConfig/InspectConfig.vue:28 @@ -6541,7 +6418,7 @@ msgstr "土曜日" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6551,19 +6428,14 @@ msgstr "土曜日" msgid "Save" msgstr "保存" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "ストレージ設定" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "ディレクティブを保存" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "今すぐ保存" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "順序を保存" @@ -6606,15 +6478,19 @@ msgstr "ストリーム %{name} を %{node} に正常に保存しました" msgid "Save successful" msgstr "保存に成功しました" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "保存に成功しました" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "サイト設定を今すぐ保存しますか?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "保存された証明書の応答に ID がありません" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6624,6 +6500,12 @@ msgstr "" msgid "Saved successfully" msgstr "正常に保存されました" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "サイト設定の保存に失敗しました。証明書ディレクティブはエディター内にあります — 変更を確認し、保存ボタンから再試行してください。" + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "sbin パスが存在しません" @@ -6646,8 +6528,7 @@ msgstr "スキャン結果" #: src/views/preference/components/AuthSettings/TOTP.vue:71 msgid "Scan the QR code with your mobile phone to add the account to the app." -msgstr "" -"スマートフォンでQRコードをスキャンして、アプリにアカウントを追加します。" +msgstr "スマートフォンでQRコードをスキャンして、アプリにアカウントを追加します。" #: src/views/nginx_log/indexing/components/IndexProgressBar.vue:50 msgid "Scanning" @@ -6673,7 +6554,7 @@ msgstr "SDK" msgid "Search" msgstr "検索" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "ドメイン、プロバイダー、またはターゲットを検索" @@ -6705,7 +6586,7 @@ msgstr "テンプレートを検索" msgid "Secret has been copied" msgstr "シークレットがコピーされました" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "セキュリティ設定" @@ -6728,9 +6609,7 @@ msgstr "DNS プロバイダーを選択すると、DNS Domains での DNS レコ msgid "" "Select a predefined CA directory or enter a custom one. Leave blank to use " "the default CA directory." -msgstr "" -"事前定義されたCAディレクトリを選択するか、カスタムのものを入力してください。" -"空白のままにすると、デフォルトのCAディレクトリが使用されます。" +msgstr "事前定義されたCAディレクトリを選択するか、カスタムのものを入力してください。空白のままにすると、デフォルトのCAディレクトリが使用されます。" #: src/language/curd.ts:31 msgid "Select all" @@ -6751,6 +6630,10 @@ msgstr "DNSドメインを選択" msgid "Select existing record" msgstr "既存のレコードを選択" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "一致する A/AAAA レコードを選択" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6777,6 +6660,24 @@ msgstr "セルフチェック" msgid "Self check failed, Nginx UI may not work properly" msgstr "自己チェックに失敗しました、Nginx UIが正常に動作しない可能性があります" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "自己署名証明書" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "自己署名証明書" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "自己署名証明書が適用されました" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "自己署名証明書を生成しました" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6791,7 +6692,7 @@ msgid "Server" msgstr "サーバー" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "サーバーエラー" @@ -6819,7 +6720,7 @@ msgstr "サーバー名ハッシュバケットサイズ" msgid "Server names hash table size" msgstr "サーバー名ハッシュテーブルのサイズ" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "ディレクティブに server_name が見つかりません" @@ -6847,9 +6748,7 @@ msgstr "lego CNAME サポートを無効にする環境フラグ設定エラー: msgid "" "Set the recursive nameservers to override the systems nameservers for the " "step of DNS challenge." -msgstr "" -"DNSチャレンジのステップでシステムのネームサーバーを上書きするために、再帰的な" -"ネームサーバーを設定してください。" +msgstr "DNSチャレンジのステップでシステムのネームサーバーを上書きするために、再帰的なネームサーバーを設定してください。" #: src/views/site/components/SiteStatusSelect.vue:116 msgid "set to maintenance mode" @@ -6869,19 +6768,19 @@ msgstr "HTTP01チャレンジプロバイダーの設定" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath が空です。詳細については https://" -"nginxui.com/guide/config-nginx.html を参照してください" +"Settings.NginxLogSettings.AccessLogPath が空です。詳細については " +"https://nginxui.com/guide/config-nginx.html を参照してください" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath が空です。詳細については、https://" -"nginxui.com/guide/config-nginx.html を参照してください" +"Settings.NginxLogSettings.ErrorLogPath " +"が空です。詳細については、https://nginxui.com/guide/config-nginx.html を参照してください" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6900,7 +6799,7 @@ msgstr "表示" msgid "Show Assistant" msgstr "アシスタントを表示" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "パスキーでサインイン" @@ -6964,9 +6863,7 @@ msgstr "サイト一覧" msgid "" "Sites will appear here once you configure nginx server blocks with valid " "server_name (localhost excluded) directives." -msgstr "" -"nginx サーバーブロックに有効な server_name ディレクティブ(localhost を除く)" -"を設定すると、サイトがここに表示されます。" +msgstr "nginx サーバーブロックに有効な server_name ディレクティブ(localhost を除く)を設定すると、サイトがここに表示されます。" #: src/constants/errors/self_check.ts:11 msgid "Sites-available directory not exist" @@ -6986,10 +6883,6 @@ msgstr "サイズ" msgid "Skip Installation" msgstr "インストールをスキップ" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "キャッシュローダーの反復処理間の待機時間" @@ -7002,6 +6895,10 @@ msgstr "キャッシュマネージャーの反復処理間の待機時間" msgid "Socket" msgstr "ソケット" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "一部のブラウザーは、有効期間が398日を超える TLS 証明書を拒否します。" + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "並べ替え基準" @@ -7018,15 +6915,6 @@ msgstr "スポンサー" msgid "SSD storage for better I/O performance" msgstr "I/O パフォーマンス向上のための SSD ストレージ" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "2+ コア推奨" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7034,8 +6922,7 @@ msgstr "SSL 証明書の内容" #: src/constants/errors/system.ts:11 msgid "SSL certificate file must be under Nginx configuration directory: {0}" -msgstr "" -"SSL 証明書ファイルはNginx 設定ディレクトリの下にある必要があります: {0}" +msgstr "SSL 証明書ファイルはNginx 設定ディレクトリの下にある必要があります: {0}" #: src/constants/errors/system.ts:9 msgid "SSL certificate file not found" @@ -7113,9 +7000,9 @@ msgstr "静的" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7147,9 +7034,7 @@ msgstr "ストレージ設定" msgid "" "Storage configuration validation failed for backup task %{backup_name}, " "error: %{error}" -msgstr "" -"バックアップタスク %{backup_name} のストレージ構成の検証に失敗しました。エ" -"ラー: %{error}" +msgstr "バックアップタスク %{backup_name} のストレージ構成の検証に失敗しました。エラー: %{error}" #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:120 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:54 @@ -7190,7 +7075,7 @@ msgstr "streams-enabled ディレクトリが存在しません" msgid "Structured" msgstr "構造化" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "スタブステータスポート" @@ -7198,7 +7083,7 @@ msgstr "スタブステータスポート" msgid "Stub_status is not enabled" msgstr "Stub_status が有効になっていません" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7216,14 +7101,13 @@ msgstr "日曜日" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" -"WebSocket プロトコルを介してバックエンドとの通信をサポートします。Nginx UI " -"が Nginx リバースプロキシ経由で使用されている場合は、このリンクを参照して対応" -"する設定ファイルを作成してください: https://nginxui.com/guide/nginx-proxy-" -"example.html" +"WebSocket プロトコルを介してバックエンドとの通信をサポートします。Nginx UI が Nginx " +"リバースプロキシ経由で使用されている場合は、このリンクを参照して対応する設定ファイルを作成してください: " +"https://nginxui.com/guide/nginx-proxy-example.html" #: src/language/curd.ts:53 src/language/curd.ts:57 msgid "Support single or batch upload of files" @@ -7310,6 +7194,7 @@ msgid "Sync strategy" msgstr "同期戦略" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "同期先" @@ -7347,21 +7232,13 @@ msgstr "システム復元" msgid "System restored successfully." msgstr "システムの復元が完了しました。" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "ターゲット" @@ -7424,41 +7301,42 @@ msgid "" "The certificate for the domain will be checked 30 minutes, and will be " "renewed if it has been more than 1 week or the period you set in settings " "since it was last issued." +msgstr "ドメインの証明書は30 分ごとにチェックされ、最後に発行されてから1 週間以上経過しているか、設定で指定した期間が経過している場合に更新されます。" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." msgstr "" -"ドメインの証明書は30 分ごとにチェックされ、最後に発行されてから1 週間以上経過" -"しているか、設定で指定した期間が経過している場合に更新されます。" +"証明書が %{path} に生成され、ssl_certificate " +"ディレクティブが現在のサーバーブロックに追加されました。今すぐ設定を保存するか、エディターで変更を確認して手動で保存してください。" #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "次のサイトが無効になります:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "次のサイトが有効になります:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." -msgstr "" -"オフラインの地理的 IP 分析には GeoLite2 データベースが必要です。この機能を有" -"効にするためにダウンロードしてください。" +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." +msgstr "オフラインの地理的 IP 分析には GeoLite2 データベースが必要です。この機能を有効にするためにダウンロードしてください。" #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." -msgstr "" -"GeoLite2 データベースは、IP アドレスの地理情報を提供します。これはログ分析で" -"のオフライン地理分析に使用されます。" +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." +msgstr "GeoLite2 データベースは、IP アドレスの地理情報を提供します。これはログ分析でのオフライン地理分析に使用されます。" #: src/views/preference/tabs/NodeSettings.vue:37 msgid "" "The ICP Number should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." -msgstr "" -"ICP 番号には、文字、Unicode、数字、ハイフン、ダッシュ、コロン、およびドットの" -"みを含める必要があります。" +msgstr "ICP 番号には、文字、Unicode、数字、ハイフン、ダッシュ、コロン、およびドットのみを含める必要があります。" #: src/views/certificate/components/CertificateContentEditor.vue:205 msgid "The input is not a SSL Certificate" @@ -7472,39 +7350,30 @@ msgstr "入力はSSL 証明書キーではありません" msgid "" "The linked DNS record was deleted from the DNS server. You can recreate it " "or clear the link." -msgstr "" -"リンクされたDNSレコードがDNSサーバーから削除されました。再作成するかリンクを" -"クリアできます。" +msgstr "リンクされたDNSレコードがDNSサーバーから削除されました。再作成するかリンクをクリアできます。" #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" -msgstr "" -"ログパスが settings.NginxSettings.LogDirWhiteList のパスに含まれていません" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" +msgstr "ログパスが settings.NginxSettings.LogDirWhiteList のパスに含まれていません" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 msgid "" "The model name should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." -msgstr "" -"モデル名には、文字、Unicode、数字、ハイフン、ダッシュ、コロン、およびドットの" -"みを含める必要があります。" +msgstr "モデル名には、文字、Unicode、数字、ハイフン、ダッシュ、コロン、およびドットのみを含める必要があります。" #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." -msgstr "" -"コード補完に使用されるモデル。設定されていない場合は、チャットモデルが使用さ" -"れます。" +msgid "The model used for code completion, if not set, the chat model will be used." +msgstr "コード補完に使用されるモデル。設定されていない場合は、チャットモデルが使用されます。" #: src/views/preference/tabs/NodeSettings.vue:18 msgid "" "The node name should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." -msgstr "" -"ノード名には、文字、Unicode、数字、ハイフン、ダッシュ、コロン、およびドットの" -"みを含める必要があります。" +msgstr "ノード名には、文字、Unicode、数字、ハイフン、ダッシュ、コロン、およびドットのみを含める必要があります。" #: src/views/site/site_add/SiteAdd.vue:190 #: src/views/site/site_edit/components/RightPanel/DNS.vue:445 @@ -7523,9 +7392,7 @@ msgstr "パスは存在しますが、ファイルは秘密鍵ではありませ msgid "" "The Public Security Number should only contain letters, unicode, numbers, " "hyphens, dashes, colons, and dots." -msgstr "" -"公安番号には、文字、Unicode、数字、ハイフン、ダッシュ、コロン、およびドットの" -"みを含める必要があります。" +msgstr "公安番号には、文字、Unicode、数字、ハイフン、ダッシュ、コロン、およびドットのみを含める必要があります。" #: src/views/dashboard/components/NodeAnalyticItem.vue:90 msgid "" @@ -7533,17 +7400,14 @@ msgid "" "version. To avoid potential errors, please upgrade the remote Nginx UI to " "match the local version." msgstr "" -"リモートのNginx UIバージョンはローカルのNginx UIバージョンと互換性がありませ" -"ん。潜在的なエラーを避けるため、リモートのNginx UIをローカルバージョンに合わ" -"せてアップグレードしてください。" +"リモートのNginx UIバージョンはローカルのNginx UIバージョンと互換性がありません。潜在的なエラーを避けるため、リモートのNginx " +"UIをローカルバージョンに合わせてアップグレードしてください。" #: src/components/AutoCertForm/AutoCertForm.vue:155 msgid "" "The server_name in the current configuration must be the domain name you " "need to get the certificate, supportmultiple domains." -msgstr "" -"現在の設定における server_name は、証明書を取得する必要があるドメイン名でなけ" -"ればならず、複数のドメインをサポートします。" +msgstr "現在の設定における server_name は、証明書を取得する必要があるドメイン名でなければならず、複数のドメインをサポートします。" #: src/views/preference/tabs/CertSettings.vue:23 #: src/views/preference/tabs/HTTPSettings.vue:14 @@ -7567,14 +7431,13 @@ msgstr "理論上の最大同時接続数:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "理論上の最大 RPS(リクエスト/秒):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " "lose access to your account." msgstr "" -"これらのコードは、パスワードと第二要素を失った場合にアカウントにアクセスする" -"ための最後の手段です。これらのコードが見つからない場合、アカウントにアクセス" +"これらのコードは、パスワードと第二要素を失った場合にアカウントにアクセスするための最後の手段です。これらのコードが見つからない場合、アカウントにアクセス" "できなくなります。" #: src/routes/modules/system.ts:45 @@ -7589,9 +7452,7 @@ msgstr "この自動証明書項目は無効です。削除してください。 msgid "" "This backup uses an unsupported legacy format. Please create a new backup " "with a newer version before restoring." -msgstr "" -"このバックアップはサポートされていないレガシー形式を使用しています。復元する" -"前に、新しいバージョンで新しいバックアップを作成してください。" +msgstr "このバックアップはサポートされていないレガシー形式を使用しています。復元する前に、新しいバージョンで新しいバックアップを作成してください。" #: src/views/certificate/components/AutoCertManagement.vue:35 msgid "This certificate is managed by Nginx UI" @@ -7599,8 +7460,7 @@ msgstr "この証明書はNginx UIによって管理されています" #: src/views/config/components/Delete.vue:108 msgid "This directory is protected and cannot be deleted for system safety." -msgstr "" -"このディレクトリは保護されており、システムの安全のために削除できません。" +msgstr "このディレクトリは保護されており、システムの安全のために削除できません。" #: src/views/certificate/components/CertificateBasicInfo.vue:114 #: src/views/certificate/components/CertificateBasicInfo.vue:47 @@ -7621,19 +7481,14 @@ msgid "This field should not be empty" msgstr "このフィールドは空にできません" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." -msgstr "" -"このフィールドには、文字、Unicode 文字、数字、および -_ のみを含める必要があ" -"ります。" +msgid "This field should only contain letters, unicode characters, numbers, and -_." +msgstr "このフィールドには、文字、Unicode 文字、数字、および -_ のみを含める必要があります。" #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" -msgstr "" -"このフィールドには、文字、Unicode 文字、数字、および -_./: のみを含める必要が" -"あります" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" +msgstr "このフィールドには、文字、Unicode 文字、数字、および -_./: のみを含める必要があります" #: src/components/Notification/notifications.ts:102 msgid "This is a test message sent at %{timestamp} from Nginx UI." @@ -7643,21 +7498,13 @@ msgstr "これは、Nginx UIから%{Timestamp}で送信されたテストメ msgid "" "This mode only previews the installation UI flow and does not change any " "server state." -msgstr "" -"このモードではインストールUIの流れをプレビューするだけで、サーバーの状態は変" -"更されません。" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" +msgstr "このモードではインストールUIの流れをプレビューするだけで、サーバーの状態は変更されません。" #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " "After enabling it, you can view performance statistics" -msgstr "" -"このモジュールは、Nginxのリクエスト統計、接続数などのデータを提供します。有効" -"にすると、パフォーマンス統計を表示できます" +msgstr "このモジュールは、Nginxのリクエスト統計、接続数などのデータを提供します。有効にすると、パフォーマンス統計を表示できます" #: src/views/nginx_log/dashboard/components/DateRangeSelector.vue:25 msgid "This month" @@ -7671,37 +7518,37 @@ msgstr "この通知は無効です" msgid "" "This operation will only remove the certificate from the database. The " "certificate files on the file system will not be deleted." -msgstr "" -"この操作はデータベースから証明書を削除するのみです。ファイルシステム上の証明" -"書ファイルは削除されません。" +msgstr "この操作はデータベースから証明書を削除するのみです。ファイルシステム上の証明書ファイルは削除されません。" + +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "この自己署名証明書は Nginx UI によって管理され、自動的に更新されます。" #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" -"このサイトはHTTPS(ポート443)のデフォルトサーバー(default_server)として設" -"定されています。IP 証明書には認証局(CA)のサポートが必要であり、すべてのACME" -"プロバイダーで利用可能とは限りません。" +"このサイトはHTTPS(ポート443)のデフォルトサーバー(default_server)として設定されています。IP " +"証明書には認証局(CA)のサポートが必要であり、すべてのACMEプロバイダーで利用可能とは限りません。" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" -"このサイトはワイルドカードサーバー名(_)を使用しており、通常はIPベースの証明" -"書を示しています。IP 証明書には認証局(CA)のサポートが必要であり、すべての" -"ACMEプロバイダーで利用可能ではない場合があります。" +"このサイトはワイルドカードサーバー名(_)を使用しており、通常はIPベースの証明書を示しています。IP " +"証明書には認証局(CA)のサポートが必要であり、すべてのACMEプロバイダーで利用可能ではない場合があります。" #: src/views/backup/components/BackupCreator.vue:141 msgid "" "This token will only be shown once and cannot be retrieved later. Please " "make sure to save it in a secure location." -msgstr "" -"このトークンは一度しか表示されず、後で取得することはできません。必ず安全な場" -"所に保存してください。" +msgstr "このトークンは一度しか表示されず、後で取得することはできません。必ず安全な場所に保存してください。" #: src/constants/form_errors.ts:4 src/language/curd.ts:44 msgid "This value is already taken" @@ -7716,8 +7563,7 @@ msgid "" "This will rebuild the entire log index. All existing index data will be " "deleted and rebuilt from scratch. This may take some time. Continue?" msgstr "" -"これにより、ログインデックス全体が再構築されます。既存のインデックスデータは" -"すべて削除され、一から再構築されます。これには時間がかかる場合があります。続" +"これにより、ログインデックス全体が再構築されます。既存のインデックスデータはすべて削除され、一から再構築されます。これには時間がかかる場合があります。続" "行しますか?" #: src/views/nginx_log/indexing/IndexManagement.vue:56 @@ -7729,25 +7575,18 @@ msgstr "この特定のファイルのインデックスデータを再構築し msgid "" "This will restore all Nginx configuration files. Nginx will restart after " "the restoration is complete." -msgstr "" -"これにより、すべてのNginx 設定ファイルが復元されます。復元が完了すると、Nginx" -"が再起動します。" +msgstr "これにより、すべてのNginx 設定ファイルが復元されます。復元が完了すると、Nginxが再起動します。" #: src/components/SystemRestore/SystemRestoreContent.vue:264 #: src/components/SystemRestore/SystemRestoreContent.vue:347 msgid "" "This will restore configuration files and database. Nginx UI will restart " "after the restoration is complete." -msgstr "" -"これにより設定ファイルとデータベースが復元されます。復元が完了すると、Nginx " -"UI が再起動します。" +msgstr "これにより設定ファイルとデータベースが復元されます。復元が完了すると、Nginx UI が再起動します。" #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." -msgstr "" -"これにより、%{nodeNames} 上の Nginx UI が %{version} にアップグレードまたは再" -"インストールされます。" +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgstr "これにより、%{nodeNames} 上の Nginx UI が %{version} にアップグレードまたは再インストールされます。" #: src/views/preference/tabs/AuthSettings.vue:89 msgid "Throttle" @@ -7780,9 +7619,7 @@ msgstr "ヒント" msgid "" "Tips: You can increase the concurrency processing capacity by increasing " "worker_processes or worker_connections" -msgstr "" -"ヒント: worker_processes または worker_connections を増やすことで、並列処理能" -"力を向上させることができます" +msgstr "ヒント: worker_processes または worker_connections を増やすことで、並列処理能力を向上させることができます" #: src/views/notification/notificationColumns.tsx:58 msgid "Title" @@ -7810,20 +7647,19 @@ msgid "" "Please manually configure the following in the app.ini configuration file " "and restart Nginx UI." msgstr "" -"セキュリティを確保するため、WebAuthn の設定は UI から追加できません。app.ini " -"設定ファイルに以下の内容を手動で設定し、Nginx UI を再起動してください。" +"セキュリティを確保するため、WebAuthn の設定は UI から追加できません。app.ini 設定ファイルに以下の内容を手動で設定し、Nginx " +"UI を再起動してください。" #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" -"証明書の自動更新が正常に動作するようにするため、認証局からのリクエストをバッ" -"クエンドにプロキシするロケーションを追加し、このファイルを保存してNginxを再読" -"み込みする必要があります。続行してもよろしいですか?" +"証明書の自動更新が正常に動作するようにするため、認証局からのリクエストをバックエンドにプロキシするロケーションを追加し、このファイルを保存してNginx" +"を再読み込みする必要があります。続行してもよろしいですか?" #: src/views/preference/tabs/OpenAISettings.vue:44 msgid "" @@ -7831,9 +7667,8 @@ msgid "" "provide an OpenAI-compatible API endpoint, so just set the baseUrl to your " "local API." msgstr "" -"ローカルの大規模モデルを使用するには、ollama、vllm、または lmdeploy でデプロ" -"イしてください。これらは OpenAI 互換の API エンドポイントを提供するため、" -"baseUrl をローカルの API に設定するだけです。" +"ローカルの大規模モデルを使用するには、ollama、vllm、または lmdeploy でデプロイしてください。これらは OpenAI 互換の API " +"エンドポイントを提供するため、baseUrl をローカルの API に設定するだけです。" #: src/views/dashboard/NginxDashBoard.vue:56 msgid "Toggle failed" @@ -7924,9 +7759,7 @@ msgstr "TOTP" msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." -msgstr "" -"TOTP は、時間ベースのワンタイムパスワードアルゴリズムを使用する二要素認証方法" -"です。" +msgstr "TOTP は、時間ベースのワンタイムパスワードアルゴリズムを使用する二要素認証方法です。" #: src/views/nginx_log/structured/StructuredLogViewer.vue:781 msgid "Traffic" @@ -7963,7 +7796,7 @@ msgstr "TTL (秒)" msgid "Tuesday" msgstr "火曜日" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "二要素認証が必要です" @@ -7984,10 +7817,6 @@ msgstr "タイプ" msgid "Type %{delete} to confirm" msgstr "確認のために %{delete} と入力してください" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "A/AAAAレコードを入力または選択" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "ブラウザを入力または選択" @@ -8033,11 +7862,11 @@ msgstr "サポートされていないログ形式" msgid "Update already in progress" msgstr "更新が既に進行中です" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "パスワードを更新" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "プロフィールを更新" @@ -8126,11 +7955,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "ルートには @ を使用" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "OTP を使用する" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "リカバリーコードを使用" @@ -8138,10 +7967,6 @@ msgstr "リカバリーコードを使用" msgid "Use Temporary Path" msgstr "一時パスを使用" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "ユーザー" @@ -8155,7 +7980,7 @@ msgstr "ユーザーエージェント" msgid "User banned" msgstr "ユーザーが禁止されました" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "ユーザー情報が正常に更新されました" @@ -8168,7 +7993,7 @@ msgid "User Profile" msgstr "ユーザープロフィール" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "ユーザー名" @@ -8186,10 +8011,14 @@ msgstr "ユニークビジター" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "有効" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "有効期間 (日)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "SSL 証明書を検証" @@ -8200,11 +8029,6 @@ msgstr "SSL 証明書を検証" msgid "Value" msgstr "値" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "シークレットを確認" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8241,7 +8065,7 @@ msgstr "すべての通知を表示します" msgid "View on GitHub" msgstr "GitHubで見る" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "リカバリーコードを表示" @@ -8269,7 +8093,7 @@ msgstr "訪問数" msgid "Waiting processes" msgstr "待機プロセス" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8282,9 +8106,7 @@ msgid "" "Warning: Restore operation will overwrite current configurations. Make sure " "you have a valid backup file and security token, and carefully select what " "to restore." -msgstr "" -"警告: 復元操作は現在の設定を上書きします。有効なバックアップファイルとセキュ" -"リティトークンがあることを確認し、復元する内容を慎重に選択してください。" +msgstr "警告: 復元操作は現在の設定を上書きします。有効なバックアップファイルとセキュリティトークンがあることを確認し、復元する内容を慎重に選択してください。" #: src/components/AutoCertForm/AutoCertForm.vue:103 msgid "" @@ -8292,21 +8114,19 @@ msgid "" "Encrypt cannot issue certificates for private IPs. Use a public IP address " "or consider using a private CA." msgstr "" -"警告:これはプライベートIPアドレスのようです。Let's Encryptのようなパブリック" -"認証局はプライベートIPの証明書を発行できません。パブリックIPアドレスを使用す" -"るか、プライベート認証局の使用を検討してください。" +"警告:これはプライベートIPアドレスのようです。Let's " +"Encryptのようなパブリック認証局はプライベートIPの証明書を発行できません。パブリックIPアドレスを使用するか、プライベート認証局の使用を検討して" +"ください。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "機能リクエストは受け付けていません" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" -msgstr "" -"このファイルからHTTPChallengeの設定を削除し、Nginxを再読み込みします。続行し" -"てもよろしいですか?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" +msgstr "このファイルからHTTPChallengeの設定を削除し、Nginxを再読み込みします。続行してもよろしいですか?" #: src/views/preference/tabs/AuthSettings.vue:62 msgid "Webauthn" @@ -8341,38 +8161,43 @@ msgstr "毎週%{day}の%{time}" msgid "Weight" msgstr "重み" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"有効にすると、DDNS が選択された名前を所有します。兄弟ファミリー レコードを自動ペアリングし、不足しているレコードを作成し、IP " +"ファミリーが到達不能なレコードを削除します。無効にすると、明示的に選択したレコードのみを管理し、その他の DNS 状態は変更されません。" + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " "Generally, do not enable this unless you are in a dev environment and using " "Pebble as CA." msgstr "" -"有効にすると、Nginx UI は起動時に自動的にユーザーを再登録します。一般的に、開" -"発環境で Pebble を CA として使用している場合以外は、これを有効にしないでくだ" -"さい。" +"有効にすると、Nginx UI は起動時に自動的にユーザーを再登録します。一般的に、開発環境で Pebble を CA " +"として使用している場合以外は、これを有効にしないでください。" #: src/views/site/site_edit/components/RightPanel/Basic.vue:62 #: src/views/stream/components/RightPanel/Basic.vue:57 msgid "" "When you enable/disable, delete, or save this site, the nodes set in the " "namespace and the nodes selected below will be synchronized." -msgstr "" -"このサイトを有効化/無効化、削除、または保存すると、名前空間に設定されたノード" -"と以下で選択したノードが同期されます。" +msgstr "このサイトを有効化/無効化、削除、または保存すると、名前空間に設定されたノードと以下で選択したノードが同期されます。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." -msgstr "" -"新しいリカバリーコードを生成するときは、新しいコードをダウンロードまたは印刷" -"する必要があります。" +msgstr "新しいリカバリーコードを生成するときは、新しいコードをダウンロードまたは印刷する必要があります。" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:159 msgid "Whether to use a temporary path when writing temporary files" msgstr "一時ファイルを書き込む際に一時パスを使用するかどうか" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "ワイルドカード証明書" @@ -8391,7 +8216,7 @@ msgstr "ワーカープロセス" msgid "Workers" msgstr "ワーカー" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "ワークスペース" @@ -8430,11 +8255,11 @@ msgstr "はい" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" -"あなたは非 localhostドメインで安全でないHTTP 接続を介してこのターミナルにアク" -"セスしています。これにより機密情報が漏洩する可能性があります。" +"あなたは非 localhostドメインで安全でないHTTP " +"接続を介してこのターミナルにアクセスしています。これにより機密情報が漏洩する可能性があります。" #: src/constants/errors/config.ts:12 msgid "You are not allowed to delete a file outside of the nginx config path" @@ -8463,26 +8288,41 @@ msgid "" msgstr "WebAuthnの設定が行われていないため、パスキーを追加できません。" #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." -msgstr "" -"2FAが有効になっていません。リカバリーコードを生成するには2FAを有効にしてくだ" -"さい。" +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgstr "2FAが有効になっていません。リカバリーコードを生成するには2FAを有効にしてください。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "まだリカバリーコードを生成していません。" +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "お使いのアカウントでは、まだ旧式のリカバリーコードが使用されています。確認後、新しいリカバリーコードを生成して、アカウントの回復を安全に保ってください。" + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"お客様のアカウントは非推奨の古いリカバリーコードを使用しています。今すぐ新しいリカバリーコードを生成して、移行を完了し、アカウントの復旧を安全に保ってく" +"ださい。" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." -msgstr "" -"現在のリカバリーコードは古く、安全でない可能性があります。セキュリティを確保" -"するため、できるだけ早く新しいリカバリーコードを生成してください。" +msgstr "現在のリカバリーコードは古く、安全でない可能性があります。セキュリティを確保するため、できるだけ早く新しいリカバリーコードを生成してください。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "従来の復旧コードは使用済みで、再度使用することはできません。アカウント復旧を引き続き利用できるように、今すぐ新しい復旧コードを生成してください。" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "以前のコードはもう使えません。" @@ -8494,13 +8334,66 @@ msgstr "あなたのパスキー" msgid "Zero-allocation pipeline" msgstr "ゼロアロケーションパイプライン" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx は設定の検証に失敗しました。" + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "認証中..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "接続済み" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "コンテンツ" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "コピー" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "外部 Docker コンテナ" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "生成" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "既存のファイルを上書きする" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "応答を再生成" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "ノードが選択されていません" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "証明書を更新" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "2+ コア推奨" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "A/AAAAレコードを入力または選択" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "シークレットを確認" + #~ msgid "OpenAI" #~ msgstr "OpenAI" #~ msgid "Backup file integrity check failed, it may have been tampered with" -#~ msgstr "" -#~ "「バックアップファイルの整合性チェックに失敗しました。改ざんされている可能" -#~ "性があります」" +#~ msgstr "「バックアップファイルの整合性チェックに失敗しました。改ざんされている可能性があります」" #~ msgid "Once the verification is complete, the records will be removed." #~ msgstr "検証が完了すると、レコードは削除されます。" @@ -8508,9 +8401,7 @@ msgstr "ゼロアロケーションパイプライン" #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." -#~ msgstr "" -#~ "所有権確認のために、お客様のドメインのDNSレコードに1つ以上のTXTレコードを" -#~ "追加します。" +#~ msgstr "所有権確認のために、お客様のドメインのDNSレコードに1つ以上のTXTレコードを追加します。" #~ msgid "Settings" #~ msgstr "設定" @@ -8677,14 +8568,13 @@ msgstr "ゼロアロケーションパイプライン" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" -#~ "Server-Sent Events プロトコルを介してバックエンドとの通信をサポートしま" -#~ "す。Nginx UI を Nginx リバースプロキシ経由で使用している場合は、このリンク" -#~ "を参照して対応する設定ファイルを作成してください: https://nginxui.com/" -#~ "guide/nginx-proxy-example.html" +#~ "Server-Sent Events プロトコルを介してバックエンドとの通信をサポートします。Nginx UI を Nginx " +#~ "リバースプロキシ経由で使用している場合は、このリンクを参照して対応する設定ファイルを作成してください: " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "空白の場合、デフォルトの CA ディレクトリが使用されます。" @@ -8751,12 +8641,12 @@ msgstr "ゼロアロケーションパイプライン" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" -#~ "/var/run/docker.sock が存在するか確認してください。Nginx UI 公式 Docker イ" -#~ "メージを使用している場合は、Docker ソケットが次のようにマウントされている" -#~ "ことを確認してください: `-v /var/run/docker.sock:/var/run/docker.sock`." +#~ "/var/run/docker.sock が存在するか確認してください。Nginx UI 公式 Docker " +#~ "イメージを使用している場合は、Docker ソケットが次のようにマウントされていることを確認してください: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgid "Check if the nginx access log path exists" #~ msgstr "Nginx のアクセスログパスが存在するか確認する" @@ -8777,26 +8667,19 @@ msgstr "ゼロアロケーションパイプライン" #~ msgstr "DNS レコード管理のみ" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." -#~ msgstr "" -#~ "DNS ドメインは NGINX UI で DNS レコードを管理するために使用され、ACME " -#~ "DNS-01 証明書チャレンジとは別の機能です。" +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." +#~ msgstr "DNS ドメインは NGINX UI で DNS レコードを管理するために使用され、ACME DNS-01 証明書チャレンジとは別の機能です。" #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." -#~ msgstr "" -#~ "現在、DNS レコード管理は Alibaba Cloud DNS、Tencent Cloud DNS、Cloudflare " -#~ "のみをサポートしています。" +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." +#~ msgstr "現在、DNS レコード管理は Alibaba Cloud DNS、Tencent Cloud DNS、Cloudflare のみをサポートしています。" #~ msgid "" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " #~ "Credentials and select them in certificate settings." -#~ msgstr "" -#~ "ACME DNS-01 で証明書を発行するには、DNS > 認証情報で DNS 認証情報を作成" -#~ "し、証明書設定で選択してください。" +#~ msgstr "ACME DNS-01 で証明書を発行するには、DNS > 認証情報で DNS 認証情報を作成し、証明書設定で選択してください。" -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains は、DNS レコード管理の実装があるプロバイダーのみを使用します。" +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "DNS Domains は、DNS レコード管理の実装があるプロバイダーのみを使用します。" diff --git a/app/src/language/ko_KR/app.po b/app/src/language/ko_KR/app.po index babc412d..fa4ce5f7 100644 --- a/app/src/language/ko_KR/app.po +++ b/app/src/language/ko_KR/app.po @@ -5,19 +5,18 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "PO-Revision-Date: 2025-04-07 12:21+0000\n" "Last-Translator: jkh0kr \n" -"Language-Team: Korean \n" +"Language-Team: Korean " +"\n" "Language: ko_KR\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Weblate 5.10.4\n" #: src/language/generate.ts:37 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}" -msgstr "" -"[Nginx UI] ACME 사용자: %{name}, 이메일: %{email}, CA 디렉터리: %{caDir}" +msgstr "[Nginx UI] ACME 사용자: %{name}, 이메일: %{email}, CA 디렉터리: %{caDir}" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" @@ -32,10 +31,8 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] 인증서가 성공적으로 취소되었습니다" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" -msgstr "" -"[Nginx UI] 서버에 인증서가 사용되었습니다, 서버 TLS 인증서 다시 불러오는 중" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgstr "[Nginx UI] 서버에 인증서가 사용되었습니다, 서버 TLS 인증서 다시 불러오는 중" #: src/language/generate.ts:42 msgid "[Nginx UI] Creating client facilitates communication with the CA server" @@ -112,23 +109,17 @@ msgstr "* 그룹 %{groupName}의 노드와 수동으로 선택한 노드 포함" #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." -msgstr "" -"* 인덱스 파일은 기본적으로 NGINX UI 구성 경로 내 \"log-index\" 디렉터리에 저" -"장됩니다." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." +msgstr "* 인덱스 파일은 기본적으로 NGINX UI 구성 경로 내 \"log-index\" 디렉터리에 저장됩니다." #: src/views/nginx_log/components/IndexingSettingsModal.vue:215 msgid "" "* Performance metrics measured on Apple M2 Pro (12-core) with 32GB RAM. " "Actual performance may vary based on your hardware configuration." msgstr "" -"* 성능 지표는 Apple M2 Pro(12코어)와 32GB RAM에서 측정되었습니다. 실제 성능" -"은 하드웨어 구성에 따라 다를 수 있습니다." - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" +"* 성능 지표는 Apple M2 Pro(12코어)와 32GB RAM에서 측정되었습니다. 실제 성능은 하드웨어 구성에 따라 다를 수 " +"있습니다." #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" @@ -179,7 +170,7 @@ msgstr "24시간 UV/PV 통계" msgid "2FA" msgstr "2FA" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "2FA 설정" @@ -187,11 +178,22 @@ msgstr "2FA 설정" msgid "4GB+ RAM recommended" msgstr "4GB 이상 RAM 권장" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "IPv6 전용 모드에서는 동일한 이름의 A 레코드가 관리되지 않습니다. DNS에서 변경되지 않고 그대로 유지됩니다." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "샌드박스 또는 소스 구성에서 필요한 포함 파일이 누락되었습니다." +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "IPv4 전용 모드에서는 동일한 이름의 AAAA 레코드를 관리하지 않습니다. DNS에서 변경되지 않고 그대로 유지됩니다." + #: src/routes/modules/system.ts:38 msgid "About" msgstr "대하여" @@ -209,10 +211,6 @@ msgstr "액세스 로그 경로가 존재하지 않습니다" msgid "Access Logs" msgstr "접근 로그" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -224,10 +222,10 @@ msgstr "작업" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -269,7 +267,8 @@ msgstr "구성 추가" msgid "Add Directive Below" msgstr "아래에 지시문 추가" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "도메인 추가" @@ -277,6 +276,14 @@ msgstr "도메인 추가" msgid "Add Header" msgstr "헤더 추가" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "IP 주소 추가" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "항목 추가" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -347,11 +354,6 @@ msgstr "이후에 이 페이지를 새로 고치고 패스키 추가를 다시 msgid "All" msgstr "모두" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx가 구성을 검증하지 못했습니다." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "모든 구성 요소" @@ -361,21 +363,19 @@ msgstr "모든 구성 요소" msgid "All Recovery Codes Have Been Used" msgstr "모든 복구 코드가 사용되었습니다" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." -msgstr "" -"선택한 모든 서브도메인은 동일한 DNS 공급자에 속해야 합니다. 그렇지 않으면 인" -"증서 신청이 실패합니다." +msgstr "선택한 모든 서브도메인은 동일한 DNS 공급자에 속해야 합니다. 그렇지 않으면 인증서 신청이 실패합니다." #: src/components/GeoLiteDownload/GeoLiteDownload.vue:160 msgid "" "Alternatively, if you cannot download the database, you can manually place " "GeoLite2-City.mmdb in the same directory as app.ini." msgstr "" -"또는 데이터베이스를 다운로드할 수 없는 경우 GeoLite2-City.mmdb 파일을 app.ini" -"와 같은 디렉터리에 수동으로 배치할 수 있습니다." +"또는 데이터베이스를 다운로드할 수 없는 경우 GeoLite2-City.mmdb 파일을 app.ini와 같은 디렉터리에 수동으로 배치할 " +"수 있습니다." #: src/constants/errors/nginx_log.ts:10 msgid "Analytics service not available" @@ -386,8 +386,7 @@ msgid "Any" msgstr "아무거나" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "도달 가능한 모든 IP 주소는 개인 인증 기관과 함께 사용할 수 있습니다" #: src/views/preference/tabs/OpenAISettings.vue:96 @@ -414,10 +413,6 @@ msgstr "API 유형" msgid "App" msgstr "앱" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "적용" @@ -430,7 +425,7 @@ msgstr "아키텍처" msgid "Are you sure to delete this banned IP immediately?" msgstr "차단된 IP를 즉시 삭제하시겠습니까?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "이 DDNS 설정을 삭제하시겠습니까?" @@ -442,7 +437,7 @@ msgstr "이 패스키를 즉시 삭제하시겠습니까?" msgid "Are you sure to delete this record?" msgstr "이 레코드를 삭제하시겠습니까?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "새로운 복구 코드를 생성하시겠습니까?" @@ -509,6 +504,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud 는 OpenAI 와 호환됩니다. https://api.atlascloud.ai/v1 과 Atlas Cloud " +"API 키를 사용하세요." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -518,12 +515,11 @@ msgstr "수정 시도" msgid "Attempts" msgstr "시도 횟수" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "인증" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "패스키로 인증" @@ -531,11 +527,6 @@ msgstr "패스키로 인증" msgid "Authenticating..." msgstr "인증 중..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "인증 중..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -583,15 +574,15 @@ msgstr "자동 새로고침이 비활성화되었습니다" msgid "Auto refresh enabled" msgstr "자동 새로고침이 활성화되었습니다" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "%{name}에 대한 자동 갱신 비활성화됨" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "%{name}에 대한 자동 갱신 활성화됨" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert가 실행 중입니다. 잠시 기다려 주세요..." @@ -651,8 +642,7 @@ msgstr "백엔드" msgid "" "Background indexing in progress. Data will be updated automatically when " "ready." -msgstr "" -"백그라운드 인덱싱이 진행 중입니다. 준비되면 데이터가 자동으로 업데이트됩니다." +msgstr "백그라운드 인덱싱이 진행 중입니다. 준비되면 데이터가 자동으로 업데이트됩니다." #: src/constants/errors/nginx_log.ts:14 msgid "Background log service not available" @@ -704,12 +694,10 @@ msgstr "백업 서명 키를 사용할 수 없음" #: src/components/Notification/notifications.ts:38 msgid "Backup task %{backup_name} completed successfully, file: %{file_path}" -msgstr "" -"백업 작업 %{backup_name} 이(가) 성공적으로 완료되었습니다, 파일: %{file_path}" +msgstr "백업 작업 %{backup_name} 이(가) 성공적으로 완료되었습니다, 파일: %{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "백업 작업 %{backup_name}의 저장소 업로드 중 실패, 오류: %{error}" #: src/components/Notification/notifications.ts:30 @@ -771,12 +759,6 @@ msgstr "배치 업그레이드" msgid "Belows are selected items that you want to batch modify" msgstr "아래에는 일괄 수정하려는 선택된 항목이 있습니다" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "블록이 nil입니다" @@ -802,8 +784,8 @@ msgid "" "requirements and understand the performance implications. This will start " "indexing existing log files immediately." msgstr "" -"고급 인덱싱을 활성화하면 시스템이 요구 사항을 충족하고 성능 영향을 이해했음" -"을 인정하는 것입니다. 이로 인해 기존 로그 파일의 인덱싱이 즉시 시작됩니다." +"고급 인덱싱을 활성화하면 시스템이 요구 사항을 충족하고 성능 영향을 이해했음을 인정하는 것입니다. 이로 인해 기존 로그 파일의 인덱싱이 " +"즉시 시작됩니다." #: src/views/certificate/ACMEUser.vue:39 msgid "CA Dir" @@ -857,22 +839,22 @@ msgid "" "Calculated based on worker_processes * worker_connections. Actual " "performance depends on hardware, configuration, and workload" msgstr "" -"worker_processes * worker_connections를 기반으로 계산되었습니다. 실제 성능은 " -"하드웨어, 구성 및 작업량에 따라 달라집니다" +"worker_processes * worker_connections를 기반으로 계산되었습니다. 실제 성능은 하드웨어, 구성 및 작업량에 " +"따라 달라집니다" #: src/components/LLM/ChatMessage.vue:245 #: src/components/NgxConfigEditor/NgxServer.vue:61 #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -905,9 +887,7 @@ msgstr "보호된 경로를 삭제할 수 없습니다" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:135 msgid "Cannot delete server_name while DNS is linked. Clear DNS link first." -msgstr "" -"DNS가 연결된 상태에서는 server_name을 삭제할 수 없습니다. 먼저 DNS 연결을 해" -"제하세요." +msgstr "DNS가 연결된 상태에서는 server_name을 삭제할 수 없습니다. 먼저 DNS 연결을 해제하세요." #: src/constants/errors/config.ts:13 msgid "Cannot delete the nginx config directory" @@ -964,6 +944,10 @@ msgstr "인증서 내용과 개인 키 내용은 비워둘 수 없습니다" msgid "Certificate decode error" msgstr "인증서 디코드 오류" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "인증서 지시문이 편집기에 추가되었습니다; 준비되면 검토하고 저장하세요." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "인증서 만료 알림" @@ -982,6 +966,14 @@ msgstr "인증서 만료 임박" msgid "Certificate files downloaded successfully" msgstr "인증서 파일이 성공적으로 다운로드되었습니다" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "인증서 발급 컴포넌트가 준비되지 않았습니다" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "인증서가 성공적으로 발급되었습니다" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "인증서 이름은 비워둘 수 없습니다" @@ -1016,18 +1008,19 @@ msgid "Certificate revoked successfully" msgstr "인증서가 성공적으로 취소되었습니다" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "인증서 상태" msgstr[1] "인증서 상태" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "인증서 유형" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "인증서" @@ -1048,11 +1041,11 @@ msgstr "인증 방법" msgid "Change Certificate" msgstr "인증서 변경" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "비밀번호 변경" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "변경된 인증서" @@ -1091,22 +1084,20 @@ msgstr "파비콘 확인" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" -"/var/run/docker.sock이 존재하는지 확인하세요. Nginx UI 공식 Docker 이미지를 " -"사용 중이라면 Docker 소켓을 다음과 같이 마운트했는지 확인하세요: `-v /var/" -"run/docker.sock:/var/run/docker.sock`. Nginx UI 공식 이미지는 /var/run/" -"docker.sock을 사용하여 Docker Client API를 통해 호스트의 Docker 엔진과 통신합" -"니다. 이 기능은 다른 컨테이너에서 Nginx를 제어하고 Nginx UI의 OTA 업그레이드 " -"시 바이너리 교체 대신 컨테이너 교체를 수행하여 컨테이너 종속성도 업그레이드되" -"도록 하는 데 사용됩니다. 이 기능이 필요하지 않다면 컨테이너에 환경 변수 " +"/var/run/docker.sock이 존재하는지 확인하세요. Nginx UI 공식 Docker 이미지를 사용 중이라면 Docker " +"소켓을 다음과 같이 마운트했는지 확인하세요: `-v /var/run/docker.sock:/var/run/docker.sock`. " +"Nginx UI 공식 이미지는 /var/run/docker.sock을 사용하여 Docker Client API를 통해 호스트의 " +"Docker 엔진과 통신합니다. 이 기능은 다른 컨테이너에서 Nginx를 제어하고 Nginx UI의 OTA 업그레이드 시 바이너리 교체 " +"대신 컨테이너 교체를 수행하여 컨테이너 종속성도 업그레이드되도록 하는 데 사용됩니다. 이 기능이 필요하지 않다면 컨테이너에 환경 변수 " "NGINX_UI_IGNORE_DOCKER_SOCKET=true를 추가하세요." #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 @@ -1114,12 +1105,11 @@ msgid "" "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and " "prevents using Passkeys and clipboard features" msgstr "" -"HTTPS가 활성화되었는지 확인하세요. localhost 외부에서 HTTP를 사용하는 것은 안" -"전하지 않으며 Passkeys 및 클립보드 기능 사용을 방해합니다" +"HTTPS가 활성화되었는지 확인하세요. localhost 외부에서 HTTP를 사용하는 것은 안전하지 않으며 Passkeys 및 클립보드 " +"기능 사용을 방해합니다" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "conf.d 디렉터리가 nginx 구성 디렉터리 아래에 있는지 확인하세요" #: src/language/generate.ts:7 @@ -1129,25 +1119,23 @@ msgid "" "indexing. You can download it from the Preference page or manually place " "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" -"로그 색인화가 활성화된 경우 GeoLite2 데이터베이스가 사용 가능한지 확인하세" -"요. GeoLite2 데이터베이스는 로그 색인화에서 지리적 IP 분석에 필요합니다. 설" -"정 페이지에서 다운로드하거나 app.ini와 같은 디렉토리에 GeoLite2-City.mmdb를 " +"로그 색인화가 활성화된 경우 GeoLite2 데이터베이스가 사용 가능한지 확인하세요. GeoLite2 데이터베이스는 로그 색인화에서 " +"지리적 IP 분석에 필요합니다. 설정 페이지에서 다운로드하거나 app.ini와 같은 디렉토리에 GeoLite2-City.mmdb를 " "수동으로 배치할 수 있습니다" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" -"nginx 액세스 로그 경로가 존재하는지 확인하세요. 기본적으로 이 경로는 'nginx -" -"V'에서 가져옵니다. 가져올 수 없거나 가져온 경로가 유효한 기존 파일을 가리키" -"지 않는 경우 오류가 보고됩니다. 이 경우 구성 파일을 수정하여 액세스 로그 경로" -"를 지정해야 합니다. 자세한 내용은 문서를 참조하세요: https://nginxui.com/" -"zh_CN/guide/config-nginx.html#accesslogpath" +"nginx 액세스 로그 경로가 존재하는지 확인하세요. 기본적으로 이 경로는 'nginx -V'에서 가져옵니다. 가져올 수 없거나 가져온 " +"경로가 유효한 기존 파일을 가리키지 않는 경우 오류가 보고됩니다. 이 경우 구성 파일을 수정하여 액세스 로그 경로를 지정해야 합니다. " +"자세한 내용은 문서를 참조하세요: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1163,27 +1151,25 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" -"nginx 오류 로그 경로가 존재하는지 확인하세요. 기본적으로 이 경로는 'nginx -" -"V'에서 얻습니다. 경로를 얻을 수 없거나 얻은 경로가 유효한 기존 파일을 가리키" -"지 않으면 오류가 보고됩니다. 이 경우 구성 파일을 수정하여 오류 로그 경로를 지" -"정해야 합니다. 자세한 내용은 문서를 참조하세요: https://nginxui.com/zh_CN/" -"guide/config-nginx.html#errorlogpath" +"nginx 오류 로그 경로가 존재하는지 확인하세요. 기본적으로 이 경로는 'nginx -V'에서 얻습니다. 경로를 얻을 수 없거나 얻은 " +"경로가 유효한 기존 파일을 가리키지 않으면 오류가 보고됩니다. 이 경우 구성 파일을 수정하여 오류 로그 경로를 지정해야 합니다. 자세한 " +"내용은 문서를 참조하세요: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" -"Nginx PID 경로가 존재하는지 확인하세요. 기본적으로 이 경로는 'nginx -V'에서 " -"얻습니다. 얻을 수 없는 경우 오류가 보고됩니다. 이 경우 구성 파일을 수정하여 " -"Nginx PID 경로를 지정해야 합니다. 자세한 내용은 문서를 참조하세요: https://" -"nginxui.com/zh_CN/guide/config-nginx.html#pidpath" +"Nginx PID 경로가 존재하는지 확인하세요. 기본적으로 이 경로는 'nginx -V'에서 얻습니다. 얻을 수 없는 경우 오류가 " +"보고됩니다. 이 경우 구성 파일을 수정하여 Nginx PID 경로를 지정해야 합니다. 자세한 내용은 문서를 참조하세요: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1205,16 +1191,13 @@ msgstr "nginx.conf에 streams-enabled 디렉토리가 포함되어 있는지 확 msgid "" "Check if the sites-available and sites-enabled directories are under the " "nginx configuration directory" -msgstr "" -"nginx 설정 디렉터리에 sites-available 및 sites-enabled 디렉터리가 있는지 확인" +msgstr "nginx 설정 디렉터리에 sites-available 및 sites-enabled 디렉터리가 있는지 확인" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" -msgstr "" -"nginx 구성 디렉터리 아래에 streams-available 및 streams-enabled 디렉터리가 있" -"는지 확인하세요" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" +msgstr "nginx 구성 디렉터리 아래에 streams-available 및 streams-enabled 디렉터리가 있는지 확인하세요" #: src/views/dashboard/components/SiteHealthCheckModal.vue:625 msgid "Check Interval (seconds)" @@ -1233,6 +1216,10 @@ msgstr "중국 지도" msgid "Cipher text is too short" msgstr "암호문이 너무 짧습니다" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "충돌하는 레코드 정리" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "환경 변수 정리" @@ -1442,11 +1429,11 @@ msgstr "구성 이름" msgid "Configurations" msgstr "구성들" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "구성" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "DDNS 구성" @@ -1458,7 +1445,7 @@ msgstr "SSL 구성하기" msgid "Confirm Delete" msgstr "삭제 확인" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "새 비밀번호 확인" @@ -1471,11 +1458,6 @@ msgstr "확인 필요" msgid "Connected" msgstr "연결됨" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "연결됨" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "연결 오류, 다시 연결 시도 중..." @@ -1488,15 +1470,6 @@ msgstr "이 터미널의 연결이 끊어졌습니다. 필요한 경우 새로 msgid "Connection timeout period" msgstr "연결 시간 초과 기간" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "내용" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "컨테이너 상태를 알 수 없음" @@ -1509,8 +1482,7 @@ msgstr "내용" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "복사됨" @@ -1521,19 +1493,13 @@ msgstr "복사 완료!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "복사" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "코드 복사" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "복사" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "코어 업그레이드" @@ -1612,9 +1578,7 @@ msgstr "레코드 생성" msgid "" "Create system backups including Nginx configuration and Nginx UI settings. " "Backup files will be automatically downloaded to your computer." -msgstr "" -"Nginx 구성 및 Nginx UI 설정을 포함한 시스템 백업을 생성합니다. 백업 파일은 자" -"동으로 컴퓨터에 다운로드됩니다." +msgstr "Nginx 구성 및 Nginx UI 설정을 포함한 시스템 백업을 생성합니다. 백업 파일은 자동으로 컴퓨터에 다운로드됩니다." #: src/views/backup/AutoBackup/AutoBackup.vue:229 #: src/views/namespace/columns.ts:85 @@ -1634,7 +1598,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "클라이언트 생성은 CA 서버와의 통신을 용이하게 합니다" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "인증 정보" @@ -1666,7 +1630,7 @@ msgstr "현재 활성 연결" msgid "Current Content" msgstr "현재 내용" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "현재 비밀번호" @@ -1692,11 +1656,11 @@ msgstr "사용자 정의 cron 표현식" msgid "Custom Directory" msgstr "사용자 지정 디렉토리" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "사용자 정의 도메인" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "사용자 정의 도메인 인증서" @@ -1757,15 +1721,15 @@ msgstr "데이터베이스 파일을 찾을 수 없습니다" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "DDNS 구성이 삭제되었습니다" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "DDNS 개요" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS 저장됨" @@ -1794,7 +1758,7 @@ msgstr "공유 메모리 영역 이름과 크기를 정의합니다(예: proxy_c #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "삭제" @@ -1879,11 +1843,9 @@ msgstr "데모" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." -msgstr "" -"데모 모드가 활성화되었습니다. 이 터미널은 안전한 읽기 전용 명령의 작은 집합" -"만 허용합니다." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." +msgstr "데모 모드가 활성화되었습니다. 이 터미널은 안전한 읽기 전용 명령의 작은 집합만 허용합니다." #: src/views/config/components/ConfigRightPanel/Basic.vue:60 msgid "Deploy" @@ -1994,7 +1956,7 @@ msgstr "비활성화" msgid "Disable" msgstr "비활성화" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "%{name}의 자동 갱신 비활성화 실패" @@ -2049,7 +2011,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "스트림 %{name}을(를) %{node}에서 비활성화했습니다" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2168,19 +2130,17 @@ msgstr "이 사이트를 %{action}하시겠습니까?" msgid "Do you want to %{action} this stream?" msgstr "이 스트림을 %{action}하시겠습니까?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "자동 인증서 갱신을 비활성화하시겠습니까?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "이 사이트를 비활성화하시겠습니까?" +msgstr "선택한 사이트를 비활성화하시겠습니까?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "이 스트림을 활성화하시겠습니까?" +msgstr "선택한 사이트를 활성화하시겠습니까?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2199,10 +2159,6 @@ msgstr "이 업스트림을 제거하시겠습니까?" msgid "Docker client not initialized" msgstr "Docker 클라이언트가 초기화되지 않았습니다" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Docker 소켓이 존재합니다" @@ -2211,10 +2167,6 @@ msgstr "Docker 소켓이 존재합니다" msgid "Docker socket not exist" msgstr "Docker 소켓이 존재하지 않습니다" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2225,15 +2177,18 @@ msgstr[0] "문서" msgid "Document Count" msgstr "문서 수" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "도메인" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "도메인" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" -msgstr "" -"도메인 목록이 비어 있습니다. %{config}에 대한 자동 인증서를 다시 열어보세요" +msgstr "도메인 목록이 비어 있습니다. %{config}에 대한 자동 인증서를 다시 열어보세요" #: src/views/certificate/components/CertificateDownload.vue:94 msgid "Download Certificate Files" @@ -2277,8 +2232,8 @@ msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -"일부 브라우저의 보안 정책으로 인해 localhost에서 실행하는 경우를 제외하고 비 " -"HTTPS 웹사이트에서는 패스키를 사용할 수 없습니다." +"일부 브라우저의 보안 정책으로 인해 localhost에서 실행하는 경우를 제외하고 비 HTTPS 웹사이트에서는 패스키를 사용할 수 " +"없습니다." #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2376,7 +2331,7 @@ msgstr "고급 인덱싱 활성화" msgid "Enable Advanced Log Indexing" msgstr "고급 로그 인덱싱 활성화" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "%{name}에 대한 자동 갱신 활성화 실패" @@ -2388,7 +2343,7 @@ msgstr "코드 완성 활성화" msgid "Enable compression for content transfer" msgstr "콘텐츠 전송 압축 활성화" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "DDNS 활성화" @@ -2485,7 +2440,7 @@ msgid "Enable TOTP" msgstr "TOTP 활성화" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2521,8 +2476,8 @@ msgid "" "resources including CPU and memory. Please ensure your system meets the " "minimum requirements before proceeding." msgstr "" -"고급 로그 인덱싱을 활성화하면 CPU 및 메모리를 포함한 상당한 컴퓨팅 리소스를 " -"소모합니다. 진행하기 전에 시스템이 최소 요구 사항을 충족하는지 확인하십시오." +"고급 로그 인덱싱을 활성화하면 CPU 및 메모리를 포함한 상당한 컴퓨팅 리소스를 소모합니다. 진행하기 전에 시스템이 최소 요구 사항을 " +"충족하는지 확인하십시오." #: src/views/site/site_edit/components/Cert/IssueCert.vue:95 msgid "Encrypt website with Let's Encrypt" @@ -2536,10 +2491,19 @@ msgstr "끝" msgid "End Date" msgstr "종료 날짜" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "인증서 이름 입력" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "도메인 이름 입력" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "IP 주소 입력" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "서버 IP 주소 입력 (예: 203.0.113.1 또는 2001:db8::1)" @@ -2552,11 +2516,9 @@ msgstr "시스템 점검을 실행하려면 설치 비밀번호를 입력하세 msgid "" "Enter the one-time install secret shown by the install script or found in " "the config directory hidden file to unlock setup." -msgstr "" -"설정을 해제하려면 설치 스크립트에 표시되거나 구성 디렉터리의 숨겨진 파일에 있" -"는 일회용 설치 비밀번호를 입력하세요." +msgstr "설정을 해제하려면 설치 스크립트에 표시되거나 구성 디렉터리의 숨겨진 파일에 있는 일회용 설치 비밀번호를 입력하세요." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "도메인을 입력하세요" @@ -2568,7 +2530,7 @@ msgstr "환경 구성이 비어 있습니다" msgid "Environment variables cleaned" msgstr "환경 변수가 정리되었습니다" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2601,11 +2563,9 @@ msgstr "오류 로그" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." -msgstr "" -"오류 로그는 자유 형식의 텍스트 메시지를 포함하기 때문에 구조화된 분석을 지원" -"하지 않습니다." +"Error logs do not support structured analysis as they contain free-form " +"text messages." +msgstr "오류 로그는 자유 형식의 텍스트 메시지를 포함하기 때문에 구조화된 분석을 지원하지 않습니다." #: src/views/nginx_log/components/IndexingSettingsModal.vue:272 msgid "Error pattern recognition" @@ -2652,7 +2612,7 @@ msgid "Expected Text" msgstr "예상 텍스트" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "만료됨" @@ -2668,23 +2628,15 @@ msgstr "Excel로 내보내기" msgid "" "External Account Binding HMAC Key (optional). Should be in Base64 URL " "encoding format." -msgstr "" -"외부 계정 바인딩 HMAC 키 (선택 사항). Base64 URL 인코딩 형식이어야 합니다." +msgstr "외부 계정 바인딩 HMAC 키 (선택 사항). Base64 URL 인코딩 형식이어야 합니다." #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." -msgstr "" -"외부 계정 바인딩 키 ID (선택 사항). ZeroSSL과 같은 일부 ACME 공급자에 필요합" -"니다." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." +msgstr "외부 계정 바인딩 키 ID (선택 사항). ZeroSSL과 같은 일부 ACME 공급자에 필요합니다." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "외부 Docker 컨테이너" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "외부 Docker 컨테이너" @@ -2707,6 +2659,7 @@ msgstr "인증서 획득 실패" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "실패" @@ -2946,6 +2899,11 @@ msgstr "AES 키 생성 실패: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "초기화 벡터 생성 실패: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "자체 서명 인증서 생성 실패" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "인증서 정보 가져오기 실패" @@ -3275,23 +3233,19 @@ msgid "For commercial or professional use, contact" msgstr "상업적 또는 전문적 사용을 원하시면 다음으로 문의하세요" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." -msgstr "" -"오류 로그의 경우 더 나은 보기 환경을 위해 Raw Log Viewer를 사용해 주세요." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." +msgstr "오류 로그의 경우 더 나은 보기 환경을 위해 Raw Log Viewer를 사용해 주세요." #: src/components/AutoCertForm/AutoCertForm.vue:140 msgid "" "For IP-based certificate configurations, only HTTP-01 challenge method is " "supported. DNS-01 challenge is not compatible with IP-based certificates." -msgstr "" -"IP 기반 인증서 구성에서는 HTTP-01 챌린지 방법만 지원됩니다. DNS-01 챌린지는 " -"IP 기반 인증서와 호환되지 않습니다." +msgstr "IP 기반 인증서 구성에서는 HTTP-01 챌린지 방법만 지원됩니다. DNS-01 챌린지는 IP 기반 인증서와 호환되지 않습니다." #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "IP 기반 인증서의 경우 인증서에 포함될 서버 IP 주소를 지정해 주세요." #: src/constants/errors/middleware.ts:4 @@ -3326,26 +3280,24 @@ msgstr "프론트엔드" msgid "" "Frontend debug mode is active. Enter the debug secret to unlock the mock " "installation flow without sending backend requests." -msgstr "" -"프론트엔드 디버그 모드가 활성화되었습니다. 백엔드 요청 없이 모의 설치 흐름을 " -"잠금 해제하려면 디버그 시크릿을 입력하세요." +msgstr "프론트엔드 디버그 모드가 활성화되었습니다. 백엔드 요청 없이 모의 설치 흐름을 잠금 해제하려면 디버그 시크릿을 입력하세요." #: src/components/SelfCheck/store.ts:19 msgid "" "Frontend debug mode is active. Secret verification is mocked locally and no " "backend request is sent." -msgstr "" -"프론트엔드 디버그 모드가 활성화되었습니다. 비밀 검증은 로컬에서 모의되며 백엔" -"드 요청은 전송되지 않습니다." +msgstr "프론트엔드 디버그 모드가 활성화되었습니다. 비밀 검증은 로컬에서 모의되며 백엔드 요청은 전송되지 않습니다." #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "프론트엔드 디버그 모드: 백엔드 요청 없이 설치 흐름 완료" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "프론트엔드 디버그 모드: 백엔드 요청 없이 복원 흐름 완료" #: src/views/nginx_log/structured/components/SearchFilters.vue:65 @@ -3360,21 +3312,24 @@ msgstr "전문 검색 지원" msgid "General Certificate" msgstr "일반 인증서" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "생성" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "생성" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "새 복구 코드 생성" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "새 복구 코드 생성" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "복구 코드 생성" @@ -3382,6 +3337,14 @@ msgstr "복구 코드 생성" msgid "Generate recovery codes successfully" msgstr "복구 코드 생성 성공" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "자체 서명 인증서 생성" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "자체 서명 인증서 생성" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "계정 등록을 위한 개인 키 생성 중" @@ -3412,8 +3375,8 @@ msgid "" "GeoLite2 database not found at {0}. Log indexing requires GeoLite2 database " "for geographic IP analysis" msgstr "" -"GeoLite2 데이터베이스가 {0}에서 찾을 수 없습니다. 로그 색인화는 지리적 IP 분" -"석을 위해 GeoLite2 데이터베이스를 필요로 합니다" +"GeoLite2 데이터베이스가 {0}에서 찾을 수 없습니다. 로그 색인화는 지리적 IP 분석을 위해 GeoLite2 데이터베이스를 " +"필요로 합니다" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:150 msgid "GeoLite2 Database Required" @@ -3460,6 +3423,10 @@ msgstr "DNS > 자격 증명으로 이동하여 자격 증명을 생성하거나 msgid "Go to Raw Log Viewer" msgstr "원시 로그 뷰어로 이동" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "복구 코드로 이동" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3468,17 +3435,15 @@ msgstr "Gotify" msgid "" "gRPC health check requires server to implement gRPC Health Check service " "(grpc.health.v1.Health)." -msgstr "" -"gRPC 상태 확인을 위해서는 서버가 gRPC 상태 확인 서비스(grpc.health.v1.Health)" -"를 구현해야 합니다." +msgstr "gRPC 상태 확인을 위해서는 서버가 gRPC 상태 확인 서비스(grpc.health.v1.Health)를 구현해야 합니다." #: src/views/dashboard/components/SiteHealthCheckModal.vue:599 msgid "" "gRPCS uses TLS encryption. Server must implement gRPC Health Check service. " "For testing, SSL validation is disabled by default." msgstr "" -"gRPCS는 TLS 암호화를 사용합니다. 서버는 gRPC 상태 확인 서비스를 구현해야 합니" -"다. 테스트를 위해 SSL 검증은 기본적으로 비활성화되어 있습니다." +"gRPCS는 TLS 암호화를 사용합니다. 서버는 gRPC 상태 확인 서비스를 구현해야 합니다. 테스트를 위해 SSL 검증은 기본적으로 " +"비활성화되어 있습니다." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67 msgid "GZIP Compression" @@ -3529,10 +3494,6 @@ msgstr "숨기기" msgid "Hide Assistant" msgstr "어시스턴트 숨기기" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3554,27 +3515,10 @@ msgid "Home" msgstr "홈" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "호스트" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "호스트, 예: @ 또는 www" @@ -3616,9 +3560,7 @@ msgstr "ICP 번호" msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." -msgstr "" -"IP에서 로그인 실패 시도 횟수가 차단 임계 시간 내에 최대 시도 횟수에 도달하면 " -"해당 IP는 일정 시간 동안 차단됩니다." +msgstr "IP에서 로그인 실패 시도 횟수가 차단 임계 시간 내에 최대 시도 횟수에 도달하면 해당 IP는 일정 시간 동안 차단됩니다." #: src/components/AutoCertForm/AutoCertForm.vue:280 msgid "" @@ -3630,9 +3572,7 @@ msgstr "기존 인증서를 자동으로 취소하려면 이 옵션을 활성화 msgid "" "If you want to change the storage location, you can set the `IndexPath` of " "`nginx_log` section in the Nginx UI config." -msgstr "" -"저장 위치를 변경하려면 Nginx UI 설정에서 `nginx_log` 섹션의 `IndexPath`를 설" -"정할 수 있습니다." +msgstr "저장 위치를 변경하려면 Nginx UI 설정에서 `nginx_log` 섹션의 `IndexPath`를 설정할 수 있습니다." #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." @@ -3642,16 +3582,14 @@ msgstr "브라우저가 WebAuthn 패스키를 지원하는 경우 대화 상자 msgid "" "If your domain has CNAME records and you cannot obtain certificates, you " "need to enable this option." -msgstr "" -"도메인에 CNAME 레코드가 있고 인증서를 얻을 수 없는 경우 이 옵션을 활성화해야 " -"합니다." +msgstr "도메인에 CNAME 레코드가 있고 인증서를 얻을 수 없는 경우 이 옵션을 활성화해야 합니다." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "가져오기" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "인증서 가져오기" @@ -3663,8 +3601,7 @@ msgstr "비활성 시간" msgid "" "Includes master process, worker processes, cache processes, and other Nginx " "processes" -msgstr "" -"마스터 프로세스, 워커 프로세스, 캐시 프로세스 및 기타 Nginx 프로세스 포함" +msgstr "마스터 프로세스, 워커 프로세스, 캐시 프로세스 및 기타 Nginx 프로세스 포함" #: src/views/nginx_log/components/IndexingSettingsModal.vue:252 msgid "Incremental index scanning" @@ -3713,7 +3650,7 @@ msgstr "인덱싱 중..." msgid "Indicator" msgstr "지표" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "정보" @@ -3737,7 +3674,7 @@ msgstr "코어 업그레이더 초기화" msgid "Input the code from the app:" msgstr "앱에서 코드를 입력하세요:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "복구 코드를 입력하세요:" @@ -3792,16 +3729,14 @@ msgstr "시스템 시작 후 10분이 지나면 설치가 허용되지 않습니 msgid "" "Installation is not allowed after 10 minutes of system startup, please " "restart the Nginx UI." -msgstr "" -"시스템 시작 후 10분이 지나면 설치가 허용되지 않습니다. Nginx UI를 다시 시작하" -"세요." +msgstr "시스템 시작 후 10분이 지나면 설치가 허용되지 않습니다. Nginx UI를 다시 시작하세요." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "간격" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "간격(초)" @@ -3875,7 +3810,7 @@ msgstr "잘못된 OTP 코드" msgid "Invalid padding in decrypted data" msgstr "복호화된 데이터의 패딩이 유효하지 않습니다" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "잘못된 패스코드 또는 복구 코드" @@ -3928,15 +3863,43 @@ msgstr "IP 주소" msgid "IP Address / Target" msgstr "IP 주소 / 대상" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "IP 주소" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "IP 인증서 알림" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "IP 버전" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "IPv4 전용" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4 다음 IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "IPv6만" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6 다음 IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "발급 실패" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "인증서 발급" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "인증서 발급" @@ -3944,10 +3907,18 @@ msgstr "인증서 발급" msgid "Issued certificate successfully" msgstr "인증서 발급 성공" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "발급 성공" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "발급자: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "발급 중..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "항목" @@ -3960,16 +3931,15 @@ msgstr "Jwt 토큰" msgid "" "Keep your recovery codes as safe as your password. We recommend saving them " "with a password manager." -msgstr "" -"복구 코드를 비밀번호와 같이 안전하게 보관하세요. 비밀번호 관리자에 저장하는 " -"것을 권장합니다." +msgstr "복구 코드를 비밀번호와 같이 안전하게 보관하세요. 비밀번호 관리자에 저장하는 것을 권장합니다." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60 msgid "Keepalive Timeout" msgstr "Keepalive 타임아웃" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "키 유형" @@ -4051,7 +4021,7 @@ msgstr "마지막 인덱싱" msgid "Last month" msgstr "지난달" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "마지막 실행" @@ -4067,6 +4037,10 @@ msgstr "최종 업데이트:" msgid "Last used at" msgstr "마지막 사용 시간" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "나중에" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "변경사항이 없으면 비워두세요" @@ -4088,10 +4062,8 @@ msgid "Leave blank if you don't need this." msgstr "필요하지 않으면 비워 두세요." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "기본값을 사용하려면 비워 두세요: https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "비워 두면 Atlas Cloud 엔드포인트를 사용합니다: https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4100,6 +4072,13 @@ msgstr "기본값을 사용하려면 비워 두세요: https://api.openai.com/" msgid "Leave blank will not change anything" msgstr "비워 두면 아무것도 변경되지 않습니다" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "기존 복구 코드는 더 이상 사용되지 않습니다. 계정 복구 보안을 유지하려면 새 복구 코드를 생성하세요." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "TOTP가 활성화되지 않았기 때문에 레거시 복구 코드는 허용되지 않습니다" @@ -4130,17 +4109,15 @@ msgstr "링크" msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name." -msgstr "" -"이 사이트를 DNS 레코드에 연결하세요. server_name이 DNS 레코드 이름으로 사용됩" -"니다." +msgstr "이 사이트를 DNS 레코드에 연결하세요. server_name이 DNS 레코드 이름으로 사용됩니다." #: src/views/site/site_add/components/DNSRecordIntegration.vue:247 msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name. You can skip this step if DNS is already configured." msgstr "" -"이 사이트를 DNS 레코드에 연결하세요. server_name이 DNS 레코드 이름으로 사용됩" -"니다. DNS가 이미 구성된 경우 이 단계를 건너뛸 수 있습니다." +"이 사이트를 DNS 레코드에 연결하세요. server_name이 DNS 레코드 이름으로 사용됩니다. DNS가 이미 구성된 경우 이 " +"단계를 건너뛸 수 있습니다." #: src/views/site/site_edit/components/RightPanel/DNS.vue:466 msgid "Linked DNS Record" @@ -4156,7 +4133,7 @@ msgstr "수신 중" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4204,18 +4181,14 @@ msgstr "로드 중..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "로컬" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "로컬 경로 (예: /var/backups)" @@ -4228,19 +4201,18 @@ msgstr "위치" msgid "Locations" msgstr "위치들" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "로그" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" -"로그 파일 %{log_path}은(는) 일반 파일이 아닙니다. Docker 컨테이너에서 nginx-" -"ui를 사용 중이라면 자세한 내용은 https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html을 참조하십시오." +"로그 파일 %{log_path}은(는) 일반 파일이 아닙니다. Docker 컨테이너에서 nginx-ui를 사용 중이라면 자세한 내용은 " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html을 참조하십시오." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4276,15 +4248,13 @@ msgstr "로그 목록" #: src/constants/errors/nginx_log.indexer.ts:2 msgid "Log parser is not initialized; call indexer.InitLogParser() before use" -msgstr "" -"로그 파서가 초기화되지 않았습니다. 사용 전에 indexer.InitLogParser()를 호출하" -"세요" +msgstr "로그 파서가 초기화되지 않았습니다. 사용 전에 indexer.InitLogParser()를 호출하세요" #: src/constants/errors/nginx_log.ts:12 msgid "Log path is not under whitelist" msgstr "로그 경로가 화이트리스트에 없습니다" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "로그인" @@ -4292,7 +4262,7 @@ msgstr "로그인" msgid "Login successful" msgstr "로그인 성공" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "로그아웃 성공" @@ -4302,18 +4272,16 @@ msgstr "로그관리" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" -"Logrotate는 대부분의 주류 리눅스 배포판에서Nginx UI를 호스트 머신에 설치하는 " -"사용자에게 기본적으로 활성화되어 있으므로이 페이지의 매개 변수를 수정할 필요" -"가 없습니다. 도커 컨테이너를 사용하여 Nginx UI를 설치하는사용자는이 옵션을 수" -"동으로 활성화할 수 있습니다. Nginx UI의 크론탭 작업 스케줄러는설정한 간격 " -"(분 단위)에서 logrotate 명령을 실행합니다." +"Logrotate는 대부분의 주류 리눅스 배포판에서Nginx UI를 호스트 머신에 설치하는 사용자에게 기본적으로 활성화되어 있으므로이 " +"페이지의 매개 변수를 수정할 필요가 없습니다. 도커 컨테이너를 사용하여 Nginx UI를 설치하는사용자는이 옵션을 수동으로 활성화할 수 " +"있습니다. Nginx UI의 크론탭 작업 스케줄러는설정한 간격 (분 단위)에서 logrotate 명령을 실행합니다." #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4340,15 +4308,13 @@ msgstr "유지 관리 모드가 비활성화되었습니다" msgid "Maintenance mode enabled successfully" msgstr "유지 보수 모드가 성공적으로 활성화되었습니다" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "유지 보수 모드가 성공적으로 활성화되었습니다" +msgstr "유지보수 템플릿 (파일 이름만)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "유지보수" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4358,9 +4324,7 @@ msgstr "인증서 디렉터리 생성 오류: {0}" msgid "" "Make sure you have configured a reverse proxy for .well-known directory to " "HTTPChallengePort before obtaining the certificate." -msgstr "" -"인증서를 받기 전에 .well-known 디렉터리에 대한 역방향 프록시를 " -"HTTPChallengePort로 구성했는지 확인하세요." +msgstr "인증서를 받기 전에 .well-known 디렉터리에 대한 역방향 프록시를 HTTPChallengePort로 구성했는지 확인하세요." #: src/routes/modules/config.ts:10 #: src/views/config/components/ConfigLeftPanel.vue:114 @@ -4482,10 +4446,6 @@ msgstr "메모리 설계" msgid "Memory Usage (RSS)" msgstr "메모리 사용량 (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4519,7 +4479,7 @@ msgstr "분" msgid "Minutes" msgstr "분" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "미러" @@ -4548,7 +4508,7 @@ msgid "Modify" msgstr "수정" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "인증서 수정" @@ -4580,10 +4540,9 @@ msgstr "매월" msgid "Monthly on day %{day} at %{time}" msgstr "매월 %{day}일 %{time}에" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "보호된 디렉터리" +msgstr "마운트된 디렉터리" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4613,6 +4572,7 @@ msgstr "해당 없음" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4651,9 +4611,7 @@ msgstr "네임스페이스" msgid "" "Need more DNS providers? Support us through donations or contact us for " "commercial collaboration" -msgstr "" -"더 많은 DNS 제공자가 필요하신가요? 기부를 통해 지원하거나 상업적 협력을 위해 " -"문의해 주세요" +msgstr "더 많은 DNS 제공자가 필요하신가요? 기부를 통해 지원하거나 상업적 협력을 위해 문의해 주세요" #: src/views/dashboard/NginxDashBoard.vue:195 msgid "Need to enable the stub_status module" @@ -4687,7 +4645,7 @@ msgstr "새로운 레고 클라이언트 오류: {0}" msgid "New name" msgstr "새 이름" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "새 비밀번호" @@ -4703,12 +4661,11 @@ msgstr "새로운 전송 오류: {0}" msgid "New version released" msgstr "새 버전 출시" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "다음" @@ -4720,7 +4677,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Nginx -T 의 출력이 비어 있습니다" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Nginx 접근 로그 경로" @@ -4774,11 +4731,11 @@ msgstr "Nginx 구성이 복원되었습니다" msgid "Nginx Configuration Parse Error" msgstr "Nginx 구성 분석 오류" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Nginx 구성 파일 경로" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Nginx 설정 디렉터리" @@ -4786,7 +4743,7 @@ msgstr "Nginx 설정 디렉터리" msgid "Nginx Control" msgstr "Nginx 제어" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Nginx 제어 모드" @@ -4795,7 +4752,7 @@ msgstr "Nginx 제어 모드" msgid "Nginx CPU usage rate" msgstr "Nginx CPU 사용률" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Nginx 오류 로그 경로" @@ -4831,7 +4788,7 @@ msgstr "Nginx가 실행 중입니다" msgid "Nginx Log" msgstr "Nginx 로그" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Nginx 로그 디렉터리 화이트리스트" @@ -4844,7 +4801,7 @@ msgstr "Nginx 로그 인덱싱 중..." msgid "Nginx Memory usage" msgstr "Nginx 메모리 사용량" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Nginx PID 경로" @@ -4852,7 +4809,7 @@ msgstr "Nginx PID 경로" msgid "Nginx PID path exists" msgstr "Nginx PID 경로가 존재합니다" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Nginx 재로드 명령어" @@ -4873,7 +4830,7 @@ msgstr "Nginx 다시 로드 성공" msgid "Nginx reported a configuration syntax error." msgstr "Nginx가 구성 구문 오류를 보고했습니다." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Nginx 재시작 명령어" @@ -4889,7 +4846,7 @@ msgstr "Nginx 재시작이 성공적으로 완료되었습니다" msgid "Nginx sbin path exists" msgstr "Nginx Sbin 경로가 존재합니다" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Nginx 설정 테스트 명령어" @@ -4912,10 +4869,17 @@ msgstr "Nginx UI 설정이 복원되었습니다" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "Nginx UI 설정이 복원되었으며 몇 초 후에 자동으로 재시작됩니다." +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "Nginx UI 는 글로벌 인증서 갱신 간격과 이 인증서의 유효 기간을 기준으로, 만료가 임박하면 이 인증서를 자동으로 갱신합니다." + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf는 conf.d 디렉토리를 포함합니다" @@ -4942,7 +4906,7 @@ msgid "No" msgstr "아니요" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "작업 없음" @@ -4980,10 +4944,6 @@ msgstr "현재 페이지에 항목이 없습니다" msgid "No geographic data available" msgstr "지리 데이터를 사용할 수 없음" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "선택한 시간 범위에서 로그를 찾을 수 없습니다." @@ -5008,9 +4968,7 @@ msgstr "사이트를 찾을 수 없음" msgid "" "No specific IP address found in server_name configuration. Please specify " "the server IP address below for the certificate." -msgstr "" -"server_name 구성에서 특정 IP 주소를 찾을 수 없습니다. 인증서를 위해 아래에 서" -"버 IP 주소를 지정해 주세요." +msgstr "server_name 구성에서 특정 IP 주소를 찾을 수 없습니다. 인증서를 위해 아래에 서버 IP 주소를 지정해 주세요." #: src/views/nginx_log/structured/StructuredLogViewer.vue:836 msgid "No structured log data available" @@ -5045,7 +5003,7 @@ msgstr "노드 상태" msgid "Nodes" msgstr "노드" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "만료일" @@ -5066,7 +5024,7 @@ msgstr "인덱스되지 않음" msgid "Not Loaded" msgstr "로드되지 않음" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "아직 실행되지 않음" @@ -5088,17 +5046,15 @@ msgstr "참고" msgid "" "Note, if the configuration file include other configurations or " "certificates, please synchronize them to the remote nodes in advance." -msgstr "" -"구성 파일에 다른 구성이나 인증서가 포함되어 있는 경우, 미리 원격 노드에 동기" -"화하십시오." +msgstr "구성 파일에 다른 구성이나 인증서가 포함되어 있는 경우, 미리 원격 노드에 동기화하십시오." #: src/views/dashboard/components/SiteHealthCheckModal.vue:603 msgid "" "Note: If the server does not support gRPC Reflection, health checks may " "fail. Please ensure your gRPC server has Reflection enabled." msgstr "" -"참고: 서버가 gRPC 리플렉션을 지원하지 않으면 상태 확인이 실패할 수 있습니다. " -"gRPC 서버에서 리플렉션이 활성화되어 있는지 확인하세요." +"참고: 서버가 gRPC 리플렉션을 지원하지 않으면 상태 확인이 실패할 수 있습니다. gRPC 서버에서 리플렉션이 활성화되어 있는지 " +"확인하세요." #: src/views/certificate/components/CertificateBasicInfo.vue:24 #: src/views/certificate/components/CertificateContentEditor.vue:105 @@ -5145,7 +5101,7 @@ msgstr "작업 프로세스 수" msgid "Obtain cert error: {0}" msgstr "인증서 획득 오류: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "인증서 획득" @@ -5161,9 +5117,7 @@ msgstr "OCSP Must Staple" msgid "" "OCSP Must Staple may cause errors for some users on first access using " "Firefox." -msgstr "" -"OCSP Must Staple은 Firefox를 사용한 첫 접속 시 일부 사용자에게 오류를 일으킬 " -"수 있습니다." +msgstr "OCSP Must Staple은 Firefox를 사용한 첫 접속 시 일부 사용자에게 오류를 일으킬 수 있습니다." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164 @@ -5199,7 +5153,7 @@ msgstr "OIDC 로그인" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5231,9 +5185,7 @@ msgstr "온라인 수" msgid "" "Only backups created by versions that support signed manifests can be " "restored. Legacy backups are no longer supported." -msgstr "" -"서명된 매니페스트를 지원하는 버전에서 생성된 백업만 복원할 수 있습니다. 레거" -"시 백업은 더 이상 지원되지 않습니다." +msgstr "서명된 매니페스트를 지원하는 버전에서 생성된 백업만 복원할 수 있습니다. 레거시 백업은 더 이상 지원되지 않습니다." #: src/components/SystemRestore/SystemRestoreContent.vue:83 msgid "Only zip files are allowed" @@ -5243,10 +5195,6 @@ msgstr "ZIP 파일만 허용됩니다" msgid "Open" msgstr "열림" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "오픈 소스 제한" @@ -5263,7 +5211,7 @@ msgstr "운영 체계 통계" msgid "Optional comment for this DNS record" msgstr "이 DNS 레코드에 대한 선택적 설명" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "또는" @@ -5312,11 +5260,6 @@ msgstr "기타" msgid "Otp or recovery code empty" msgstr "OTP 또는 복구 코드가 비어 있습니다" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "기존 파일 덮어쓰기" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "덮어쓰기" @@ -5352,9 +5295,8 @@ msgid "" "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -"패스키는 터치, 얼굴 인식, 기기 비밀번호 또는 PIN을 사용하여 신원을 확인하는 " -"웹인증(WebAuthn) 자격 증명입니다. 비밀번호 대체 또는 2FA 방법으로 사용할 수 " -"있습니다." +"패스키는 터치, 얼굴 인식, 기기 비밀번호 또는 PIN을 사용하여 신원을 확인하는 웹인증(WebAuthn) 자격 증명입니다. 비밀번호 " +"대체 또는 2FA 방법으로 사용할 수 있습니다." #: src/views/other/Login.vue:308 src/views/user/userColumns.tsx:16 msgid "Password" @@ -5364,10 +5306,6 @@ msgstr "비밀번호" msgid "Password (*)" msgstr "비밀번호 (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "잘못된 비밀번호" @@ -5376,11 +5314,11 @@ msgstr "잘못된 비밀번호" msgid "Password length cannot exceed 20 characters" msgstr "비밀번호 길이는 20자를 초과할 수 없습니다" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "비밀번호가 성공적으로 업데이트되었습니다" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "비밀번호가 일치하지 않습니다" @@ -5452,7 +5390,7 @@ msgstr "성능 설정이 성공적으로 저장되었습니다" msgid "Performing core upgrade" msgstr "핵심 업그레이드 수행 중" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "개인 정보" @@ -5493,6 +5431,12 @@ msgstr "요청 통계, 연결 수 등을 얻으려면 stub_status 모듈을 활 msgid "Please enter" msgstr "입력해 주세요" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "인증서 이름을 입력하세요" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5511,15 +5455,21 @@ msgstr "유효한 IPv4 또는 IPv6 주소를 입력하세요" msgid "Please enter a valid port range" msgstr "유효한 포트 범위를 입력하세요" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "최소 하나의 도메인을 입력해 주세요" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "도메인 또는 IP 주소를 하나 이상 입력하세요" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "계속하기 전에 설치 비밀번호를 입력해 주세요" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "OTP 코드를 입력해 주세요:" @@ -5559,15 +5509,13 @@ msgstr "DNS 제공자가 제공한 API 인증 자격 증명을 입력해주세 msgid "" "Please first add credentials in Certification > DNS Credentials, and then " "select one of the credentialsbelow to request the API of the DNS provider." -msgstr "" -"먼저 인증서 > DNS 자격 증명에 자격 증명을 추가한 다음,DNS 제공자의 API를 요청" -"하려면 아래 자격 증명 중 하나를 선택해주세요." +msgstr "먼저 인증서 > DNS 자격 증명에 자격 증명을 추가한 다음,DNS 제공자의 API를 요청하려면 아래 자격 증명 중 하나를 선택해주세요." #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "잠금을 방지하려면 설정에서 즉시 새로운 복구 코드를 생성하세요." #: src/views/config/components/ConfigRightPanel/Basic.vue:27 @@ -5609,8 +5557,7 @@ msgid "Please log in." msgstr "로그인해 주세요." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "아래의 시간 설정 단위는 모두 초 단위임을 유의해주세요." #: src/views/install/components/InstallView.vue:136 @@ -5629,7 +5576,7 @@ msgstr "백업 파일을 선택해 주세요" msgid "Please select a certificate before saving the TLS server configuration." msgstr "TLS 서버 구성을 저장하기 전에 인증서를 선택해 주세요." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "DNS 자격 증명을 선택하세요" @@ -5709,10 +5656,6 @@ msgstr "환경설정" msgid "Preparing lego configurations" msgstr "Lego 설정 준비 중" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5731,10 +5674,6 @@ msgstr "사설 IP(192.168.x.x, 10.x.x.x, 172.16-31.x.x)는 실패합니다" msgid "private key" msgstr "개인 키" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "프로세스" @@ -5778,12 +5717,11 @@ msgstr "프로토콜" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." -msgstr "" -"프로토콜 설정은 직접 연결할 때만 적용됩니다. 리버스 프록시를 사용하는 경우 리" -"버스 프록시에서 별도로 프로토콜을 구성하세요." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." +msgstr "프로토콜 설정은 직접 연결할 때만 적용됩니다. 리버스 프록시를 사용하는 경우 리버스 프록시에서 별도로 프로토콜을 구성하세요." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5822,14 +5760,6 @@ msgstr "프록시 대상" msgid "Public CA Requirements:" msgstr "공개 CA 요구 사항:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "공공 보안 번호" @@ -5930,11 +5860,11 @@ msgstr "레코드 유형" msgid "Record updated" msgstr "레코드가 업데이트되었습니다" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "레코드" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "복구" @@ -5946,9 +5876,7 @@ msgstr "복구 코드" msgid "" "Recovery codes are used to access your account when you lose access to your " "2FA device. Each code can only be used once." -msgstr "" -"복구 코드는 2FA 장치에 대한 접근 권한을 잃었을 때 계정에 접근하는 데 사용됩니" -"다. 각 코드는 한 번만 사용할 수 있습니다." +msgstr "복구 코드는 2FA 장치에 대한 접근 권한을 잃었을 때 계정에 접근하는 데 사용됩니다. 각 코드는 한 번만 사용할 수 있습니다." #: src/views/site/site_edit/components/RightPanel/DNS.vue:535 msgid "Recreate DNS Record" @@ -5967,7 +5895,7 @@ msgstr "리디렉션 메시지 (3xx)" msgid "Referer" msgstr "리퍼러" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "새로 고침" @@ -5976,11 +5904,6 @@ msgstr "새로 고침" msgid "Refresh Modules Cache" msgstr "모듈 캐시 새로 고침" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "응답 재생성" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "응답 재생성" @@ -5993,9 +5916,7 @@ msgstr "등록" msgid "" "Register a user or use this account to issue a certificate through an HTTP " "proxy." -msgstr "" -"사용자를 등록하거나 이 계정을 사용하여 HTTP 프록시를 통해 인증서를 발급합니" -"다." +msgstr "사용자를 등록하거나 이 계정을 사용하여 HTTP 프록시를 통해 인증서를 발급합니다." #: src/views/certificate/ACMEUser.vue:133 msgid "Register failed" @@ -6039,7 +5960,7 @@ msgid "Reload" msgstr "리로드" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Nginx 다시 로드" @@ -6076,16 +5997,12 @@ msgstr "리로딩 중" msgid "Reloading nginx" msgstr "Nginx 리로딩 중" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "원격" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "선택된 노드 없음" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "제거" @@ -6095,6 +6012,10 @@ msgstr "제거" msgid "Remove successfully" msgstr "성공적으로 제거되었습니다" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "충돌하는 레코드를 %{count}개 제거했습니다: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "성공적으로 제거됨" @@ -6146,9 +6067,7 @@ msgstr "원격 스트림 이름 변경 성공" #: src/components/Notification/notifications.ts:146 msgid "Rename site %{name} to %{new_name} on %{node} failed" -msgstr "" -"%{node}에서 사이트 %{name}을(를) %{new_name}(으)로 이름 변경하는 데 실패했습" -"니다" +msgstr "%{node}에서 사이트 %{name}을(를) %{new_name}(으)로 이름 변경하는 데 실패했습니다" #: src/components/Notification/notifications.ts:150 msgid "Rename site %{name} to %{new_name} on %{node} successfully" @@ -6156,9 +6075,7 @@ msgstr "사이트 %{name}을(를) %{new_name}(으)로 이름 변경했습니다 #: src/components/Notification/notifications.ts:186 msgid "Rename stream %{name} to %{new_name} on %{node} failed" -msgstr "" -"%{node}에서 스트림 %{name}을(를) %{new_name}(으)로 이름 변경하는 데 실패했습" -"니다" +msgstr "%{node}에서 스트림 %{name}을(를) %{new_name}(으)로 이름 변경하는 데 실패했습니다" #: src/components/Notification/notifications.ts:190 msgid "Rename stream %{name} to %{new_name} on %{node} successfully" @@ -6178,8 +6095,8 @@ msgstr "이름 변경 성공" msgid "Renew cert error: {0}" msgstr "인증서 갱신 오류: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "인증서 갱신" @@ -6191,8 +6108,7 @@ msgstr "인증서 갱신 오류" msgid "Renew Certificate Success" msgstr "인증서 갱신 성공" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "성공적으로 갱신됨" @@ -6244,8 +6160,8 @@ msgid "" "shared library memory, which will be repeated calculated for multiple " "processes" msgstr "" -"Resident Set Size: 물리적 메모리에 상주하는 실제 메모리로, 모든 공유 라이브러" -"리 메모리를 포함하며, 여러 프로세스에 대해 반복 계산됩니다" +"Resident Set Size: 물리적 메모리에 상주하는 실제 메모리로, 모든 공유 라이브러리 메모리를 포함하며, 여러 프로세스에 " +"대해 반복 계산됩니다" #: src/views/nginx_log/components/IndexingSettingsModal.vue:109 msgid "Resource Usage Warning" @@ -6320,6 +6236,19 @@ msgstr "이 버전 복원" msgid "Restored successfully" msgstr "성공적으로 복원되었습니다" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "재시도" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "인증서 발급 재시도" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "먼저 검토" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6341,9 +6270,7 @@ msgstr "이 인증서 취소" msgid "" "Revoking a certificate will affect any services currently using it. This " "action cannot be undone." -msgstr "" -"인증서를 취소하면 현재 이를 사용 중인 모든 서비스에 영향을 미칩니다. 이 작업" -"은 취소할 수 없습니다." +msgstr "인증서를 취소하면 현재 이를 사용 중인 모든 서비스에 영향을 미칩니다. 이 작업은 취소할 수 없습니다." #: src/views/site/site_add/components/DNSRecordIntegration.vue:356 #: src/views/site/site_edit/components/RightPanel/DNS.vue:650 @@ -6366,11 +6293,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "실행 모드" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "인증서 갱신" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "실행 중" @@ -6488,7 +6410,7 @@ msgstr "토요일" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6498,19 +6420,14 @@ msgstr "토요일" msgid "Save" msgstr "저장" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "스토리지 구성" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "지시문 저장" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "지금 저장" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "순서 저장" @@ -6553,15 +6470,19 @@ msgstr "스트림 %{name}을(를) %{node}에 성공적으로 저장했습니다" msgid "Save successful" msgstr "저장 성공" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "성공적으로 저장되었습니다" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "사이트 구성을 지금 저장하시겠습니까?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "저장된 인증서 응답에 ID 가 없습니다" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6571,6 +6492,12 @@ msgstr "" msgid "Saved successfully" msgstr "성공적으로 저장됨" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "사이트 구성 저장에 실패했습니다. 인증서 지시문이 편집기에 있습니다. 변경 사항을 검토하고 저장 버튼에서 다시 시도하세요." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "sbin 경로가 존재하지 않습니다" @@ -6619,7 +6546,7 @@ msgstr "SDK" msgid "Search" msgstr "검색" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "도메인, 공급자 또는 대상 검색" @@ -6651,7 +6578,7 @@ msgstr "템플릿 검색" msgid "Secret has been copied" msgstr "비밀번호가 복사되었습니다" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "보안 설정" @@ -6674,9 +6601,7 @@ msgstr "DNS 제공업체를 선택하면 DNS Domains에서 DNS 레코드 관리 msgid "" "Select a predefined CA directory or enter a custom one. Leave blank to use " "the default CA directory." -msgstr "" -"미리 정의된 CA 디렉터리를 선택하거나 사용자 지정 디렉터리를 입력하세요. 기본 " -"CA 디렉터리를 사용하려면 비워 두세요." +msgstr "미리 정의된 CA 디렉터리를 선택하거나 사용자 지정 디렉터리를 입력하세요. 기본 CA 디렉터리를 사용하려면 비워 두세요." #: src/language/curd.ts:31 msgid "Select all" @@ -6697,6 +6622,10 @@ msgstr "DNS 도메인 선택" msgid "Select existing record" msgstr "기존 레코드 선택" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "일치하는 A/AAAA 레코드 선택" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6723,6 +6652,24 @@ msgstr "자체 점검" msgid "Self check failed, Nginx UI may not work properly" msgstr "자체 점검 실패, Nginx UI가 제대로 작동하지 않을 수 있습니다" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "자체 서명 인증서" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "자체 서명 인증서" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "자체 서명 인증서가 적용되었습니다" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "자체 서명 인증서 생성됨" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6737,7 +6684,7 @@ msgid "Server" msgstr "서버" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "서버 오류" @@ -6765,7 +6712,7 @@ msgstr "서버 이름 해시 버킷 크기" msgid "Server names hash table size" msgstr "서버 이름 해시 테이블 크기" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "directives에서 server_name을 찾을 수 없습니다" @@ -6793,9 +6740,7 @@ msgstr "lego CNAME 지원 비활성화 환경 플래그 설정 오류: {0}" msgid "" "Set the recursive nameservers to override the systems nameservers for the " "step of DNS challenge." -msgstr "" -"DNS 챌린지 단계에서 시스템 네임서버를 재정의하기 위해 재귀 네임서버를 설정하" -"세요." +msgstr "DNS 챌린지 단계에서 시스템 네임서버를 재정의하기 위해 재귀 네임서버를 설정하세요." #: src/views/site/components/SiteStatusSelect.vue:116 msgid "set to maintenance mode" @@ -6815,16 +6760,16 @@ msgstr "HTTP01 공급자 설정" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" "Settings.NginxLogSettings.AccessLogPath이 비어 있습니다. 자세한 내용은 " "https://nginxui.com/guide/config-nginx.html을 참조하십시오" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" "Settings.NginxLogSettings.ErrorLogPath가 비어 있습니다. 자세한 내용은 " "https://nginxui.com/guide/config-nginx.html을 참조하세요" @@ -6846,7 +6791,7 @@ msgstr "표시" msgid "Show Assistant" msgstr "어시스턴트 표시" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "패스키로 로그인" @@ -6910,9 +6855,7 @@ msgstr "사이트 목록" msgid "" "Sites will appear here once you configure nginx server blocks with valid " "server_name (localhost excluded) directives." -msgstr "" -"유효한 server_name 지시문(localhost 제외)으로 nginx 서버 블록을 구성하면 사이" -"트가 여기에 표시됩니다." +msgstr "유효한 server_name 지시문(localhost 제외)으로 nginx 서버 블록을 구성하면 사이트가 여기에 표시됩니다." #: src/constants/errors/self_check.ts:11 msgid "Sites-available directory not exist" @@ -6932,10 +6875,6 @@ msgstr "크기" msgid "Skip Installation" msgstr "설치 건너뛰기" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "캐시 로더 반복 사이의 대기 시간" @@ -6948,6 +6887,10 @@ msgstr "캐시 관리자 반복 간 대기 시간" msgid "Socket" msgstr "소켓" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "일부 브라우저는 유효 기간이 398일을 초과하는 TLS 인증서를 거부합니다." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "정렬 기준" @@ -6964,15 +6907,6 @@ msgstr "스폰서" msgid "SSD storage for better I/O performance" msgstr "더 나은 I/O 성능을 위한 SSD 저장 장치" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "2+ 코어 권장" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7058,9 +6992,9 @@ msgstr "정적" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7092,8 +7026,7 @@ msgstr "스토리지 구성" msgid "" "Storage configuration validation failed for backup task %{backup_name}, " "error: %{error}" -msgstr "" -"백업 작업 %{backup_name}에 대한 저장소 구성 유효성 검사 실패, 오류: %{error}" +msgstr "백업 작업 %{backup_name}에 대한 저장소 구성 유효성 검사 실패, 오류: %{error}" #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:120 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:54 @@ -7134,7 +7067,7 @@ msgstr "streams-enabled 디렉터리가 존재하지 않습니다" msgid "Structured" msgstr "구조화된" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "스텁 상태 포트" @@ -7142,7 +7075,7 @@ msgstr "스텁 상태 포트" msgid "Stub_status is not enabled" msgstr "Stub_status가 활성화되지 않았습니다" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7160,13 +7093,13 @@ msgstr "일요일" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" -"WebSocket 프로토콜을 통해 백엔드와의 통신을 지원합니다. Nginx UI가 Nginx 리버" -"스 프록시를 통해 사용 중인 경우 이 링크를 참조하여 해당 구성 파일을 작성하십" -"시오: https://nginxui.com/guide/nginx-proxy-example.html" +"WebSocket 프로토콜을 통해 백엔드와의 통신을 지원합니다. Nginx UI가 Nginx 리버스 프록시를 통해 사용 중인 경우 이 " +"링크를 참조하여 해당 구성 파일을 작성하십시오: " +"https://nginxui.com/guide/nginx-proxy-example.html" #: src/language/curd.ts:53 src/language/curd.ts:57 msgid "Support single or batch upload of files" @@ -7253,6 +7186,7 @@ msgid "Sync strategy" msgstr "동기화 전략" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "동기화 대상" @@ -7290,21 +7224,13 @@ msgstr "시스템 복원" msgid "System restored successfully." msgstr "시스템이 성공적으로 복원되었습니다." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "대상" @@ -7367,40 +7293,42 @@ msgid "" "The certificate for the domain will be checked 30 minutes, and will be " "renewed if it has been more than 1 week or the period you set in settings " "since it was last issued." +msgstr "도메인에 대한 인증서는 30분마다 확인되며, 마지막으로 발급된 후 1주 이상이 지났거나 설정에서 지정한 기간이 지난 경우 갱신됩니다." + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." msgstr "" -"도메인에 대한 인증서는 30분마다 확인되며, 마지막으로 발급된 후 1주 이상이 지" -"났거나 설정에서 지정한 기간이 지난 경우 갱신됩니다." +"%{path}에 인증서가 생성되었으며 ssl_certificate 디렉티브가 현재 서버 블록에 추가되었습니다. 지금 설정을 저장하거나 " +"편집기에서 변경 사항을 검토한 후 수동으로 저장하세요." #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "다음 사이트가 비활성화됩니다:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "다음 사이트가 활성화됩니다:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." -msgstr "" -"오프라인 지리적 IP 분석을 위해 GeoLite2 데이터베이스가 필요합니다. 이 기능을 " -"사용하려면 다운로드해 주세요." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." +msgstr "오프라인 지리적 IP 분석을 위해 GeoLite2 데이터베이스가 필요합니다. 이 기능을 사용하려면 다운로드해 주세요." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." -msgstr "" -"GeoLite2 데이터베이스는 IP 주소에 대한 지리 정보를 제공합니다. 이는 로그 분석" -"에서 오프라인 지리 분석에 사용됩니다." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." +msgstr "GeoLite2 데이터베이스는 IP 주소에 대한 지리 정보를 제공합니다. 이는 로그 분석에서 오프라인 지리 분석에 사용됩니다." #: src/views/preference/tabs/NodeSettings.vue:37 msgid "" "The ICP Number should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." -msgstr "" -"ICP 번호는 문자, 유니코드, 숫자, 하이픈, 대시, 콜론 및 점만 포함해야 합니다." +msgstr "ICP 번호는 문자, 유니코드, 숫자, 하이픈, 대시, 콜론 및 점만 포함해야 합니다." #: src/views/certificate/components/CertificateContentEditor.vue:205 msgid "The input is not a SSL Certificate" @@ -7414,38 +7342,30 @@ msgstr "입력한 내용이 SSL 인증서 키가 아닙니다" msgid "" "The linked DNS record was deleted from the DNS server. You can recreate it " "or clear the link." -msgstr "" -"연결된 DNS 레코드가 DNS 서버에서 삭제되었습니다. 다시 만들거나 링크를 지울 " -"수 있습니다." +msgstr "연결된 DNS 레코드가 DNS 서버에서 삭제되었습니다. 다시 만들거나 링크를 지울 수 있습니다." #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" -msgstr "" -"로그 경로가 settings.NginxSettings.LogDirWhiteList의 경로에 속하지 않습니다" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" +msgstr "로그 경로가 settings.NginxSettings.LogDirWhiteList의 경로에 속하지 않습니다" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 msgid "" "The model name should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." -msgstr "" -"모델 이름에는 문자, 유니코드, 숫자, 하이픈, 대시, 콜론 및 점만 포함되어야 합" -"니다." +msgstr "모델 이름에는 문자, 유니코드, 숫자, 하이픈, 대시, 콜론 및 점만 포함되어야 합니다." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." -msgstr "" -"코드 완성에 사용되는 모델입니다. 설정되지 않은 경우 채팅 모델이 사용됩니다." +msgid "The model used for code completion, if not set, the chat model will be used." +msgstr "코드 완성에 사용되는 모델입니다. 설정되지 않은 경우 채팅 모델이 사용됩니다." #: src/views/preference/tabs/NodeSettings.vue:18 msgid "" "The node name should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." -msgstr "" -"노드 이름에는 문자, 유니코드, 숫자, 하이픈, 대시, 콜론 및 점만 포함되어야 합" -"니다." +msgstr "노드 이름에는 문자, 유니코드, 숫자, 하이픈, 대시, 콜론 및 점만 포함되어야 합니다." #: src/views/site/site_add/SiteAdd.vue:190 #: src/views/site/site_edit/components/RightPanel/DNS.vue:445 @@ -7464,9 +7384,7 @@ msgstr "경로는 존재하지만 파일은 개인 키가 아닙니다" msgid "" "The Public Security Number should only contain letters, unicode, numbers, " "hyphens, dashes, colons, and dots." -msgstr "" -"공공 보안 번호는 문자, 유니코드, 숫자, 하이픈, 대시, 콜론 및 점만 포함해야 합" -"니다." +msgstr "공공 보안 번호는 문자, 유니코드, 숫자, 하이픈, 대시, 콜론 및 점만 포함해야 합니다." #: src/views/dashboard/components/NodeAnalyticItem.vue:90 msgid "" @@ -7474,16 +7392,14 @@ msgid "" "version. To avoid potential errors, please upgrade the remote Nginx UI to " "match the local version." msgstr "" -"원격 Nginx UI 버전이 로컬 Nginx UI 버전과 호환되지 않습니다. 잠재적인 오류를 " -"방지하려면 원격 Nginx UI를 로컬 버전과 일치하도록 업그레이드하십시오." +"원격 Nginx UI 버전이 로컬 Nginx UI 버전과 호환되지 않습니다. 잠재적인 오류를 방지하려면 원격 Nginx UI를 로컬 " +"버전과 일치하도록 업그레이드하십시오." #: src/components/AutoCertForm/AutoCertForm.vue:155 msgid "" "The server_name in the current configuration must be the domain name you " "need to get the certificate, supportmultiple domains." -msgstr "" -"현재 구성에서 server_name은 인증서를 받아야 하는 도메인 이름이어야 하며, 여" -"러 도메인을 지원합니다." +msgstr "현재 구성에서 server_name은 인증서를 받아야 하는 도메인 이름이어야 하며, 여러 도메인을 지원합니다." #: src/views/preference/tabs/CertSettings.vue:23 #: src/views/preference/tabs/HTTPSettings.vue:14 @@ -7507,15 +7423,14 @@ msgstr "이론상 최대 동시 연결 수:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "이론적 최대 RPS(초당 요청 수):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " "lose access to your account." msgstr "" -"이 코드들은 비밀번호와 두 번째 요소를 잃어버린 경우 계정에 접근할 수 있는 최" -"후의 수단입니다. 이 코드들을 찾을 수 없다면 계정에 대한 접근 권한을 잃게 됩니" -"다." +"이 코드들은 비밀번호와 두 번째 요소를 잃어버린 경우 계정에 접근할 수 있는 최후의 수단입니다. 이 코드들을 찾을 수 없다면 계정에 " +"대한 접근 권한을 잃게 됩니다." #: src/routes/modules/system.ts:45 msgid "Third-party Components" @@ -7529,9 +7444,7 @@ msgstr "이 자동 인증 항목이 유효하지 않습니다. 제거해주세 msgid "" "This backup uses an unsupported legacy format. Please create a new backup " "with a newer version before restoring." -msgstr "" -"이 백업은 지원되지 않는 레거시 형식을 사용합니다. 복원하기 전에 새 버전으로 " -"새 백업을 생성하십시오." +msgstr "이 백업은 지원되지 않는 레거시 형식을 사용합니다. 복원하기 전에 새 버전으로 새 백업을 생성하십시오." #: src/views/certificate/components/AutoCertManagement.vue:35 msgid "This certificate is managed by Nginx UI" @@ -7560,14 +7473,13 @@ msgid "This field should not be empty" msgstr "이 필드는 비워둘 수 없습니다" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." msgstr "이 필드에는 문자, 유니코드 문자, 숫자 및 -_만 포함되어야 합니다." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" msgstr "이 필드에는 문자, 유니코드 문자, 숫자 및 -_./: 만 포함되어야 합니다" #: src/components/Notification/notifications.ts:102 @@ -7580,17 +7492,11 @@ msgid "" "server state." msgstr "이 모드는 설치 UI 흐름만 미리 보여주며 서버 상태를 변경하지 않습니다." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " "After enabling it, you can view performance statistics" -msgstr "" -"이 모듈은 Nginx 요청 통계, 연결 수 등 데이터를 제공합니다. 활성화한 후 성능 " -"통계를 볼 수 있습니다." +msgstr "이 모듈은 Nginx 요청 통계, 연결 수 등 데이터를 제공합니다. 활성화한 후 성능 통계를 볼 수 있습니다." #: src/views/nginx_log/dashboard/components/DateRangeSelector.vue:25 msgid "This month" @@ -7604,37 +7510,37 @@ msgstr "이 알림은 비활성화되었습니다" msgid "" "This operation will only remove the certificate from the database. The " "certificate files on the file system will not be deleted." -msgstr "" -"이 작업은 데이터베이스에서만 인증서를 제거합니다. 파일 시스템의 인증서 파일" -"은 삭제되지 않습니다." +msgstr "이 작업은 데이터베이스에서만 인증서를 제거합니다. 파일 시스템의 인증서 파일은 삭제되지 않습니다." + +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "이 자체 서명 인증서는 Nginx UI에 의해 관리되며 자동으로 갱신됩니다." #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" -"이 사이트는 HTTPS(포트 443)의 기본 서버(default_server)로 구성되어 있습니다. " -"IP 인증서는 인증 기관(CA)의 지원이 필요하며 모든 ACME 공급자에서 사용할 수 있" -"는 것은 아닙니다." +"이 사이트는 HTTPS(포트 443)의 기본 서버(default_server)로 구성되어 있습니다. IP 인증서는 인증 기관(CA)의 " +"지원이 필요하며 모든 ACME 공급자에서 사용할 수 있는 것은 아닙니다." #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" -"이 사이트는 와일드카드 서버 이름(_)을 사용하며, 일반적으로 IP 기반 인증서를 " -"나타냅니다. IP 인증서는 인증 기관(CA)의 지원이 필요하며 모든 ACME 공급자에서 " -"사용할 수 없을 수 있습니다." +"이 사이트는 와일드카드 서버 이름(_)을 사용하며, 일반적으로 IP 기반 인증서를 나타냅니다. IP 인증서는 인증 기관(CA)의 지원이 " +"필요하며 모든 ACME 공급자에서 사용할 수 없을 수 있습니다." #: src/views/backup/components/BackupCreator.vue:141 msgid "" "This token will only be shown once and cannot be retrieved later. Please " "make sure to save it in a secure location." -msgstr "" -"이 토큰은 한 번만 표시되며 나중에 다시 가져올 수 없습니다. 반드시 안전한 곳" -"에 저장하세요." +msgstr "이 토큰은 한 번만 표시되며 나중에 다시 가져올 수 없습니다. 반드시 안전한 곳에 저장하세요." #: src/constants/form_errors.ts:4 src/language/curd.ts:44 msgid "This value is already taken" @@ -7649,9 +7555,8 @@ msgid "" "This will rebuild the entire log index. All existing index data will be " "deleted and rebuilt from scratch. This may take some time. Continue?" msgstr "" -"이 작업은 전체 로그 인덱스를 재구성합니다. 기존의 모든 인덱스 데이터가 삭제되" -"고 처음부터 다시 구축됩니다. 시간이 다소 소요될 수 있습니다. 계속하시겠습니" -"까?" +"이 작업은 전체 로그 인덱스를 재구성합니다. 기존의 모든 인덱스 데이터가 삭제되고 처음부터 다시 구축됩니다. 시간이 다소 소요될 수 " +"있습니다. 계속하시겠습니까?" #: src/views/nginx_log/indexing/IndexManagement.vue:56 msgid "This will rebuild the index data for this specific file: %{path}" @@ -7662,25 +7567,18 @@ msgstr "이 특정 파일에 대한 인덱스 데이터를 다시 생성합니 msgid "" "This will restore all Nginx configuration files. Nginx will restart after " "the restoration is complete." -msgstr "" -"이렇게 하면 모든 Nginx 구성 파일이 복원됩니다. 복원이 완료된 후 Nginx가 재시" -"작됩니다." +msgstr "이렇게 하면 모든 Nginx 구성 파일이 복원됩니다. 복원이 완료된 후 Nginx가 재시작됩니다." #: src/components/SystemRestore/SystemRestoreContent.vue:264 #: src/components/SystemRestore/SystemRestoreContent.vue:347 msgid "" "This will restore configuration files and database. Nginx UI will restart " "after the restoration is complete." -msgstr "" -"이 작업은 구성 파일과 데이터베이스를 복원합니다. 복원이 완료되면 Nginx UI가 " -"재시작됩니다." +msgstr "이 작업은 구성 파일과 데이터베이스를 복원합니다. 복원이 완료되면 Nginx UI가 재시작됩니다." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." -msgstr "" -"이 작업은 %{nodeNames}의 Nginx UI를 %{version}으로 업그레이드하거나 재설치합" -"니다." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgstr "이 작업은 %{nodeNames}의 Nginx UI를 %{version}으로 업그레이드하거나 재설치합니다." #: src/views/preference/tabs/AuthSettings.vue:89 msgid "Throttle" @@ -7713,9 +7611,7 @@ msgstr "팁" msgid "" "Tips: You can increase the concurrency processing capacity by increasing " "worker_processes or worker_connections" -msgstr "" -"팁: worker_processes 또는 worker_connections를 증가시켜 동시 처리 능력을 향상" -"시킬 수 있습니다." +msgstr "팁: worker_processes 또는 worker_connections를 증가시켜 동시 처리 능력을 향상시킬 수 있습니다." #: src/views/notification/notificationColumns.tsx:58 msgid "Title" @@ -7733,9 +7629,7 @@ msgstr "취소를 확인하려면 아래 필드에 \"취소\"를 입력하세요 msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." -msgstr "" -"활성화하려면 휴대폰에 Google Authenticator 또는 Microsoft Authenticator 앱을 " -"설치해야 합니다." +msgstr "활성화하려면 휴대폰에 Google Authenticator 또는 Microsoft Authenticator 앱을 설치해야 합니다." #: src/views/preference/components/AuthSettings/AddPasskey.vue:95 msgid "" @@ -7743,20 +7637,19 @@ msgid "" "Please manually configure the following in the app.ini configuration file " "and restart Nginx UI." msgstr "" -"보안을 위해 WebAuthn 설정은 UI를 통해 추가할 수 없습니다. app.ini 구성 파일" -"에 다음을 수동으로 구성하고 Nginx UI를 다시 시작하십시오." +"보안을 위해 WebAuthn 설정은 UI를 통해 추가할 수 없습니다. app.ini 구성 파일에 다음을 수동으로 구성하고 Nginx " +"UI를 다시 시작하십시오." #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" -"인증서 자동 갱신이 정상적으로 작동하도록 하려면,권한에서 백엔드로 요청을 프록" -"시할 수 있는 위치를 추가해야 하며,이 파일을 저장하고 Nginx를 다시로드해야 합" -"니다.계속하시겠습니까?" +"인증서 자동 갱신이 정상적으로 작동하도록 하려면,권한에서 백엔드로 요청을 프록시할 수 있는 위치를 추가해야 하며,이 파일을 저장하고 " +"Nginx를 다시로드해야 합니다.계속하시겠습니까?" #: src/views/preference/tabs/OpenAISettings.vue:44 msgid "" @@ -7764,9 +7657,8 @@ msgid "" "provide an OpenAI-compatible API endpoint, so just set the baseUrl to your " "local API." msgstr "" -"로컬 대형 모델을 사용하려면 ollama, vllm 또는 lmdeploy로 배포하세요. 이들은 " -"OpenAI 호환 API 엔드포인트를 제공하므로 baseUrl을 로컬 API로 설정하기만 하면 " -"됩니다." +"로컬 대형 모델을 사용하려면 ollama, vllm 또는 lmdeploy로 배포하세요. 이들은 OpenAI 호환 API 엔드포인트를 " +"제공하므로 baseUrl을 로컬 API로 설정하기만 하면 됩니다." #: src/views/dashboard/NginxDashBoard.vue:56 msgid "Toggle failed" @@ -7857,8 +7749,7 @@ msgstr "TOTP" msgid "" "TOTP is a two-factor authentication method that uses a time-based one-time " "password algorithm." -msgstr "" -"TOTP는 시간 기반의 일회용 비밀번호 알고리즘을 사용하는 이중 인증 방법입니다." +msgstr "TOTP는 시간 기반의 일회용 비밀번호 알고리즘을 사용하는 이중 인증 방법입니다." #: src/views/nginx_log/structured/StructuredLogViewer.vue:781 msgid "Traffic" @@ -7895,7 +7786,7 @@ msgstr "TTL (초)" msgid "Tuesday" msgstr "화요일" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "2단계 인증이 필요합니다" @@ -7916,10 +7807,6 @@ msgstr "유형" msgid "Type %{delete} to confirm" msgstr "확인하려면 %{delete}를 입력하세요" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "A/AAAA 레코드 입력 또는 선택" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "브라우저 입력 또는 선택" @@ -7965,11 +7852,11 @@ msgstr "지원되지 않는 로그 형식" msgid "Update already in progress" msgstr "업데이트가 이미 진행 중입니다" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "비밀번호 업데이트" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "프로필 업데이트" @@ -8058,11 +7945,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "루트에는 @ 사용" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "OTP 사용" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "복구 코드 사용" @@ -8070,10 +7957,6 @@ msgstr "복구 코드 사용" msgid "Use Temporary Path" msgstr "임시 경로 사용" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "사용자" @@ -8087,7 +7970,7 @@ msgstr "사용자 에이전트" msgid "User banned" msgstr "사용자가 차단되었습니다" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "사용자 정보가 성공적으로 업데이트되었습니다" @@ -8100,7 +7983,7 @@ msgid "User Profile" msgstr "사용자 프로필" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "사용자 이름" @@ -8118,10 +8001,14 @@ msgstr "고유 방문자" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "유효함" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "유효 기간(일)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "SSL 인증서 검증" @@ -8132,11 +8019,6 @@ msgstr "SSL 인증서 검증" msgid "Value" msgstr "값" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "비밀번호 확인" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8173,7 +8055,7 @@ msgstr "모든 알림 보기" msgid "View on GitHub" msgstr "GitHub에서 보기" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "복구 코드를 봅니다" @@ -8201,7 +8083,7 @@ msgstr "방문 수" msgid "Waiting processes" msgstr "대기 과정" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8214,9 +8096,7 @@ msgid "" "Warning: Restore operation will overwrite current configurations. Make sure " "you have a valid backup file and security token, and carefully select what " "to restore." -msgstr "" -"경고: 복원 작업은 현재 구성을 덮어씁니다. 유효한 백업 파일과 보안 토큰이 있는" -"지 확인하고 복원할 내용을 신중하게 선택하십시오." +msgstr "경고: 복원 작업은 현재 구성을 덮어씁니다. 유효한 백업 파일과 보안 토큰이 있는지 확인하고 복원할 내용을 신중하게 선택하십시오." #: src/components/AutoCertForm/AutoCertForm.vue:103 msgid "" @@ -8224,21 +8104,18 @@ msgid "" "Encrypt cannot issue certificates for private IPs. Use a public IP address " "or consider using a private CA." msgstr "" -"경고: 이 주소는 사설 IP 주소로 보입니다. Let's Encrypt와 같은 공인 인증 기관" -"은 사설 IP에 대한 인증서를 발급할 수 없습니다. 공인 IP 주소를 사용하거나 사" -"설 인증 기관 사용을 고려해 보세요." +"경고: 이 주소는 사설 IP 주소로 보입니다. Let's Encrypt와 같은 공인 인증 기관은 사설 IP에 대한 인증서를 발급할 수 " +"없습니다. 공인 IP 주소를 사용하거나 사설 인증 기관 사용을 고려해 보세요." #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "기능 요청을 받지 않습니다" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" -msgstr "" -"이 파일에서 HTTPChallenge 구성을 제거하고 Nginx를 다시 로드할 예정입니다. 계" -"속하시겠습니까?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" +msgstr "이 파일에서 HTTPChallenge 구성을 제거하고 Nginx를 다시 로드할 예정입니다. 계속하시겠습니까?" #: src/views/preference/tabs/AuthSettings.vue:62 msgid "Webauthn" @@ -8273,38 +8150,43 @@ msgstr "매주 %{day} %{time}" msgid "Weight" msgstr "가중치" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"활성화하면 DDNS가 선택한 이름을 소유합니다. 형제 패밀리 레코드를 자동으로 페어링하고, 누락된 레코드를 생성하며, IP 패밀리에 " +"연결할 수 없는 레코드를 제거합니다. 비활성화하면 명시적으로 선택한 레코드만 관리하고 다른 DNS 상태는 그대로 유지됩니다." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " "Generally, do not enable this unless you are in a dev environment and using " "Pebble as CA." msgstr "" -"활성화하면 Nginx UI가 시작 시 사용자를 자동으로 재등록합니다. 일반적으로 개" -"발 환경에서 Pebble을 CA로 사용하는 경우가 아니면 이 기능을 활성화하지 마십시" -"오." +"활성화하면 Nginx UI가 시작 시 사용자를 자동으로 재등록합니다. 일반적으로 개발 환경에서 Pebble을 CA로 사용하는 경우가 " +"아니면 이 기능을 활성화하지 마십시오." #: src/views/site/site_edit/components/RightPanel/Basic.vue:62 #: src/views/stream/components/RightPanel/Basic.vue:57 msgid "" "When you enable/disable, delete, or save this site, the nodes set in the " "namespace and the nodes selected below will be synchronized." -msgstr "" -"이 사이트를 활성화/비활성화, 삭제 또는 저장할 때 네임스페이스에 설정된 노드" -"와 아래에서 선택한 노드가 동기화됩니다." +msgstr "이 사이트를 활성화/비활성화, 삭제 또는 저장할 때 네임스페이스에 설정된 노드와 아래에서 선택한 노드가 동기화됩니다." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." -msgstr "" -"새로운 복구 코드를 생성할 때는 반드시 새 코드를 다운로드하거나 인쇄해야 합니" -"다." +msgstr "새로운 복구 코드를 생성할 때는 반드시 새 코드를 다운로드하거나 인쇄해야 합니다." #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:159 msgid "Whether to use a temporary path when writing temporary files" msgstr "임시 파일을 작성할 때 임시 경로를 사용할지 여부" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "와일드카드 인증서" @@ -8323,7 +8205,7 @@ msgstr "작업자 프로세스" msgid "Workers" msgstr "워커" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "작업 공간" @@ -8362,11 +8244,11 @@ msgstr "예" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" -"비 로컬호스트 도메인에서 안전하지 않은 HTTP 연결을 통해 이 터미널에 접속하고 " -"있습니다. 이로 인해 민감한 정보가 노출될 수 있습니다." +"비 로컬호스트 도메인에서 안전하지 않은 HTTP 연결을 통해 이 터미널에 접속하고 있습니다. 이로 인해 민감한 정보가 노출될 수 " +"있습니다." #: src/constants/errors/config.ts:12 msgid "You are not allowed to delete a file outside of the nginx config path" @@ -8395,25 +8277,41 @@ msgid "" msgstr "WebAuthn 설정을 하지 않았기 때문에 패스키를 추가할 수 없습니다." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." -msgstr "" -"2FA가 아직 활성화되지 않았습니다. 복구 코드를 생성하려면 2FA를 활성화하세요." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgstr "2FA가 아직 활성화되지 않았습니다. 복구 코드를 생성하려면 2FA를 활성화하세요." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "아직 복구 코드를 생성하지 않았습니다." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "계정이 여전히 레거시 복구 코드를 사용하고 있습니다. 확인 후 새 복구 코드를 생성하여 계정 복구를 안전하게 유지하세요." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"귀하의 계정은 사용되지 않는 레거시 복구 코드를 사용하고 있습니다. 지금 새 복구 코드를 생성하여 마이그레이션을 완료하고 계정 복구를 " +"안전하게 유지하세요." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." -msgstr "" -"현재 복구 코드는 오래되어 안전하지 않을 수 있습니다. 보안을 위해 가능한 한 빨" -"리 새로운 복구 코드를 생성해 주세요." +msgstr "현재 복구 코드는 오래되어 안전하지 않을 수 있습니다. 보안을 위해 가능한 한 빨리 새로운 복구 코드를 생성해 주세요." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "이전 복구 코드가 이미 사용되어 다시 사용할 수 없습니다. 계정 복구를 계속 사용할 수 있도록 지금 새 복구 코드를 생성하세요." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "이전 코드는 더 이상 작동하지 않습니다." @@ -8425,6 +8323,61 @@ msgstr "귀하의 패스키" msgid "Zero-allocation pipeline" msgstr "할당 없는 파이프라인" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx가 구성을 검증하지 못했습니다." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "인증 중..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "연결됨" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "내용" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "복사" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "외부 Docker 컨테이너" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "생성" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "기존 파일 덮어쓰기" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "응답 재생성" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "선택된 노드 없음" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "인증서 갱신" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "2+ 코어 권장" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "A/AAAA 레코드 입력 또는 선택" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "비밀번호 확인" + #~ msgid "OpenAI" #~ msgstr "오픈AI" @@ -8437,9 +8390,7 @@ msgstr "할당 없는 파이프라인" #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." -#~ msgstr "" -#~ "도메인 소유권 검증을 위해 도메인의 DNS레코드에 하나 이상의 TXT 레코드를 추" -#~ "가할 것입니다." +#~ msgstr "도메인 소유권 검증을 위해 도메인의 DNS레코드에 하나 이상의 TXT 레코드를 추가할 것입니다." #~ msgid "Settings" #~ msgstr "설정" @@ -8606,13 +8557,13 @@ msgstr "할당 없는 파이프라인" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" -#~ "Server-Sent Events 프로토콜을 통해 백엔드와의 통신을 지원합니다. Nginx UI" -#~ "를 Nginx 리버스 프록시를 통해 사용 중인 경우, 해당 구성 파일을 작성하려면 " -#~ "이 링크를 참조하세요: https://nginxui.com/guide/nginx-proxy-example.html" +#~ "Server-Sent Events 프로토콜을 통해 백엔드와의 통신을 지원합니다. Nginx UI를 Nginx 리버스 프록시를 통해 사용 " +#~ "중인 경우, 해당 구성 파일을 작성하려면 이 링크를 참조하세요: " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "비워 둘 경우 기본 CA 디렉터리가 사용됩니다." @@ -8682,12 +8633,11 @@ msgstr "할당 없는 파이프라인" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" -#~ "/var/run/docker.sock이 존재하는지 확인하세요. Nginx UI 공식 Docker 이미지" -#~ "를 사용 중이라면 Docker 소켓이 다음과 같이 마운트되었는지 확인하세요: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "/var/run/docker.sock이 존재하는지 확인하세요. Nginx UI 공식 Docker 이미지를 사용 중이라면 Docker " +#~ "소켓이 다음과 같이 마운트되었는지 확인하세요: `-v /var/run/docker.sock:/var/run/docker.sock`." #~ msgid "Check if the nginx access log path exists" #~ msgstr "Nginx 액세스 로그 경로가 존재하는지 확인" @@ -8761,14 +8711,11 @@ msgstr "할당 없는 파이프라인" #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" #, fuzzy -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" #, fuzzy -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" #, fuzzy @@ -8782,8 +8729,7 @@ msgstr "할당 없는 파이프라인" #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" #, fuzzy -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" #, fuzzy @@ -8862,26 +8808,19 @@ msgstr "할당 없는 파이프라인" #~ msgstr "DNS 레코드 관리 전용" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." -#~ msgstr "" -#~ "DNS 도메인은 NGINX UI에서 DNS 레코드 관리를 위해 사용되며 ACME DNS-01 인증" -#~ "서 챌린지와는 별개의 기능입니다." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." +#~ msgstr "DNS 도메인은 NGINX UI에서 DNS 레코드 관리를 위해 사용되며 ACME DNS-01 인증서 챌린지와는 별개의 기능입니다." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." -#~ msgstr "" -#~ "현재 DNS 레코드 관리는 Alibaba Cloud DNS, Tencent Cloud DNS 및 Cloudflare" -#~ "만 지원합니다." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." +#~ msgstr "현재 DNS 레코드 관리는 Alibaba Cloud DNS, Tencent Cloud DNS 및 Cloudflare만 지원합니다." #~ msgid "" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " #~ "Credentials and select them in certificate settings." -#~ msgstr "" -#~ "ACME DNS-01 인증서 발급에는 DNS > 자격 증명에서 DNS 자격 증명을 만든 후 인" -#~ "증서 설정에서 선택하세요." +#~ msgstr "ACME DNS-01 인증서 발급에는 DNS > 자격 증명에서 DNS 자격 증명을 만든 후 인증서 설정에서 선택하세요." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains는 DNS 레코드 관리 구현이 있는 제공업체만 사용합니다." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "DNS Domains는 DNS 레코드 관리 구현이 있는 제공업체만 사용합니다." diff --git a/app/src/language/messages.pot b/app/src/language/messages.pot index bc7dde84..6f4e185f 100644 --- a/app/src/language/messages.pot +++ b/app/src/language/messages.pot @@ -103,10 +103,6 @@ msgstr "" msgid "* Performance metrics measured on Apple M2 Pro (12-core) with 32GB RAM. Actual performance may vary based on your hardware configuration." msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "" @@ -150,7 +146,7 @@ msgstr "" msgid "2FA" msgstr "" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "" @@ -158,10 +154,18 @@ msgstr "" msgid "4GB+ RAM recommended" msgstr "" +#: src/views/dns/DDNSManager.vue:86 +msgid "A records at the same names are not managed in IPv6 only mode. They remain unchanged in DNS." +msgstr "" + #: src/components/InspectConfig/InspectConfig.vue:37 msgid "A required include file is missing from the sandbox or source configuration." msgstr "" +#: src/views/dns/DDNSManager.vue:85 +msgid "AAAA records at the same names are not managed in IPv4 only mode. They remain unchanged in DNS." +msgstr "" + #: src/routes/modules/system.ts:38 msgid "About" msgstr "" @@ -180,10 +184,6 @@ msgstr "" msgid "Access Logs" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 #: src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 @@ -196,10 +196,10 @@ msgstr "" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 +#: src/views/dns/DDNSManager.vue:180 #: src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 #: src/views/namespace/columns.ts:97 @@ -247,7 +247,8 @@ msgstr "" msgid "Add Directive Below" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "" @@ -255,6 +256,14 @@ msgstr "" msgid "Add Header" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -326,10 +335,6 @@ msgstr "" msgid "All" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -msgid "All checks passed — you may save the configuration." -msgstr "" - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "" @@ -339,7 +344,7 @@ msgstr "" msgid "All Recovery Codes Have Been Used" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "All selected subdomains must belong to the same DNS Provider, otherwise the certificate application will fail." msgstr "" @@ -383,10 +388,6 @@ msgstr "" msgid "App" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "" @@ -399,7 +400,7 @@ msgstr "" msgid "Are you sure to delete this banned IP immediately?" msgstr "" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "" @@ -411,7 +412,7 @@ msgstr "" msgid "Are you sure to delete this record?" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "" @@ -486,12 +487,11 @@ msgstr "" msgid "Attempts" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "" @@ -499,10 +499,6 @@ msgstr "" msgid "Authenticating..." msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -msgid "Authentication method" -msgstr "" - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -551,15 +547,15 @@ msgstr "" msgid "Auto refresh enabled" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "" @@ -738,10 +734,6 @@ msgstr "" msgid "Belows are selected items that you want to batch modify" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "bind-mount cannot reach remote filesystems — config editing, log viewing and certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "" @@ -822,7 +814,7 @@ msgstr "" #: src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 +#: src/views/dns/DDNSManager.vue:438 #: src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 @@ -830,7 +822,7 @@ msgstr "" #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -920,6 +912,10 @@ msgstr "" msgid "Certificate decode error" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "" @@ -938,6 +934,14 @@ msgstr "" msgid "Certificate files downloaded successfully" msgstr "" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "" @@ -972,18 +976,19 @@ msgid "Certificate revoked successfully" msgstr "" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "" msgstr[1] "" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "" @@ -1004,11 +1009,11 @@ msgstr "" msgid "Change Certificate" msgstr "" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "" @@ -1123,6 +1128,10 @@ msgstr "" msgid "Cipher text is too short" msgstr "" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "" @@ -1335,11 +1344,11 @@ msgstr "" msgid "Configurations" msgstr "" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "" @@ -1351,7 +1360,7 @@ msgstr "" msgid "Confirm Delete" msgstr "" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "" @@ -1364,10 +1373,6 @@ msgstr "" msgid "Connected" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -msgid "Connection" -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "" @@ -1380,14 +1385,6 @@ msgstr "" msgid "Connection timeout period" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -msgid "Container" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "" @@ -1400,8 +1397,7 @@ msgstr "" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "" @@ -1412,18 +1408,13 @@ msgstr "" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -msgid "Copy fix" -msgstr "" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "" @@ -1521,7 +1512,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 +#: src/views/dns/DDNSManager.vue:154 #: src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "" @@ -1555,7 +1546,7 @@ msgstr "" msgid "Current Content" msgstr "" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "" @@ -1581,11 +1572,11 @@ msgstr "" msgid "Custom Directory" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "" @@ -1645,15 +1636,15 @@ msgstr "" msgid "DDNS" msgstr "" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "" @@ -1683,7 +1674,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 +#: src/views/dns/DDNSManager.vue:363 #: src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" @@ -1882,7 +1873,7 @@ msgstr "" msgid "Disable" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "" @@ -1937,7 +1928,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 +#: src/views/dns/DDNSManager.vue:320 #: src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2060,7 +2051,7 @@ msgstr "" msgid "Do you want to %{action} this stream?" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "" @@ -2089,10 +2080,6 @@ msgstr "" msgid "Docker client not initialized" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "" @@ -2101,10 +2088,6 @@ msgstr "" msgid "Docker socket not exist" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2116,12 +2099,16 @@ msgstr[1] "" msgid "Document Count" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 #: src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" @@ -2265,7 +2252,7 @@ msgstr "" msgid "Enable Advanced Log Indexing" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "" @@ -2277,7 +2264,7 @@ msgstr "" msgid "Enable compression for content transfer" msgstr "" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "" @@ -2374,7 +2361,7 @@ msgid "Enable TOTP" msgstr "" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 +#: src/views/dns/DDNSManager.vue:320 #: src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 @@ -2422,10 +2409,19 @@ msgstr "" msgid "End Date" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "" @@ -2438,7 +2434,7 @@ msgstr "" msgid "Enter the one-time install secret shown by the install script or found in the config directory hidden file to unlock setup." msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "" @@ -2451,7 +2447,7 @@ msgid "Environment variables cleaned" msgstr "" #: src/components/InspectConfig/InspectConfig.vue:30 -#: src/constants/index.ts:23 +#: src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2532,7 +2528,7 @@ msgid "Expected Text" msgstr "" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "" @@ -2552,11 +2548,7 @@ msgstr "" msgid "External Account Binding Key ID (optional). Required for some ACME providers like ZeroSSL." msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:89 -msgid "External Container" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "" @@ -2579,6 +2571,7 @@ msgstr "" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "" @@ -2819,6 +2812,11 @@ msgstr "" msgid "Failed to generate initialization vector: {0}" msgstr "" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "" @@ -3215,20 +3213,24 @@ msgstr "" msgid "General Certificate" msgstr "" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -msgid "Generate keypair" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "" @@ -3236,6 +3238,14 @@ msgstr "" msgid "Generate recovery codes successfully" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "" @@ -3311,6 +3321,10 @@ msgstr "" msgid "Go to Raw Log Viewer" msgstr "" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "" @@ -3372,10 +3386,6 @@ msgstr "" msgid "Hide Assistant" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3397,27 +3407,10 @@ msgid "Home" msgstr "" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "" @@ -3475,12 +3468,12 @@ msgstr "" msgid "If your domain has CNAME records and you cannot obtain certificates, you need to enable this option." msgstr "" -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "" @@ -3539,7 +3532,7 @@ msgstr "" msgid "Indicator" msgstr "" -#: src/constants/index.ts:25 +#: src/constants/index.ts:26 #: src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "" @@ -3564,7 +3557,7 @@ msgstr "" msgid "Input the code from the app:" msgstr "" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "" @@ -3619,12 +3612,12 @@ msgstr "" msgid "Installation is not allowed after 10 minutes of system startup, please restart the Nginx UI." msgstr "" -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "" @@ -3698,7 +3691,7 @@ msgstr "" msgid "Invalid padding in decrypted data" msgstr "" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "" @@ -3751,15 +3744,43 @@ msgstr "" msgid "IP Address / Target" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "" @@ -3767,10 +3788,18 @@ msgstr "" msgid "Issued certificate successfully" msgstr "" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "" + #: src/language/curd.ts:6 msgid "item(s)" msgstr "" @@ -3788,7 +3817,8 @@ msgid "Keepalive Timeout" msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "" @@ -3870,7 +3900,7 @@ msgstr "" msgid "Last month" msgstr "" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "" @@ -3886,6 +3916,10 @@ msgstr "" msgid "Last used at" msgstr "" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "" @@ -3918,6 +3952,11 @@ msgstr "" msgid "Leave blank will not change anything" msgstr "" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "Legacy recovery code is deprecated. Generate new recovery codes to keep account recovery secure." +msgstr "" + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "" @@ -4016,19 +4055,15 @@ msgstr "" #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 #: src/components/NodeSelector/NodeSelector.vue:62 -#: src/constants/index.ts:42 -#: src/constants/index.ts:48 +#: src/constants/index.ts:43 +#: src/constants/index.ts:49 #: src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "" @@ -4041,7 +4076,7 @@ msgstr "" msgid "Locations" msgstr "" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "" @@ -4091,7 +4126,7 @@ msgid "Log path is not under whitelist" msgstr "" #: src/routes/modules/auth.ts:14 -#: src/views/other/Login.vue:356 +#: src/views/other/Login.vue:357 msgid "Login" msgstr "" @@ -4099,7 +4134,7 @@ msgstr "" msgid "Login successful" msgstr "" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "" @@ -4136,11 +4171,11 @@ msgstr "" msgid "Maintenance mode enabled successfully" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:38 +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:41 +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" msgstr "" @@ -4275,10 +4310,6 @@ msgstr "" msgid "Memory Usage (RSS)" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4312,7 +4343,7 @@ msgstr "" msgid "Minutes" msgstr "" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "" @@ -4342,7 +4373,7 @@ msgid "Modify" msgstr "" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "" @@ -4374,7 +4405,7 @@ msgstr "" msgid "Monthly on day %{day} at %{time}" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:44 +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" msgstr "" @@ -4406,6 +4437,7 @@ msgstr "" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4482,7 +4514,7 @@ msgstr "" msgid "New name" msgstr "" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "" @@ -4498,12 +4530,11 @@ msgstr "" msgid "New version released" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "" @@ -4516,7 +4547,7 @@ msgstr "" msgid "Nginx -T output is empty" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "" @@ -4570,11 +4601,11 @@ msgstr "" msgid "Nginx Configuration Parse Error" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "" @@ -4582,7 +4613,7 @@ msgstr "" msgid "Nginx Control" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "" @@ -4591,7 +4622,7 @@ msgstr "" msgid "Nginx CPU usage rate" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "" @@ -4628,7 +4659,7 @@ msgstr "" msgid "Nginx Log" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "" @@ -4641,7 +4672,7 @@ msgstr "" msgid "Nginx Memory usage" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "" @@ -4649,7 +4680,7 @@ msgstr "" msgid "Nginx PID path exists" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "" @@ -4671,7 +4702,7 @@ msgstr "" msgid "Nginx reported a configuration syntax error." msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "" @@ -4687,7 +4718,7 @@ msgstr "" msgid "Nginx sbin path exists" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "" @@ -4713,6 +4744,10 @@ msgstr "" msgid "Nginx UI configuration has been restored and will restart automatically in a few seconds." msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "Nginx UI will automatically renew this certificate as it approaches expiration, based on the global certificate renewal interval and this certificate's validity period." +msgstr "" + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "" @@ -4741,7 +4776,7 @@ msgid "No" msgstr "" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "" @@ -4779,10 +4814,6 @@ msgstr "" msgid "No geographic data available" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "" @@ -4841,7 +4872,7 @@ msgstr "" msgid "Nodes" msgstr "" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "" @@ -4862,7 +4893,7 @@ msgstr "" msgid "Not Loaded" msgstr "" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "" @@ -4933,7 +4964,7 @@ msgstr "" msgid "Obtain cert error: {0}" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "" @@ -4985,7 +5016,7 @@ msgstr "" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5026,10 +5057,6 @@ msgstr "" msgid "Open" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "" @@ -5046,8 +5073,8 @@ msgstr "" msgid "Optional comment for this DNS record" msgstr "" -#: src/components/TwoFA/Authorization.vue:100 -#: src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 +#: src/views/other/Login.vue:366 msgid "Or" msgstr "" @@ -5096,10 +5123,6 @@ msgstr "" msgid "Otp or recovery code empty" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -msgid "override file" -msgstr "" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "" @@ -5142,10 +5165,6 @@ msgstr "" msgid "Password (*)" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "" @@ -5154,11 +5173,11 @@ msgstr "" msgid "Password length cannot exceed 20 characters" msgstr "" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "" @@ -5231,7 +5250,7 @@ msgstr "" msgid "Performing core upgrade" msgstr "" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "" @@ -5268,6 +5287,12 @@ msgstr "" msgid "Please enter" msgstr "" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "Please enter a name for the passkey you wish to create and click the OK button below." msgstr "" @@ -5284,15 +5309,21 @@ msgstr "" msgid "Please enter a valid port range" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "" @@ -5391,7 +5422,7 @@ msgstr "" msgid "Please select a certificate before saving the TLS server configuration." msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "" @@ -5476,10 +5507,6 @@ msgstr "" msgid "Preparing lego configurations" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5498,10 +5525,6 @@ msgstr "" msgid "private key" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "" @@ -5546,7 +5569,7 @@ msgstr "" msgid "Protocol configuration only takes effect when directly connecting. If using reverse proxy, please configure the protocol separately in the reverse proxy." msgstr "" -#: src/views/dns/DDNSManager.vue:108 +#: src/views/dns/DDNSManager.vue:159 #: src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 @@ -5587,14 +5610,6 @@ msgstr "" msgid "Public CA Requirements:" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "" @@ -5696,11 +5711,11 @@ msgstr "" msgid "Record updated" msgstr "" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "" @@ -5730,7 +5745,7 @@ msgid "Referer" msgstr "" #: src/language/curd.ts:70 -#: src/views/dns/DDNSManager.vue:231 +#: src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "" @@ -5739,10 +5754,6 @@ msgstr "" msgid "Refresh Modules Cache" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -msgid "Regenerate keypair" -msgstr "" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "" @@ -5798,7 +5809,7 @@ msgstr "" #: src/components/NamespaceRender/NamespaceRender.vue:44 #: src/components/NamespaceTabs/NamespaceTabs.vue:141 -#: src/constants/index.ts:38 +#: src/constants/index.ts:39 #: src/views/node/Node.vue:208 #: src/views/node/Node.vue:216 msgid "Reload Nginx" @@ -5836,16 +5847,13 @@ msgstr "" msgid "Reloading nginx" msgstr "" -#: src/constants/index.ts:43 -#: src/constants/index.ts:49 +#: src/constants/index.ts:44 +#: src/constants/index.ts:50 msgid "Remote" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -msgid "Remote address detected" -msgstr "" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "" @@ -5855,6 +5863,10 @@ msgstr "" msgid "Remove successfully" msgstr "" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "" @@ -5936,8 +5948,8 @@ msgstr "" msgid "Renew cert error: {0}" msgstr "" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "" @@ -5951,8 +5963,7 @@ msgstr "" msgid "Renew Certificate Success" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "" @@ -6078,6 +6089,19 @@ msgstr "" msgid "Restored successfully" msgstr "" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6120,10 +6144,6 @@ msgstr "" msgid "Run Mode" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -msgid "Run verification" -msgstr "" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "" @@ -6241,7 +6261,7 @@ msgstr "" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 +#: src/views/dns/DDNSManager.vue:441 #: src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 @@ -6252,18 +6272,14 @@ msgstr "" msgid "Save" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -msgid "Save configuration" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "" @@ -6307,14 +6323,18 @@ msgid "Save successful" msgstr "" #: src/language/curd.ts:35 -#: src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" msgstr "" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 @@ -6326,6 +6346,10 @@ msgstr "" msgid "Saved successfully" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "Saving the site configuration failed; the certificate directives are in the editor — review the changes and retry from the Save button." +msgstr "" + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "" @@ -6376,7 +6400,7 @@ msgstr "" msgid "Search" msgstr "" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "" @@ -6408,7 +6432,7 @@ msgstr "" msgid "Secret has been copied" msgstr "" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "" @@ -6448,6 +6472,10 @@ msgstr "" msgid "Select existing record" msgstr "" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6475,6 +6503,24 @@ msgstr "" msgid "Self check failed, Nginx UI may not work properly" msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6490,7 +6536,7 @@ msgid "Server" msgstr "" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "" @@ -6518,7 +6564,7 @@ msgstr "" msgid "Server names hash table size" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "" @@ -6587,7 +6633,7 @@ msgstr "" msgid "Show Assistant" msgstr "" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "" @@ -6669,10 +6715,6 @@ msgstr "" msgid "Skip Installation" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "" @@ -6685,6 +6727,10 @@ msgstr "" msgid "Socket" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "" + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "" @@ -6701,14 +6747,6 @@ msgstr "" msgid "SSD storage for better I/O performance" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -msgid "SSH key (recommended)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -6796,9 +6834,9 @@ msgstr "" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -6870,7 +6908,7 @@ msgstr "" msgid "Structured" msgstr "" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "" @@ -6878,7 +6916,7 @@ msgstr "" msgid "Stub_status is not enabled" msgstr "" -#: src/constants/index.ts:26 +#: src/constants/index.ts:27 #: src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 @@ -6990,6 +7028,7 @@ msgid "Sync strategy" msgstr "" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "" @@ -7027,21 +7066,13 @@ msgstr "" msgid "System restored successfully." msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "" @@ -7104,6 +7135,10 @@ msgstr "" msgid "The certificate for the domain will be checked 30 minutes, and will be renewed if it has been more than 1 week or the period you set in settings since it was last issued." msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "The certificate has been generated at %{path} and the ssl_certificate directives have been added to the current server block. Save the configuration now, or review the changes in the editor and save manually." +msgstr "" + #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" msgstr "" @@ -7200,7 +7235,7 @@ msgstr "" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "These codes are the last resort for accessing your account in case you lose your password and second factors. If you cannot find these codes, you will lose access to your account." msgstr "" @@ -7261,10 +7296,6 @@ msgstr "" msgid "This mode only previews the installation UI flow and does not change any server state." msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "This module provides Nginx request statistics, connection count, etc. data. After enabling it, you can view performance statistics" msgstr "" @@ -7281,6 +7312,10 @@ msgstr "" msgid "This operation will only remove the certificate from the database. The certificate files on the file system will not be deleted." msgstr "" +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "This self-signed certificate is managed by Nginx UI and renewed automatically." +msgstr "" + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "This site is configured as a default server (default_server) for HTTPS (port 443). IP certificates require Certificate Authority (CA) support and may not be available with all ACME providers." msgstr "" @@ -7509,7 +7544,7 @@ msgstr "" msgid "Tuesday" msgstr "" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "" @@ -7530,10 +7565,6 @@ msgstr "" msgid "Type %{delete} to confirm" msgstr "" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "" @@ -7579,11 +7610,11 @@ msgstr "" msgid "Update already in progress" msgstr "" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "" @@ -7680,11 +7711,11 @@ msgstr "" msgid "Use @ for root" msgstr "" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "" @@ -7692,10 +7723,6 @@ msgstr "" msgid "Use Temporary Path" msgstr "" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "" @@ -7709,7 +7736,7 @@ msgstr "" msgid "User banned" msgstr "" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "" @@ -7723,8 +7750,8 @@ msgstr "" #: src/views/other/Login.vue:298 #: src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 -#: src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 +#: src/views/user/UserProfile.vue:126 msgid "Username" msgstr "" @@ -7742,10 +7769,14 @@ msgstr "" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "" @@ -7756,10 +7787,6 @@ msgstr "" msgid "Value" msgstr "" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -msgid "Verify" -msgstr "" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -7800,7 +7827,7 @@ msgstr "" msgid "View on GitHub" msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "" @@ -7829,7 +7856,7 @@ msgid "Waiting processes" msgstr "" #: src/components/InspectConfig/InspectConfig.vue:156 -#: src/constants/index.ts:24 +#: src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -7849,7 +7876,7 @@ msgstr "" msgid "We do not accept any feature requests" msgstr "" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "We will remove the HTTPChallenge configuration from this file and reload the Nginx. Are you sure you want to continue?" msgstr "" @@ -7886,6 +7913,10 @@ msgstr "" msgid "Weight" msgstr "" +#: src/views/dns/DDNSManager.vue:400 +msgid "When enabled, DDNS owns the selected names: it auto-pairs sibling family records, creates missing records, and removes records whose IP family is unreachable. Disable to manage only the records you explicitly selected and keep all other DNS state untouched." +msgstr "" + #: src/views/certificate/ACMEUser.vue:110 msgid "When Enabled, Nginx UI will automatically re-register users upon startup. Generally, do not enable this unless you are in a dev environment and using Pebble as CA." msgstr "" @@ -7895,7 +7926,7 @@ msgstr "" msgid "When you enable/disable, delete, or save this site, the nodes set in the namespace and the nodes selected below will be synchronized." msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "When you generate new recovery codes, you must download or print the new codes." msgstr "" @@ -7903,7 +7934,7 @@ msgstr "" msgid "Whether to use a temporary path when writing temporary files" msgstr "" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "" @@ -7922,7 +7953,7 @@ msgstr "" msgid "Workers" msgstr "" -#: src/layouts/HeaderLayout.vue:61 +#: src/layouts/HeaderLayout.vue:67 #: src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" @@ -7992,16 +8023,28 @@ msgstr "" msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "" +#: src/components/TwoFA/Authorization.vue:73 +msgid "Your account still uses a legacy recovery code. Generate new recovery codes after verification to keep account recovery secure." +msgstr "" + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 +msgid "Your account uses a deprecated legacy recovery code. Generate new recovery codes now to complete migration and keep account recovery secure." +msgstr "" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 msgid "Your current recovery code might be outdated and insecure. Please generate new recovery codes at your earliest convenience to ensure security." msgstr "" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "Your legacy recovery code has been used and cannot be used again. Generate new recovery codes now to keep account recovery available." +msgstr "" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "" @@ -8012,7 +8055,3 @@ msgstr "" #: src/views/nginx_log/components/IndexingSettingsModal.vue:232 msgid "Zero-allocation pipeline" msgstr "" - -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "" diff --git a/app/src/language/pt_PT/app.po b/app/src/language/pt_PT/app.po index 6a9b2626..944f71b9 100644 --- a/app/src/language/pt_PT/app.po +++ b/app/src/language/pt_PT/app.po @@ -4,18 +4,17 @@ msgid "" msgstr "" "PO-Revision-Date: 2024-08-12 17:09+0000\n" "Last-Translator: Kleiser Sarifo \n" -"Language-Team: Portuguese (Portugal) \n" +"Language-Team: Portuguese (Portugal) " +"\n" "Language: pt_PT\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.6.2\n" #: src/language/generate.ts:37 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}" -msgstr "" -"[Nginx UI] Utilizador ACME: %{name}, Email: %{email}, Diretório CA: %{caDir}" +msgstr "[Nginx UI] Utilizador ACME: %{name}, Email: %{email}, Diretório CA: %{caDir}" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" @@ -32,16 +31,14 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] Certificado revogado com sucesso" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "" "[Nginx UI] O certificado foi usado para o servidor, a recarregar o " "certificado TLS do servidor" #: src/language/generate.ts:42 msgid "[Nginx UI] Creating client facilitates communication with the CA server" -msgstr "" -"[Nginx UI] Criando cliente para facilitar a comunicação com o servidor CA" +msgstr "[Nginx UI] Criando cliente para facilitar a comunicação com o servidor CA" #: src/language/generate.ts:43 msgid "[Nginx UI] Environment variables cleaned" @@ -114,8 +111,8 @@ msgstr "* Inclui nós do grupo %{groupName} e nós selecionados manualmente" #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" "* Os ficheiros de índice são armazenados no diretório \"log-index\" dentro " "do caminho de configuração do NGINX UI por padrão." @@ -128,10 +125,6 @@ msgstr "" "* Métricas de desempenho medidas no Apple M2 Pro (12 núcleos) com 32 GB de " "RAM. O desempenho real pode variar com base na configuração do seu hardware." -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "%{count} sites selecionados" @@ -141,8 +134,8 @@ msgid "" "%{provider} can be used for ACME DNS-01 certificate challenges and DNS " "record management in DNS Domains." msgstr "" -"%{provider} pode ser usado para desafios de certificado ACME DNS-01 e gestão " -"de registos DNS em DNS Domains." +"%{provider} pode ser usado para desafios de certificado ACME DNS-01 e " +"gestão de registos DNS em DNS Domains." #: src/views/dns/components/DNSChallenge.vue:62 msgid "" @@ -183,7 +176,7 @@ msgstr "Estatísticas UV/PV de 24 horas" msgid "2FA" msgstr "2FA" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "Definições 2FA" @@ -191,13 +184,28 @@ msgstr "Definições 2FA" msgid "4GB+ RAM recommended" msgstr "Recomenda-se 4 GB de RAM ou mais" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "" +"Os registos A com os mesmos nomes não são geridos no modo apenas IPv6. " +"Permanecem inalterados no DNS." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "" "Falta um ficheiro de inclusão necessário na configuração do sandbox ou da " "origem." +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"Os registos AAAA com os mesmos nomes não são geridos no modo apenas IPv4. " +"Permanecem inalterados no DNS." + #: src/routes/modules/system.ts:38 msgid "About" msgstr "Sobre" @@ -215,10 +223,6 @@ msgstr "O caminho do registo de acesso não existe" msgid "Access Logs" msgstr "Logs de Acesso" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -230,10 +234,10 @@ msgstr "Acção" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -275,7 +279,8 @@ msgstr "Adicionar Configuração" msgid "Add Directive Below" msgstr "Adicionar Directiva Abaixo" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "Adicionar domínio" @@ -283,6 +288,14 @@ msgstr "Adicionar domínio" msgid "Add Header" msgstr "Adicionar cabeçalho" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "Adicionar endereço IP" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "Adicionar item" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -350,17 +363,13 @@ msgstr "Configurações avançadas" #: src/views/preference/components/AuthSettings/AddPasskey.vue:105 msgid "Afterwards, refresh this page and click add passkey again." msgstr "" -"Depois, atualize esta página e clique em adicionar chave de acesso novamente." +"Depois, atualize esta página e clique em adicionar chave de acesso " +"novamente." #: src/views/dns/components/DNSRecordFilter.vue:55 msgid "All" msgstr "Todos" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "O Nginx não conseguiu validar a configuração." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "Todos os componentes" @@ -370,7 +379,7 @@ msgstr "Todos os componentes" msgid "All Recovery Codes Have Been Used" msgstr "Todos os Códigos de Recuperação Foram Utilizados" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -395,8 +404,7 @@ msgid "Any" msgstr "Qualquer" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "" "Qualquer endereço IP acessível pode ser usado com autoridades de " "certificação privadas" @@ -425,10 +433,6 @@ msgstr "Tipo de API" msgid "App" msgstr "Aplicação" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "Aplicar" @@ -441,20 +445,19 @@ msgstr "Arquitetura" msgid "Are you sure to delete this banned IP immediately?" msgstr "Tem certeza que pretende eliminar este IP banido imediatamente?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "Tem a certeza de que pretende eliminar esta configuração DDNS?" #: src/views/preference/components/AuthSettings/Passkey.vue:114 msgid "Are you sure to delete this passkey immediately?" -msgstr "" -"Tem a certeza de que deseja eliminar imediatamente esta chave de acesso?" +msgstr "Tem a certeza de que deseja eliminar imediatamente esta chave de acesso?" #: src/views/dns/components/DNSRecordTable.vue:103 msgid "Are you sure to delete this record?" msgstr "Tem a certeza de que pretende eliminar este registo?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "Tem a certeza que deseja gerar novos códigos de recuperação?" @@ -525,6 +528,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"O Atlas Cloud é compatível com a OpenAI. Utilize " +"https://api.atlascloud.ai/v1 e uma chave de API do Atlas Cloud." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -534,12 +539,11 @@ msgstr "Tentar corrigir" msgid "Attempts" msgstr "Tentativas" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "Auth" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "Autenticar com uma chave de acesso" @@ -547,11 +551,6 @@ msgstr "Autenticar com uma chave de acesso" msgid "Authenticating..." msgstr "Autenticando..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "Autenticando..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -599,15 +598,15 @@ msgstr "Atualização automática desativada" msgid "Auto refresh enabled" msgstr "Atualização automática ativada" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "Renovação automatica desactivada para %{name}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "Renovação automática activada para %{name}" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "O AutoCert está em execução, aguarde..." @@ -693,8 +692,7 @@ msgstr "A verificação da integridade do backup falhou" #: src/constants/errors/backup.ts:63 msgid "Backup manifest is missing required file entry: {0}" -msgstr "" -"O manifesto de backup está a faltar a entrada de ficheiro necessária: {0}" +msgstr "O manifesto de backup está a faltar a entrada de ficheiro necessária: {0}" #: src/views/backup/AutoBackup/AutoBackup.vue:50 msgid "Backup Path" @@ -710,8 +708,7 @@ msgstr "O caminho de backup não é um diretório: {0}" #: src/constants/errors/backup.ts:65 msgid "Backup path is required for custom directory backup" -msgstr "" -"O caminho de backup é necessário para o backup de diretório personalizado" +msgstr "O caminho de backup é necessário para o backup de diretório personalizado" #: src/views/backup/AutoBackup/components/CronEditor.vue:141 msgid "Backup Schedule" @@ -724,11 +721,11 @@ msgstr "A chave de assinatura de backup não está disponível" #: src/components/Notification/notifications.ts:38 msgid "Backup task %{backup_name} completed successfully, file: %{file_path}" msgstr "" -"Tarefa de backup %{backup_name} concluída com sucesso, ficheiro: %{file_path}" +"Tarefa de backup %{backup_name} concluída com sucesso, ficheiro: " +"%{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" "A tarefa de backup %{backup_name} falhou durante o upload para o " "armazenamento, erro: %{error}" @@ -792,12 +789,6 @@ msgstr "Actualização em Massa" msgid "Belows are selected items that you want to batch modify" msgstr "Abaixo estão os itens selecionados que pretende modificar em lote" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "O bloco é nulo" @@ -887,14 +878,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -915,8 +906,7 @@ msgstr "Não é possível aceder ao caminho de armazenamento {0}: {1}" #: src/constants/errors/user.ts:11 msgid "Cannot change initial user password in demo mode" -msgstr "" -"Não é possível alterar a senha do usuário inicial no modo de demonstração" +msgstr "Não é possível alterar a senha do usuário inicial no modo de demonstração" #: src/components/ConfigHistory/DiffViewer.vue:71 msgid "Cannot compare: Missing content" @@ -989,6 +979,12 @@ msgstr "O conteúdo do certificado e a chave privada não podem estar vazios" msgid "Certificate decode error" msgstr "Erro de descodificação do certificado" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" +"Diretivas de certificado adicionadas ao editor; reveja e guarde quando " +"estiver pronto." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "Aviso de Expiração do Certificado" @@ -1007,6 +1003,14 @@ msgstr "Certificado a expirar em breve" msgid "Certificate files downloaded successfully" msgstr "Ficheiros de certificado transferidos com sucesso" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "O componente de emissão de certificados não está pronto" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "Certificado emitido com sucesso" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "O nome do certificado não pode estar vazio" @@ -1041,18 +1045,19 @@ msgid "Certificate revoked successfully" msgstr "Certificado revogado com sucesso" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "Estado do Certificado" msgstr[1] "Estado dos Certificados" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "Tipo de certificado" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "Certificados" @@ -1073,11 +1078,11 @@ msgstr "Método do Challenge" msgid "Change Certificate" msgstr "Alterar Certificado" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "Alterar senha" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "Certificado Alterado" @@ -1117,26 +1122,26 @@ msgstr "Verificar favicon" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "Verifique se /var/run/docker.sock existe. Se estiver a utilizar a imagem " "Docker oficial do Nginx UI, certifique-se de que o socket Docker está " "montado desta forma: `-v /var/run/docker.sock:/var/run/docker.sock`. A " -"imagem oficial do Nginx UI utiliza /var/run/docker.sock para comunicar com o " -"Docker Engine do anfitrião através da API do Docker Client. Esta " +"imagem oficial do Nginx UI utiliza /var/run/docker.sock para comunicar com " +"o Docker Engine do anfitrião através da API do Docker Client. Esta " "funcionalidade é utilizada para controlar o Nginx noutro contentor e " "realizar a substituição de contentores em vez da substituição binária " -"durante as atualizações OTA do Nginx UI para garantir que as dependências do " -"contentor também são atualizadas. Se não necessitar desta funcionalidade, " -"adicione a variável de ambiente NGINX_UI_IGNORE_DOCKER_SOCKET=true ao " -"contentor." +"durante as atualizações OTA do Nginx UI para garantir que as dependências " +"do contentor também são atualizadas. Se não necessitar desta " +"funcionalidade, adicione a variável de ambiente " +"NGINX_UI_IGNORE_DOCKER_SOCKET=true ao contentor." #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 msgid "" @@ -1147,10 +1152,8 @@ msgstr "" "impede o uso de Passkeys e funcionalidades da área de transferência" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" -msgstr "" -"Verifique se o diretório conf.d está no diretório de configuração do nginx" +msgid "Check if the conf.d directory is under the nginx configuration directory" +msgstr "Verifique se o diretório conf.d está no diretório de configuração do nginx" #: src/language/generate.ts:7 msgid "" @@ -1167,20 +1170,20 @@ msgstr "" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" "Verifique se o caminho do registo de acesso do nginx existe. Por " "predefinição, este caminho é obtido a partir de 'nginx -V'. Se não for " "possível obtê-lo ou se o caminho obtido não apontar para um ficheiro válido " "existente, será reportado um erro. Neste caso, terá de modificar o ficheiro " "de configuração para especificar o caminho do registo de acesso. Consulte a " -"documentação para mais detalhes: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"documentação para mais detalhes: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1196,24 +1199,24 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" "Verifique se o caminho do registo de erros do nginx existe. Por " "predefinição, este caminho é obtido a partir de 'nginx -V'. Se não for " "possível obtê-lo ou se o caminho obtido não apontar para um ficheiro válido " "existente, será reportado um erro. Neste caso, terá de modificar o ficheiro " "de configuração para especificar o caminho do registo de erros. Consulte a " -"documentação para mais detalhes: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"documentação para mais detalhes: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" "Verifique se o caminho do PID do Nginx existe. Por padrão, este caminho é " "obtido a partir de 'nginx -V'. Se não puder ser obtido, será relatado um " @@ -1247,8 +1250,8 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" "Verifique se os diretórios streams-available e streams-enabled estão no " "diretório de configuração do nginx" @@ -1270,6 +1273,10 @@ msgstr "Mapa da China" msgid "Cipher text is too short" msgstr "O texto cifrado é demasiado curto" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "Limpar registos conflituosos" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Limpando variáveis de ambiente" @@ -1293,8 +1300,7 @@ msgstr "Limpo com sucesso" #: src/components/SystemRestore/SystemRestoreContent.vue:220 #: src/components/SystemRestore/SystemRestoreContent.vue:303 msgid "Click or drag backup file to this area to upload" -msgstr "" -"Clique ou arraste o arquivo de backup para esta área para fazer o upload" +msgstr "Clique ou arraste o arquivo de backup para esta área para fazer o upload" #: src/language/curd.ts:51 src/language/curd.ts:55 msgid "Click or drag files to this area to upload" @@ -1482,11 +1488,11 @@ msgstr "Nome da Configuração" msgid "Configurations" msgstr "Configurações" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "Configurar" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "Configurar DDNS" @@ -1498,7 +1504,7 @@ msgstr "Configurar SSL" msgid "Confirm Delete" msgstr "Confirmar eliminação" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "Confirmar nova palavra-passe" @@ -1511,11 +1517,6 @@ msgstr "Confirmação necessária" msgid "Connected" msgstr "Conectado" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "Conectado" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "Erro de conexão, tentando reconectar..." @@ -1528,15 +1529,6 @@ msgstr "Conexão perdida para este terminal. Atualize se necessário." msgid "Connection timeout period" msgstr "Período de tempo limite de conexão" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "Conteúdo" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "Estado do contentor desconhecido" @@ -1549,8 +1541,7 @@ msgstr "Conteúdo" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "Copiado" @@ -1561,19 +1552,13 @@ msgstr "Copiado!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "Copiar" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "Copiar códigos" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "Copiar" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "Actualização do Core" @@ -1677,7 +1662,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "Criar cliente facilita comunicação com o servidor CA" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "Credencial" @@ -1709,7 +1694,7 @@ msgstr "Ligações ativas atuais" msgid "Current Content" msgstr "Conteúdo atual" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "Palavra-passe atual" @@ -1735,11 +1720,11 @@ msgstr "Expressão cron personalizada" msgid "Custom Directory" msgstr "Diretório personalizado" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "Domínios personalizados" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "Certificado de Domínios Personalizados" @@ -1800,22 +1785,21 @@ msgstr "Ficheiro da base de dados não encontrado" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "Configuração DDNS eliminada" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "Visão Geral do DDNS" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS guardado" #: src/constants/errors/geolite.ts:12 msgid "Decompression succeeded but failed to delete compressed file: {0}" -msgstr "" -"Descompressão bem-sucedida, mas falha ao eliminar o ficheiro comprimido: {0}" +msgstr "Descompressão bem-sucedida, mas falha ao eliminar o ficheiro comprimido: {0}" #: src/constants/errors/middleware.ts:3 msgid "Decryption failed" @@ -1840,7 +1824,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "Eliminar" @@ -1925,8 +1909,8 @@ msgstr "Demonstração" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" "O modo de demonstração está ativado. Este terminal só permite um pequeno " "conjunto de comandos seguros de apenas leitura." @@ -2040,7 +2024,7 @@ msgstr "Desativar" msgid "Disable" msgstr "Desativar" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "Falha ao desativar a renovação automática para %{name}" @@ -2095,7 +2079,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "Desativar o fluxo %{name} de %{node} com sucesso" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2214,19 +2198,17 @@ msgstr "Deseja %{action} este site?" msgid "Do you want to %{action} this stream?" msgstr "Deseja %{action} este fluxo?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "Desactivar a renovação automática do certificado?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "Desactivar este site?" +msgstr "Deseja desativar os sites selecionados?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "Activar este stream?" +msgstr "Deseja ativar os sites selecionados?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2245,10 +2227,6 @@ msgstr "Remover este upstream?" msgid "Docker client not initialized" msgstr "Cliente Docker não inicializado" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "O socket do Docker existe" @@ -2257,10 +2235,6 @@ msgstr "O socket do Docker existe" msgid "Docker socket not exist" msgstr "O socket do Docker não existe" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2271,15 +2245,18 @@ msgstr[0] "Documento" msgid "Document Count" msgstr "Contagem de documentos" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "Domínio" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "Domínios" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" -msgstr "" -"A lista de domínios está vazia, tente reabrir o Auto Cert para %{config}" +msgstr "A lista de domínios está vazia, tente reabrir o Auto Cert para %{config}" #: src/views/certificate/components/CertificateDownload.vue:94 msgid "Download Certificate Files" @@ -2324,7 +2301,8 @@ msgid "" "non-HTTPS websites, except when running on localhost." msgstr "" "Devido às políticas de segurança de alguns navegadores, não é possível " -"utilizar passkeys em sites não HTTPS, exceto quando em execução no localhost." +"utilizar passkeys em sites não HTTPS, exceto quando em execução no " +"localhost." #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2422,7 +2400,7 @@ msgstr "Ativar indexação avançada" msgid "Enable Advanced Log Indexing" msgstr "Ativar indexação avançada de registros" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "Activação de renovação automática para %{name} falhou" @@ -2434,7 +2412,7 @@ msgstr "Ativar conclusão de código" msgid "Enable compression for content transfer" msgstr "Ativar compressão para transferência de conteúdo" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "Ativar DDNS" @@ -2531,7 +2509,7 @@ msgid "Enable TOTP" msgstr "Ativar TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2555,13 +2533,11 @@ msgstr "Activado com sucesso" #: src/views/preference/tabs/ServerSettings.vue:52 msgid "Enables HTTP/2 support with multiplexing and server push capabilities" -msgstr "" -"Ativa o suporte a HTTP/2 com capacidades de multiplexação e push do servidor" +msgstr "Ativa o suporte a HTTP/2 com capacidades de multiplexação e push do servidor" #: src/views/preference/tabs/ServerSettings.vue:56 msgid "Enables HTTP/3 support based on QUIC protocol for best performance" -msgstr "" -"Ativa o suporte a HTTP/3 baseado no protocolo QUIC para melhor desempenho" +msgstr "Ativa o suporte a HTTP/3 baseado no protocolo QUIC para melhor desempenho" #: src/views/nginx_log/components/IndexingSettingsModal.vue:110 msgid "" @@ -2585,10 +2561,19 @@ msgstr "Fim" msgid "End Date" msgstr "Data de término" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "Introduza o nome do certificado" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "Inserir nome de domínio" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "Introduzir endereço IP" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "Insira o endereço IP do servidor (ex. 203.0.113.1 ou 2001:db8::1)" @@ -2606,7 +2591,7 @@ msgstr "" "encontrado no ficheiro oculto do diretório de configuração para desbloquear " "a configuração." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "Insira o seu domínio" @@ -2618,7 +2603,7 @@ msgstr "A configuração do ambiente está vazia" msgid "Environment variables cleaned" msgstr "Variáveis de ambiente limpas" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2651,8 +2636,8 @@ msgstr "Logs de Erro" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "" "Os registos de erro não suportam análise estruturada, pois contêm mensagens " "de texto livre." @@ -2702,7 +2687,7 @@ msgid "Expected Text" msgstr "Texto esperado" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "Expirou" @@ -2724,18 +2709,13 @@ msgstr "" #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" "ID da chave de vinculação de conta externa (opcional). Necessário para " "alguns fornecedores ACME como o ZeroSSL." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "Contentor Docker externo" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "Contentor Docker externo" @@ -2758,6 +2738,7 @@ msgstr "Obtenção de Certificado Falhou" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "Falhou" @@ -2997,6 +2978,11 @@ msgstr "Falha ao gerar a chave AES: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "Falha ao gerar o vetor de inicialização: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "Falha ao gerar o certificado autoassinado" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "Busca de informação do certificado falhou" @@ -3328,11 +3314,10 @@ msgid "For commercial or professional use, contact" msgstr "Para uso comercial ou profissional, contacte" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "" -"Para registos de erros, utilize o Visualizador de Registos em Bruto para uma " -"melhor experiência de visualização." +"Para registos de erros, utilize o Visualizador de Registos em Bruto para " +"uma melhor experiência de visualização." #: src/components/AutoCertForm/AutoCertForm.vue:140 msgid "" @@ -3345,8 +3330,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" "Para certificados baseados em IP, por favor especifique o endereço IP do " "servidor que será incluído no certificado." @@ -3398,17 +3383,19 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "" "Modo de depuração do frontend: fluxo de instalação concluído sem enviar uma " "solicitação ao backend" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "" -"Modo de depuração do frontend: fluxo de restauração concluído sem enviar uma " -"solicitação ao backend" +"Modo de depuração do frontend: fluxo de restauração concluído sem enviar " +"uma solicitação ao backend" #: src/views/nginx_log/structured/components/SearchFilters.vue:65 msgid "Full Text Search" @@ -3422,21 +3409,24 @@ msgstr "Suporte a pesquisa de texto completo" msgid "General Certificate" msgstr "Certificado Geral" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "Gerar" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "Gerar" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "Gerar novos códigos de recuperação" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "Gerar novos códigos de recuperação" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "Gerar códigos de recuperação" @@ -3444,6 +3434,14 @@ msgstr "Gerar códigos de recuperação" msgid "Generate recovery codes successfully" msgstr "Códigos de recuperação gerados com sucesso" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "Gerar certificado autoassinado" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "Gerar certificado autoassinado" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "Gerar chave privada para registo de conta" @@ -3474,8 +3472,8 @@ msgid "" "GeoLite2 database not found at {0}. Log indexing requires GeoLite2 database " "for geographic IP analysis" msgstr "" -"Base de dados GeoLite2 não encontrada em {0}. A indexação de registos requer " -"a base de dados GeoLite2 para análise geográfica de IP" +"Base de dados GeoLite2 não encontrada em {0}. A indexação de registos " +"requer a base de dados GeoLite2 para análise geográfica de IP" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:150 msgid "GeoLite2 Database Required" @@ -3522,6 +3520,10 @@ msgstr "Vá para DNS > Credenciais para criar ou gerenciar credenciais" msgid "Go to Raw Log Viewer" msgstr "Ir para o Visualizador de Logs Brutos" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "Ir para códigos de recuperação" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3592,10 +3594,6 @@ msgstr "Esconder" msgid "Hide Assistant" msgstr "Ocultar assistente" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3617,27 +3615,10 @@ msgid "Home" msgstr "Início" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "Host" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "Host, por ex. @ ou www" @@ -3681,15 +3662,14 @@ msgid "" "ban threshold minutes, the ip will be banned for a period of time." msgstr "" "Se o número de tentativas de início de sessão falhadas de um IP atingir o " -"máximo de tentativas em minutos de limite de banimento, o IP será banido por " -"um período de tempo." +"máximo de tentativas em minutos de limite de banimento, o IP será banido " +"por um período de tempo." #: src/components/AutoCertForm/AutoCertForm.vue:280 msgid "" "If you want to automatically revoke the old certificate, please enable this " "option." -msgstr "" -"Se desejar revogar automaticamente o certificado antigo, ative esta opção." +msgstr "Se desejar revogar automaticamente o certificado antigo, ative esta opção." #: src/views/nginx_log/components/IndexingSettingsModal.vue:167 msgid "" @@ -3713,12 +3693,12 @@ msgstr "" "Se o seu domínio tiver registos CNAME e não conseguir obter certificados, " "terá de ativar esta opção." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "Importar" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "Importar Certificados" @@ -3781,7 +3761,7 @@ msgstr "A indexar..." msgid "Indicator" msgstr "Indicador" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "Informação" @@ -3805,7 +3785,7 @@ msgstr "Inicializando o atualizador core" msgid "Input the code from the app:" msgstr "Introduza o código da app:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "Introduza o código de recuperação:" @@ -3854,8 +3834,7 @@ msgstr "Instalação" #: src/constants/errors/system.ts:3 msgid "Installation is not allowed after 10 minutes of system startup" -msgstr "" -"A instalação não é permitida após 10 minutos de inicialização do sistema" +msgstr "A instalação não é permitida após 10 minutos de inicialização do sistema" #: src/views/install/components/TimeoutAlert.vue:11 msgid "" @@ -3865,12 +3844,12 @@ msgstr "" "A instalação não é permitida após 10 minutos do arranque do sistema, por " "favor reinicie a interface Nginx." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "Intervalo" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "Intervalo (segundos)" @@ -3944,7 +3923,7 @@ msgstr "Código OTP inválido" msgid "Invalid padding in decrypted data" msgstr "Preenchimento inválido nos dados desencriptados" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "Passcode ou código de recuperação inválido" @@ -3997,15 +3976,43 @@ msgstr "Endereço IP" msgid "IP Address / Target" msgstr "Endereço IP / Destino" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "Endereços IP" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "Aviso de Certificado IP" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "Versão IP" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "Apenas IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4 depois IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "Apenas IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6 e depois IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "Emissão falhou" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "Emitir certificado" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "Emitir certificado" @@ -4013,10 +4020,18 @@ msgstr "Emitir certificado" msgid "Issued certificate successfully" msgstr "Certificado emitido com sucesso" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "Emitido com sucesso" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "Emissor: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "A emitir..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "item(ns)" @@ -4030,15 +4045,16 @@ msgid "" "Keep your recovery codes as safe as your password. We recommend saving them " "with a password manager." msgstr "" -"Mantenha os seus códigos de recuperação tão seguros como a sua palavra-" -"passe. Recomendamos guardá-los com um gestor de palavras-passe." +"Mantenha os seus códigos de recuperação tão seguros como a sua " +"palavra-passe. Recomendamos guardá-los com um gestor de palavras-passe." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60 msgid "Keepalive Timeout" msgstr "Tempo limite de Keepalive" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "Tipo de Chave" @@ -4120,7 +4136,7 @@ msgstr "Última indexação" msgid "Last month" msgstr "Mês passado" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "Última execução" @@ -4136,6 +4152,10 @@ msgstr "Última atualização:" msgid "Last used at" msgstr "Última utilização em" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "Mais tarde" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "Deixe em branco para não alterar" @@ -4157,10 +4177,10 @@ msgid "Leave blank if you don't need this." msgstr "Deixe em branco se não precisar disto." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "Deixe em branco para padrão: https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "" +"Deixe em branco para usar o endpoint do Atlas Cloud: " +"https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4169,10 +4189,18 @@ msgstr "Deixe em branco para padrão: https://api.openai.com/" msgid "Leave blank will not change anything" msgstr "Deixar em branco não vai mudar nada" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"O código de recuperação antigo foi descontinuado. Gere novos códigos de " +"recuperação para manter a recuperação da conta segura." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" -msgstr "" -"Código de recuperação antigo não permitido porque o TOTP não está ativado" +msgstr "Código de recuperação antigo não permitido porque o TOTP não está ativado" #: src/components/AutoCertForm/AutoCertForm.vue:268 msgid "Lego disable CNAME Support" @@ -4226,7 +4254,7 @@ msgstr "A escutar" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4274,18 +4302,14 @@ msgstr "A carregar..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "Local" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "Caminho local (ex., /var/backups)" @@ -4298,19 +4322,20 @@ msgstr "Localização" msgid "Locations" msgstr "Localizações" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "Log" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" "O ficheiro de registo %{log_path} não é um ficheiro regular. Se estiver a " -"utilizar o nginx-ui num contentor Docker, consulte https://nginxui.com/zh_CN/" -"guide/config-nginx-log.html para obter mais informações." +"utilizar o nginx-ui num contentor Docker, consulte " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html para obter mais " +"informações." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4347,14 +4372,14 @@ msgstr "Lista de registos" #: src/constants/errors/nginx_log.indexer.ts:2 msgid "Log parser is not initialized; call indexer.InitLogParser() before use" msgstr "" -"O analisador de registos não foi inicializado; chame indexer.InitLogParser() " -"antes de usar" +"O analisador de registos não foi inicializado; chame " +"indexer.InitLogParser() antes de usar" #: src/constants/errors/nginx_log.ts:12 msgid "Log path is not under whitelist" msgstr "O caminho do registo não está na lista branca" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "Autenticar" @@ -4362,7 +4387,7 @@ msgstr "Autenticar" msgid "Login successful" msgstr "Autenticado com sucesso" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "Log-out com sucesso" @@ -4372,12 +4397,12 @@ msgstr "Logrotate" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" "O Logrotate, por defeito, está activado na maioria das distribuições Linux " "convencionais para utilizadores que instalam o Nginx UI na máquina host, " @@ -4411,15 +4436,13 @@ msgstr "Modo de manutenção desativado com sucesso" msgid "Maintenance mode enabled successfully" msgstr "Modo de manutenção ativado com sucesso" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "Modo de manutenção ativado com sucesso" +msgstr "Modelo de manutenção (apenas nome do ficheiro)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "Manutenção" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4553,10 +4576,6 @@ msgstr "Design de memória" msgid "Memory Usage (RSS)" msgstr "Uso de memória (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4590,7 +4609,7 @@ msgstr "Minuto" msgid "Minutes" msgstr "Minutos" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "Espelho" @@ -4619,7 +4638,7 @@ msgid "Modify" msgstr "Modificar" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "Modificar Certificado" @@ -4651,10 +4670,9 @@ msgstr "Mensal" msgid "Monthly on day %{day} at %{time}" msgstr "Mensalmente no dia %{day} às %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "Diretório protegido" +msgstr "Diretório montado" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4684,6 +4702,7 @@ msgstr "N/D" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4758,7 +4777,7 @@ msgstr "Erro no novo cliente lego: {0}" msgid "New name" msgstr "Novo nome" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "Nova senha" @@ -4774,12 +4793,11 @@ msgstr "Erro de transporte novo: {0}" msgid "New version released" msgstr "Nova versão lançada" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "Próximo" @@ -4791,7 +4809,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "A saída de Nginx -T está vazia" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Caminho para Logs de Acesso do Nginx" @@ -4845,11 +4863,11 @@ msgstr "A configuração do Nginx foi restaurada" msgid "Nginx Configuration Parse Error" msgstr "Erro na análise de configuração do Nginx" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Caminho de configuração do Nginx" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Diretório de configurações do Nginx" @@ -4857,7 +4875,7 @@ msgstr "Diretório de configurações do Nginx" msgid "Nginx Control" msgstr "Controle Nginx" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Modo de Controlo do Nginx" @@ -4866,7 +4884,7 @@ msgstr "Modo de Controlo do Nginx" msgid "Nginx CPU usage rate" msgstr "Taxa de utilização da CPU do Nginx" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Caminho para Logs de Erro do Nginx" @@ -4902,7 +4920,7 @@ msgstr "O Nginx está em execução" msgid "Nginx Log" msgstr "Logs do Nginx" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Lista branca de diretórios de registros do Nginx" @@ -4915,7 +4933,7 @@ msgstr "Indexação de logs do Nginx..." msgid "Nginx Memory usage" msgstr "Uso de memória do Nginx" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Caminho do PID do Nginx" @@ -4923,7 +4941,7 @@ msgstr "Caminho do PID do Nginx" msgid "Nginx PID path exists" msgstr "O caminho do PID do Nginx existe" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Comando de Recarregamento do Nginx" @@ -4934,8 +4952,7 @@ msgstr "Recarga do Nginx falhou: {0}" #: src/views/node/Node.vue:88 msgid "Nginx reload operations have been dispatched to remote nodes" -msgstr "" -"As operações de recarregamento do Nginx foram enviadas para os nós remotos" +msgstr "As operações de recarregamento do Nginx foram enviadas para os nós remotos" #: src/components/NginxControl/NginxControl.vue:26 msgid "Nginx reloaded successfully" @@ -4945,7 +4962,7 @@ msgstr "Nginx recarregado com sucesso" msgid "Nginx reported a configuration syntax error." msgstr "O Nginx reportou um erro de sintaxe na configuração." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Comando de reinício do Nginx" @@ -4961,7 +4978,7 @@ msgstr "Nginx reiniciado com sucesso" msgid "Nginx sbin path exists" msgstr "O caminho sbin do Nginx existe" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Comando de teste de configuração do Nginx" @@ -4984,11 +5001,21 @@ msgstr "A configuração do Nginx UI foi restaurada" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "" -"A configuração do Nginx UI foi restaurada e irá reiniciar automaticamente em " -"alguns segundos." +"A configuração do Nginx UI foi restaurada e irá reiniciar automaticamente " +"em alguns segundos." + +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"O Nginx UI renovará automaticamente este certificado à medida que a sua " +"expiração se aproximar, com base no intervalo global de renovação de " +"certificados e no período de validade deste certificado." #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" @@ -5016,7 +5043,7 @@ msgid "No" msgstr "Não" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "Sem ação" @@ -5054,10 +5081,6 @@ msgstr "Nenhuma entrada na página atual" msgid "No geographic data available" msgstr "Nenhum dado geográfico disponível" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "Nenhum registo encontrado no intervalo de tempo selecionado." @@ -5119,7 +5142,7 @@ msgstr "Estado do Nó" msgid "Nodes" msgstr "Nós" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "Não Depois" @@ -5140,7 +5163,7 @@ msgstr "Não indexado" msgid "Not Loaded" msgstr "Não carregado" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "Ainda não executado" @@ -5222,7 +5245,7 @@ msgstr "Número de processos de trabalho" msgid "Obtain cert error: {0}" msgstr "Erro ao obter certificado: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "Obter certificado" @@ -5276,7 +5299,7 @@ msgstr "Login OIDC" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5321,10 +5344,6 @@ msgstr "Apenas ficheiros ZIP são permitidos" msgid "Open" msgstr "Aberto" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "Limitação de código aberto" @@ -5341,7 +5360,7 @@ msgstr "Estatísticas do sistema operativo" msgid "Optional comment for this DNS record" msgstr "Comentário opcional para este registo DNS" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "Ou" @@ -5390,11 +5409,6 @@ msgstr "Outros" msgid "Otp or recovery code empty" msgstr "Código OTP ou de recuperação vazio" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "Substituir ficheiro existente" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "Substituir" @@ -5430,10 +5444,10 @@ msgid "" "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -"As passkeys são credenciais WebAuthn que validam a sua identidade utilizando " -"toque, reconhecimento facial, uma palavra-passe do dispositivo ou um PIN. " -"Podem ser usadas como substituto de palavra-passe ou como método de " -"autenticação de dois fatores (2FA)." +"As passkeys são credenciais WebAuthn que validam a sua identidade " +"utilizando toque, reconhecimento facial, uma palavra-passe do dispositivo " +"ou um PIN. Podem ser usadas como substituto de palavra-passe ou como método " +"de autenticação de dois fatores (2FA)." #: src/views/other/Login.vue:308 src/views/user/userColumns.tsx:16 msgid "Password" @@ -5443,10 +5457,6 @@ msgstr "Palavra-passe" msgid "Password (*)" msgstr "Palavra-passe (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "Palavra-passe incorreta" @@ -5455,11 +5465,11 @@ msgstr "Palavra-passe incorreta" msgid "Password length cannot exceed 20 characters" msgstr "O comprimento da palavra-passe não pode exceder 20 caracteres" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "Palavra-passe atualizada com sucesso" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "As palavras-passe não coincidem" @@ -5531,7 +5541,7 @@ msgstr "Configurações de desempenho guardadas com sucesso" msgid "Performing core upgrade" msgstr "Executando actualização do core" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "Informações pessoais" @@ -5576,6 +5586,12 @@ msgstr "" msgid "Please enter" msgstr "Por favor, insira" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "Por favor, introduza um nome para o certificado" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5596,15 +5612,21 @@ msgstr "Por favor, insira um endereço IPv4 ou IPv6 válido" msgid "Please enter a valid port range" msgstr "Por favor, insira um intervalo de portas válido" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "Por favor, insira pelo menos um domínio" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "Por favor, introduza pelo menos um domínio ou endereço IP" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "Por favor, insira o segredo de instalação antes de continuar" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "Por favor, insira o código OTP:" @@ -5615,8 +5637,7 @@ msgstr "Por favor, insira o token de segurança" #: src/components/SystemRestore/SystemRestoreContent.vue:236 #: src/components/SystemRestore/SystemRestoreContent.vue:319 msgid "Please enter the security token received during backup" -msgstr "" -"Por favor, insira o token de segurança recebido durante a cópia de segurança" +msgstr "Por favor, insira o token de segurança recebido durante a cópia de segurança" #: src/components/AutoCertForm/AutoCertForm.vue:80 msgid "Please enter the server IP address" @@ -5654,8 +5675,8 @@ msgstr "" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "" "Por favor, gere novos códigos de recuperação nas preferências imediatamente " "para evitar bloqueio." @@ -5703,15 +5724,12 @@ msgid "Please log in." msgstr "Por favor, faça login." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." -msgstr "" -"Note que as definições da unidade de tempo abaixo estão todas em segundos." +msgid "Please note that the unit of time configurations below are all in seconds." +msgstr "Note que as definições da unidade de tempo abaixo estão todas em segundos." #: src/views/install/components/InstallView.vue:136 msgid "Please resolve all issues before proceeding with installation" -msgstr "" -"Por favor, resolva todos os problemas antes de prosseguir com a instalação" +msgstr "Por favor, resolva todos os problemas antes de prosseguir com a instalação" #: src/views/backup/components/BackupCreator.vue:107 msgid "Please save this security token, you will need it for restoration:" @@ -5729,7 +5747,7 @@ msgstr "" "Por favor, selecione um certificado antes de guardar a configuração do " "servidor TLS." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "Por favor, selecione uma credencial DNS" @@ -5809,10 +5827,6 @@ msgstr "Preferencia" msgid "Preparing lego configurations" msgstr "Preparando configurações lego" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5831,10 +5845,6 @@ msgstr "IPs privados (192.168.x.x, 10.x.x.x, 172.16-31.x.x) falharão" msgid "private key" msgstr "chave privada" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "Processo" @@ -5878,13 +5888,14 @@ msgstr "Protocolo" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" "A configuração do protocolo só tem efeito ao conectar diretamente. Se " "estiver a usar um proxy inverso, configure o protocolo separadamente no " "proxy inverso." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5923,14 +5934,6 @@ msgstr "Destinos do proxy" msgid "Public CA Requirements:" msgstr "Requisitos da CA pública:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "Número de Segurança Pública" @@ -6031,11 +6034,11 @@ msgstr "Tipo de registo" msgid "Record updated" msgstr "Registo atualizado" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "Registos" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "Recuperação" @@ -6068,7 +6071,7 @@ msgstr "Mensagens de Redirecionamento (3xx)" msgid "Referer" msgstr "Referência" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "Atualizar" @@ -6077,11 +6080,6 @@ msgstr "Atualizar" msgid "Refresh Modules Cache" msgstr "Atualizar cache de módulos" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "Regerar a resposta" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "Regerar a resposta" @@ -6140,7 +6138,7 @@ msgid "Reload" msgstr "Recarregar" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Recarregar Nginx" @@ -6167,8 +6165,7 @@ msgstr "Recarregamento remoto do Nginx bem-sucedido" #: src/components/NamespaceTabs/NamespaceTabs.vue:85 msgid "Reload request failed, please check your network connection" -msgstr "" -"O pedido de recarregamento falhou, por favor verifique a sua ligação à rede" +msgstr "O pedido de recarregamento falhou, por favor verifique a sua ligação à rede" #: src/components/NginxControl/NginxControl.vue:77 msgid "Reloading" @@ -6178,16 +6175,12 @@ msgstr "Recarregando" msgid "Reloading nginx" msgstr "Recarregando Nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "Remoto" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "Nenhum nó selecionado" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "Remover" @@ -6197,6 +6190,10 @@ msgstr "Remover" msgid "Remove successfully" msgstr "Removido com sucesso" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "Removido(s) %{count} registo(s) conflituoso(s): %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "Removido com sucesso" @@ -6276,8 +6273,8 @@ msgstr "Renomeado com sucesso" msgid "Renew cert error: {0}" msgstr "Erro ao renovar certificado: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "Renovar Certificado" @@ -6289,8 +6286,7 @@ msgstr "Erro ao Renovar Certificado" msgid "Renew Certificate Success" msgstr "Certificado Renovado com Sucesso" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "Renovado com Sucesso" @@ -6419,6 +6415,19 @@ msgstr "Restaurar esta versão" msgid "Restored successfully" msgstr "Restaurado com sucesso" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "Repetir" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "Tentar novamente a emissão do certificado" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "Revisar primeiro" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6467,11 +6476,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "Modo de Execução" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "Renovar Certificado" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "Executando" @@ -6591,7 +6595,7 @@ msgstr "Sábado" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6601,19 +6605,14 @@ msgstr "Sábado" msgid "Save" msgstr "Salvar" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "Configuração de armazenamento" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "Salvar Directiva" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "Guardar agora" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "Salvar ordem" @@ -6656,15 +6655,19 @@ msgstr "Fluxo %{name} guardado em %{node} com sucesso" msgid "Save successful" msgstr "Salvo com sucesso" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "Salvo com sucesso" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "Guardar a configuração do site agora?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "A resposta do certificado salvo não tem um ID." #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6674,6 +6677,15 @@ msgstr "" msgid "Saved successfully" msgstr "Salvo com sucesso" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"Falha ao guardar a configuração do site; as diretivas do certificado estão " +"no editor — reveja as alterações e tente novamente a partir do botão " +"Guardar." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "O caminho sbin não existe" @@ -6724,7 +6736,7 @@ msgstr "SDK" msgid "Search" msgstr "Pesquisar" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "Pesquisar domínio, fornecedor ou alvo" @@ -6756,7 +6768,7 @@ msgstr "Pesquisar modelos" msgid "Secret has been copied" msgstr "O segredo foi copiado" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "Configurações de segurança" @@ -6804,6 +6816,10 @@ msgstr "Selecionar domínio DNS" msgid "Select existing record" msgstr "Selecionar registo existente" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "Selecionar registos A/AAAA correspondentes" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6832,6 +6848,24 @@ msgstr "" "A auto-verificação falhou, a interface do utilizador do Nginx pode não " "funcionar corretamente" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "Certificado autoassinado" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "Certificado autoassinado" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "Certificado autoassinado aplicado" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "Certificado autoassinado gerado" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6846,7 +6880,7 @@ msgid "Server" msgstr "Servidor" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "Erro do servidor" @@ -6874,7 +6908,7 @@ msgstr "Tamanho do balde hash de nomes de servidor" msgid "Server names hash table size" msgstr "Tamanho da tabela hash de nomes de servidor" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "server_name não encontrado em directivas" @@ -6896,8 +6930,7 @@ msgstr "Erro ao definir ambiente: {0}" #: src/constants/errors/cert.ts:18 msgid "Set env flag to disable lego CNAME support error: {0}" -msgstr "" -"Definir flag de ambiente para desativar suporte CNAME do lego erro: {0}" +msgstr "Definir flag de ambiente para desativar suporte CNAME do lego erro: {0}" #: src/views/preference/tabs/CertSettings.vue:42 msgid "" @@ -6925,19 +6958,19 @@ msgstr "Definindo provedor de HTTP01 challenge" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath está vazio, consulte https://nginxui." -"com/guide/config-nginx.html para mais informações" +"Settings.NginxLogSettings.AccessLogPath está vazio, consulte " +"https://nginxui.com/guide/config-nginx.html para mais informações" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath está vazio, consulte https://nginxui." -"com/guide/config-nginx.html para mais informações" +"Settings.NginxLogSettings.ErrorLogPath está vazio, consulte " +"https://nginxui.com/guide/config-nginx.html para mais informações" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6956,7 +6989,7 @@ msgstr "Mostrar" msgid "Show Assistant" msgstr "Mostrar assistente" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "Iniciar sessão com uma chave de acesso" @@ -7042,10 +7075,6 @@ msgstr "Tamanho" msgid "Skip Installation" msgstr "Ignorar instalação" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "Tempo de espera entre iterações do carregador de cache" @@ -7058,6 +7087,10 @@ msgstr "Tempo de espera entre iterações do gestor de cache" msgid "Socket" msgstr "Socket" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "Alguns navegadores rejeitam certificados TLS válidos por mais de 398 dias." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "Ordenado por" @@ -7074,15 +7107,6 @@ msgstr "Patrocinador" msgid "SSD storage for better I/O performance" msgstr "Armazenamento SSD para melhor desempenho de E/S" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "2+ núcleos recomendados" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7123,7 +7147,8 @@ msgstr "O caminho do certificado SSL é necessário quando o HTTPS está ativado #: src/constants/errors/system.ts:12 msgid "SSL key file must be under Nginx configuration directory: {0}" msgstr "" -"O ficheiro de chave SSL deve estar no diretório de configuração do Nginx: {0}" +"O ficheiro de chave SSL deve estar no diretório de configuração do Nginx: " +"{0}" #: src/constants/errors/system.ts:10 msgid "SSL key file not found" @@ -7171,9 +7196,9 @@ msgstr "Estático" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7248,7 +7273,7 @@ msgstr "O diretório streams-enabled não existe" msgid "Structured" msgstr "Estruturado" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Porta de estado stub" @@ -7256,7 +7281,7 @@ msgstr "Porta de estado stub" msgid "Stub_status is not enabled" msgstr "Stub_status não está ativado" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7274,12 +7299,12 @@ msgstr "Domingo" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" -"Suporta a comunicação com o backend através do protocolo WebSocket. Se a sua " -"interface Nginx está a ser utilizada através de um proxy inverso Nginx, " +"Suporta a comunicação com o backend através do protocolo WebSocket. Se a " +"sua interface Nginx está a ser utilizada através de um proxy inverso Nginx, " "consulte este link para escrever o ficheiro de configuração correspondente: " "https://nginxui.com/guide/nginx-proxy-example.html" @@ -7368,6 +7393,7 @@ msgid "Sync strategy" msgstr "Estratégia de sincronização" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "Sincronizar para" @@ -7405,21 +7431,13 @@ msgstr "Restauro do sistema" msgid "System restored successfully." msgstr "Sistema restaurado com sucesso." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "Alvos" @@ -7484,29 +7502,39 @@ msgid "" "since it was last issued." msgstr "" "O certificado do domínio será verificado 30 minutos e será renovado se já " -"tiver passado mais de 1 semana ou o período que definiu nas definições desde " -"a última emissão." +"tiver passado mais de 1 semana ou o período que definiu nas definições " +"desde a última emissão." + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"O certificado foi gerado em %{path} e as diretivas ssl_certificate foram " +"adicionadas ao bloco de servidor atual. Guarde a configuração agora ou " +"reveja as alterações no editor e guarde manualmente." #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "Os seguintes sites serão desativados:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "Os seguintes sites serão ativados:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" -"A base de dados GeoLite2 é necessária para análise geográfica de IP offline. " -"Por favor, descarregue-a para ativar esta funcionalidade." +"A base de dados GeoLite2 é necessária para análise geográfica de IP " +"offline. Por favor, descarregue-a para ativar esta funcionalidade." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" "A base de dados GeoLite2 fornece informações geográficas para endereços IP. " "É utilizada para análise geográfica offline em análises de registos." @@ -7532,15 +7560,16 @@ msgid "" "The linked DNS record was deleted from the DNS server. You can recreate it " "or clear the link." msgstr "" -"O registo DNS ligado foi eliminado do servidor DNS. Pode recriá-lo ou limpar " -"a ligação." +"O registo DNS ligado foi eliminado do servidor DNS. Pode recriá-lo ou " +"limpar a ligação." #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" -"O caminho do registo não está sob os caminhos em settings.NginxSettings." -"LogDirWhiteList" +"O caminho do registo não está sob os caminhos em " +"settings.NginxSettings.LogDirWhiteList" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 @@ -7552,11 +7581,10 @@ msgstr "" "traços, dois pontos e pontos." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" -"O modelo utilizado para a conclusão de código, se não estiver definido, será " -"utilizado o modelo de chat." +"O modelo utilizado para a conclusão de código, se não estiver definido, " +"será utilizado o modelo de chat." #: src/views/preference/tabs/NodeSettings.vue:18 msgid "" @@ -7593,8 +7621,8 @@ msgid "" "version. To avoid potential errors, please upgrade the remote Nginx UI to " "match the local version." msgstr "" -"A versão remota do Nginx UI não é compatível com a versão local do Nginx UI. " -"Para evitar possíveis erros, atualize a versão remota do Nginx UI para " +"A versão remota do Nginx UI não é compatível com a versão local do Nginx " +"UI. Para evitar possíveis erros, atualize a versão remota do Nginx UI para " "corresponder à versão local." #: src/components/AutoCertForm/AutoCertForm.vue:155 @@ -7627,7 +7655,7 @@ msgstr "Conexões simultâneas máximas teóricas:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "RPS máximo teórico (Pedidos Por Segundo):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " @@ -7650,8 +7678,8 @@ msgid "" "This backup uses an unsupported legacy format. Please create a new backup " "with a newer version before restoring." msgstr "" -"Este backup utiliza um formato legado não suportado. Por favor, crie um novo " -"backup com uma versão mais recente antes de restaurar." +"Este backup utiliza um formato legado não suportado. Por favor, crie um " +"novo backup com uma versão mais recente antes de restaurar." #: src/views/certificate/components/AutoCertManagement.vue:35 msgid "This certificate is managed by Nginx UI" @@ -7682,23 +7710,20 @@ msgid "This field should not be empty" msgstr "Este campo não pode estar vazio" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." -msgstr "" -"Este campo deve conter apenas letras, caracteres Unicode, números e -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." +msgstr "Este campo deve conter apenas letras, caracteres Unicode, números e -_." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" -msgstr "" -"Este campo deve conter apenas letras, caracteres Unicode, números e -_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" +msgstr "Este campo deve conter apenas letras, caracteres Unicode, números e -_./:" #: src/components/Notification/notifications.ts:102 msgid "This is a test message sent at %{timestamp} from Nginx UI." msgstr "" -"Esta é uma mensagem de teste enviada em %{timestamp} da interface do usuário " -"nginx." +"Esta é uma mensagem de teste enviada em %{timestamp} da interface do " +"usuário nginx." #: src/components/SelfCheck/store.ts:25 msgid "" @@ -7708,10 +7733,6 @@ msgstr "" "Este modo apenas pré-visualiza o fluxo da UI de instalação e não altera " "qualquer estado do servidor." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " @@ -7736,11 +7757,19 @@ msgstr "" "Esta operação irá apenas remover o certificado da base de dados. Os " "ficheiros do certificado no sistema de ficheiros não serão eliminados." +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "" +"Este certificado autoassinado é gerido pelo Nginx UI e renovado " +"automaticamente." + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" "Este site está configurado como um servidor padrão (default_server) para " "HTTPS (porta 443). Os certificados IP requerem suporte de uma Autoridade de " @@ -7749,8 +7778,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" "Este site utiliza um nome de servidor curinga (_) que normalmente indica um " @@ -7780,8 +7809,8 @@ msgid "" "deleted and rebuilt from scratch. This may take some time. Continue?" msgstr "" "Isso irá reconstruir todo o índice de registros. Todos os dados de índice " -"existentes serão eliminados e reconstruídos do zero. Isto pode demorar algum " -"tempo. Continuar?" +"existentes serão eliminados e reconstruídos do zero. Isto pode demorar " +"algum tempo. Continuar?" #: src/views/nginx_log/indexing/IndexManagement.vue:56 msgid "This will rebuild the index data for this specific file: %{path}" @@ -7808,10 +7837,10 @@ msgstr "" "UI irá reiniciar após a conclusão da restauração." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" -"Isto vai actualizar ou reinstalar o Nginx UI em %{nodeNames} para %{version}." +"Isto vai actualizar ou reinstalar o Nginx UI em %{nodeNames} para " +"%{version}." #: src/views/preference/tabs/AuthSettings.vue:89 msgid "Throttle" @@ -7882,8 +7911,8 @@ msgstr "" #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" "Para garantir que a renovação automática da certificação funciona " @@ -8031,7 +8060,7 @@ msgstr "TTL (segundos)" msgid "Tuesday" msgstr "Terça-feira" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "Autenticação de dois fatores necessária" @@ -8052,10 +8081,6 @@ msgstr "Tipo" msgid "Type %{delete} to confirm" msgstr "Digite %{delete} para confirmar" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "Digite ou selecione registros A/AAAA" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "Digite ou selecione o navegador" @@ -8101,11 +8126,11 @@ msgstr "Formato de registo não suportado" msgid "Update already in progress" msgstr "Atualização já em progresso" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "Atualizar senha" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "Atualizar perfil" @@ -8194,11 +8219,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "Use @ para a raiz" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "Usar OTP" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "Usar o código de recuperação" @@ -8206,10 +8231,6 @@ msgstr "Usar o código de recuperação" msgid "Use Temporary Path" msgstr "Usar caminho temporário" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "Utilizador" @@ -8223,7 +8244,7 @@ msgstr "Agente do utilizador" msgid "User banned" msgstr "Utilizador banido" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "Informações do utilizador atualizadas com sucesso" @@ -8236,7 +8257,7 @@ msgid "User Profile" msgstr "Perfil do utilizador" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "Nome de Utilizador" @@ -8254,10 +8275,14 @@ msgstr "UV" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "Válido" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "Válido por (dias)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "Validar certificado SSL" @@ -8268,11 +8293,6 @@ msgstr "Validar certificado SSL" msgid "Value" msgstr "Valor" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "Verificar segredo" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8309,7 +8329,7 @@ msgstr "Ver todas notificações" msgid "View on GitHub" msgstr "Ver no GitHub" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "Ver códigos de recuperação" @@ -8337,7 +8357,7 @@ msgstr "Visitas" msgid "Waiting processes" msgstr "Processos em espera" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8352,8 +8372,8 @@ msgid "" "to restore." msgstr "" "Aviso: A operação de restauro irá substituir as configurações atuais. " -"Certifique-se de que tem um ficheiro de cópia de segurança válido e um token " -"de segurança, e selecione cuidadosamente o que restaurar." +"Certifique-se de que tem um ficheiro de cópia de segurança válido e um " +"token de segurança, e selecione cuidadosamente o que restaurar." #: src/components/AutoCertForm/AutoCertForm.vue:103 msgid "" @@ -8370,10 +8390,10 @@ msgstr "" msgid "We do not accept any feature requests" msgstr "Não aceitamos pedidos de funcionalidades" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" "Removeremos a configuração HTTPChallenge deste ficheiro e reiniciaremos o " "Nginx. Tem a certeza de que quer continuar?" @@ -8411,6 +8431,19 @@ msgstr "Semanalmente no %{day} às %{time}" msgid "Weight" msgstr "Peso" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"Quando ativado, o DDNS assume os nomes selecionados: emparelha " +"automaticamente registos da mesma família, cria registos em falta e remove " +"aqueles cuja família de IP está inacessível. Desative para gerir apenas os " +"registos que selecionou explicitamente e manter todo o restante estado DNS " +"inalterado." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8430,7 +8463,7 @@ msgstr "" "Quando ativar/desativar, eliminar ou guardar este site, os nós definidos no " "espaço de nomes e os nós selecionados abaixo serão sincronizados." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8442,7 +8475,7 @@ msgstr "" msgid "Whether to use a temporary path when writing temporary files" msgstr "Se deve usar um caminho temporário ao escrever ficheiros temporários" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "Certificado curinga" @@ -8461,7 +8494,7 @@ msgstr "Processos de trabalho" msgid "Workers" msgstr "Workers" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "Espaço de Trabalho" @@ -8500,8 +8533,8 @@ msgstr "Sim" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" "Está a aceder a este terminal através de uma ligação HTTP insegura num " "domínio que não é localhost. Isto pode expor informações sensíveis." @@ -8533,22 +8566,38 @@ msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." msgstr "" -"Não configuraste as definições do WebAuthn, por isso não podes adicionar uma " -"chave de acesso." +"Não configuraste as definições do WebAuthn, por isso não podes adicionar " +"uma chave de acesso." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" "Ainda não ativou a autenticação de dois fatores. Por favor, ative-a para " "gerar códigos de recuperação." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "Ainda não gerou códigos de recuperação." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"A sua conta ainda usa um código de recuperação antigo. Gere novos códigos " +"de recuperação após a verificação para manter a recuperação da conta segura." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"A sua conta utiliza um código de recuperação antigo e obsoleto. Gere novos " +"códigos de recuperação agora para concluir a migração e manter a " +"recuperação da conta segura." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" @@ -8556,8 +8605,17 @@ msgstr "" "favor, gere novos códigos de recuperação assim que possível para garantir a " "segurança." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"O seu código de recuperação antigo já foi usado e não pode ser utilizado " +"novamente. Gere novos códigos de recuperação agora para manter a " +"recuperação de conta disponível." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "Os seus códigos antigos não funcionarão mais." @@ -8569,6 +8627,61 @@ msgstr "As suas chaves de acesso" msgid "Zero-allocation pipeline" msgstr "Pipeline sem alocação" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "O Nginx não conseguiu validar a configuração." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "Autenticando..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Conectado" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "Conteúdo" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "Copiar" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "Contentor Docker externo" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "Gerar" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "Substituir ficheiro existente" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "Regerar a resposta" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "Nenhum nó selecionado" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "Renovar Certificado" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "2+ núcleos recomendados" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "Digite ou selecione registros A/AAAA" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "Verificar segredo" + #~ msgid "OpenAI" #~ msgstr "OpenAI" @@ -8578,15 +8691,14 @@ msgstr "Pipeline sem alocação" #~ "adulterado." #~ msgid "Once the verification is complete, the records will be removed." -#~ msgstr "" -#~ "Assim que a verificação estiver concluída, os registos serão removidos." +#~ msgstr "Assim que a verificação estiver concluída, os registos serão removidos." #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." #~ msgstr "" -#~ "Adicionaremos um ou mais registos TXT aos registos DNS do seu domínio " -#~ "para verificação de propriedade." +#~ "Adicionaremos um ou mais registos TXT aos registos DNS do seu domínio para " +#~ "verificação de propriedade." #~ msgid "Settings" #~ msgstr "Configurações" @@ -8685,8 +8797,7 @@ msgstr "Pipeline sem alocação" #~ msgstr "Falha ao avaliar os links simbólicos: {0}" #~ msgid "Failed to restore Nginx UI files: {0}" -#~ msgstr "" -#~ "Falha ao restaurar os ficheiros da interface de utilizador do Nginx: {0}" +#~ msgstr "Falha ao restaurar os ficheiros da interface de utilizador do Nginx: {0}" #~ msgid "Failed to write to zip buffer: {0}" #~ msgstr "Falha ao escrever no buffer ZIP: {0}" @@ -8707,8 +8818,7 @@ msgstr "Pipeline sem alocação" #~ msgstr "O endpoint S3 é inválido: {0}" #~ msgid "Storage path not in granted access paths: {0}" -#~ msgstr "" -#~ "Caminho de armazenamento não está nos caminhos de acesso concedidos: {0}" +#~ msgstr "Caminho de armazenamento não está nos caminhos de acesso concedidos: {0}" #~ msgid "files" #~ msgstr "arquivos" @@ -8755,15 +8865,14 @@ msgstr "Pipeline sem alocação" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" #~ "Suporte à comunicação com o backend através do protocolo Server-Sent " #~ "Events. Se a sua Nginx UI estiver a ser utilizada através de um proxy " -#~ "inverso Nginx, consulte este link para escrever o ficheiro de " -#~ "configuração correspondente: https://nginxui.com/guide/nginx-proxy-" -#~ "example.html" +#~ "inverso Nginx, consulte este link para escrever o ficheiro de configuração " +#~ "correspondente: https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "Se for deixado em branco, será utilizado o diretório CA padrão." @@ -8833,8 +8942,8 @@ msgstr "Pipeline sem alocação" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" #~ "Verifique se /var/run/docker.sock existe. Se estiver a utilizar a imagem " #~ "Docker oficial do Nginx UI, certifique-se de que o socket Docker está " @@ -8880,11 +8989,11 @@ msgstr "Pipeline sem alocação" #~ msgstr "Erro de Formato %{msg}" #~ msgid "" -#~ "If you lose your mobile phone, you can use the recovery code to reset " -#~ "your 2FA." +#~ "If you lose your mobile phone, you can use the recovery code to reset your " +#~ "2FA." #~ msgstr "" -#~ "Se perder o seu telemóvel, pode utilizar o código de recuperação para " -#~ "repor o seu 2FA." +#~ "Se perder o seu telemóvel, pode utilizar o código de recuperação para repor " +#~ "o seu 2FA." #~ msgid "Incorrect username or password" #~ msgstr "Utilizador ou senha incorrectos" @@ -8903,8 +9012,7 @@ msgstr "Pipeline sem alocação" #~ "Sincronização do Certificado %{cert_name} para %{env_name} falhou, por " #~ "favor actualize a versão remota do Nginx UI para a última versão" -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "" #~ "Sincronização do Certificado %{cert_name} para %{env_name} falhou, " #~ "resposta: %{resp}" @@ -8921,8 +9029,7 @@ msgstr "Pipeline sem alocação" #~ "Sincronização de configuração %{config_name} para %{env_name} falhou, " #~ "resposta: %{resp}" -#~ msgid "" -#~ "The recovery code is only displayed once, please save it in a safe place." +#~ msgid "The recovery code is only displayed once, please save it in a safe place." #~ msgstr "" #~ "O código de recuperação é apresentado apenas uma vez, guarde-o num local " #~ "seguro." @@ -8934,15 +9041,15 @@ msgstr "Pipeline sem alocação" #~ msgstr "Apenas gestão de registos DNS" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" -#~ "Os domínios DNS são usados para a gestão de registos DNS no NGINX UI e " -#~ "são separados dos desafios de certificado ACME DNS-01." +#~ "Os domínios DNS são usados para a gestão de registos DNS no NGINX UI e são " +#~ "separados dos desafios de certificado ACME DNS-01." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" #~ "Atualmente, a gestão de registos DNS suporta apenas Alibaba Cloud DNS, " #~ "Tencent Cloud DNS e Cloudflare." @@ -8954,6 +9061,7 @@ msgstr "Pipeline sem alocação" #~ "Para emissão de certificados ACME DNS-01, crie credenciais DNS em DNS > " #~ "Credenciais e selecione-as nas definições do certificado." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains utiliza apenas fornecedores com implementações de gestão de registos DNS." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "" +#~ "DNS Domains utiliza apenas fornecedores com implementações de gestão de " +#~ "registos DNS." diff --git a/app/src/language/ru_RU/app.po b/app/src/language/ru_RU/app.po index 947c9a47..aee71252 100644 --- a/app/src/language/ru_RU/app.po +++ b/app/src/language/ru_RU/app.po @@ -7,24 +7,24 @@ msgstr "" "POT-Creation-Date: \n" "PO-Revision-Date: 2025-03-28 02:45+0300\n" "Last-Translator: Artyom Isrofilov \n" -"Language-Team: Russian \n" +"Language-Team: Russian " +"\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.5\n" #: src/language/generate.ts:37 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}" -msgstr "" -"[Nginx UI] Пользователь ACME: %{name}, Email: %{email}, Каталог CA: %{caDir}" +msgstr "[Nginx UI] Пользователь ACME: %{name}, Email: %{email}, Каталог CA: %{caDir}" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" msgstr "" -"[Nginx UI] Резервное копирование текущего сертификата для последующего отзыва" +"[Nginx UI] Резервное копирование текущего сертификата для последующего " +"отзыва" #: src/language/generate.ts:39 msgid "[Nginx UI] Certificate renewed successfully" @@ -35,11 +35,10 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] Сертификат успешно отозван" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "" -"[Nginx UI] Сертификат использовался для сервера, перезагрузка TLS-" -"сертификата сервера" +"[Nginx UI] Сертификат использовался для сервера, перезагрузка " +"TLS-сертификата сервера" #: src/language/generate.ts:42 msgid "[Nginx UI] Creating client facilitates communication with the CA server" @@ -116,8 +115,8 @@ msgstr "* Включает узлы из группы %{groupName} и узлы, #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" "* Файлы индекса по умолчанию хранятся в каталоге \"log-index\" в пути " "конфигурации NGINX UI." @@ -131,10 +130,6 @@ msgstr "" "оперативной памяти. Фактическая производительность может отличаться в " "зависимости от конфигурации вашего оборудования." -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "%{count} сайтов выбрано" @@ -153,7 +148,8 @@ msgid "" "record management in DNS Domains is not supported for this provider." msgstr "" "%{provider} можно использовать для проверок сертификатов ACME DNS-01, но " -"управление DNS-записями в DNS Domains для этого провайдера не поддерживается." +"управление DNS-записями в DNS Domains для этого провайдера не " +"поддерживается." #: src/views/nginx_log/structured/StructuredLogViewer.vue:811 msgid "%{start}-%{end} of %{total} items" @@ -186,7 +182,7 @@ msgstr "24-часовая статистика UV/PV" msgid "2FA" msgstr "2FA" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "Настройки 2FA" @@ -194,13 +190,28 @@ msgstr "Настройки 2FA" msgid "4GB+ RAM recommended" msgstr "Рекомендуется 4 ГБ ОЗУ или больше" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "" +"A-записи с одинаковыми именами не управляются в режиме только IPv6. Они " +"остаются без изменений в DNS." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "" "В песочнице или исходной конфигурации отсутствует необходимый включаемый " "файл." +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"Записи AAAA с одинаковыми именами не управляются в режиме только IPv4. Они " +"остаются без изменений в DNS." + #: src/routes/modules/system.ts:38 msgid "About" msgstr "О проекте" @@ -218,10 +229,6 @@ msgstr "Путь к журналу доступа не существует" msgid "Access Logs" msgstr "Журналы доступа" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -233,10 +240,10 @@ msgstr "Действие" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -278,7 +285,8 @@ msgstr "Добавить конфигурацию" msgid "Add Directive Below" msgstr "Добавить директиву ниже" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "Добавить домен" @@ -286,6 +294,14 @@ msgstr "Добавить домен" msgid "Add Header" msgstr "Добавить заголовок" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "Добавить IP-адрес" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "Добавить элемент" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -352,18 +368,12 @@ msgstr "Дополнительные настройки" #: src/views/preference/components/AuthSettings/AddPasskey.vue:105 msgid "Afterwards, refresh this page and click add passkey again." -msgstr "" -"После этого обновите эту страницу и снова нажмите «Добавить ключ доступа»." +msgstr "После этого обновите эту страницу и снова нажмите «Добавить ключ доступа»." #: src/views/dns/components/DNSRecordFilter.vue:55 msgid "All" msgstr "Все" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx не смог проверить конфигурацию." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "Все компоненты" @@ -373,13 +383,13 @@ msgstr "Все компоненты" msgid "All Recovery Codes Have Been Used" msgstr "Все коды восстановления были использованы" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." msgstr "" -"Все выбранные поддомены должны принадлежать одному и тому же DNS-провайдеру, " -"иначе запрос сертификата завершится неудачей." +"Все выбранные поддомены должны принадлежать одному и тому же " +"DNS-провайдеру, иначе запрос сертификата завершится неудачей." #: src/components/GeoLiteDownload/GeoLiteDownload.vue:160 msgid "" @@ -398,10 +408,8 @@ msgid "Any" msgstr "Любой" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" -msgstr "" -"Любой доступный IP-адрес можно использовать с частными центрами сертификации" +msgid "Any reachable IP address can be used with private Certificate Authorities" +msgstr "Любой доступный IP-адрес можно использовать с частными центрами сертификации" #: src/views/preference/tabs/OpenAISettings.vue:96 msgid "API Base Url" @@ -427,10 +435,6 @@ msgstr "Тип API" msgid "App" msgstr "Приложение" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "Применить" @@ -443,7 +447,7 @@ msgstr "Архитектура" msgid "Are you sure to delete this banned IP immediately?" msgstr "Вы уверены, что хотите немедленно удалить этот заблокированный IP?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "Вы уверены, что хотите удалить эту конфигурацию DDNS?" @@ -455,7 +459,7 @@ msgstr "Вы уверены, что хотите немедленно удали msgid "Are you sure to delete this record?" msgstr "Вы уверены, что хотите удалить эту запись?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "Вы уверены, что хотите сгенерировать новые коды восстановления?" @@ -526,6 +530,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud совместим с OpenAI. Используйте https://api.atlascloud.ai/v1 и " +"API-ключ Atlas Cloud." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -535,12 +541,11 @@ msgstr "Попытка исправить" msgid "Attempts" msgstr "Попытки" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "Авторизация" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "Аутентификация с помощью ключа доступа" @@ -548,11 +553,6 @@ msgstr "Аутентификация с помощью ключа доступа msgid "Authenticating..." msgstr "Аутентификация..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "Аутентификация..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -600,15 +600,15 @@ msgstr "Автоматическое обновление отключено" msgid "Auto refresh enabled" msgstr "Автоматическое обновление включено" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "Автообновление отключено для %{name}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "Автообновление включено для %{name}" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert выполняется, пожалуйста, подождите..." @@ -729,8 +729,7 @@ msgstr "" "%{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" "Задача резервного копирования %{backup_name} не выполнена при загрузке в " "хранилище, ошибка: %{error}" @@ -796,12 +795,6 @@ msgstr "Пакетное обновление" msgid "Belows are selected items that you want to batch modify" msgstr "Ниже приведены выбранные элементы, которые вы хотите изменить" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "Блок равен nil" @@ -842,7 +835,8 @@ msgstr "Кэш" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:177 msgid "Cache items not accessed within this time will be removed" msgstr "" -"Элементы кэша, к которым не обращались в течение этого времени, будут удалены" +"Элементы кэша, к которым не обращались в течение этого времени, будут " +"удалены" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:349 msgid "Cache loader processing time threshold" @@ -892,14 +886,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -933,7 +927,8 @@ msgstr "Нельзя удалить защищенный путь" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:135 msgid "Cannot delete server_name while DNS is linked. Clear DNS link first." msgstr "" -"Невозможно удалить server_name, пока DNS связан. Сначала разорвите связь DNS." +"Невозможно удалить server_name, пока DNS связан. Сначала разорвите связь " +"DNS." #: src/constants/errors/config.ts:13 msgid "Cannot delete the nginx config directory" @@ -990,6 +985,12 @@ msgstr "Содержимое сертификата и закрытый ключ msgid "Certificate decode error" msgstr "Ошибка декодирования сертификата" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" +"Директивы сертификата добавлены в редактор; просмотрите и сохраните, когда " +"будете готовы." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "Уведомление об истечении срока действия сертификата" @@ -1008,6 +1009,14 @@ msgstr "Сертификат скоро истекает" msgid "Certificate files downloaded successfully" msgstr "Файлы сертификата успешно загружены" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "Компонент выдачи сертификатов не готов" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "Сертификат успешно выпущен" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "Имя сертификата не может быть пустым" @@ -1042,18 +1051,19 @@ msgid "Certificate revoked successfully" msgstr "Сертификат успешно отозван" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "Статус сертификата" msgstr[1] "Статус сертификатов" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "Тип сертификата" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "Сертификаты" @@ -1074,11 +1084,11 @@ msgstr "Метод Challenge" msgid "Change Certificate" msgstr "Изменить сертификат" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "Изменить пароль" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "Сертификат изменен" @@ -1118,13 +1128,13 @@ msgstr "Проверить фавикон" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "Проверьте, существует ли /var/run/docker.sock. Если вы используете " @@ -1147,8 +1157,7 @@ msgstr "" "препятствует использованию Passkeys и функций буфера обмена" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "Проверьте, находится ли каталог conf.d в каталоге конфигурации nginx" #: src/language/generate.ts:7 @@ -1159,25 +1168,25 @@ msgid "" "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" "Проверьте, доступна ли база данных GeoLite2 при включенной индексации " -"журналов. База данных GeoLite2 необходима для географического анализа IP-" -"адресов в журналах. Вы можете скачать ее со страницы настроек или разместить " -"GeoLite2-City.mmdb вручную в том же каталоге, что и app.ini" +"журналов. База данных GeoLite2 необходима для географического анализа " +"IP-адресов в журналах. Вы можете скачать ее со страницы настроек или " +"разместить GeoLite2-City.mmdb вручную в том же каталоге, что и app.ini" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" "Проверьте, существует ли путь к журналу доступа nginx. По умолчанию этот " "путь получается из 'nginx -V'. Если его невозможно получить или полученный " "путь не указывает на действительный существующий файл, будет сообщена " "ошибка. В этом случае вам необходимо изменить файл конфигурации, чтобы " -"указать путь к журналу доступа. Подробнее см. в документации: https://" -"nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" +"указать путь к журналу доступа. Подробнее см. в документации: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1193,29 +1202,29 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" -"Проверьте, существует ли путь к журналу ошибок nginx. По умолчанию этот путь " -"получается из 'nginx -V'. Если его невозможно получить или полученный путь " -"не указывает на действительный существующий файл, будет сообщена ошибка. В " -"этом случае вам нужно изменить файл конфигурации, чтобы указать путь к " -"журналу ошибок. Подробнее см. в документации: https://nginxui.com/zh_CN/" -"guide/config-nginx.html#errorlogpath" +"Проверьте, существует ли путь к журналу ошибок nginx. По умолчанию этот " +"путь получается из 'nginx -V'. Если его невозможно получить или полученный " +"путь не указывает на действительный существующий файл, будет сообщена " +"ошибка. В этом случае вам нужно изменить файл конфигурации, чтобы указать " +"путь к журналу ошибок. Подробнее см. в документации: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" -"Проверьте, существует ли путь к PID Nginx. По умолчанию этот путь получается " -"из команды 'nginx -V'. Если его не удается получить, будет сообщена ошибка. " -"В этом случае вам нужно изменить конфигурационный файл, чтобы указать путь к " -"PID Nginx. Подробнее см. в документации: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"Проверьте, существует ли путь к PID Nginx. По умолчанию этот путь " +"получается из команды 'nginx -V'. Если его не удается получить, будет " +"сообщена ошибка. В этом случае вам нужно изменить конфигурационный файл, " +"чтобы указать путь к PID Nginx. Подробнее см. в документации: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1243,8 +1252,8 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" "Проверьте, находятся ли каталоги streams-available и streams-enabled в " "каталоге конфигурации nginx" @@ -1266,6 +1275,10 @@ msgstr "Карта Китая" msgid "Cipher text is too short" msgstr "Зашифрованный текст слишком короткий" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "Очистить конфликтующие записи" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Очистка переменных среды" @@ -1477,11 +1490,11 @@ msgstr "Название конфигурации" msgid "Configurations" msgstr "Конфигурации" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "Настроить" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "Настройка DDNS" @@ -1493,7 +1506,7 @@ msgstr "Настроить SSL" msgid "Confirm Delete" msgstr "Подтвердить удаление" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "Подтвердите новый пароль" @@ -1506,11 +1519,6 @@ msgstr "Требуется подтверждение" msgid "Connected" msgstr "Подключено" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "Подключено" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "Ошибка соединения, попытка переподключения..." @@ -1523,15 +1531,6 @@ msgstr "Соединение с этим терминалом потеряно. msgid "Connection timeout period" msgstr "Период таймаута соединения" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "Содержание" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "Статус контейнера неизвестен" @@ -1544,8 +1543,7 @@ msgstr "Содержание" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "Скопировано" @@ -1556,19 +1554,13 @@ msgstr "Скопировано!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "Копировать" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "Копировать коды" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "Копировать" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "Обновление ядра" @@ -1672,7 +1664,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "Создание клиента облегчает связь с сервером CA" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "Учетные данные" @@ -1704,7 +1696,7 @@ msgstr "Текущие активные подключения" msgid "Current Content" msgstr "Текущее содержимое" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "Текущий пароль" @@ -1730,11 +1722,11 @@ msgstr "Пользовательское cron-выражение" msgid "Custom Directory" msgstr "Пользовательская директория" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "Пользовательские домены" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "Сертификат для пользовательских доменов" @@ -1795,22 +1787,21 @@ msgstr "Файл базы данных не найден" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "Конфигурация DDNS удалена" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "Обзор DDNS" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS сохранено" #: src/constants/errors/geolite.ts:12 msgid "Decompression succeeded but failed to delete compressed file: {0}" -msgstr "" -"Разархивирование успешно завершено, но не удалось удалить сжатый файл: {0}" +msgstr "Разархивирование успешно завершено, но не удалось удалить сжатый файл: {0}" #: src/constants/errors/middleware.ts:3 msgid "Decryption failed" @@ -1833,7 +1824,7 @@ msgstr "Определите имя и размер зоны общей памя #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "Удалить" @@ -1918,8 +1909,8 @@ msgstr "Демо" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" "Демонстрационный режим включен. В этом терминале разрешён только небольшой " "набор безопасных команд только для чтения." @@ -2033,7 +2024,7 @@ msgstr "Отключить" msgid "Disable" msgstr "Отключить" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "Не удалось отключить автоматическое продление для %{name}" @@ -2088,7 +2079,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "Поток %{name} отключен от %{node} успешно" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2207,19 +2198,17 @@ msgstr "Вы хотите %{action} этот сайт?" msgid "Do you want to %{action} this stream?" msgstr "Вы хотите %{action} этот поток?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "Вы хотите отключить автоматическое обновление сертификата?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "Вы хотите отключить этот сайт?" +msgstr "Вы действительно хотите отключить выбранные сайты?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "Хотите включить этот поток?" +msgstr "Вы хотите включить выбранные сайты?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2238,10 +2227,6 @@ msgstr "Хотите удалить этот сервер?" msgid "Docker client not initialized" msgstr "Клиент Docker не инициализирован" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Сокет Docker существует" @@ -2250,10 +2235,6 @@ msgstr "Сокет Docker существует" msgid "Docker socket not exist" msgstr "Сокет Docker не существует" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2264,15 +2245,18 @@ msgstr[0] "Документ" msgid "Document Count" msgstr "Количество документов" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "Домен" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "Домены" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" -msgstr "" -"Список доменов пуст, попробуйте заново создать авто-сертификат для %{config}" +msgstr "Список доменов пуст, попробуйте заново создать авто-сертификат для %{config}" #: src/views/certificate/components/CertificateDownload.vue:94 msgid "Download Certificate Files" @@ -2416,7 +2400,7 @@ msgstr "Включить расширенное индексирование" msgid "Enable Advanced Log Indexing" msgstr "Включить расширенное индексирование журналов" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "Не удалось включить автоматическое продление для %{name}" @@ -2428,7 +2412,7 @@ msgstr "Включить автодополнение кода" msgid "Enable compression for content transfer" msgstr "Включить сжатие для передачи контента" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "Включить DDNS" @@ -2525,7 +2509,7 @@ msgid "Enable TOTP" msgstr "Включить TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2550,8 +2534,8 @@ msgstr "Активировано успешно" #: src/views/preference/tabs/ServerSettings.vue:52 msgid "Enables HTTP/2 support with multiplexing and server push capabilities" msgstr "" -"Включает поддержку HTTP/2 с возможностью мультиплексирования и push-" -"уведомлений сервера" +"Включает поддержку HTTP/2 с возможностью мультиплексирования и " +"push-уведомлений сервера" #: src/views/preference/tabs/ServerSettings.vue:56 msgid "Enables HTTP/3 support based on QUIC protocol for best performance" @@ -2581,10 +2565,19 @@ msgstr "Конец" msgid "End Date" msgstr "Дата окончания" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "Введите имя сертификата" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "Введите имя домена" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "Введите IP-адрес" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "Введите IP-адрес сервера (например, 203.0.113.1 или 2001:db8::1)" @@ -2602,7 +2595,7 @@ msgstr "" "или найденный в скрытом файле каталога конфигурации, чтобы разблокировать " "настройку." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "Введите ваш домен" @@ -2614,7 +2607,7 @@ msgstr "Конфигурация среды пуста" msgid "Environment variables cleaned" msgstr "Переменные окружения очищены" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2647,8 +2640,8 @@ msgstr "Ошибка логирования" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "" "Журналы ошибок не поддерживают структурированный анализ, так как содержат " "свободные текстовые сообщения." @@ -2698,7 +2691,7 @@ msgid "Expected Text" msgstr "Ожидаемый текст" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "Истекший" @@ -2720,18 +2713,13 @@ msgstr "" #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" "Идентификатор ключа внешней привязки аккаунта (опционально). Требуется " "некоторыми провайдерами ACME, такими как ZeroSSL." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "Внешний контейнер Docker" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "Внешний контейнер Docker" @@ -2754,6 +2742,7 @@ msgstr "Не удалось получить сертификат" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "Не удалось" @@ -2993,6 +2982,11 @@ msgstr "Не удалось сгенерировать AES-ключ: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "Не удалось сгенерировать вектор инициализации: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "Не удалось сгенерировать самоподписанный сертификат" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "Не удалось получить информацию о сертификате" @@ -3307,8 +3301,8 @@ msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." msgstr "" -"Следуйте инструкциям в всплывающем окне, чтобы завершить процесс регистрации " -"ключа доступа." +"Следуйте инструкциям в всплывающем окне, чтобы завершить процесс " +"регистрации ключа доступа." #: src/views/preference/tabs/NodeSettings.vue:42 #: src/views/preference/tabs/NodeSettings.vue:54 @@ -3324,8 +3318,7 @@ msgid "For commercial or professional use, contact" msgstr "Для коммерческого или профессионального использования обратитесь" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "" "Для просмотра журналов ошибок используйте Raw Log Viewer для лучшего опыта " "просмотра." @@ -3341,8 +3334,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" "Для сертификатов на основе IP укажите IP-адрес сервера, который будет " "включен в сертификат." @@ -3381,8 +3374,8 @@ msgid "" "installation flow without sending backend requests." msgstr "" "Режим отладки интерфейса активен. Введите отладочный секрет, чтобы " -"разблокировать имитацию процесса установки без отправки запросов к серверной " -"части." +"разблокировать имитацию процесса установки без отправки запросов к " +"серверной части." #: src/components/SelfCheck/store.ts:19 msgid "" @@ -3394,14 +3387,16 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "" "Режим отладки фронтенда: процесс установки завершен без отправки запроса к " "бэкенду" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "" "Режим отладки фронтенда: процесс восстановления завершен без отправки " "запроса к бэкенду" @@ -3418,21 +3413,24 @@ msgstr "Поддержка полнотекстового поиска" msgid "General Certificate" msgstr "Общий сертификат" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "Сгенерировать" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "Сгенерировать" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "Создать новые коды восстановления" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "Создать новые резервные коды" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "Сгенерировать коды восстановления" @@ -3440,6 +3438,14 @@ msgstr "Сгенерировать коды восстановления" msgid "Generate recovery codes successfully" msgstr "Коды восстановления успешно сгенерированы" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "Создать самоподписанный сертификат" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "Создать самоподписанный сертификат" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "Генерация приватного ключа для регистрации учетной записи" @@ -3513,12 +3519,17 @@ msgstr "Мировая карта" #: src/components/AutoCertForm/DNSChallenge.vue:144 msgid "Go to DNS > Credentials to create or manage credentials" msgstr "" -"Перейдите в DNS > Учётные данные для создания или управления учётными данными" +"Перейдите в DNS > Учётные данные для создания или управления учётными " +"данными" #: src/views/nginx_log/structured/StructuredLogViewer.vue:682 msgid "Go to Raw Log Viewer" msgstr "Перейти к просмотру сырых логов" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "Перейти к кодам восстановления" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3537,7 +3548,8 @@ msgid "" "For testing, SSL validation is disabled by default." msgstr "" "gRPCS использует шифрование TLS. Сервер должен реализовать службу проверки " -"работоспособности gRPC. Для тестирования проверка SSL по умолчанию отключена." +"работоспособности gRPC. Для тестирования проверка SSL по умолчанию " +"отключена." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67 msgid "GZIP Compression" @@ -3588,10 +3600,6 @@ msgstr "Скрыть" msgid "Hide Assistant" msgstr "Скрыть помощника" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3600,8 +3608,7 @@ msgstr "Высокий" #: src/views/dashboard/components/PerformanceStatisticsCard.vue:87 msgid "Higher value means better connection reuse" -msgstr "" -"Более высокое значение означает лучшее повторное использование соединения" +msgstr "Более высокое значение означает лучшее повторное использование соединения" #: src/views/config/components/ConfigLeftPanel.vue:255 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:100 @@ -3614,27 +3621,10 @@ msgid "Home" msgstr "Главная" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "Хост" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "Хост, напр. @ или www" @@ -3685,8 +3675,7 @@ msgstr "" msgid "" "If you want to automatically revoke the old certificate, please enable this " "option." -msgstr "" -"Если вы хотите автоматически отозвать старый сертификат, включите эту опцию." +msgstr "Если вы хотите автоматически отозвать старый сертификат, включите эту опцию." #: src/views/nginx_log/components/IndexingSettingsModal.vue:167 msgid "" @@ -3698,8 +3687,7 @@ msgstr "" #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." -msgstr "" -"Если ваш браузер поддерживает WebAuthn Passkey, появится диалоговое окно." +msgstr "Если ваш браузер поддерживает WebAuthn Passkey, появится диалоговое окно." #: src/components/AutoCertForm/AutoCertForm.vue:271 msgid "" @@ -3709,12 +3697,12 @@ msgstr "" "Если у вашего домена есть записи CNAME и вы не можете получить сертификаты, " "вам нужно включить эту опцию." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "Импорт" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "Импортировать сертификат" @@ -3777,7 +3765,7 @@ msgstr "Индексация..." msgid "Indicator" msgstr "Индикатор" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "Информация" @@ -3801,7 +3789,7 @@ msgstr "Инициализация программы обновления яд msgid "Input the code from the app:" msgstr "Введите код из приложения:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "Введите код восстановления:" @@ -3860,12 +3848,12 @@ msgstr "" "Установка не разрешена через 10 минут после запуска системы, пожалуйста, " "перезапустите Nginx UI." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "Интервал" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "Интервал (секунды)" @@ -3939,7 +3927,7 @@ msgstr "Неверный код OTP" msgid "Invalid padding in decrypted data" msgstr "Некорректное заполнение в расшифрованных данных" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "Неверный пароль или код восстановления" @@ -3992,15 +3980,43 @@ msgstr "IP-адрес" msgid "IP Address / Target" msgstr "IP-адрес / Цель" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "IP-адреса" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "Уведомление о сертификате IP" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "Версия IP" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "Только IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4, затем IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "Только IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6, затем IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "Выпуск не удался" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "Выдать сертификат" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "Выпустить сертификат" @@ -4008,10 +4024,18 @@ msgstr "Выпустить сертификат" msgid "Issued certificate successfully" msgstr "Сертификат успешно выдан" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "Успешно выпущено" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "Издатель: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "Выпуск..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "элемент(ы)" @@ -4025,15 +4049,16 @@ msgid "" "Keep your recovery codes as safe as your password. We recommend saving them " "with a password manager." msgstr "" -"Храните ваши коды восстановления так же безопасно, как и пароль. Рекомендуем " -"сохранить их в менеджере паролей." +"Храните ваши коды восстановления так же безопасно, как и пароль. " +"Рекомендуем сохранить их в менеджере паролей." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60 msgid "Keepalive Timeout" msgstr "Таймаут Keepalive" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "Тип ключа" @@ -4115,7 +4140,7 @@ msgstr "Последняя индексация" msgid "Last month" msgstr "Прошлый месяц" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "Последний запуск" @@ -4131,6 +4156,10 @@ msgstr "Последнее обновление:" msgid "Last used at" msgstr "Последнее использование" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "Позже" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "Оставьте пустым без изменений" @@ -4152,10 +4181,10 @@ msgid "Leave blank if you don't need this." msgstr "Оставьте пустым без изменений." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "Оставьте пустым для значения по умолчанию: https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "" +"Оставьте пустым, чтобы использовать конечную точку Atlas Cloud: " +"https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4164,6 +4193,15 @@ msgstr "Оставьте пустым для значения по умолча msgid "Leave blank will not change anything" msgstr "Если оставить пустым, ничего не изменится" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"Устаревший код восстановления больше не поддерживается. Создайте новые коды " +"восстановления, чтобы обеспечить безопасность восстановления аккаунта." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "Устаревшие коды восстановления не разрешены, так как TOTP не включен" @@ -4195,16 +4233,17 @@ msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name." msgstr "" -"Свяжите этот сайт с DNS-записью. server_name будет использоваться в качестве " -"имени DNS-записи." +"Свяжите этот сайт с DNS-записью. server_name будет использоваться в " +"качестве имени DNS-записи." #: src/views/site/site_add/components/DNSRecordIntegration.vue:247 msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name. You can skip this step if DNS is already configured." msgstr "" -"Свяжите этот сайт с DNS-записью. server_name будет использоваться в качестве " -"имени DNS-записи. Вы можете пропустить этот шаг, если DNS уже настроен." +"Свяжите этот сайт с DNS-записью. server_name будет использоваться в " +"качестве имени DNS-записи. Вы можете пропустить этот шаг, если DNS уже " +"настроен." #: src/views/site/site_edit/components/RightPanel/DNS.vue:466 msgid "Linked DNS Record" @@ -4220,7 +4259,7 @@ msgstr "Ожидает" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4268,18 +4307,14 @@ msgstr "Загрузка..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "Локальный" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "Локальный путь (напр., /var/backups)" @@ -4292,19 +4327,20 @@ msgstr "Локация" msgid "Locations" msgstr "Локации" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "Журнал" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" "Файл журнала %{log_path} не является обычным файлом. Если вы используете " -"nginx-ui в контейнере Docker, обратитесь к https://nginxui.com/zh_CN/guide/" -"config-nginx-log.html для получения дополнительной информации." +"nginx-ui в контейнере Docker, обратитесь к " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html для получения " +"дополнительной информации." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4348,7 +4384,7 @@ msgstr "" msgid "Log path is not under whitelist" msgstr "Путь к журналу не находится в белом списке" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "Логин" @@ -4356,7 +4392,7 @@ msgstr "Логин" msgid "Login successful" msgstr "Авторизация успешна" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "Выход выполнен успешно" @@ -4366,18 +4402,18 @@ msgstr "Прокрутка" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" "Logrotate по умолчанию включен в большинстве основных дистрибутивов Linux " "для пользователей, которые устанавливают Nginx UI на хост-машину, поэтому " -"вам не нужно изменять параметры на этой странице. Для пользователей, которые " -"устанавливают Nginx UI с использованием Docker-контейнеров, вы можете " -"вручную включить эту опцию. Планировщик задач crontab Nginx UI будет " +"вам не нужно изменять параметры на этой странице. Для пользователей, " +"которые устанавливают Nginx UI с использованием Docker-контейнеров, вы " +"можете вручную включить эту опцию. Планировщик задач crontab Nginx UI будет " "выполнять команду logrotate с интервалом, который вы установите в минутах." #: src/composables/useGeoTranslation.ts:166 @@ -4405,15 +4441,13 @@ msgstr "Режим обслуживания успешно отключен" msgid "Maintenance mode enabled successfully" msgstr "Режим обслуживания успешно включен" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "Режим обслуживания успешно включен" +msgstr "Шаблон обслуживания (только имя файла)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "Техническое обслуживание" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4547,10 +4581,6 @@ msgstr "Архитектура памяти" msgid "Memory Usage (RSS)" msgstr "Использование памяти (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4584,7 +4614,7 @@ msgstr "Минута" msgid "Minutes" msgstr "Минуты" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "Зеркало" @@ -4613,7 +4643,7 @@ msgid "Modify" msgstr "Изменить" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "Изменить сертификат" @@ -4645,10 +4675,9 @@ msgstr "Ежемесячно" msgid "Monthly on day %{day} at %{time}" msgstr "Ежемесячно в день %{day} в %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "Защищённая директория" +msgstr "Смонтированный каталог" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4678,6 +4707,7 @@ msgstr "Н/Д" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4717,8 +4747,8 @@ msgid "" "Need more DNS providers? Support us through donations or contact us for " "commercial collaboration" msgstr "" -"Нужно больше DNS-провайдеров? Поддержите нас пожертвованиями или свяжитесь с " -"нами для коммерческого сотрудничества" +"Нужно больше DNS-провайдеров? Поддержите нас пожертвованиями или свяжитесь " +"с нами для коммерческого сотрудничества" #: src/views/dashboard/NginxDashBoard.vue:195 msgid "Need to enable the stub_status module" @@ -4752,7 +4782,7 @@ msgstr "Ошибка нового клиента lego: {0}" msgid "New name" msgstr "Новое имя" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "Новый пароль" @@ -4768,12 +4798,11 @@ msgstr "Ошибка нового транспорта: {0}" msgid "New version released" msgstr "Вышла новая версия" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "Дальше" @@ -4785,7 +4814,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Вывод Nginx -T пуст" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Путь для Nginx Access Log" @@ -4839,11 +4868,11 @@ msgstr "Конфигурация Nginx была восстановлена" msgid "Nginx Configuration Parse Error" msgstr "Ошибка разбора конфигурации Nginx" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Путь к конфигурации Nginx" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Каталог конфигураций Nginx" @@ -4851,7 +4880,7 @@ msgstr "Каталог конфигураций Nginx" msgid "Nginx Control" msgstr "Управление Nginx" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Режим управления Nginx" @@ -4860,7 +4889,7 @@ msgstr "Режим управления Nginx" msgid "Nginx CPU usage rate" msgstr "Уровень использования CPU Nginx" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Путь для Nginx Error Log" @@ -4896,7 +4925,7 @@ msgstr "Nginx работает" msgid "Nginx Log" msgstr "Журнал" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Белый список директорий для логов Nginx" @@ -4909,7 +4938,7 @@ msgstr "Индексация логов Nginx..." msgid "Nginx Memory usage" msgstr "Использование памяти Nginx" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Путь к PID Nginx" @@ -4917,7 +4946,7 @@ msgstr "Путь к PID Nginx" msgid "Nginx PID path exists" msgstr "Путь PID Nginx существует" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Команда перезагрузки Nginx" @@ -4938,7 +4967,7 @@ msgstr "Nginx успешно перезагружен" msgid "Nginx reported a configuration syntax error." msgstr "Nginx сообщил об ошибке синтаксиса в конфигурации." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Команда перезапуска Nginx" @@ -4954,7 +4983,7 @@ msgstr "Nginx успешно перезапущен" msgid "Nginx sbin path exists" msgstr "Путь sbin для Nginx существует" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Команда проверки конфигурации Nginx" @@ -4977,12 +5006,22 @@ msgstr "Конфигурация Nginx UI была восстановлена" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "" "Конфигурация Nginx UI была восстановлена и автоматически перезапустится " "через несколько секунд." +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"Nginx UI автоматически обновит этот сертификат по мере приближения срока " +"его истечения, исходя из глобального интервала обновления сертификатов и " +"срока действия данного сертификата." + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf включает каталог conf.d" @@ -5009,7 +5048,7 @@ msgid "No" msgstr "Нет" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "Нет действия" @@ -5047,10 +5086,6 @@ msgstr "Нет записей на текущей странице" msgid "No geographic data available" msgstr "Географические данные недоступны" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "В выбранном временном диапазоне журналы не найдены." @@ -5112,7 +5147,7 @@ msgstr "Статус узла" msgid "Nodes" msgstr "Узлы" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "Не позднее" @@ -5133,7 +5168,7 @@ msgstr "Не проиндексировано" msgid "Not Loaded" msgstr "Не загружено" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "Еще не запущено" @@ -5215,7 +5250,7 @@ msgstr "Количество рабочих процессов" msgid "Obtain cert error: {0}" msgstr "Ошибка получения сертификата: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "Получить сертификат" @@ -5269,7 +5304,7 @@ msgstr "Вход через OIDC" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5314,10 +5349,6 @@ msgstr "Разрешены только ZIP-файлы" msgid "Open" msgstr "Открыт" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "Ограничение открытого исходного кода" @@ -5334,7 +5365,7 @@ msgstr "Статистика операционной системы" msgid "Optional comment for this DNS record" msgstr "Необязательный комментарий к этой DNS-записи" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "Или" @@ -5383,11 +5414,6 @@ msgstr "Другие" msgid "Otp or recovery code empty" msgstr "Код OTP или восстановления пуст" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "Перезаписать существующий файл" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "Перезаписать" @@ -5436,10 +5462,6 @@ msgstr "Пароль" msgid "Password (*)" msgstr "Пароль (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "Неверный пароль" @@ -5448,11 +5470,11 @@ msgstr "Неверный пароль" msgid "Password length cannot exceed 20 characters" msgstr "Длина пароля не может превышать 20 символов" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "Пароль успешно обновлен" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "Пароли не совпадают" @@ -5524,7 +5546,7 @@ msgstr "Настройки производительности успешно msgid "Performing core upgrade" msgstr "Выполнение обновления ядра" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "Личная информация" @@ -5550,8 +5572,8 @@ msgid "" "Please configure server_name directive in the configuration before linking " "DNS records." msgstr "" -"Пожалуйста, настройте директиву server_name в конфигурации перед связыванием " -"записей DNS." +"Пожалуйста, настройте директиву server_name в конфигурации перед " +"связыванием записей DNS." #: src/components/AutoCertForm/DNSChallenge.vue:131 msgid "Please create DNS credentials first in DNS > Credentials" @@ -5562,13 +5584,19 @@ msgid "" "Please enable the stub_status module to get request statistics, connection " "count, etc." msgstr "" -"Пожалуйста, включите модуль stub_status, чтобы получать статистику запросов, " -"количество соединений и т. д." +"Пожалуйста, включите модуль stub_status, чтобы получать статистику " +"запросов, количество соединений и т. д." #: src/language/curd.ts:67 msgid "Please enter" msgstr "Пожалуйста, введите" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "Пожалуйста, введите имя для сертификата" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5579,8 +5607,7 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:98 msgid "Please enter a valid IPv4 address (0-255 per octet)" -msgstr "" -"Пожалуйста, введите действительный IPv4-адрес (0-255 для каждого октета)" +msgstr "Пожалуйста, введите действительный IPv4-адрес (0-255 для каждого октета)" #: src/components/AutoCertForm/AutoCertForm.vue:109 msgid "Please enter a valid IPv4 or IPv6 address" @@ -5590,15 +5617,21 @@ msgstr "Пожалуйста, введите действительный адр msgid "Please enter a valid port range" msgstr "Пожалуйста, введите допустимый диапазон портов" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "Пожалуйста, введите хотя бы один домен" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "Пожалуйста, введите хотя бы один домен или IP-адрес" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "Пожалуйста, введите секретный ключ установки перед продолжением" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "Пожалуйста, введите код OTP:" @@ -5635,8 +5668,8 @@ msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." msgstr "" -"Пожалуйста, заполните учетные данные API, предоставленные вашим DNS-" -"провайдером." +"Пожалуйста, заполните учетные данные API, предоставленные вашим " +"DNS-провайдером." #: src/components/AutoCertForm/AutoCertForm.vue:168 msgid "" @@ -5650,8 +5683,8 @@ msgstr "" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "" "Пожалуйста, немедленно сгенерируйте новые коды восстановления в настройках, " "чтобы избежать блокировки." @@ -5699,8 +5732,7 @@ msgid "Please log in." msgstr "Пожалуйста, войдите в систему." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "" "Обратите внимание, что единица измерения времени в конфигурациях ниже " "указана в секундах." @@ -5721,10 +5753,9 @@ msgstr "Пожалуйста, выберите файл резервной ко #: src/views/site/site_edit/components/SiteEditor/store.ts:144 msgid "Please select a certificate before saving the TLS server configuration." -msgstr "" -"Пожалуйста, выберите сертификат перед сохранением конфигурации TLS-сервера." +msgstr "Пожалуйста, выберите сертификат перед сохранением конфигурации TLS-сервера." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "Пожалуйста, выберите учётные данные DNS" @@ -5804,10 +5835,6 @@ msgstr "Настройки" msgid "Preparing lego configurations" msgstr "Подготовка конфигураций Lego" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5819,18 +5846,13 @@ msgstr "Частный CA:" #: src/components/AutoCertForm/AutoCertForm.vue:202 msgid "Private IPs (192.168.x.x, 10.x.x.x, 172.16-31.x.x) will fail" -msgstr "" -"Частные IP-адреса (192.168.x.x, 10.x.x.x, 172.16-31.x.x) не пройдут проверку" +msgstr "Частные IP-адреса (192.168.x.x, 10.x.x.x, 172.16-31.x.x) не пройдут проверку" #: src/views/certificate/components/CertificateFileUpload.vue:121 #: src/views/certificate/components/CertificateFileUpload.vue:45 msgid "private key" msgstr "закрытый ключ" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "Процесс" @@ -5874,12 +5896,14 @@ msgstr "Протокол" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" "Настройки протокола применяются только при прямом подключении. При " -"использовании обратного прокси настройте протокол отдельно в обратном прокси." +"использовании обратного прокси настройте протокол отдельно в обратном " +"прокси." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5918,14 +5942,6 @@ msgstr "Цели прокси" msgid "Public CA Requirements:" msgstr "Требования публичного CA:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "Номер в органах общественной безопасности" @@ -6026,11 +6042,11 @@ msgstr "Тип записи" msgid "Record updated" msgstr "Запись обновлена" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "Записи" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "Восстановление" @@ -6043,8 +6059,8 @@ msgid "" "Recovery codes are used to access your account when you lose access to your " "2FA device. Each code can only be used once." msgstr "" -"Коды восстановления используются для доступа к аккаунту при утере 2FA-" -"устройства. Каждый код можно использовать только один раз." +"Коды восстановления используются для доступа к аккаунту при утере " +"2FA-устройства. Каждый код можно использовать только один раз." #: src/views/site/site_edit/components/RightPanel/DNS.vue:535 msgid "Recreate DNS Record" @@ -6063,7 +6079,7 @@ msgstr "Сообщения о перенаправлении (3xx)" msgid "Referer" msgstr "Реферер" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "Обновить" @@ -6072,11 +6088,6 @@ msgstr "Обновить" msgid "Refresh Modules Cache" msgstr "Обновить кэш модулей" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "Восстановить ответ" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "Восстановить ответ" @@ -6135,7 +6146,7 @@ msgid "Reload" msgstr "Перегрузить" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Перезагрузить Nginx" @@ -6162,8 +6173,7 @@ msgstr "Удаленная перезагрузка Nginx успешно вып #: src/components/NamespaceTabs/NamespaceTabs.vue:85 msgid "Reload request failed, please check your network connection" -msgstr "" -"Не удалось выполнить запрос на перезагрузку, проверьте подключение к сети" +msgstr "Не удалось выполнить запрос на перезагрузку, проверьте подключение к сети" #: src/components/NginxControl/NginxControl.vue:77 msgid "Reloading" @@ -6173,16 +6183,12 @@ msgstr "Перезагружается" msgid "Reloading nginx" msgstr "Перезагружается nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "Удаленный" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "Нет выбранных узлов" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "Удалить" @@ -6192,6 +6198,10 @@ msgstr "Удалить" msgid "Remove successfully" msgstr "Удалено успешно" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "Удалено %{count} конфликтующих записей: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "Успешно удалено" @@ -6271,8 +6281,8 @@ msgstr "Успешно переименовано" msgid "Renew cert error: {0}" msgstr "Ошибка обновления сертификата: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "Обновить сертификат" @@ -6284,8 +6294,7 @@ msgstr "Ошибка обновления сертификата" msgid "Renew Certificate Success" msgstr "Успешное обновление сертификата" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "Успешно обновлено" @@ -6414,6 +6423,19 @@ msgstr "Восстановить эту версию" msgid "Restored successfully" msgstr "Успешно восстановлено" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "Повторить" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "Повторить выпуск сертификата" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "Просмотреть сначала" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6442,8 +6464,7 @@ msgstr "" #: src/views/site/site_add/components/DNSRecordIntegration.vue:356 #: src/views/site/site_edit/components/RightPanel/DNS.vue:650 msgid "Route traffic through proxy for additional protection and features" -msgstr "" -"Перенаправляйте трафик через прокси для дополнительной защиты и функций" +msgstr "Перенаправляйте трафик через прокси для дополнительной защиты и функций" #: src/views/preference/tabs/AuthSettings.vue:72 msgid "RP Display Name" @@ -6461,11 +6482,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "Режим работы" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "Обновить сертификат" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "Выполняется" @@ -6585,7 +6601,7 @@ msgstr "Суббота" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6595,19 +6611,14 @@ msgstr "Суббота" msgid "Save" msgstr "Сохранить" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "Конфигурация хранилища" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "Сохранить директиву" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "Сохранить сейчас" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "Сохранить порядок" @@ -6650,15 +6661,19 @@ msgstr "Поток %{name} успешно сохранён на %{node}" msgid "Save successful" msgstr "Сохранено успешно" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "Сохранено успешно" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "Сохранить конфигурацию сайта сейчас?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "В ответе сохранённого сертификата отсутствует ID." #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6668,6 +6683,15 @@ msgstr "" msgid "Saved successfully" msgstr "Успешно сохранено" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"Не удалось сохранить конфигурацию сайта; директивы сертификата находятся в " +"редакторе — просмотрите изменения и повторите попытку с помощью кнопки " +"«Сохранить»." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "Путь sbin не существует" @@ -6718,7 +6742,7 @@ msgstr "SDK" msgid "Search" msgstr "Поиск" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "Поиск домена, провайдера или цели" @@ -6750,7 +6774,7 @@ msgstr "Поиск шаблонов" msgid "Secret has been copied" msgstr "Секрет скопирован" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "Настройки безопасности" @@ -6798,6 +6822,10 @@ msgstr "Выбрать домен DNS" msgid "Select existing record" msgstr "Выбрать существующую запись" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "Выбрать подходящие записи A/AAAA" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6824,6 +6852,24 @@ msgstr "Самопроверка" msgid "Self check failed, Nginx UI may not work properly" msgstr "Самопроверка не удалась, Nginx UI может работать некорректно" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "Самоподписанный сертификат" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "Самоподписанный сертификат" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "Самозаверяющий сертификат применён" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "Самозаверяющий сертификат создан" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6838,7 +6884,7 @@ msgid "Server" msgstr "Сервер" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "Ошибка сервера" @@ -6866,7 +6912,7 @@ msgstr "Размер хеш-корзины имён серверов" msgid "Server names hash table size" msgstr "Размер хеш-таблицы имен серверов" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "server_name не нашел в директивах" @@ -6888,8 +6934,7 @@ msgstr "Ошибка установки окружения: {0}" #: src/constants/errors/cert.ts:18 msgid "Set env flag to disable lego CNAME support error: {0}" -msgstr "" -"Установка флага окружения для отключения поддержки CNAME в lego ошибка: {0}" +msgstr "Установка флага окружения для отключения поддержки CNAME в lego ошибка: {0}" #: src/views/preference/tabs/CertSettings.vue:42 msgid "" @@ -6917,16 +6962,16 @@ msgstr "Настройка провайдера проверки HTTP01" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" "Settings.NginxLogSettings.AccessLogPath пуст, дополнительную информацию см. " "на https://nginxui.com/guide/config-nginx.html" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" "Settings.NginxLogSettings.ErrorLogPath пуст, дополнительную информацию см. " "на https://nginxui.com/guide/config-nginx.html" @@ -6948,7 +6993,7 @@ msgstr "Показать" msgid "Show Assistant" msgstr "Показать ассистента" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "Войти с помощью ключа доступа" @@ -7034,10 +7079,6 @@ msgstr "Размер" msgid "Skip Installation" msgstr "Пропустить установку" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "Время ожидания между итерациями загрузчика кеша" @@ -7050,6 +7091,10 @@ msgstr "Время ожидания между итерациями менедж msgid "Socket" msgstr "Сокет" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "Некоторые браузеры отклоняют TLS-сертификаты, действительные более 398 дней." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "Сортировка по" @@ -7066,15 +7111,6 @@ msgstr "Спонсор" msgid "SSD storage for better I/O performance" msgstr "SSD-накопитель для лучшей производительности ввода-вывода" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "Рекомендуется 2+ ядра" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7082,8 +7118,7 @@ msgstr "Содержимое SSL-сертификата" #: src/constants/errors/system.ts:11 msgid "SSL certificate file must be under Nginx configuration directory: {0}" -msgstr "" -"Файл SSL-сертификата должен находиться в каталоге конфигурации Nginx: {0}" +msgstr "Файл SSL-сертификата должен находиться в каталоге конфигурации Nginx: {0}" #: src/constants/errors/system.ts:9 msgid "SSL certificate file not found" @@ -7161,9 +7196,9 @@ msgstr "Статический" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7238,7 +7273,7 @@ msgstr "Каталог streams-enabled не существует" msgid "Structured" msgstr "Структурированный" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Порт состояния заглушки" @@ -7246,7 +7281,7 @@ msgstr "Порт состояния заглушки" msgid "Stub_status is not enabled" msgstr "Stub_status не включен" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7264,14 +7299,14 @@ msgstr "Воскресенье" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" "Поддерживает связь с бэкендом через протокол WebSocket. Если ваш Nginx UI " "используется через обратный прокси Nginx, обратитесь к этой ссылке, чтобы " -"написать соответствующий конфигурационный файл: https://nginxui.com/guide/" -"nginx-proxy-example.html" +"написать соответствующий конфигурационный файл: " +"https://nginxui.com/guide/nginx-proxy-example.html" #: src/language/curd.ts:53 src/language/curd.ts:57 msgid "Support single or batch upload of files" @@ -7358,6 +7393,7 @@ msgid "Sync strategy" msgstr "Стратегия синхронизации" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "Синхронизировать с" @@ -7395,21 +7431,13 @@ msgstr "Восстановление системы" msgid "System restored successfully." msgstr "Система успешно восстановлена." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "Цели" @@ -7477,29 +7505,40 @@ msgstr "" "более 1 недели или периода, установленного в настройках, с момента его " "последней выдачи." +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"Сертификат был создан по пути %{path}, и директивы ssl_certificate " +"добавлены в текущий серверный блок. Сохраните конфигурацию сейчас или " +"просмотрите изменения в редакторе и сохраните вручную." + #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "Следующие сайты будут отключены:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "Следующие сайты будут включены:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" "Для офлайн-географического анализа IP-адресов требуется база данных " "GeoLite2. Пожалуйста, загрузите её для активации этой функции." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" -"База данных GeoLite2 предоставляет географическую информацию для IP-адресов. " -"Она используется для офлайн-географического анализа в анализе журналов." +"База данных GeoLite2 предоставляет географическую информацию для " +"IP-адресов. Она используется для офлайн-географического анализа в анализе " +"журналов." #: src/views/preference/tabs/NodeSettings.vue:37 msgid "" @@ -7522,15 +7561,16 @@ msgid "" "The linked DNS record was deleted from the DNS server. You can recreate it " "or clear the link." msgstr "" -"Связанная DNS-запись была удалена с DNS-сервера. Вы можете воссоздать её или " -"очистить ссылку." +"Связанная DNS-запись была удалена с DNS-сервера. Вы можете воссоздать её " +"или очистить ссылку." #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" -"Путь к журналу не находится под путями в settings.NginxSettings." -"LogDirWhiteList" +"Путь к журналу не находится под путями в " +"settings.NginxSettings.LogDirWhiteList" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 @@ -7542,8 +7582,7 @@ msgstr "" "двоеточия и точки." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" "Модель, используемая для завершения кода. Если не задана, будет " "использоваться чат-модель." @@ -7592,8 +7631,8 @@ msgid "" "The server_name in the current configuration must be the domain name you " "need to get the certificate, supportmultiple domains." msgstr "" -"server_name в текущей конфигурации должен быть доменным именем, для которого " -"вам нужно получить сертификат, поддержка нескольких доменов." +"server_name в текущей конфигурации должен быть доменным именем, для " +"которого вам нужно получить сертификат, поддержка нескольких доменов." #: src/views/preference/tabs/CertSettings.vue:23 #: src/views/preference/tabs/HTTPSettings.vue:14 @@ -7617,14 +7656,14 @@ msgstr "Теоретическое максимальное количество msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "Теоретический максимум RPS (запросов в секунду):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " "lose access to your account." msgstr "" -"Эти коды являются последним средством для доступа к вашему аккаунту, если вы " -"потеряете пароль и вторые факторы. Если вы не сможете найти эти коды, вы " +"Эти коды являются последним средством для доступа к вашему аккаунту, если " +"вы потеряете пароль и вторые факторы. Если вы не сможете найти эти коды, вы " "потеряете доступ к своему аккаунту." #: src/routes/modules/system.ts:45 @@ -7671,20 +7710,18 @@ msgid "This field should not be empty" msgstr "Это поле обязательно к заполнению" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." msgstr "Это поле должно содержать только буквы, символы Юникода, цифры и -_." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" msgstr "Это поле должно содержать только буквы, символы Unicode, цифры и -_./:" #: src/components/Notification/notifications.ts:102 msgid "This is a test message sent at %{timestamp} from Nginx UI." -msgstr "" -"Это тестовое сообщение, отправленное по адресу %{timestamp} из nginx ui." +msgstr "Это тестовое сообщение, отправленное по адресу %{timestamp} из nginx ui." #: src/components/SelfCheck/store.ts:25 msgid "" @@ -7694,17 +7731,13 @@ msgstr "" "Этот режим только предварительно просматривает процесс установки UI и не " "изменяет состояние сервера." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " "After enabling it, you can view performance statistics" msgstr "" -"Этот модуль предоставляет статистику запросов Nginx, количество соединений и " -"другие данные. После включения вы сможете просматривать статистику " +"Этот модуль предоставляет статистику запросов Nginx, количество соединений " +"и другие данные. После включения вы сможете просматривать статистику " "производительности." #: src/views/nginx_log/dashboard/components/DateRangeSelector.vue:25 @@ -7723,20 +7756,28 @@ msgstr "" "Эта операция только удалит сертификат из базы данных. Файлы сертификата в " "файловой системе не будут удалены." +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "" +"Этот самозаверяющий сертификат управляется Nginx UI и автоматически " +"продлевается." + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" "Этот сайт настроен как сервер по умолчанию (default_server) для HTTPS (порт " -"443). IP-сертификаты требуют поддержки Центра сертификации (CA) и могут быть " -"недоступны у всех провайдеров ACME." +"443). IP-сертификаты требуют поддержки Центра сертификации (CA) и могут " +"быть недоступны у всех провайдеров ACME." #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" "Этот сайт использует подстановочное имя сервера (_), которое обычно " @@ -7748,8 +7789,8 @@ msgid "" "This token will only be shown once and cannot be retrieved later. Please " "make sure to save it in a secure location." msgstr "" -"Этот токен будет показан только один раз и не может быть восстановлен позже. " -"Пожалуйста, сохраните его в надежном месте." +"Этот токен будет показан только один раз и не может быть восстановлен " +"позже. Пожалуйста, сохраните его в надежном месте." #: src/constants/form_errors.ts:4 src/language/curd.ts:44 msgid "This value is already taken" @@ -7778,8 +7819,8 @@ msgid "" "This will restore all Nginx configuration files. Nginx will restart after " "the restoration is complete." msgstr "" -"Это восстановит все конфигурационные файлы Nginx. Nginx перезапустится после " -"завершения восстановления." +"Это восстановит все конфигурационные файлы Nginx. Nginx перезапустится " +"после завершения восстановления." #: src/components/SystemRestore/SystemRestoreContent.vue:264 #: src/components/SystemRestore/SystemRestoreContent.vue:347 @@ -7791,8 +7832,7 @@ msgstr "" "после завершения восстановления." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" "Это обновит или переустановит интерфейс Nginx на %{nodeNames} до версии " "%{version}." @@ -7859,15 +7899,15 @@ msgid "" "and restart Nginx UI." msgstr "" "Для обеспечения безопасности конфигурацию WebAuthn нельзя добавить через " -"интерфейс. Пожалуйста, вручную настройте следующее в файле конфигурации app." -"ini и перезапустите Nginx UI." +"интерфейс. Пожалуйста, вручную настройте следующее в файле конфигурации " +"app.ini и перезапустите Nginx UI." #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" "Чтобы убедиться, что автоматическое обновление сертификата может работать " @@ -7881,9 +7921,9 @@ msgid "" "provide an OpenAI-compatible API endpoint, so just set the baseUrl to your " "local API." msgstr "" -"Чтобы использовать локальную большую модель, разверните её с помощью ollama, " -"vllm или lmdeploy. Они предоставляют API-эндпоинт, совместимый с OpenAI, " -"поэтому просто установите baseUrl на ваш локальный API." +"Чтобы использовать локальную большую модель, разверните её с помощью " +"ollama, vllm или lmdeploy. Они предоставляют API-эндпоинт, совместимый с " +"OpenAI, поэтому просто установите baseUrl на ваш локальный API." #: src/views/dashboard/NginxDashBoard.vue:56 msgid "Toggle failed" @@ -8013,7 +8053,7 @@ msgstr "TTL (секунды)" msgid "Tuesday" msgstr "Вторник" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "Требуется двухфакторная аутентификация" @@ -8034,10 +8074,6 @@ msgstr "Тип" msgid "Type %{delete} to confirm" msgstr "Введите %{delete} для подтверждения" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "Введите или выберите записи A/AAAA" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "Введите или выберите браузер" @@ -8083,11 +8119,11 @@ msgstr "Неподдерживаемый формат лога" msgid "Update already in progress" msgstr "Обновление уже в процессе" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "Обновить пароль" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "Обновить профиль" @@ -8176,11 +8212,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "Используйте @ для корневой записи" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "Использовать OTP" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "Использовать код восстановления" @@ -8188,10 +8224,6 @@ msgstr "Использовать код восстановления" msgid "Use Temporary Path" msgstr "Использовать временный путь" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "Пользователь" @@ -8205,7 +8237,7 @@ msgstr "Пользовательский агент" msgid "User banned" msgstr "Пользователь заблокирован" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "Информация о пользователе успешно обновлена" @@ -8218,7 +8250,7 @@ msgid "User Profile" msgstr "Профиль пользователя" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "Имя пользователя" @@ -8236,10 +8268,14 @@ msgstr "Уникальные посетители" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "Действительный" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "Действителен (дней)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "Проверить SSL-сертификат" @@ -8250,11 +8286,6 @@ msgstr "Проверить SSL-сертификат" msgid "Value" msgstr "Значение" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "Проверить секрет" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8291,7 +8322,7 @@ msgstr "Просмотреть все уведомления" msgid "View on GitHub" msgstr "Посмотреть на GitHub" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "Просмотреть коды восстановления" @@ -8319,7 +8350,7 @@ msgstr "Посещения" msgid "Waiting processes" msgstr "Процессы ожидания" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8343,22 +8374,22 @@ msgid "" "Encrypt cannot issue certificates for private IPs. Use a public IP address " "or consider using a private CA." msgstr "" -"Предупреждение: Похоже, это частный IP-адрес. Публичные центры сертификации, " -"такие как Let's Encrypt, не могут выдавать сертификаты для частных IP. " -"Используйте публичный IP-адрес или рассмотрите возможность использования " -"частного центра сертификации." +"Предупреждение: Похоже, это частный IP-адрес. Публичные центры " +"сертификации, такие как Let's Encrypt, не могут выдавать сертификаты для " +"частных IP. Используйте публичный IP-адрес или рассмотрите возможность " +"использования частного центра сертификации." #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "Мы не принимаем запросы на новые функции" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" -"Мы удалим конфигурацию HTTPChallenge из этого файла и перезагрузим Nginx. Вы " -"уверены, что хотите продолжить?" +"Мы удалим конфигурацию HTTPChallenge из этого файла и перезагрузим Nginx. " +"Вы уверены, что хотите продолжить?" #: src/views/preference/tabs/AuthSettings.vue:62 msgid "Webauthn" @@ -8393,6 +8424,19 @@ msgstr "Еженедельно по %{day} в %{time}" msgid "Weight" msgstr "Вес" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"Когда включено, DDNS владеет выбранными именами: автоматически связывает " +"родственные записи семейства, создает отсутствующие записи и удаляет " +"записи, IP-семейство которых недоступно. Отключите, чтобы управлять только " +"теми записями, которые вы явно выбрали, и сохранить всё остальное состояние " +"DNS без изменений." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8400,8 +8444,8 @@ msgid "" "Pebble as CA." msgstr "" "При включении Nginx UI будет автоматически перерегистрировать пользователей " -"при запуске. Обычно не включайте эту функцию, если только вы не находитесь в " -"среде разработки и используете Pebble в качестве CA." +"при запуске. Обычно не включайте эту функцию, если только вы не находитесь " +"в среде разработки и используете Pebble в качестве CA." #: src/views/site/site_edit/components/RightPanel/Basic.vue:62 #: src/views/stream/components/RightPanel/Basic.vue:57 @@ -8413,7 +8457,7 @@ msgstr "" "синхронизированы узлы, установленные в пространстве имен, и узлы, выбранные " "ниже." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8425,7 +8469,7 @@ msgstr "" msgid "Whether to use a temporary path when writing temporary files" msgstr "Использовать ли временный путь при записи временных файлов" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "Сертификат с подстановочным знаком" @@ -8444,7 +8488,7 @@ msgstr "Рабочие процессы" msgid "Workers" msgstr "Рабочие процессы" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "Рабочее пространство" @@ -8483,8 +8527,8 @@ msgstr "Да" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" "Вы обращаетесь к этому терминалу через небезопасное HTTP-соединение в " "домене, отличном от localhost. Это может раскрыть конфиденциальную " @@ -8514,22 +8558,38 @@ msgstr "Теперь вы можете закрыть это диалогово msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." -msgstr "" -"Вы не настроили параметры WebAuthn, поэтому не можете добавить ключ доступа." +msgstr "Вы не настроили параметры WebAuthn, поэтому не можете добавить ключ доступа." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" "Вы еще не включили двухфакторную аутентификацию. Пожалуйста, включите её, " "чтобы сгенерировать коды восстановления." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "Вы еще не сгенерировали коды восстановления." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"Ваш аккаунт все еще использует устаревший код восстановления. Создайте " +"новые коды восстановления после проверки, чтобы обеспечить безопасность " +"восстановления аккаунта." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"Ваша учетная запись использует устаревший код восстановления. Создайте " +"новые коды восстановления сейчас, чтобы завершить миграцию и обеспечить " +"безопасность восстановления учетной записи." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" @@ -8537,8 +8597,17 @@ msgstr "" "Пожалуйста, сгенерируйте новые коды восстановления при первой возможности, " "чтобы обеспечить безопасность." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"Ваш старый код восстановления был использован и не может быть использован " +"повторно. Сгенерируйте новые коды восстановления сейчас, чтобы сохранить " +"возможность восстановления аккаунта." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "Ваши старые коды больше не будут работать." @@ -8550,6 +8619,61 @@ msgstr "Ваши ключи доступа" msgid "Zero-allocation pipeline" msgstr "Конвейер без выделения памяти" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx не смог проверить конфигурацию." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "Аутентификация..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Подключено" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "Содержание" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "Копировать" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "Внешний контейнер Docker" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "Сгенерировать" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "Перезаписать существующий файл" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "Восстановить ответ" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "Нет выбранных узлов" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "Обновить сертификат" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "Рекомендуется 2+ ядра" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "Введите или выберите записи A/AAAA" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "Проверить секрет" + #~ msgid "OpenAI" #~ msgstr "OpenAI" @@ -8650,8 +8774,7 @@ msgstr "Конвейер без выделения памяти" #~ msgstr "Стабильная производительность на современном оборудовании" #~ msgid "Backup path not in granted access paths: {0}" -#~ msgstr "" -#~ "Путь резервного копирования не входит в разрешенные пути доступа: {0}" +#~ msgstr "Путь резервного копирования не входит в разрешенные пути доступа: {0}" #~ msgid "Build with" #~ msgstr "Собрать с" @@ -8666,8 +8789,7 @@ msgstr "Конвейер без выделения памяти" #~ msgstr "Не удалось оценить символические ссылки: {0}" #~ msgid "Failed to restore Nginx UI files: {0}" -#~ msgstr "" -#~ "Не удалось восстановить файлы пользовательского интерфейса Nginx: {0}" +#~ msgstr "Не удалось восстановить файлы пользовательского интерфейса Nginx: {0}" #~ msgid "Failed to write to zip buffer: {0}" #~ msgstr "Ошибка записи в ZIP-буфер: {0}" @@ -8735,14 +8857,14 @@ msgstr "Конвейер без выделения памяти" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" #~ "Поддержка связи с бэкендом через протокол Server-Sent Events. Если ваш " #~ "Nginx UI используется через обратный прокси Nginx, обратитесь к этой " -#~ "ссылке, чтобы написать соответствующий конфигурационный файл: https://" -#~ "nginxui.com/guide/nginx-proxy-example.html" +#~ "ссылке, чтобы написать соответствующий конфигурационный файл: " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "Если оставить пустым, будет использоваться каталог CA по умолчанию." @@ -8812,8 +8934,8 @@ msgstr "Конвейер без выделения памяти" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" #~ "Проверьте, существует ли /var/run/docker.sock. Если вы используете " #~ "официальный образ Docker Nginx UI, убедитесь, что сокет Docker подключен " @@ -8895,16 +9017,13 @@ msgstr "Конвейер без выделения памяти" #~ "Синхронизация конфигурации %{cert_name} с %{env_name} не удалась, " #~ "пожалуйста, обновите удаленный Nginx UI до последней версии" -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" #~ msgstr "" -#~ "Переименование %{orig_path} в %{new_path} на %{env_name} не удалось, " -#~ "ответ: %{resp}" +#~ "Переименование %{orig_path} в %{new_path} на %{env_name} не удалось, ответ: " +#~ "%{resp}" #, fuzzy -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" #~ msgstr "Переименование %{orig_path} в %{new_path} на %{env_name} успешно" #, fuzzy @@ -8920,20 +9039,19 @@ msgstr "Конвейер без выделения памяти" #~ "Синхронизация сертификата %{cert_name} с %{env_name} не удалась, " #~ "пожалуйста, обновите удаленный интерфейс Nginx до последней версии" -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "" #~ "Синхронизация сертификата %{cert_name} с %{env_name} не удалась, ответ: " #~ "%{resp}" #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}" #~ msgstr "" -#~ "Синхронизация конфигурации %{config_name} с %{env_name} не удалась, " -#~ "ответ: %{resp}" +#~ "Синхронизация конфигурации %{config_name} с %{env_name} не удалась, ответ: " +#~ "%{resp}" #~ msgid "" -#~ "If you lose your mobile phone, you can use the recovery code to reset " -#~ "your 2FA." +#~ "If you lose your mobile phone, you can use the recovery code to reset your " +#~ "2FA." #~ msgstr "" #~ "Если вы потеряете свой мобильный телефон, вы можете использовать код " #~ "восстановления для сброса 2FA." @@ -8941,11 +9059,10 @@ msgstr "Конвейер без выделения памяти" #~ msgid "Incorrect username or password" #~ msgstr "Неверное имя пользователя или пароль" -#~ msgid "" -#~ "The recovery code is only displayed once, please save it in a safe place." +#~ msgid "The recovery code is only displayed once, please save it in a safe place." #~ msgstr "" -#~ "Код восстановления отображается только один раз, пожалуйста, сохраните " -#~ "его в безопасном месте." +#~ "Код восстановления отображается только один раз, пожалуйста, сохраните его " +#~ "в безопасном месте." #~ msgid "Too many login failed attempts, please try again later" #~ msgstr "Слишком много неудачных попыток входа, попробуйте позже" @@ -9018,26 +9135,27 @@ msgstr "Конвейер без выделения памяти" #~ msgstr "Только управление DNS-записями" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" -#~ "DNS-домены используются в NGINX UI для управления DNS-записями и не " -#~ "связаны с проверками сертификатов ACME DNS-01." +#~ "DNS-домены используются в NGINX UI для управления DNS-записями и не связаны " +#~ "с проверками сертификатов ACME DNS-01." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" -#~ "В настоящее время управление DNS-записями поддерживает только Alibaba " -#~ "Cloud DNS, Tencent Cloud DNS и Cloudflare." +#~ "В настоящее время управление DNS-записями поддерживает только Alibaba Cloud " +#~ "DNS, Tencent Cloud DNS и Cloudflare." #~ msgid "" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " #~ "Credentials and select them in certificate settings." #~ msgstr "" -#~ "Для выпуска сертификатов ACME DNS-01 создайте DNS-учетные данные в " -#~ "разделе DNS > Учетные данные и выберите их в настройках сертификата." +#~ "Для выпуска сертификатов ACME DNS-01 создайте DNS-учетные данные в разделе " +#~ "DNS > Учетные данные и выберите их в настройках сертификата." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains использует только провайдеров с реализациями управления DNS-записями." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "" +#~ "DNS Domains использует только провайдеров с реализациями управления " +#~ "DNS-записями." diff --git a/app/src/language/tr_TR/app.po b/app/src/language/tr_TR/app.po index a6eb6739..63bcd199 100644 --- a/app/src/language/tr_TR/app.po +++ b/app/src/language/tr_TR/app.po @@ -5,24 +5,22 @@ msgstr "" "POT-Creation-Date: \n" "PO-Revision-Date: 2025-04-08 18:26+0000\n" "Last-Translator: Ulaş \n" -"Language-Team: Turkish \n" +"Language-Team: Turkish " +"\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.10.4\n" #: src/language/generate.ts:37 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}" -msgstr "" -"[Nginx UI] ACME Kullanıcısı: %{name}, E-posta: %{email}, CA Dizini: %{caDir}" +msgstr "[Nginx UI] ACME Kullanıcısı: %{name}, E-posta: %{email}, CA Dizini: %{caDir}" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" -msgstr "" -"[Nginx UI] Geçerli sertifika daha sonra iptal edilmek üzere yedekleniyor" +msgstr "[Nginx UI] Geçerli sertifika daha sonra iptal edilmek üzere yedekleniyor" #: src/language/generate.ts:39 msgid "[Nginx UI] Certificate renewed successfully" @@ -33,16 +31,14 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] Sertifika başarıyla iptal edildi" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "" "[Nginx UI] Sertifika sunucu için kullanıldı, sunucu TLS sertifikası yeniden " "yükleniyor" #: src/language/generate.ts:42 msgid "[Nginx UI] Creating client facilitates communication with the CA server" -msgstr "" -"[Nginx UI] CA sunucusu ile iletişimi kolaylaştırmak için istemci oluşturma" +msgstr "[Nginx UI] CA sunucusu ile iletişimi kolaylaştırmak için istemci oluşturma" #: src/language/generate.ts:43 msgid "[Nginx UI] Environment variables cleaned" @@ -111,16 +107,15 @@ msgstr "{label} panoya kopyalandı" #: src/components/SyncNodesPreview/SyncNodesPreview.vue:59 msgid "* Includes nodes from group %{groupName} and manually selected nodes" -msgstr "" -"* %{groupName} grubundan düğümler ve manuel olarak seçilen düğümler içerir" +msgstr "* %{groupName} grubundan düğümler ve manuel olarak seçilen düğümler içerir" #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" -"* Dizin dosyaları varsayılan olarak NGINX UI yapılandırma yolunuzdaki \"log-" -"index\" dizininde saklanır." +"* Dizin dosyaları varsayılan olarak NGINX UI yapılandırma yolunuzdaki " +"\"log-index\" dizininde saklanır." #: src/views/nginx_log/components/IndexingSettingsModal.vue:215 msgid "" @@ -131,10 +126,6 @@ msgstr "" "yapılmıştır. Gerçek performans donanım yapılandırmanıza göre değişiklik " "gösterebilir." -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "%{count} site seçildi" @@ -186,7 +177,7 @@ msgstr "24 Saatlik UV/PV İstatistikleri" msgid "2FA" msgstr "İki aşamalı kimlik doğrulaması(2FA)" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "2FA Ayarları" @@ -194,11 +185,25 @@ msgstr "2FA Ayarları" msgid "4GB+ RAM recommended" msgstr "4 GB RAM veya daha fazlası önerilir" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." msgstr "" -"Sandbox veya kaynak yapılandırmasında gerekli bir dahil etme dosyası eksik." +"Yalnızca IPv6 modunda aynı adlara sahip A kayıtları yönetilmez. DNS'te " +"değişmeden kalırlar." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." +msgstr "Sandbox veya kaynak yapılandırmasında gerekli bir dahil etme dosyası eksik." + +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"Aynı ada sahip AAAA kayıtları yalnızca IPv4 modunda yönetilmez. DNS'te " +"değişmeden kalır." #: src/routes/modules/system.ts:38 msgid "About" @@ -217,10 +222,6 @@ msgstr "Erişim günlüğü yolu mevcut değil" msgid "Access Logs" msgstr "Erişim Günlükleri" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -232,10 +233,10 @@ msgstr "Eylem" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -277,7 +278,8 @@ msgstr "Yapılandırma Ekle" msgid "Add Directive Below" msgstr "Direktifi Aşağıya Ekleyin" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "Alan Adı Ekle" @@ -285,6 +287,14 @@ msgstr "Alan Adı Ekle" msgid "Add Header" msgstr "Başlık Ekle" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "IP adresi ekle" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "Öğe ekle" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -325,8 +335,7 @@ msgstr "Gelişmiş Mod" #: src/views/nginx_log/NginxLogList.vue:397 msgid "Advanced indexing enabled but failed to start rebuild" -msgstr "" -"Gelişmiş indeksleme etkinleştirildi ancak yeniden oluşturma başlatılamadı" +msgstr "Gelişmiş indeksleme etkinleştirildi ancak yeniden oluşturma başlatılamadı" #: src/views/nginx_log/NginxLogList.vue:388 msgid "Advanced indexing enabled successfully" @@ -352,18 +361,12 @@ msgstr "Gelişmiş Ayarlar" #: src/views/preference/components/AuthSettings/AddPasskey.vue:105 msgid "Afterwards, refresh this page and click add passkey again." -msgstr "" -"Daha sonra bu sayfayı yenileyin ve tekrar parola anahtarı ekle'ye tıklayın." +msgstr "Daha sonra bu sayfayı yenileyin ve tekrar parola anahtarı ekle'ye tıklayın." #: src/views/dns/components/DNSRecordFilter.vue:55 msgid "All" msgstr "Tümü" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx yapılandırmayı doğrulayamadı." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "Tüm Bileşenler" @@ -373,7 +376,7 @@ msgstr "Tüm Bileşenler" msgid "All Recovery Codes Have Been Used" msgstr "Tüm Kurtarma Kodları Kullanıldı" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -398,8 +401,7 @@ msgid "Any" msgstr "Herhangi" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "" "Herhangi bir erişilebilir IP adresi, özel Sertifika Yetkilileri ile " "kullanılabilir" @@ -428,10 +430,6 @@ msgstr "API Türü" msgid "App" msgstr "Uygulama" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "Uygula" @@ -444,7 +442,7 @@ msgstr "Mimari" msgid "Are you sure to delete this banned IP immediately?" msgstr "Bu yasaklı IP'yi hemen sileceğinizden emin misiniz?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "Bu DDNS yapılandırmasını silmek istediğinizden emin misiniz?" @@ -456,7 +454,7 @@ msgstr "Bu geçiş anahtarını hemen silmek istediğinizden emin misiniz?" msgid "Are you sure to delete this record?" msgstr "Bu kaydı silmek istediğinizden emin misiniz?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "Yeni kurtarma kodları oluşturulacaktır. Emin misiniz?" @@ -527,6 +525,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud, OpenAI ile uyumludur. https://api.atlascloud.ai/v1 ve bir " +"Atlas Cloud API anahtarını kullanın." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -536,12 +536,11 @@ msgstr "Düzeltmeyi dene" msgid "Attempts" msgstr "Girişimler" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "Kimlik Doğrulama" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "Geçiş anahtarıyla kimlik doğrulama" @@ -549,11 +548,6 @@ msgstr "Geçiş anahtarıyla kimlik doğrulama" msgid "Authenticating..." msgstr "Kimlik doğrulama..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "Kimlik doğrulama..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -601,15 +595,15 @@ msgstr "Otomatik yenileme devre dışı bırakıldı" msgid "Auto refresh enabled" msgstr "Otomatik yenileme etkinleştirildi" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "Otomatik yenileme %{name} için devre dışı" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "Otomatik yenileme %{name} için etkinleştirildi" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert çalışıyor, lütfen bekleyin..." @@ -670,8 +664,8 @@ msgid "" "Background indexing in progress. Data will be updated automatically when " "ready." msgstr "" -"Arka planda indeksleme devam ediyor. Veriler hazır olduğunda otomatik olarak " -"güncellenecektir." +"Arka planda indeksleme devam ediyor. Veriler hazır olduğunda otomatik " +"olarak güncellenecektir." #: src/constants/errors/nginx_log.ts:14 msgid "Background log service not available" @@ -723,15 +717,13 @@ msgstr "Yedekleme imza anahtarı mevcut değil" #: src/components/Notification/notifications.ts:38 msgid "Backup task %{backup_name} completed successfully, file: %{file_path}" -msgstr "" -"Yedekleme görevi %{backup_name} başarıyla tamamlandı, dosya: %{file_path}" +msgstr "Yedekleme görevi %{backup_name} başarıyla tamamlandı, dosya: %{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" -"Yedekleme görevi %{backup_name} depolama yüklemesi sırasında başarısız oldu, " -"hata: %{error}" +"Yedekleme görevi %{backup_name} depolama yüklemesi sırasında başarısız " +"oldu, hata: %{error}" #: src/components/Notification/notifications.ts:30 msgid "Backup task %{backup_name} failed to execute, error: %{error}" @@ -790,14 +782,7 @@ msgstr "Toplu Yükseltme" #: src/language/curd.ts:38 msgid "Belows are selected items that you want to batch modify" -msgstr "" -"Aşağıda toplu olarak değiştirmek istediğiniz seçili öğeler bulunmaktadır" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" +msgstr "Aşağıda toplu olarak değiştirmek istediğiniz seçili öğeler bulunmaktadır" #: src/constants/errors/nginx.ts:3 msgid "Block is nil" @@ -888,14 +873,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -987,6 +972,12 @@ msgstr "Sertifika içeriği ve özel anahtar içeriği boş olamaz" msgid "Certificate decode error" msgstr "Sertifika çözme hatası" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" +"Sertifika direktifleri düzenleyiciye eklendi; hazır olduğunuzda gözden " +"geçirin ve kaydedin." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "Sertifika Son Kullanma Bildirimi" @@ -1005,6 +996,14 @@ msgstr "Sertifika Yakında Sona Eriyor" msgid "Certificate files downloaded successfully" msgstr "Sertifika dosyaları başarıyla indirildi" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "Sertifika verme bileşeni hazır değil" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "Sertifika başarıyla verildi" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "Sertifika adı boş olamaz" @@ -1039,18 +1038,19 @@ msgid "Certificate revoked successfully" msgstr "Sertifika başarıyla iptal edildi" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "Sertifika Durumu" msgstr[1] "Sertifikaların Durumu" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "Sertifika Türü" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "Sertifikalar" @@ -1071,11 +1071,11 @@ msgstr "Doğrulama Yöntemi" msgid "Change Certificate" msgstr "Sertifika Değiştir" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "Şifreyi Değiştir" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "Değişen Sertifika" @@ -1115,25 +1115,25 @@ msgstr "Favicon'ı kontrol et" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "/var/run/docker.sock dosyasının var olup olmadığını kontrol edin. Nginx UI " "Resmi Docker Image'ını kullanıyorsanız, docker soketinin şu şekilde " "bağlandığından emin olun: `-v /var/run/docker.sock:/var/run/docker.sock`. " "Nginx UI resmi imajı, Docker Client API üzerinden ana bilgisayarın Docker " -"Engine'i ile iletişim kurmak için /var/run/docker.sock kullanır. Bu özellik, " -"Nginx UI'nin OTA güncellemeleri sırasında ikili dosya değişimi yerine " -"konteyner değişimi yaparak Nginx'i başka bir konteynerde kontrol etmek ve " -"konteyner bağımlılıklarının da güncellenmesini sağlamak için kullanılır. Bu " -"özelliğe ihtiyacınız yoksa, konteynere NGINX_UI_IGNORE_DOCKER_SOCKET=true " -"ortam değişkenini ekleyin." +"Engine'i ile iletişim kurmak için /var/run/docker.sock kullanır. Bu " +"özellik, Nginx UI'nin OTA güncellemeleri sırasında ikili dosya değişimi " +"yerine konteyner değişimi yaparak Nginx'i başka bir konteynerde kontrol " +"etmek ve konteyner bağımlılıklarının da güncellenmesini sağlamak için " +"kullanılır. Bu özelliğe ihtiyacınız yoksa, konteynere " +"NGINX_UI_IGNORE_DOCKER_SOCKET=true ortam değişkenini ekleyin." #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 msgid "" @@ -1145,8 +1145,7 @@ msgstr "" "engeller" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "" "conf.d dizininin nginx yapılandırma dizini altında olup olmadığını kontrol " "edin" @@ -1159,26 +1158,26 @@ msgid "" "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" "Log endekslemesi etkin olduğunda GeoLite2 veritabanının mevcut olup " -"olmadığını kontrol edin. GeoLite2 veritabanı, log endekslemesinde coğrafi IP " -"analizi için gereklidir. Veritabanını Tercihler sayfasından indirebilir veya " -"app.ini dosyasının bulunduğu dizine GeoLite2-City.mmdb dosyasını manuel " -"olarak yerleştirebilirsiniz" +"olmadığını kontrol edin. GeoLite2 veritabanı, log endekslemesinde coğrafi " +"IP analizi için gereklidir. Veritabanını Tercihler sayfasından indirebilir " +"veya app.ini dosyasının bulunduğu dizine GeoLite2-City.mmdb dosyasını " +"manuel olarak yerleştirebilirsiniz" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" "Nginx erişim günlüğü yolunun var olup olmadığını kontrol edin. Varsayılan " "olarak bu yol 'nginx -V' komutu ile alınır. Eğer alınamazsa veya alınan yol " "geçerli, mevcut bir dosyayı işaret etmiyorsa bir hata bildirilecektir. Bu " "durumda, erişim günlüğü yolunu belirtmek için yapılandırma dosyasını " -"değiştirmeniz gerekmektedir. Daha fazla bilgi için belgelere bakın: https://" -"nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" +"değiştirmeniz gerekmektedir. Daha fazla bilgi için belgelere bakın: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1194,29 +1193,29 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" "Nginx hata günlüğü yolunun var olup olmadığını kontrol edin. Varsayılan " "olarak bu yol 'nginx -V' komutuyla alınır. Eğer alınamazsa veya alınan yol " "geçerli, mevcut bir dosyayı işaret etmiyorsa bir hata bildirilir. Bu " -"durumda, yapılandırma dosyasını değiştirerek hata günlüğü yolunu belirtmeniz " -"gerekir. Daha fazla ayrıntı için belgelere bakın: https://nginxui.com/zh_CN/" -"guide/config-nginx.html#errorlogpath" +"durumda, yapılandırma dosyasını değiştirerek hata günlüğü yolunu " +"belirtmeniz gerekir. Daha fazla ayrıntı için belgelere bakın: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" -"Nginx PID yolunun var olup olmadığını kontrol edin. Varsayılan olarak bu yol " -"'nginx -V' komutuyla alınır. Alınamazsa bir hata bildirilir. Bu durumda, " -"yapılandırma dosyasını değiştirerek Nginx PID yolunu belirtmeniz gerekir. " -"Daha fazla ayrıntı için belgelere bakın: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"Nginx PID yolunun var olup olmadığını kontrol edin. Varsayılan olarak bu " +"yol 'nginx -V' komutuyla alınır. Alınamazsa bir hata bildirilir. Bu " +"durumda, yapılandırma dosyasını değiştirerek Nginx PID yolunu belirtmeniz " +"gerekir. Daha fazla ayrıntı için belgelere bakın: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1229,7 +1228,8 @@ msgstr "nginx.conf dosyasının conf.d dizinini içerip içermediğini kontrol e #: src/language/generate.ts:16 msgid "Check if the nginx.conf includes the sites-enabled directory" msgstr "" -"nginx.conf dosyasının sites-enabled dizinini içerip içermediğini kontrol edin" +"nginx.conf dosyasının sites-enabled dizinini içerip içermediğini kontrol " +"edin" #: src/language/generate.ts:17 msgid "Check if the nginx.conf includes the streams-enabled directory" @@ -1247,8 +1247,8 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" "streams-available ve streams-enabled dizinlerinin nginx yapılandırma dizini " "altında olup olmadığını kontrol edin" @@ -1270,6 +1270,10 @@ msgstr "Çin Haritası" msgid "Cipher text is too short" msgstr "Şifreli metin çok kısa" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "Çakışan kayıtları temizle" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Ortam değişkenlerini temizleme" @@ -1479,11 +1483,11 @@ msgstr "Yapılandırma Adı" msgid "Configurations" msgstr "Yapılandırmalar" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "Yapılandır" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "DDNS Yapılandır" @@ -1495,7 +1499,7 @@ msgstr "SSL'yi Yapılandırma" msgid "Confirm Delete" msgstr "Silme Onayı" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "Yeni Şifreyi Onayla" @@ -1508,11 +1512,6 @@ msgstr "Onay Gerekli" msgid "Connected" msgstr "Bağlandı" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "Bağlandı" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "Bağlantı hatası, yeniden bağlanılmaya çalışılıyor..." @@ -1525,15 +1524,6 @@ msgstr "Bu terminal için bağlantı kesildi. Gerekirse yenileyin." msgid "Connection timeout period" msgstr "Bağlantı zaman aşımı süresi" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "İçerik" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "Kapsayıcı durumu bilinmiyor" @@ -1546,8 +1536,7 @@ msgstr "İçerik" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "Kopyalandı" @@ -1558,19 +1547,13 @@ msgstr "Kopyalandı!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "Kopya" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "Kodları Kopyala" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "Kopya" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "Çekirdek Yükseltme" @@ -1610,7 +1593,8 @@ msgstr "CPU Kullanımı" #: src/views/dashboard/components/ResourceUsageCard.vue:38 msgid "CPU usage is relatively high, consider optimizing Nginx configuration" msgstr "" -"CPU kullanımı nispeten yüksek, Nginx yapılandırmasını optimize etmeyi düşünün" +"CPU kullanımı nispeten yüksek, Nginx yapılandırmasını optimize etmeyi " +"düşünün" #: src/views/dashboard/ServerAnalytic.vue:200 msgid "CPU:" @@ -1672,7 +1656,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "İstemci oluşturmak, CA sunucusuyla iletişimi kolaylaştırır" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "Kimlik bilgisi" @@ -1704,7 +1688,7 @@ msgstr "Mevcut aktif bağlantılar" msgid "Current Content" msgstr "Mevcut İçerik" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "Mevcut Şifre" @@ -1730,11 +1714,11 @@ msgstr "Özel cron ifadesi" msgid "Custom Directory" msgstr "Özel Dizin" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "Özel Alan Adları" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "Özel Alan Adı Sertifikası" @@ -1795,15 +1779,15 @@ msgstr "Veritabanı dosyası bulunamadı" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "DDNS yapılandırması silindi" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "DDNS Genel Bakış" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS kaydedildi" @@ -1834,7 +1818,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "Sil" @@ -1919,8 +1903,8 @@ msgstr "Demo" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" "Demo modu etkinleştirildi. Bu terminal yalnızca küçük bir güvenli salt " "okunur komut setine izin verir." @@ -2034,7 +2018,7 @@ msgstr "Devre dışı bırak" msgid "Disable" msgstr "Devre Dışı Bırak" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "%{name} için otomatik yenileme devre dışı bırakılamadı" @@ -2074,13 +2058,11 @@ msgstr "%{node} üzerindeki %{name} sitesi başarıyla devre dışı bırakıld #: src/components/Notification/notifications.ts:138 msgid "Disable site %{name} maintenance on %{node} failed" -msgstr "" -"%{node} üzerindeki %{name} sitesi bakımını devre dışı bırakma başarısız oldu" +msgstr "%{node} üzerindeki %{name} sitesi bakımını devre dışı bırakma başarısız oldu" #: src/components/Notification/notifications.ts:142 msgid "Disable site %{name} maintenance on %{node} successfully" -msgstr "" -"%{name} sitesinin bakımı %{node} üzerinde başarıyla devre dışı bırakıldı" +msgstr "%{name} sitesinin bakımı %{node} üzerinde başarıyla devre dışı bırakıldı" #: src/components/Notification/notifications.ts:170 msgid "Disable stream %{name} from %{node} failed" @@ -2091,7 +2073,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "Akış %{name}, %{node} üzerinden başarıyla devre dışı bırakıldı" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2210,19 +2192,17 @@ msgstr "Bu siteyi %{action} etmek istiyor musunuz?" msgid "Do you want to %{action} this stream?" msgstr "Bu akışı %{action} etmek istiyor musunuz?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "Otomatik sertifika yenilemeyi devre dışı bırakmak istiyor musunuz?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "Bu siteyi devre dışı bırakmak istiyor musunuz?" +msgstr "Seçili siteleri devre dışı bırakmak istiyor musunuz?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "Bu akışı etkinleştirmek istiyor musunuz?" +msgstr "Seçili siteleri etkinleştirmek istiyor musunuz?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2241,10 +2221,6 @@ msgstr "Bu upstream'i kaldırmak istiyor musunuz?" msgid "Docker client not initialized" msgstr "Docker istemcisi başlatılmadı" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Docker soketi mevcut" @@ -2253,10 +2229,6 @@ msgstr "Docker soketi mevcut" msgid "Docker socket not exist" msgstr "Docker soketi mevcut değil" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2267,11 +2239,15 @@ msgstr[0] "Belge" msgid "Document Count" msgstr "Belge Sayısı" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "Alan Adı" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "Alan Adları" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" @@ -2420,7 +2396,7 @@ msgstr "Gelişmiş Dizinlemeyi Etkinleştir" msgid "Enable Advanced Log Indexing" msgstr "Gelişmiş Log Dizinlemeyi Etkinleştir" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "%{name} için otomatik yenilemeyi etkinleştirme başarısız oldu" @@ -2432,7 +2408,7 @@ msgstr "Kod Tamamlamayı Etkinleştir" msgid "Enable compression for content transfer" msgstr "İçerik transferi için sıkıştırmayı etkinleştir" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "DDNS'yi Etkinleştir" @@ -2529,7 +2505,7 @@ msgid "Enable TOTP" msgstr "TOTP'yi Etkinleştir" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2558,7 +2534,8 @@ msgstr "Çoklama ve sunucu itme özellikleri ile HTTP/2 desteğini etkinleştiri #: src/views/preference/tabs/ServerSettings.vue:56 msgid "Enables HTTP/3 support based on QUIC protocol for best performance" msgstr "" -"En iyi performans için QUIC protokolüne dayalı HTTP/3 desteğini etkinleştirir" +"En iyi performans için QUIC protokolüne dayalı HTTP/3 desteğini " +"etkinleştirir" #: src/views/nginx_log/components/IndexingSettingsModal.vue:110 msgid "" @@ -2566,9 +2543,9 @@ msgid "" "resources including CPU and memory. Please ensure your system meets the " "minimum requirements before proceeding." msgstr "" -"Gelişmiş günlük indekslemeyi etkinleştirmek, CPU ve bellek dahil olmak üzere " -"önemli hesaplama kaynakları tüketecektir. Devam etmeden önce sisteminizin " -"minimum gereksinimleri karşıladığından emin olun." +"Gelişmiş günlük indekslemeyi etkinleştirmek, CPU ve bellek dahil olmak " +"üzere önemli hesaplama kaynakları tüketecektir. Devam etmeden önce " +"sisteminizin minimum gereksinimleri karşıladığından emin olun." #: src/views/site/site_edit/components/Cert/IssueCert.vue:95 msgid "Encrypt website with Let's Encrypt" @@ -2582,10 +2559,19 @@ msgstr "Son" msgid "End Date" msgstr "Bitiş Tarihi" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "Sertifika adını girin" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "Alan adını girin" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "IP adresini girin" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "Sunucu IP adresini girin (ör. 203.0.113.1 veya 2001:db8::1)" @@ -2599,10 +2585,11 @@ msgid "" "Enter the one-time install secret shown by the install script or found in " "the config directory hidden file to unlock setup." msgstr "" -"Kurulumun kilidini açmak için kurulum betiğinde gösterilen veya yapılandırma " -"dizinindeki gizli dosyada bulunan tek kullanımlık kurulum sırrını girin." +"Kurulumun kilidini açmak için kurulum betiğinde gösterilen veya " +"yapılandırma dizinindeki gizli dosyada bulunan tek kullanımlık kurulum " +"sırrını girin." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "Alan adınızı girin" @@ -2614,7 +2601,7 @@ msgstr "Ortam yapılandırması boş" msgid "Environment variables cleaned" msgstr "Ortam değişkenleri temizlendi" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2647,11 +2634,11 @@ msgstr "Hata Günlükleri" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "" -"Hata günlükleri serbest metin mesajları içerdiğinden yapılandırılmış analizi " -"desteklemez." +"Hata günlükleri serbest metin mesajları içerdiğinden yapılandırılmış " +"analizi desteklemez." #: src/views/nginx_log/components/IndexingSettingsModal.vue:272 msgid "Error pattern recognition" @@ -2698,7 +2685,7 @@ msgid "Expected Text" msgstr "Beklenen Metin" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "Süresi Doldu" @@ -2720,18 +2707,13 @@ msgstr "" #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" "Harici Hesap Bağlama Anahtar Kimliği (isteğe bağlı). ZeroSSL gibi bazı ACME " "sağlayıcıları için gereklidir." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "Harici Docker Konteyneri" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "Harici Docker Konteyneri" @@ -2754,6 +2736,7 @@ msgstr "Sertifika alınamadı" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "Başarısız" @@ -2993,6 +2976,11 @@ msgstr "AES anahtarı oluşturulamadı: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "Başlatma vektörü oluşturulamadı: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "Kendinden imzalı sertifika oluşturulamadı" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "Sertifika bilgileri alınamadı" @@ -3324,8 +3312,7 @@ msgid "For commercial or professional use, contact" msgstr "Ticari veya profesyonel kullanım için iletişime geçin" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "" "Hata günlükleri için daha iyi bir görüntüleme deneyimi için Ham Günlük " "Görüntüleyici'yi kullanın." @@ -3341,8 +3328,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" "IP tabanlı sertifikalar için, sertifikaya dahil edilecek sunucu IP adresini " "belirtiniz." @@ -3393,14 +3380,16 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "" "Ön uç hata ayıklama modu: arka uç isteği gönderilmeden kurulum akışı " "tamamlandı" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "" "Ön uç hata ayıklama modu: arka uca istek göndermeden geri yükleme akışı " "tamamlandı" @@ -3417,21 +3406,24 @@ msgstr "Tam metin arama desteği" msgid "General Certificate" msgstr "Genel Sertifika" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "Oluştur" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "Oluştur" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "Yeni kurtarma kodları oluştur" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "Yeni Kurtarma Kodları Oluştur" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "Kurtarma Kodları Oluştur" @@ -3439,6 +3431,14 @@ msgstr "Kurtarma Kodları Oluştur" msgid "Generate recovery codes successfully" msgstr "Kurtarma kodları başarıyla oluşturuldu" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "Kendinden imzalı sertifika oluştur" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "Kendinden İmzalı Sertifika Oluştur" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "Hesap kaydı için özel anahtar oluşturuluyor" @@ -3469,8 +3469,8 @@ msgid "" "GeoLite2 database not found at {0}. Log indexing requires GeoLite2 database " "for geographic IP analysis" msgstr "" -"GeoLite2 veritabanı {0} konumunda bulunamadı. Günlük dizinlemesi, coğrafi IP " -"analizi için GeoLite2 veritabanına ihtiyaç duyar" +"GeoLite2 veritabanı {0} konumunda bulunamadı. Günlük dizinlemesi, coğrafi " +"IP analizi için GeoLite2 veritabanına ihtiyaç duyar" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:150 msgid "GeoLite2 Database Required" @@ -3519,6 +3519,10 @@ msgstr "" msgid "Go to Raw Log Viewer" msgstr "Ham Log Görüntüleyiciye Git" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "Kurtarma kodlarına git" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3528,8 +3532,8 @@ msgid "" "gRPC health check requires server to implement gRPC Health Check service " "(grpc.health.v1.Health)." msgstr "" -"gRPC sağlık kontrolü, sunucunun gRPC Sağlık Kontrol hizmetini (grpc.health." -"v1.Health) uygulamasını gerektirir." +"gRPC sağlık kontrolü, sunucunun gRPC Sağlık Kontrol hizmetini " +"(grpc.health.v1.Health) uygulamasını gerektirir." #: src/views/dashboard/components/SiteHealthCheckModal.vue:599 msgid "" @@ -3588,10 +3592,6 @@ msgstr "Gizle" msgid "Hide Assistant" msgstr "Asistanı gizle" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3600,8 +3600,7 @@ msgstr "Yüksek" #: src/views/dashboard/components/PerformanceStatisticsCard.vue:87 msgid "Higher value means better connection reuse" -msgstr "" -"Daha yüksek bir değer, daha iyi bağlantı yeniden kullanımı anlamına gelir" +msgstr "Daha yüksek bir değer, daha iyi bağlantı yeniden kullanımı anlamına gelir" #: src/views/config/components/ConfigLeftPanel.vue:255 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:100 @@ -3614,27 +3613,10 @@ msgid "Home" msgstr "Anasayfa" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "Host" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "Host, örn. @ veya www" @@ -3711,12 +3693,12 @@ msgstr "" "Alan adınızda CNAME kayıtları varsa ve sertifika alamıyorsanız, bu seçeneği " "etkinleştirmeniz gerekir." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "İçe Aktar" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "Sertifika İçe Aktar" @@ -3779,7 +3761,7 @@ msgstr "Dizinleniyor..." msgid "Indicator" msgstr "Gösterge" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "Bilgi" @@ -3803,7 +3785,7 @@ msgstr "Çekirdek yükseltici başlatılıyor" msgid "Input the code from the app:" msgstr "Uygulamadan kodu girin:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "Kurtarma kodunu girin:" @@ -3862,12 +3844,12 @@ msgstr "" "Sistem başlangıcından 10 dakika sonra kuruluma izin verilmez, lütfen Nginx " "UI'yi yeniden başlatın." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "Aralık" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "Aralık (saniye)" @@ -3941,7 +3923,7 @@ msgstr "Geçersiz OTP kodu" msgid "Invalid padding in decrypted data" msgstr "Şifresi çözülmüş veride geçersiz dolgu" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "Geçersiz parola veya kurtarma kodu" @@ -3994,15 +3976,43 @@ msgstr "IP Adresi" msgid "IP Address / Target" msgstr "IP Adresi / Hedef" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "IP Adresleri" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "IP Sertifika Bildirimi" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "IP Sürümü" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "Sadece IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4 sonra IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "Yalnızca IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6, ardından IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "Yayınlama başarısız" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "Sertifika ver" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "Sertifika Düzenle" @@ -4010,10 +4020,18 @@ msgstr "Sertifika Düzenle" msgid "Issued certificate successfully" msgstr "Sertifika başarıyla yayınlandı" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "Başarıyla verildi" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "Düzenleyen: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "Düzenleniyor..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "öğe(ler)" @@ -4035,7 +4053,8 @@ msgid "Keepalive Timeout" msgstr "Keepalive Zaman Aşımı" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "Anahtar Türü" @@ -4117,7 +4136,7 @@ msgstr "Son Dizinlenme" msgid "Last month" msgstr "Geçen ay" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "Son çalıştırma" @@ -4133,6 +4152,10 @@ msgstr "Son güncelleme:" msgid "Last used at" msgstr "En son kullanıldığı zaman" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "Daha sonra" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "Değişiklik olmaması için boş bırakın" @@ -4154,10 +4177,10 @@ msgid "Leave blank if you don't need this." msgstr "Buna ihtiyacınız yoksa boş bırakın." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "Varsayılan için boş bırakın: https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "" +"Atlas Cloud uç noktasını kullanmak için boş bırakın: " +"https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4166,6 +4189,15 @@ msgstr "Varsayılan için boş bırakın: https://api.openai.com/" msgid "Leave blank will not change anything" msgstr "Boş bırakmak hiçbir şeyi değiştirmeyecektir" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"Eski kurtarma kodu kullanımdan kaldırıldı. Hesap kurtarma işleminin " +"güvenliğini sağlamak için yeni kurtarma kodları oluşturun." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "TOTP etkin olmadığı için eski kurtarma kodu kullanılamaz" @@ -4222,7 +4254,7 @@ msgstr "Dinliyor" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4270,18 +4302,14 @@ msgstr "Yükleniyor..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "Yerel" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "Yerel yol (örn., /var/backups)" @@ -4294,19 +4322,19 @@ msgstr "Konum" msgid "Locations" msgstr "Konumlar" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "Günlük" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" "Günlük dosyası %{log_path} normal bir dosya değil. Docker konteynerinde " -"nginx-ui kullanıyorsanız, daha fazla bilgi için https://nginxui.com/zh_CN/" -"guide/config-nginx-log.html adresine bakın." +"nginx-ui kullanıyorsanız, daha fazla bilgi için " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html adresine bakın." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4350,7 +4378,7 @@ msgstr "" msgid "Log path is not under whitelist" msgstr "Günlük yolu beyaz listede değil" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "Giriş" @@ -4358,7 +4386,7 @@ msgstr "Giriş" msgid "Login successful" msgstr "Giriş Başarılı" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "Çıkış başarılı" @@ -4368,19 +4396,19 @@ msgstr "Logrotate" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" -"Logrotate, varsayılan olarak, Nginx UI'yi ana makineye yükleyen kullanıcılar " -"için çoğu ana akım Linux dağıtımında etkinleştirilmiştir, bu yüzden bu " -"sayfadaki parametreleri değiştirmenize gerek yoktur. Nginx UI'yi Docker " -"konteynerlerini kullanarak yükleyen kullanıcılar, bu seçeneği manuel olarak " -"etkinleştirebilir. Nginx UI'nin crontab görev zamanlayıcısı, belirlediğiniz " -"dakika aralığında logrotate komutunu çalıştıracaktır." +"Logrotate, varsayılan olarak, Nginx UI'yi ana makineye yükleyen " +"kullanıcılar için çoğu ana akım Linux dağıtımında etkinleştirilmiştir, bu " +"yüzden bu sayfadaki parametreleri değiştirmenize gerek yoktur. Nginx UI'yi " +"Docker konteynerlerini kullanarak yükleyen kullanıcılar, bu seçeneği manuel " +"olarak etkinleştirebilir. Nginx UI'nin crontab görev zamanlayıcısı, " +"belirlediğiniz dakika aralığında logrotate komutunu çalıştıracaktır." #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4407,15 +4435,13 @@ msgstr "Bakım modu başarıyla devre dışı bırakıldı" msgid "Maintenance mode enabled successfully" msgstr "Bakım modu başarıyla etkinleştirildi" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "Bakım modu başarıyla etkinleştirildi" +msgstr "Bakım şablonu (yalnızca dosya adı)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "Bakım" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4549,10 +4575,6 @@ msgstr "Bellek Tasarımı" msgid "Memory Usage (RSS)" msgstr "Bellek Kullanımı (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4586,7 +4608,7 @@ msgstr "Dakika" msgid "Minutes" msgstr "Dakika" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "Ayna" @@ -4615,7 +4637,7 @@ msgid "Modify" msgstr "Değiştir" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "Sertifikayı Düzenle" @@ -4647,10 +4669,9 @@ msgstr "Aylık" msgid "Monthly on day %{day} at %{time}" msgstr "Her ayın %{day} günü %{time} saatinde" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "Korumalı Dizin" +msgstr "Bağlanmış dizin" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4680,6 +4701,7 @@ msgstr "Yok" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4754,7 +4776,7 @@ msgstr "Yeni lego istemci hatası: {0}" msgid "New name" msgstr "Yeni ad" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "Yeni Şifre" @@ -4770,12 +4792,11 @@ msgstr "Yeni taşıma hatası: {0}" msgid "New version released" msgstr "Yeni sürüm yayınlandı" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "Sonraki" @@ -4787,7 +4808,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Nginx -T çıktısı boş" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Nginx Erişim Günlüğü Yolu" @@ -4841,11 +4862,11 @@ msgstr "Nginx yapılandırması geri yüklendi" msgid "Nginx Configuration Parse Error" msgstr "Nginx Yapılandırma Ayrıştırma Hatası" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Nginx Yapılandırma Dosyası Yolu" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Nginx Yapılandırma Dizini" @@ -4853,7 +4874,7 @@ msgstr "Nginx Yapılandırma Dizini" msgid "Nginx Control" msgstr "Nginx Kontrolü" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Nginx Kontrol Modu" @@ -4862,7 +4883,7 @@ msgstr "Nginx Kontrol Modu" msgid "Nginx CPU usage rate" msgstr "Nginx CPU kullanım oranı" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Nginx Hata Günlüğü Yolu" @@ -4898,7 +4919,7 @@ msgstr "Nginx çalışıyor" msgid "Nginx Log" msgstr "Nginx Günlüğü" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Nginx Günlük Dizin Beyaz Listesi" @@ -4911,7 +4932,7 @@ msgstr "Nginx Günlük Dizini Oluşturuluyor..." msgid "Nginx Memory usage" msgstr "Nginx Bellek Kullanımı" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Nginx PID Yolu" @@ -4919,7 +4940,7 @@ msgstr "Nginx PID Yolu" msgid "Nginx PID path exists" msgstr "Nginx PID yolu mevcut" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Nginx Yeniden Yükleme Komutu" @@ -4940,7 +4961,7 @@ msgstr "Nginx başarıyla yeniden yüklendi" msgid "Nginx reported a configuration syntax error." msgstr "Nginx bir yapılandırma sözdizimi hatası bildirdi." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Nginx Yeniden Başlatma Komutu" @@ -4956,7 +4977,7 @@ msgstr "Nginx başarıyla yeniden başlatıldı" msgid "Nginx sbin path exists" msgstr "Nginx sbin yolu mevcut" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Nginx Yapılandırma Test Komutu" @@ -4979,12 +5000,22 @@ msgstr "Nginx UI yapılandırması geri yüklendi" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "" "Nginx UI yapılandırması geri yüklendi ve birkaç saniye içinde otomatik " "olarak yeniden başlatılacak." +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"Nginx UI, küresel sertifika yenileme aralığına ve bu sertifikanın " +"geçerlilik süresine bağlı olarak, süresi dolmak üzere olduğunda bu " +"sertifikayı otomatik olarak yenileyecektir." + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf, conf.d dizinini içerir" @@ -5011,7 +5042,7 @@ msgid "No" msgstr "Hayır" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "Eylem Yok" @@ -5049,10 +5080,6 @@ msgstr "Geçerli sayfada hiçbir giriş yok" msgid "No geographic data available" msgstr "Coğrafi veri mevcut değil" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "Seçilen zaman aralığında kayıt bulunamadı." @@ -5114,7 +5141,7 @@ msgstr "Düğüm Durumu" msgid "Nodes" msgstr "Düğümler" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "Sonra Değil" @@ -5135,7 +5162,7 @@ msgstr "Dizine Alınmamış" msgid "Not Loaded" msgstr "Yüklenmedi" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "Henüz çalıştırılmadı" @@ -5216,7 +5243,7 @@ msgstr "Çalışan işlem sayısı" msgid "Obtain cert error: {0}" msgstr "Sertifika alma hatası: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "Sertifika al" @@ -5270,7 +5297,7 @@ msgstr "OIDC Girişi" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5314,10 +5341,6 @@ msgstr "Sadece ZIP dosyalarına izin verilir" msgid "Open" msgstr "Açık" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "Açık Kaynak Sınırlaması" @@ -5334,7 +5357,7 @@ msgstr "İşletim Sistemi İstatistikleri" msgid "Optional comment for this DNS record" msgstr "Bu DNS kaydı için isteğe bağlı yorum" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "Veya" @@ -5383,11 +5406,6 @@ msgstr "Diğerleri" msgid "Otp or recovery code empty" msgstr "OTP veya kurtarma kodu boş" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "Mevcut dosyanın üzerine yaz" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "Üzerine yaz" @@ -5435,10 +5453,6 @@ msgstr "Şifre" msgid "Password (*)" msgstr "Şifre (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "Yanlış şifre" @@ -5447,11 +5461,11 @@ msgstr "Yanlış şifre" msgid "Password length cannot exceed 20 characters" msgstr "Şifre uzunluğu 20 karakteri geçemez" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "Şifre başarıyla güncellendi" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "Şifreler eşleşmiyor" @@ -5523,7 +5537,7 @@ msgstr "Performans ayarları başarıyla kaydedildi" msgid "Performing core upgrade" msgstr "Çekirdek yükseltme gerçekleştiriliyor" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "Kişisel Bilgiler" @@ -5568,13 +5582,19 @@ msgstr "" msgid "Please enter" msgstr "Lütfen girin" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "Lütfen sertifika için bir ad girin" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" -"Oluşturmak istediğiniz anahtar için bir ad girin ve aşağıdaki Tamam butonuna " -"tıklayın." +"Oluşturmak istediğiniz anahtar için bir ad girin ve aşağıdaki Tamam " +"butonuna tıklayın." #: src/components/AutoCertForm/AutoCertForm.vue:98 msgid "Please enter a valid IPv4 address (0-255 per octet)" @@ -5588,15 +5608,21 @@ msgstr "Lütfen geçerli bir IPv4 veya IPv6 adresi girin" msgid "Please enter a valid port range" msgstr "Lütfen geçerli bir port aralığı girin" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "Lütfen en az bir alan adı girin" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "Lütfen en az bir alan adı veya IP adresi girin" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "Devam etmeden önce lütfen kurulum sırrını girin" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "Lütfen OTP kodunu girin:" @@ -5630,8 +5656,7 @@ msgstr "Lütfen gerekli S3 yapılandırma alanlarını doldurun" msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." -msgstr "" -"Lütfen DNS sağlayıcınız tarafından sağlanan API kimlik bilgilerini doldurun." +msgstr "Lütfen DNS sağlayıcınız tarafından sağlanan API kimlik bilgilerini doldurun." #: src/components/AutoCertForm/AutoCertForm.vue:168 msgid "" @@ -5645,10 +5670,11 @@ msgstr "" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "" -"Kilitlenmeyi önlemek için tercihlerden hemen yeni kurtarma kodları oluşturun." +"Kilitlenmeyi önlemek için tercihlerden hemen yeni kurtarma kodları " +"oluşturun." #: src/views/config/components/ConfigRightPanel/Basic.vue:27 #: src/views/config/components/Rename.vue:65 @@ -5693,8 +5719,7 @@ msgid "Please log in." msgstr "Lütfen giriş yapın." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "" "Lütfen aşağıdaki zaman yapılandırmalarının birimlerinin saniye cinsinden " "olduğunu unutmayın." @@ -5715,10 +5740,9 @@ msgstr "Lütfen bir yedekleme dosyası seçin" #: src/views/site/site_edit/components/SiteEditor/store.ts:144 msgid "Please select a certificate before saving the TLS server configuration." -msgstr "" -"Lütfen TLS sunucu yapılandırmasını kaydetmeden önce bir sertifika seçin." +msgstr "Lütfen TLS sunucu yapılandırmasını kaydetmeden önce bir sertifika seçin." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "Lütfen bir DNS kimlik bilgisi seçin" @@ -5798,10 +5822,6 @@ msgstr "Tercih" msgid "Preparing lego configurations" msgstr "Lego yapılandırmaları hazırlanıyor" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5820,10 +5840,6 @@ msgstr "Özel IP'ler (192.168.x.x, 10.x.x.x, 172.16-31.x.x) başarısız olacakt msgid "private key" msgstr "özel anahtar" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "Süreç" @@ -5867,12 +5883,13 @@ msgstr "Protokol" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" "Protokol yapılandırması yalnızca doğrudan bağlantı sırasında geçerlidir. " "Ters proxy kullanıyorsanız, protokolü ters proxyda ayrı olarak yapılandırın." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5911,14 +5928,6 @@ msgstr "Proxy Hedefleri" msgid "Public CA Requirements:" msgstr "Genel CA Gereksinimleri:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "Kamu Güvenlik Numarası" @@ -6019,11 +6028,11 @@ msgstr "Kayıt Türü" msgid "Record updated" msgstr "Kayıt güncellendi" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "Kayıtlar" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "Kurtarma" @@ -6056,7 +6065,7 @@ msgstr "Yönlendirme Mesajları (3xx)" msgid "Referer" msgstr "Referer" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "Yenile" @@ -6065,11 +6074,6 @@ msgstr "Yenile" msgid "Refresh Modules Cache" msgstr "Modül Önbelleğini Yenile" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "Yanıtı yeniden oluştur" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "Yanıtı yeniden oluştur" @@ -6128,7 +6132,7 @@ msgid "Reload" msgstr "Yeniden Yükle" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Nginx'i Yeniden Yükle" @@ -6155,8 +6159,7 @@ msgstr "Uzak Nginx Yeniden Yükleme Başarılı" #: src/components/NamespaceTabs/NamespaceTabs.vue:85 msgid "Reload request failed, please check your network connection" -msgstr "" -"Yeniden yükleme isteği başarısız oldu, lütfen ağ bağlantınızı kontrol edin" +msgstr "Yeniden yükleme isteği başarısız oldu, lütfen ağ bağlantınızı kontrol edin" #: src/components/NginxControl/NginxControl.vue:77 msgid "Reloading" @@ -6166,16 +6169,12 @@ msgstr "Yeniden Yükleniyor" msgid "Reloading nginx" msgstr "nginx yeniden yükleniyor" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "Uzak" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "Hiçbir düğüm seçilmedi" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "Kaldır" @@ -6185,6 +6184,10 @@ msgstr "Kaldır" msgid "Remove successfully" msgstr "Başarıyla kaldırıldı" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "Kaldırılan %{count} çakışan kayıt: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "Başarıyla kaldırıldı" @@ -6240,8 +6243,7 @@ msgstr "Uzak Akış Yeniden Adlandırma Başarılı" #: src/components/Notification/notifications.ts:146 msgid "Rename site %{name} to %{new_name} on %{node} failed" -msgstr "" -"%{node} üzerinde %{name} sitesi %{new_name} olarak yeniden adlandırılamadı" +msgstr "%{node} üzerinde %{name} sitesi %{new_name} olarak yeniden adlandırılamadı" #: src/components/Notification/notifications.ts:150 msgid "Rename site %{name} to %{new_name} on %{node} successfully" @@ -6275,8 +6277,8 @@ msgstr "Başarıyla yeniden adlandırıldı" msgid "Renew cert error: {0}" msgstr "Sertifika yenileme hatası: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "Sertifikayı Yenile" @@ -6288,8 +6290,7 @@ msgstr "Sertifika Yenileme Hatası" msgid "Renew Certificate Success" msgstr "Sertifika Yenileme Başarılı" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "Başarıyla yenilendi" @@ -6341,8 +6342,8 @@ msgid "" "shared library memory, which will be repeated calculated for multiple " "processes" msgstr "" -"Resident Set Size: Fiziksel bellekte gerçekte bulunan bellek, paylaşılan tüm " -"kütüphane belleğini içerir ve birden fazla işlem için tekrar hesaplanır" +"Resident Set Size: Fiziksel bellekte gerçekte bulunan bellek, paylaşılan " +"tüm kütüphane belleğini içerir ve birden fazla işlem için tekrar hesaplanır" #: src/views/nginx_log/components/IndexingSettingsModal.vue:109 msgid "Resource Usage Warning" @@ -6380,8 +6381,7 @@ msgstr "Uzak Nginx Yeniden Başlatma Başarılı" #: src/components/NamespaceTabs/NamespaceTabs.vue:105 msgid "Restart request failed, please check your network connection" -msgstr "" -"Yeniden başlatma isteği başarısız oldu, lütfen ağ bağlantınızı kontrol edin" +msgstr "Yeniden başlatma isteği başarısız oldu, lütfen ağ bağlantınızı kontrol edin" #: src/components/NginxControl/NginxControl.vue:82 msgid "Restarting" @@ -6418,6 +6418,19 @@ msgstr "Bu sürümü geri yükle" msgid "Restored successfully" msgstr "Başarıyla geri yüklendi" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "Yeniden dene" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "Sertifika verilmesini yeniden dene" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "Önce gözden geçir" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6446,8 +6459,7 @@ msgstr "" #: src/views/site/site_add/components/DNSRecordIntegration.vue:356 #: src/views/site/site_edit/components/RightPanel/DNS.vue:650 msgid "Route traffic through proxy for additional protection and features" -msgstr "" -"Ekstra koruma ve özellikler için trafiği bir proxy üzerinden yönlendirin" +msgstr "Ekstra koruma ve özellikler için trafiği bir proxy üzerinden yönlendirin" #: src/views/preference/tabs/AuthSettings.vue:72 msgid "RP Display Name" @@ -6465,11 +6477,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "Çalışma Modu" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "Sertifikayı Yenile" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "Koşma" @@ -6565,7 +6572,8 @@ msgstr "S3 yükleme başarısız: {0}" #: src/components/InspectConfig/InspectConfig.vue:39 msgid "Sandbox setup failed before Nginx could validate the configuration." msgstr "" -"Nginx yapılandırmayı doğrulayamadan önce sanal ortam kurulumu başarısız oldu." +"Nginx yapılandırmayı doğrulayamadan önce sanal ortam kurulumu başarısız " +"oldu." #: src/components/InspectConfig/InspectConfig.vue:129 #: src/components/InspectConfig/InspectConfig.vue:28 @@ -6588,7 +6596,7 @@ msgstr "Cumartesi" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6598,19 +6606,14 @@ msgstr "Cumartesi" msgid "Save" msgstr "Kaydet" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "Depolama Yapılandırması" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "Yönergeleri Kaydet" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "Şimdi kaydet" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "Sırayı Kaydet" @@ -6653,15 +6656,19 @@ msgstr "Akış %{name}, %{node} üzerine başarıyla kaydedildi" msgid "Save successful" msgstr "Başarıyla kaydedildi" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "Başarıyla kaydedildi" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "Site yapılandırması şimdi kaydedilsin mi?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "Kaydedilen sertifika yanıtında bir ID eksik." #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6671,6 +6678,14 @@ msgstr "" msgid "Saved successfully" msgstr "Başarıyla kaydedildi" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"Site yapılandırması kaydedilemedi; sertifika yönergeleri düzenleyicide — " +"değişiklikleri gözden geçirin ve Kaydet düğmesinden tekrar deneyin." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "Sbin yolu mevcut değil" @@ -6719,7 +6734,7 @@ msgstr "SDK" msgid "Search" msgstr "Ara" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "Alan adı, sağlayıcı veya hedef ara" @@ -6751,7 +6766,7 @@ msgstr "Şablonları ara" msgid "Secret has been copied" msgstr "Gizli kod kopyalandı" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "Güvenlik Ayarları" @@ -6777,8 +6792,8 @@ msgid "" "Select a predefined CA directory or enter a custom one. Leave blank to use " "the default CA directory." msgstr "" -"Önceden tanımlanmış bir CA dizini seçin veya özel bir tane girin. Varsayılan " -"CA dizinini kullanmak için boş bırakın." +"Önceden tanımlanmış bir CA dizini seçin veya özel bir tane girin. " +"Varsayılan CA dizinini kullanmak için boş bırakın." #: src/language/curd.ts:31 msgid "Select all" @@ -6799,6 +6814,10 @@ msgstr "DNS alan adı seç" msgid "Select existing record" msgstr "Mevcut kaydı seç" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "Eşleşen A/AAAA kayıtlarını seçin" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6825,6 +6844,24 @@ msgstr "Kendi Kendini Kontrol" msgid "Self check failed, Nginx UI may not work properly" msgstr "Kendi kendine kontrol başarısız oldu, Nginx UI düzgün çalışmayabilir" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "Kendinden imzalı sertifika" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "Kendinden imzalı sertifika" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "Kendinden imzalı sertifika uygulandı" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "Kendinden imzalı sertifika oluşturuldu" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6839,7 +6876,7 @@ msgid "Server" msgstr "Sunucu" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "Sunucu hatası" @@ -6867,7 +6904,7 @@ msgstr "Sunucu Adları Hash Kova Boyutu" msgid "Server names hash table size" msgstr "Sunucu adları karma tablo boyutu" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "Yönergelerde server_name bulunamadı" @@ -6890,8 +6927,8 @@ msgstr "Ortam ayarlama hatası: {0}" #: src/constants/errors/cert.ts:18 msgid "Set env flag to disable lego CNAME support error: {0}" msgstr "" -"Lego CNAME desteğini devre dışı bırakmak için ortam bayrağı ayarlama hatası: " -"{0}" +"Lego CNAME desteğini devre dışı bırakmak için ortam bayrağı ayarlama " +"hatası: {0}" #: src/views/preference/tabs/CertSettings.vue:42 msgid "" @@ -6919,19 +6956,19 @@ msgstr "HTTP01 meydan okuma sağlayıcısı ayarlanıyor" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath boş, daha fazla bilgi için https://" -"nginxui.com/guide/config-nginx.html adresine bakın" +"Settings.NginxLogSettings.AccessLogPath boş, daha fazla bilgi için " +"https://nginxui.com/guide/config-nginx.html adresine bakın" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath boş, daha fazla bilgi için https://" -"nginxui.com/guide/config-nginx.html adresine bakın" +"Settings.NginxLogSettings.ErrorLogPath boş, daha fazla bilgi için " +"https://nginxui.com/guide/config-nginx.html adresine bakın" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6950,7 +6987,7 @@ msgstr "Göster" msgid "Show Assistant" msgstr "Asistanı Göster" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "Bir anahtarla oturum aç" @@ -7015,8 +7052,8 @@ msgid "" "Sites will appear here once you configure nginx server blocks with valid " "server_name (localhost excluded) directives." msgstr "" -"Geçerli server_name yönergeleriyle (localhost hariç) nginx sunucu bloklarını " -"yapılandırdığınızda siteler burada görünecektir." +"Geçerli server_name yönergeleriyle (localhost hariç) nginx sunucu " +"bloklarını yapılandırdığınızda siteler burada görünecektir." #: src/constants/errors/self_check.ts:11 msgid "Sites-available directory not exist" @@ -7036,10 +7073,6 @@ msgstr "Boyut" msgid "Skip Installation" msgstr "Kurulumu atla" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "Önbellek yükleyici tekrarları arasındaki bekleme süresi" @@ -7052,6 +7085,10 @@ msgstr "Önbellek yöneticisi yinelemeleri arasındaki bekleme süresi" msgid "Socket" msgstr "Soket" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "Bazı tarayıcılar 398 günden fazla geçerli olan TLS sertifikalarını reddeder." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "Sıralama ölçütü" @@ -7068,15 +7105,6 @@ msgstr "Sponsor" msgid "SSD storage for better I/O performance" msgstr "Daha iyi G/Ç performansı için SSD depolama" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "2+ çekirdek önerilir" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7162,9 +7190,9 @@ msgstr "Statik" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7239,7 +7267,7 @@ msgstr "Streams-enabled dizini mevcut değil" msgid "Structured" msgstr "Yapılandırılmış" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Stub Durum Portu" @@ -7247,7 +7275,7 @@ msgstr "Stub Durum Portu" msgid "Stub_status is not enabled" msgstr "Stub_status etkin değil" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7265,14 +7293,14 @@ msgstr "Pazar" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" "WebSocket protokolü aracılığıyla backend ile iletişimi destekler. Nginx " "UI'nız bir Nginx ters proxy üzerinden kullanılıyorsa, ilgili yapılandırma " -"dosyasını yazmak için bu bağlantıya bakın: https://nginxui.com/guide/nginx-" -"proxy-example.html" +"dosyasını yazmak için bu bağlantıya bakın: " +"https://nginxui.com/guide/nginx-proxy-example.html" #: src/language/curd.ts:53 src/language/curd.ts:57 msgid "Support single or batch upload of files" @@ -7331,8 +7359,7 @@ msgstr "Yapılandırma %{config_name}, %{node_name} ile eşleştirilemedi" #: src/components/Notification/notifications.ts:82 msgid "Sync config %{config_name} to %{node_name} successfully" -msgstr "" -"Yapılandırma %{config_name}, %{node_name} ile başarıyla senkronize edildi" +msgstr "Yapılandırma %{config_name}, %{node_name} ile başarıyla senkronize edildi" #: src/components/Notification/notifications.ts:77 src/language/constants.ts:45 msgid "Sync Config Error" @@ -7360,6 +7387,7 @@ msgid "Sync strategy" msgstr "Senkronizasyon stratejisi" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "Senkronize Et" @@ -7397,21 +7425,13 @@ msgstr "Sistem Geri Yükleme" msgid "System restored successfully." msgstr "Sistem başarıyla geri yüklendi." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "Hedefler" @@ -7479,26 +7499,36 @@ msgstr "" "verildiğinden bu yana 1 haftadan fazla zaman geçmişse veya ayarlarda " "belirlediğiniz süre dolmuşsa yenilenecektir." +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"Sertifika %{path} konumunda oluşturuldu ve ssl_certificate yönergeleri " +"mevcut sunucu bloğuna eklendi. Yapılandırmayı şimdi kaydedin veya " +"değişiklikleri düzenleyicide inceleyip manuel olarak kaydedin." + #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "Aşağıdaki siteler devre dışı bırakılacak:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "Aşağıdaki siteler etkinleştirilecek:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" "Çevrimdışı coğrafi IP analizi için GeoLite2 veritabanına ihtiyaç vardır. Bu " "özelliği etkinleştirmek için lütfen indirin." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" "GeoLite2 veritabanı, IP adresleri için coğrafi bilgi sağlar. Bu, günlük " "analizinde çevrimdışı coğrafi analiz için kullanılır." @@ -7529,7 +7559,8 @@ msgstr "" #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" "Günlük yolu, settings.NginxSettings.LogDirWhiteList içindeki yolların " "altında değil" @@ -7544,8 +7575,7 @@ msgstr "" "iki nokta üst üste ve noktalar içermelidir." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" "Kod tamamlama için kullanılan model. Ayarlanmamışsa sohbet modeli " "kullanılacaktır." @@ -7619,7 +7649,7 @@ msgstr "Teorik maksimum eşzamanlı bağlantı:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "Teorik maksimum RPS (Saniyedeki İstek Sayısı):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " @@ -7642,8 +7672,8 @@ msgid "" "This backup uses an unsupported legacy format. Please create a new backup " "with a newer version before restoring." msgstr "" -"Bu yedekleme, desteklenmeyen eski bir biçim kullanıyor. Geri yüklemeden önce " -"daha yeni bir sürümle yeni bir yedekleme oluşturun." +"Bu yedekleme, desteklenmeyen eski bir biçim kullanıyor. Geri yüklemeden " +"önce daha yeni bir sürümle yeni bir yedekleme oluşturun." #: src/views/certificate/components/AutoCertManagement.vue:35 msgid "This certificate is managed by Nginx UI" @@ -7672,34 +7702,26 @@ msgid "This field should not be empty" msgstr "Bu alan boş bırakılamaz" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." -msgstr "" -"Bu alan yalnızca harfler, Unicode karakterler, sayılar ve -_ içermelidir." +msgid "This field should only contain letters, unicode characters, numbers, and -_." +msgstr "Bu alan yalnızca harfler, Unicode karakterler, sayılar ve -_ içermelidir." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" -msgstr "" -"Bu alan yalnızca harfler, Unicode karakterler, sayılar ve -_./: içermelidir" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" +msgstr "Bu alan yalnızca harfler, Unicode karakterler, sayılar ve -_./: içermelidir" #: src/components/Notification/notifications.ts:102 msgid "This is a test message sent at %{timestamp} from Nginx UI." -msgstr "" -"Bu, Nginx UI'den %{Timestamp} adresinden gönderilen bir test mesajıdır." +msgstr "Bu, Nginx UI'den %{Timestamp} adresinden gönderilen bir test mesajıdır." #: src/components/SelfCheck/store.ts:25 msgid "" "This mode only previews the installation UI flow and does not change any " "server state." msgstr "" -"Bu mod yalnızca kurulum kullanıcı arayüzü akışını önizler ve sunucu durumunu " -"değiştirmez." - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" +"Bu mod yalnızca kurulum kullanıcı arayüzü akışını önizler ve sunucu " +"durumunu değiştirmez." #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" @@ -7725,11 +7747,19 @@ msgstr "" "Bu işlem yalnızca sertifikayı veritabanından kaldıracaktır. Dosya " "sistemindeki sertifika dosyaları silinmeyecektir." +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "" +"Bu kendinden imzalı sertifika, Nginx UI tarafından yönetilir ve otomatik " +"olarak yenilenir." + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" "Bu site, HTTPS (port 443) için varsayılan sunucu (default_server) olarak " "yapılandırılmıştır. IP sertifikaları, Sertifika Yetkilisi (CA) desteği " @@ -7737,8 +7767,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" "Bu site, genellikle IP tabanlı bir sertifikayı gösteren joker karakterli " @@ -7750,8 +7780,8 @@ msgid "" "This token will only be shown once and cannot be retrieved later. Please " "make sure to save it in a secure location." msgstr "" -"Bu token yalnızca bir kez gösterilecek ve daha sonra alınamayacaktır. Lütfen " -"güvenli bir yerde sakladığınızdan emin olun." +"Bu token yalnızca bir kez gösterilecek ve daha sonra alınamayacaktır. " +"Lütfen güvenli bir yerde sakladığınızdan emin olun." #: src/constants/form_errors.ts:4 src/language/curd.ts:44 msgid "This value is already taken" @@ -7772,8 +7802,7 @@ msgstr "" #: src/views/nginx_log/indexing/IndexManagement.vue:56 msgid "This will rebuild the index data for this specific file: %{path}" -msgstr "" -"Bu, bu belirli dosya için indeks verilerini yeniden oluşturacaktır: %{path}" +msgstr "Bu, bu belirli dosya için indeks verilerini yeniden oluşturacaktır: %{path}" #: src/components/SystemRestore/SystemRestoreContent.vue:253 #: src/components/SystemRestore/SystemRestoreContent.vue:336 @@ -7794,8 +7823,7 @@ msgstr "" "yükleme tamamlandıktan sonra Nginx UI yeniden başlatılacaktır." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" "Bu işlem, %{nodeNames} üzerindeki Nginx UI'yi %{version} sürümüne " "yükseltecek veya yeniden yükleyecektir." @@ -7862,15 +7890,15 @@ msgid "" "and restart Nginx UI." msgstr "" "Güvenliği sağlamak için WebAuthn yapılandırması kullanıcı arayüzü üzerinden " -"eklenemez. Lütfen app.ini yapılandırma dosyasına aşağıdakileri manuel olarak " -"ekleyin ve Nginx UI'ı yeniden başlatın." +"eklenemez. Lütfen app.ini yapılandırma dosyasına aşağıdakileri manuel " +"olarak ekleyin ve Nginx UI'ı yeniden başlatın." #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" "Sertifikanın otomatik yenilenmesinin düzgün çalışmasını sağlamak için, " @@ -8016,7 +8044,7 @@ msgstr "TTL (saniye)" msgid "Tuesday" msgstr "Salı" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "İki faktörlü kimlik doğrulama gerekiyor" @@ -8037,10 +8065,6 @@ msgstr "Tür" msgid "Type %{delete} to confirm" msgstr "Onaylamak için %{delete} yazın" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "A/AAAA kayıtlarını yazın veya seçin" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "Tarayıcı yazın veya seçin" @@ -8086,11 +8110,11 @@ msgstr "Desteklenmeyen günlük formatı" msgid "Update already in progress" msgstr "Güncelleme zaten devam ediyor" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "Şifreyi Güncelle" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "Profili Güncelle" @@ -8179,11 +8203,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "Kök için @ kullanın" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "OTP Kullan" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "Kurtarma kodunu kullan" @@ -8191,10 +8215,6 @@ msgstr "Kurtarma kodunu kullan" msgid "Use Temporary Path" msgstr "Geçici Yol Kullan" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "Kullanıcı" @@ -8208,7 +8228,7 @@ msgstr "Kullanıcı Aracısı" msgid "User banned" msgstr "Kullanıcı yasaklandı" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "Kullanıcı bilgileri başarıyla güncellendi" @@ -8221,7 +8241,7 @@ msgid "User Profile" msgstr "Kullanıcı Profili" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "Kullanıcı Adı" @@ -8239,10 +8259,14 @@ msgstr "Benzersiz Ziyaretçi" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "Geçerli" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "Geçerli süre (gün)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "SSL Sertifikasını Doğrula" @@ -8253,11 +8277,6 @@ msgstr "SSL Sertifikasını Doğrula" msgid "Value" msgstr "Değer" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "Gizliliği Doğrula" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8294,7 +8313,7 @@ msgstr "Tüm bildirimleri görüntüle" msgid "View on GitHub" msgstr "GitHub'da Görüntüle" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "Kurtarma Kodlarını Görüntüle" @@ -8322,7 +8341,7 @@ msgstr "Ziyaretler" msgid "Waiting processes" msgstr "Bekleme süreçleri" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8354,10 +8373,10 @@ msgstr "" msgid "We do not accept any feature requests" msgstr "Herhangi bir özellik talebini kabul etmiyoruz" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" "Bu dosyadan HTTPChallenge yapılandırmasını kaldıracağız ve Nginx'i yeniden " "yükleyeceğiz. Devam etmek istediğinizden emin misiniz?" @@ -8395,6 +8414,19 @@ msgstr "Haftalık olarak %{day} günü %{time}" msgid "Weight" msgstr "Ağırlık" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"Etkinleştirildiğinde, DDNS seçili adların sahibi olur: kardeş aile " +"kayıtlarını otomatik olarak eşleştirir, eksik kayıtları oluşturur ve IP " +"ailesine erişilemeyen kayıtları kaldırır. Yalnızca açıkça seçtiğiniz " +"kayıtları yönetmek ve diğer tüm DNS durumunu olduğu gibi bırakmak için " +"devre dışı bırakın." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8415,7 +8447,7 @@ msgstr "" "kaydettiğinizde, ad alanında ayarlanan düğümler ve aşağıda seçilen düğümler " "senkronize edilecektir." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8427,7 +8459,7 @@ msgstr "" msgid "Whether to use a temporary path when writing temporary files" msgstr "Geçici dosyalar yazılırken geçici bir yol kullanılıp kullanılmayacağı" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "Wildcard Sertifikası" @@ -8446,7 +8478,7 @@ msgstr "Çalışan Süreçler" msgid "Workers" msgstr "Çalışanlar" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "Çalışma alanı" @@ -8485,8 +8517,8 @@ msgstr "Evet" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" "Bu terminale, localhost olmayan bir alan adında güvenli olmayan bir HTTP " "bağlantısı üzerinden erişiyorsunuz. Bu, hassas bilgilerin açığa çıkmasına " @@ -8521,26 +8553,51 @@ msgstr "" "ekleyemezsiniz." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" "Henüz 2FA'yı etkinleştirmediniz. Kurtarma kodları oluşturmak için lütfen " "2FA'yı etkinleştirin." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "Henüz kurtarma kodları oluşturmadınız." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"Hesabınız hâlâ eski bir kurtarma kodu kullanıyor. Doğrulamadan sonra yeni " +"kurtarma kodları oluşturarak hesap kurtarma işlemini güvende tutun." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"Hesabınız kullanımdan kaldırılmış eski bir kurtarma kodu kullanıyor. Geçişi " +"tamamlamak ve hesap kurtarmayı güvenli tutmak için şimdi yeni kurtarma " +"kodları oluşturun." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" -"Mevcut kurtarma kodunuz güncel olmayabilir ve güvenli olmayabilir. Güvenliği " -"sağlamak için en kısa sürede yeni kurtarma kodları oluşturun." +"Mevcut kurtarma kodunuz güncel olmayabilir ve güvenli olmayabilir. " +"Güvenliği sağlamak için en kısa sürede yeni kurtarma kodları oluşturun." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"Eski kurtarma kodunuz kullanıldı ve tekrar kullanılamaz. Hesap kurtarma " +"özelliğinin kullanılabilir kalması için şimdi yeni kurtarma kodları " +"oluşturun." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "Eski kodlarınız artık çalışmayacak." @@ -8552,12 +8609,66 @@ msgstr "Geçiş Anahtarlarınız" msgid "Zero-allocation pipeline" msgstr "Tahsisatsız boru hattı" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx yapılandırmayı doğrulayamadı." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "Kimlik doğrulama..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Bağlandı" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "İçerik" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "Kopya" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "Harici Docker Konteyneri" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "Oluştur" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "Mevcut dosyanın üzerine yaz" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "Yanıtı yeniden oluştur" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "Hiçbir düğüm seçilmedi" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "Sertifikayı Yenile" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "2+ çekirdek önerilir" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "A/AAAA kayıtlarını yazın veya seçin" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "Gizliliği Doğrula" + #~ msgid "OpenAI" #~ msgstr "OpenAI" #~ msgid "Backup file integrity check failed, it may have been tampered with" -#~ msgstr "" -#~ "Yedek dosya bütünlük kontrolü başarısız oldu, dosya değiştirilmiş olabilir" +#~ msgstr "Yedek dosya bütünlük kontrolü başarısız oldu, dosya değiştirilmiş olabilir" #~ msgid "Once the verification is complete, the records will be removed." #~ msgstr "Doğrulama tamamlandığında, kayıtlar kaldırılacaktır." @@ -8566,8 +8677,8 @@ msgstr "Tahsisatsız boru hattı" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." #~ msgstr "" -#~ "Mülkiyet doğrulaması için alan adınızın DNS kayıtlarına bir veya daha " -#~ "fazla TXT kaydı ekleyeceğiz." +#~ "Mülkiyet doğrulaması için alan adınızın DNS kayıtlarına bir veya daha fazla " +#~ "TXT kaydı ekleyeceğiz." #~ msgid "Settings" #~ msgstr "Ayarlar" @@ -8734,14 +8845,14 @@ msgstr "Tahsisatsız boru hattı" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" #~ "Backend ile iletişimi Server-Sent Events protokolü üzerinden destekler. " #~ "Nginx UI'nız bir Nginx ters proxy üzerinden kullanılıyorsa, ilgili " -#~ "yapılandırma dosyasını yazmak için bu bağlantıya bakın: https://nginxui." -#~ "com/guide/nginx-proxy-example.html" +#~ "yapılandırma dosyasını yazmak için bu bağlantıya bakın: " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "Boş bırakılırsa, varsayılan CA Dir kullanılır." @@ -8811,11 +8922,11 @@ msgstr "Tahsisatsız boru hattı" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" -#~ "/var/run/docker.sock dosyasının var olup olmadığını kontrol edin. Nginx " -#~ "UI Resmi Docker Image'ını kullanıyorsanız, docker soketinin şu şekilde " +#~ "/var/run/docker.sock dosyasının var olup olmadığını kontrol edin. Nginx UI " +#~ "Resmi Docker Image'ını kullanıyorsanız, docker soketinin şu şekilde " #~ "bağlandığından emin olun: `-v /var/run/docker.sock:/var/run/docker.sock`." #~ msgid "Check if the nginx access log path exists" @@ -8857,8 +8968,7 @@ msgstr "Tahsisatsız boru hattı" #~ msgstr "Oluşturulma Tarihi" #~ msgid "Deploy %{conf_name} to %{node_name} successfully" -#~ msgstr "" -#~ "%{conf_name} yapılandırması başarıyla %{node_name} düğümüne dağıtıldı" +#~ msgstr "%{conf_name} yapılandırması başarıyla %{node_name} düğümüne dağıtıldı" #~ msgid "Deploy successfully" #~ msgstr "Başarıyla Dağıtıldı" @@ -8866,8 +8976,8 @@ msgstr "Tahsisatsız boru hattı" #, fuzzy #~ msgid "Disable site %{site} on %{node} error, response: %{resp}" #~ msgstr "" -#~ "%{conf_name} yapılandırmasını %{node_name} düğümünde etkinleştirme " -#~ "başarılı oldu" +#~ "%{conf_name} yapılandırmasını %{node_name} düğümünde etkinleştirme başarılı " +#~ "oldu" #~ msgid "Do you want to deploy this file to remote server?" #~ msgid_plural "Do you want to deploy this file to remote servers?" @@ -8882,8 +8992,8 @@ msgstr "Tahsisatsız boru hattı" #~ msgid "Enable %{conf_name} in %{node_name} successfully" #~ msgstr "" -#~ "%{conf_name} yapılandırmasını %{node_name} düğümünde etkinleştirme " -#~ "başarılı oldu" +#~ "%{conf_name} yapılandırmasını %{node_name} düğümünde etkinleştirme başarılı " +#~ "oldu" #~ msgid "Enable successfully" #~ msgstr "Başarıyla etkinleştirildi" @@ -8895,18 +9005,14 @@ msgstr "Tahsisatsız boru hattı" #~ "Nginx kullanıcı arayüzünü en son sürüme yükseltin" #, fuzzy -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" #~ msgstr "" -#~ "2] üzerinde %{orig_path}'ı %{new_path} olarak yeniden adlandırma " -#~ "başarısız oldu, yanıt: %{resp}" +#~ "2] üzerinde %{orig_path}'ı %{new_path} olarak yeniden adlandırma başarısız " +#~ "oldu, yanıt: %{resp}" #, fuzzy -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" -#~ msgstr "" -#~ "2] üzerinde %{orig_path}'ı %{new_path} olarak başarıyla yeniden adlandırın" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgstr "2] üzerinde %{orig_path}'ı %{new_path} olarak başarıyla yeniden adlandırın" #, fuzzy #~ msgid "Save site %{site} to %{node} error, response: %{resp}" @@ -8923,8 +9029,7 @@ msgstr "Tahsisatsız boru hattı" #~ "lütfen uzak Nginx kullanıcı arayüzünü en son sürüme yükseltin" #, fuzzy -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "" #~ "Sertifika %{cert_name} ile %{env_name} arasında senkronizasyon başarısız " #~ "oldu, yanıt: %{resp}" @@ -8939,8 +9044,8 @@ msgstr "Tahsisatsız boru hattı" #~ msgstr "Tarayamıyor musunuz? Metin anahtar bağlamasını kullanın" #~ msgid "" -#~ "If you lose your mobile phone, you can use the recovery code to reset " -#~ "your 2FA." +#~ "If you lose your mobile phone, you can use the recovery code to reset your " +#~ "2FA." #~ msgstr "" #~ "Cep telefonunuzu kaybederseniz, 2FA'nızı sıfırlamak için kurtarma kodunu " #~ "kullanabilirsiniz." @@ -8949,8 +9054,7 @@ msgstr "Tahsisatsız boru hattı" #~ msgstr "Kullanıcı adı veya şifre yanlış" #, fuzzy -#~ msgid "" -#~ "The recovery code is only displayed once, please save it in a safe place." +#~ msgid "The recovery code is only displayed once, please save it in a safe place." #~ msgstr "" #~ "Kurtarma kodu yalnızca bir kez görüntülenir, lütfen güvenli bir yere " #~ "kaydedin." @@ -8966,9 +9070,8 @@ msgstr "Tahsisatsız boru hattı" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" #~ msgstr "" -#~ "2] üzerinde %{orig_path}'ı %{new_path} olarak yeniden adlandırmak " -#~ "başarısız oldu, lütfen uzak Nginx kullanıcı arayüzünü en son sürüme " -#~ "yükseltin" +#~ "2] üzerinde %{orig_path}'ı %{new_path} olarak yeniden adlandırmak başarısız " +#~ "oldu, lütfen uzak Nginx kullanıcı arayüzünü en son sürüme yükseltin" #~ msgid "" #~ "Customize the name of local server to be displayed in the environment " @@ -8979,18 +9082,18 @@ msgstr "Tahsisatsız boru hattı" #~ msgstr "Yalnızca DNS kaydı yönetimi" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" #~ "DNS Alanları, NGINX UI içinde DNS kaydı yönetimi için kullanılır ve ACME " #~ "DNS-01 sertifika doğrulamalarından ayrıdır." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" -#~ "Şu anda DNS kaydı yönetimi yalnızca Alibaba Cloud DNS, Tencent Cloud DNS " -#~ "ve Cloudflare destekler." +#~ "Şu anda DNS kaydı yönetimi yalnızca Alibaba Cloud DNS, Tencent Cloud DNS ve " +#~ "Cloudflare destekler." #~ msgid "" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " @@ -8999,6 +9102,7 @@ msgstr "Tahsisatsız boru hattı" #~ "ACME DNS-01 sertifika düzenleme için DNS > Kimlik Bilgileri altında DNS " #~ "kimlik bilgileri oluşturun ve bunları sertifika ayarlarında seçin." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains yalnızca DNS kayıt yönetimi uygulamaları olan sağlayıcıları kullanır." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "" +#~ "DNS Domains yalnızca DNS kayıt yönetimi uygulamaları olan sağlayıcıları " +#~ "kullanır." diff --git a/app/src/language/uk_UA/app.po b/app/src/language/uk_UA/app.po index f0f4f3ca..d6dc85f1 100644 --- a/app/src/language/uk_UA/app.po +++ b/app/src/language/uk_UA/app.po @@ -4,11 +4,11 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "PO-Revision-Date: 2025-04-16 15:12+0000\n" "Last-Translator: sergio_from_tauri \n" -"Language-Team: Ukrainian \n" +"Language-Team: Ukrainian " +"\n" "Language: uk_UA\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" @@ -17,8 +17,8 @@ msgstr "" #: src/language/generate.ts:37 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}" msgstr "" -"[Nginx UI] Користувач ACME: %{name}, Електронна пошта: %{email}, Каталог CA: " -"%{caDir}" +"[Nginx UI] Користувач ACME: %{name}, Електронна пошта: %{email}, Каталог " +"CA: %{caDir}" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" @@ -35,11 +35,10 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] Сертифікат успішно відкликано" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "" -"[Nginx UI] Сертифікат використовувався для сервера, перезавантаження TLS-" -"сертифіката сервера" +"[Nginx UI] Сертифікат використовувався для сервера, перезавантаження " +"TLS-сертифіката сервера" #: src/language/generate.ts:42 msgid "[Nginx UI] Creating client facilitates communication with the CA server" @@ -116,8 +115,8 @@ msgstr "* Включає вузли з групи %{groupName} та вузли, #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" "* Файли індексу за замовчуванням зберігаються в каталозі \"log-index\" у " "шляху конфігурації NGINX UI." @@ -131,10 +130,6 @@ msgstr "" "оперативної пам’яті. Фактична продуктивність може відрізнятися залежно від " "конфігурації вашого обладнання." -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "%{count} сайтів вибрано" @@ -152,8 +147,9 @@ msgid "" "%{provider} can be used for ACME DNS-01 certificate challenges, but DNS " "record management in DNS Domains is not supported for this provider." msgstr "" -"%{provider} можна використовувати для перевірок сертифікатів ACME DNS-01, але " -"керування DNS-записами в DNS Domains для цього провайдера не підтримується." +"%{provider} можна використовувати для перевірок сертифікатів ACME DNS-01, " +"але керування DNS-записами в DNS Domains для цього провайдера не " +"підтримується." #: src/views/nginx_log/structured/StructuredLogViewer.vue:811 msgid "%{start}-%{end} of %{total} items" @@ -186,7 +182,7 @@ msgstr "24-годинна статистика UV/PV" msgid "2FA" msgstr "2FA" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "2FA Налаштування" @@ -194,11 +190,25 @@ msgstr "2FA Налаштування" msgid "4GB+ RAM recommended" msgstr "Рекомендується 4 ГБ оперативної пам’яті або більше" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." msgstr "" -"У пісочниці або вихідній конфігурації відсутній необхідний файл включення." +"Записи A з однаковими іменами не керуються в режимі лише IPv6. Вони " +"залишаються без змін у DNS." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." +msgstr "У пісочниці або вихідній конфігурації відсутній необхідний файл включення." + +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"Записи AAAA з однаковими іменами не керуються в режимі лише IPv4. Вони " +"залишаються без змін у DNS." #: src/routes/modules/system.ts:38 msgid "About" @@ -217,10 +227,6 @@ msgstr "Шлях до журналу доступу не існує" msgid "Access Logs" msgstr "Логи доступу" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -232,10 +238,10 @@ msgstr "Дія" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -277,7 +283,8 @@ msgstr "Додати конфігурацію" msgid "Add Directive Below" msgstr "Додайте директиву нижче" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "Додати домен" @@ -285,6 +292,14 @@ msgstr "Додати домен" msgid "Add Header" msgstr "Додати заголовок" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "Додати IP-адресу" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "Додати елемент" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -351,18 +366,12 @@ msgstr "Розширені налаштування" #: src/views/preference/components/AuthSettings/AddPasskey.vue:105 msgid "Afterwards, refresh this page and click add passkey again." -msgstr "" -"Після цього оновіть цю сторінку та натисніть «Додати ключ доступу» знову." +msgstr "Після цього оновіть цю сторінку та натисніть «Додати ключ доступу» знову." #: src/views/dns/components/DNSRecordFilter.vue:55 msgid "All" msgstr "Усі" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx не вдалося перевірити конфігурацію." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "Усі компоненти" @@ -372,13 +381,13 @@ msgstr "Усі компоненти" msgid "All Recovery Codes Have Been Used" msgstr "Усі коди відновлення використано" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." msgstr "" -"Усі вибрані піддомени повинні належати до одного й того самого DNS-" -"провайдера, інакше запит на сертифікат не буде успішним." +"Усі вибрані піддомени повинні належати до одного й того самого " +"DNS-провайдера, інакше запит на сертифікат не буде успішним." #: src/components/GeoLiteDownload/GeoLiteDownload.vue:160 msgid "" @@ -397,8 +406,7 @@ msgid "Any" msgstr "Будь-який" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "" "Будь-яку доступну IP-адресу можна використовувати з приватним центром " "сертифікації" @@ -427,10 +435,6 @@ msgstr "API Тип" msgid "App" msgstr "Додаток" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "Застосувати" @@ -443,7 +447,7 @@ msgstr "Архітектура" msgid "Are you sure to delete this banned IP immediately?" msgstr "Ви впевнені, що хочите видалити цю заборонену IP-адресу?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "Ви впевнені, що хочете видалити цю конфігурацію DDNS?" @@ -455,7 +459,7 @@ msgstr "Ви впевнені, що хочете видалити цей клю msgid "Are you sure to delete this record?" msgstr "Ви впевнені, що хочете видалити цей запис?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "Підтверджуєте генерацію нових кодів відновлення?" @@ -526,6 +530,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud сумісний з OpenAI. Використовуйте https://api.atlascloud.ai/v1 " +"та API-ключ Atlas Cloud." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -535,12 +541,11 @@ msgstr "Спробувати виправити" msgid "Attempts" msgstr "Спроби" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "Авторизація" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "Автентифікація пасоком" @@ -548,11 +553,6 @@ msgstr "Автентифікація пасоком" msgid "Authenticating..." msgstr "Аутентифікація..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "Аутентифікація..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -600,15 +600,15 @@ msgstr "Автоматичне оновлення вимкнено" msgid "Auto refresh enabled" msgstr "Автоматичне оновлення увімкнено" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "Автоматичне відновлення вимкнено на %{name}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "Автоматичне відновлення увімкнено для %{name}" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert виконується, будь ласка, зачекайте..." @@ -711,8 +711,8 @@ msgstr "Шлях резервного копіювання не є директ #: src/constants/errors/backup.ts:65 msgid "Backup path is required for custom directory backup" msgstr "" -"Шлях резервного копіювання необхідний для резервного копіювання спеціального " -"каталогу" +"Шлях резервного копіювання необхідний для резервного копіювання " +"спеціального каталогу" #: src/views/backup/AutoBackup/components/CronEditor.vue:141 msgid "Backup Schedule" @@ -729,8 +729,7 @@ msgstr "" "%{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" "Завдання резервного копіювання %{backup_name} не вдалося під час " "завантаження в сховище, помилка: %{error}" @@ -796,12 +795,6 @@ msgstr "Групове оновлення" msgid "Belows are selected items that you want to batch modify" msgstr "Нижче наведені елементи, які ви обрали для групового редагування" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "Блок є nil" @@ -828,8 +821,8 @@ msgid "" "indexing existing log files immediately." msgstr "" "Увімкнувши розширене індексування, ви підтверджуєте, що ваша система " -"відповідає вимогам і розумієте наслідки для продуктивності. Це негайно почне " -"індексувати наявні файли журналів." +"відповідає вимогам і розумієте наслідки для продуктивності. Це негайно " +"почне індексувати наявні файли журналів." #: src/views/certificate/ACMEUser.vue:39 msgid "CA Dir" @@ -841,8 +834,7 @@ msgstr "Кеш" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:177 msgid "Cache items not accessed within this time will be removed" -msgstr "" -"Елементи кешу, до яких не було звернень протягом цього часу, будуть видалені" +msgstr "Елементи кешу, до яких не було звернень протягом цього часу, будуть видалені" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:349 msgid "Cache loader processing time threshold" @@ -893,14 +885,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -921,8 +913,7 @@ msgstr "Неможливо отримати доступ до шляху збе #: src/constants/errors/user.ts:11 msgid "Cannot change initial user password in demo mode" -msgstr "" -"Не вдається змінити початковий пароль користувача в демонстраційному режимі" +msgstr "Не вдається змінити початковий пароль користувача в демонстраційному режимі" #: src/components/ConfigHistory/DiffViewer.vue:71 msgid "Cannot compare: Missing content" @@ -993,6 +984,12 @@ msgstr "Вміст сертифіката та закритий ключ не м msgid "Certificate decode error" msgstr "Помилка декодування сертифіката" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" +"Директиви сертифіката додано в редактор; перегляньте та збережіть, коли " +"будете готові." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "Повідомлення про закінчення терміну дії сертифіката" @@ -1011,6 +1008,14 @@ msgstr "Сертифікат незабаром закінчується" msgid "Certificate files downloaded successfully" msgstr "Файли сертифікатів успішно завантажено" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "Компонент видачі сертифікатів не готовий" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "Сертифікат успішно видано" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "Назва сертифіката не може бути порожньою" @@ -1045,17 +1050,18 @@ msgid "Certificate revoked successfully" msgstr "Сертифікат успішно відкликано" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "Стан сертифіката" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "Тип сертифіката" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "Сертифікати" @@ -1076,11 +1082,11 @@ msgstr "Метод перевірки" msgid "Change Certificate" msgstr "Змінити сертифікат" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "Змінити пароль" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "Змінено сертифікат" @@ -1119,24 +1125,24 @@ msgstr "Перевірити фавікон" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "Перевірте, чи існує /var/run/docker.sock. Якщо ви використовуєте офіційний " "образ Docker Nginx UI, переконайтеся, що сокет Docker змонтовано таким " -"чином: `-v /var/run/docker.sock:/var/run/docker.sock`. Офіційний образ Nginx " -"UI використовує /var/run/docker.sock для зв’язку з Docker Engine хоста через " -"API Docker Client. Ця функція використовується для керування Nginx в іншому " -"контейнері та виконання заміни контейнера замість заміни бінарного файлу під " -"час OTA-оновлень Nginx UI, щоб гарантувати, що залежності контейнера також " -"оновлюються. Якщо вам не потрібна ця функція, додайте змінну середовища " -"NGINX_UI_IGNORE_DOCKER_SOCKET=true до контейнера." +"чином: `-v /var/run/docker.sock:/var/run/docker.sock`. Офіційний образ " +"Nginx UI використовує /var/run/docker.sock для зв’язку з Docker Engine " +"хоста через API Docker Client. Ця функція використовується для керування " +"Nginx в іншому контейнері та виконання заміни контейнера замість заміни " +"бінарного файлу під час OTA-оновлень Nginx UI, щоб гарантувати, що " +"залежності контейнера також оновлюються. Якщо вам не потрібна ця функція, " +"додайте змінну середовища NGINX_UI_IGNORE_DOCKER_SOCKET=true до контейнера." #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 msgid "" @@ -1147,8 +1153,7 @@ msgstr "" "небезпечним і перешкоджає використанню Passkeys та функцій буфера обміну" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "Перевірте, чи знаходиться каталог conf.d у каталозі конфігурації nginx" #: src/language/generate.ts:7 @@ -1159,25 +1164,25 @@ msgid "" "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" "Перевірте, чи доступна база даних GeoLite2 при увімкненому індексуванні " -"журналів. База даних GeoLite2 необхідна для географічного аналізу IP-адрес у " -"журналі. Ви можете завантажити її з сторінки налаштувань або розташувати " +"журналів. База даних GeoLite2 необхідна для географічного аналізу IP-адрес " +"у журналі. Ви можете завантажити її з сторінки налаштувань або розташувати " "GeoLite2-City.mmdb вручну в тому ж каталозі, що й app.ini" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" -"Перевірте, чи існує шлях до журналу доступу nginx. За замовчуванням цей шлях " -"отримується з 'nginx -V'. Якщо його не вдається отримати або отриманий шлях " -"не вказує на дійсний існуючий файл, буде повідомлено про помилку. У цьому " -"випадку вам потрібно змінити файл конфігурації, щоб вказати шлях до журналу " -"доступу. Докладніше див. у документації: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#accesslogpath" +"Перевірте, чи існує шлях до журналу доступу nginx. За замовчуванням цей " +"шлях отримується з 'nginx -V'. Якщо його не вдається отримати або отриманий " +"шлях не вказує на дійсний існуючий файл, буде повідомлено про помилку. У " +"цьому випадку вам потрібно змінити файл конфігурації, щоб вказати шлях до " +"журналу доступу. Докладніше див. у документації: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1193,29 +1198,29 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" -"Перевірте, чи існує шлях до журналу помилок nginx. За замовчуванням цей шлях " -"отримується з 'nginx -V'. Якщо його не вдається отримати або отриманий шлях " -"не вказує на дійсний існуючий файл, буде повідомлено про помилку. У цьому " -"випадку вам потрібно змінити файл конфігурації, щоб вказати шлях до журналу " -"помилок. Докладніше див. у документації: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#errorlogpath" +"Перевірте, чи існує шлях до журналу помилок nginx. За замовчуванням цей " +"шлях отримується з 'nginx -V'. Якщо його не вдається отримати або отриманий " +"шлях не вказує на дійсний існуючий файл, буде повідомлено про помилку. У " +"цьому випадку вам потрібно змінити файл конфігурації, щоб вказати шлях до " +"журналу помилок. Докладніше див. у документації: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" -"Перевірте, чи існує шлях до PID Nginx. За замовчуванням цей шлях отримується " -"з команди 'nginx -V'. Якщо його не вдається отримати, буде повідомлено про " -"помилку. У цьому випадку вам потрібно змінити конфігураційний файл, щоб " -"вказати шлях до PID Nginx. Докладніше див. у документації: https://nginxui." -"com/zh_CN/guide/config-nginx.html#pidpath" +"Перевірте, чи існує шлях до PID Nginx. За замовчуванням цей шлях " +"отримується з команди 'nginx -V'. Якщо його не вдається отримати, буде " +"повідомлено про помилку. У цьому випадку вам потрібно змінити " +"конфігураційний файл, щоб вказати шлях до PID Nginx. Докладніше див. у " +"документації: https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1243,8 +1248,8 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" "Перевірте, чи каталоги streams-available та streams-enabled знаходяться в " "каталозі конфігурації nginx" @@ -1266,6 +1271,10 @@ msgstr "Карта Китаю" msgid "Cipher text is too short" msgstr "Зашифрований текст занадто короткий" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "Очистити конфліктні записи" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Змінні навколишнього середовища очищення" @@ -1477,11 +1486,11 @@ msgstr "Назва конфігурації" msgid "Configurations" msgstr "Конфігурації" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "Налаштувати" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "Налаштувати DDNS" @@ -1493,7 +1502,7 @@ msgstr "Налаштувати SSL" msgid "Confirm Delete" msgstr "Підтвердити видалення" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "Підтвердити новий пароль" @@ -1506,11 +1515,6 @@ msgstr "Потрібне підтвердження" msgid "Connected" msgstr "Підключено" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "Підключено" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "Помилка з'єднання, спроба повторного підключення..." @@ -1523,15 +1527,6 @@ msgstr "Втрачено зв’язок із цим терміналом. Он msgid "Connection timeout period" msgstr "Період таймауту з'єднання" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "Вміст" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "Стан контейнера невідомий" @@ -1544,8 +1539,7 @@ msgstr "Вміст" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "Скопійовано" @@ -1556,19 +1550,13 @@ msgstr "Скопійовано!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "Копіювати" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "Копіювати коди" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "Копіювати" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "Оновлення ядра" @@ -1672,7 +1660,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "Створення клієнта сприяє комунікації з сервером CA" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "Облікові дані" @@ -1715,8 +1703,8 @@ msgstr "" "\"Вірність\" означає точність до змісту та наміру оригінального тексту;\n" "\"Плавність\" означає, що переклад має бути зрозумілим та легким для " "сприйняття;\n" -"\"Витонченість\" означає прагнення до культурної естетики перекладу та краси " -"мови.\n" +"\"Витонченість\" означає прагнення до культурної естетики перекладу та " +"краси мови.\n" "Мета полягає у створенні перекладу, який був би вірним духу оригіналу,\n" "а також відповідав цільовій мові, культурі та естетичним уподобанням " "читачів.\n" @@ -1740,7 +1728,7 @@ msgstr "" " - Без будь-яких пояснень, коментарів чи іншого тексту\n" " - Чисте форматування" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "Поточний пароль" @@ -1766,11 +1754,11 @@ msgstr "Спеціальний cron вираз" msgid "Custom Directory" msgstr "Спеціальний каталог" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "Користувацькі домени" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "Сертифікат користувацьких доменів" @@ -1782,8 +1770,7 @@ msgstr "Користувацькі заголовки" msgid "" "Customize the name of local node to be displayed in the environment " "indicator." -msgstr "" -"Налаштуйте назву локального вузла для відображення в індикаторі середовища." +msgstr "Налаштуйте назву локального вузла для відображення в індикаторі середовища." #: src/views/backup/AutoBackup/components/CronEditor.vue:19 msgid "Daily" @@ -1832,15 +1819,15 @@ msgstr "Файл бази даних не знайдено" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "Конфігурацію DDNS видалено" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "Огляд DDNS" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS збережено" @@ -1858,8 +1845,7 @@ msgstr "Типовий діапазон" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:149 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m" -msgstr "" -"Вкажіть назву та розмір зони спільної пам'яті, наприклад proxy_cache:10m" +msgstr "Вкажіть назву та розмір зони спільної пам'яті, наприклад proxy_cache:10m" #: src/components/LLM/LLMSessionTabs.vue:293 #: src/components/LLM/LLMSessionTabs.vue:384 @@ -1870,7 +1856,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "Видалити" @@ -1955,11 +1941,11 @@ msgstr "Демо" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" -"Увімкнено демонстраційний режим. У цьому терміналі дозволений лише невеликий " -"набір безпечних команд лише для читання." +"Увімкнено демонстраційний режим. У цьому терміналі дозволений лише " +"невеликий набір безпечних команд лише для читання." #: src/views/config/components/ConfigRightPanel/Basic.vue:60 msgid "Deploy" @@ -2106,7 +2092,7 @@ msgstr "Вимкнути" msgid "Disable" msgstr "Вимкнути" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "Не вдалося вимкнути автоматичне поновлення для %{name}" @@ -2161,7 +2147,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "Потік %{name} успішно вимкнено з %{node}" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2280,19 +2266,17 @@ msgstr "Ви хочете %{action} цей сайт?" msgid "Do you want to %{action} this stream?" msgstr "Ви хочете %{action} цей потік?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "Ви хочете вимкнути автоматичне оновлення сертифіката?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "Ви хочете вимкнути цей потік?" +msgstr "Ви дійсно хочете вимкнути вибрані сайти?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "Ви хочете увімкнути цей потік?" +msgstr "Бажаєте ввімкнути вибрані сайти?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2311,10 +2295,6 @@ msgstr "Ви хочете видалити цей апстрім?" msgid "Docker client not initialized" msgstr "Клієнт Docker не ініціалізовано" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Сокет Docker існує" @@ -2323,10 +2303,6 @@ msgstr "Сокет Docker існує" msgid "Docker socket not exist" msgstr "Сокет Docker не існує" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2337,15 +2313,18 @@ msgstr[0] "Документ" msgid "Document Count" msgstr "Кількість документів" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "Домен" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "Домени" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" -msgstr "" -"Список доменів порожній, спробуйте знову відкрити Auto Cert для %{config}" +msgstr "Список доменів порожній, спробуйте знову відкрити Auto Cert для %{config}" #: src/views/certificate/components/CertificateDownload.vue:94 msgid "Download Certificate Files" @@ -2389,8 +2368,9 @@ msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." msgstr "" -"Через політику безпеки деяких браузерів ви не можете використовувати пас-" -"ключі на вебсайтах без HTTPS, окрім випадків, коли сайт працює на localhost." +"Через політику безпеки деяких браузерів ви не можете використовувати " +"пас-ключі на вебсайтах без HTTPS, окрім випадків, коли сайт працює на " +"localhost." #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2488,7 +2468,7 @@ msgstr "Увімкнути розширене індексування" msgid "Enable Advanced Log Indexing" msgstr "Увімкнути розширене індексування журналів" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "Не вдалося увімкнути автоматичне оновлення для %{name}" @@ -2500,7 +2480,7 @@ msgstr "Увімкнути автодоповнення коду" msgid "Enable compression for content transfer" msgstr "Увімкнути стиснення для передачі вмісту" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "Увімкнути DDNS" @@ -2597,7 +2577,7 @@ msgid "Enable TOTP" msgstr "Увімкнути TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2622,8 +2602,8 @@ msgstr "Успішно ввімкнено" #: src/views/preference/tabs/ServerSettings.vue:52 msgid "Enables HTTP/2 support with multiplexing and server push capabilities" msgstr "" -"Увімкнення підтримки HTTP/2 з можливістю мультиплексування та push-" -"повідомлень сервера" +"Увімкнення підтримки HTTP/2 з можливістю мультиплексування та " +"push-повідомлень сервера" #: src/views/preference/tabs/ServerSettings.vue:56 msgid "Enables HTTP/3 support based on QUIC protocol for best performance" @@ -2653,10 +2633,19 @@ msgstr "Кінець" msgid "End Date" msgstr "Дата завершення" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "Введіть назву сертифіката" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "Введіть ім’я домену" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "Введіть IP-адресу" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "Введіть IP-адресу сервера (наприклад, 203.0.113.1 або 2001:db8::1)" @@ -2674,7 +2663,7 @@ msgstr "" "установки або знайдено у прихованому файлі каталогу конфігурації, щоб " "розблокувати налаштування." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "Введіть ваш домен" @@ -2686,7 +2675,7 @@ msgstr "Конфігурація середовища порожня" msgid "Environment variables cleaned" msgstr "Змінні середовища очищено" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2719,8 +2708,8 @@ msgstr "Журнали помилок" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "" "Журнали помилок не підтримують структурований аналіз, оскільки вони містять " "довільні текстові повідомлення." @@ -2770,7 +2759,7 @@ msgid "Expected Text" msgstr "Очікуваний текст" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "Термін дії закінчився" @@ -2792,18 +2781,13 @@ msgstr "" #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" "Ідентифікатор ключа зовнішнього облікового запису (опціонально). Потрібен " "для деяких провайдерів ACME, таких як ZeroSSL." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "Зовнішній контейнер Docker" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "Зовнішній контейнер Docker" @@ -2826,6 +2810,7 @@ msgstr "Не вдалося отримати сертифікат" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "Не вдалося" @@ -3065,6 +3050,11 @@ msgstr "Не вдалося згенерувати ключ AES: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "Не вдалося створити вектор ініціалізації: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "Не вдалося створити самопідписаний сертифікат" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "Не вдалося отримати інформацію про сертифікат" @@ -3379,8 +3369,8 @@ msgid "" "Follow the instructions in the dialog to complete the passkey registration " "process." msgstr "" -"Дотримуйтесь інструкцій у діалоговому вікні, щоб завершити процес реєстрації " -"ключа доступу." +"Дотримуйтесь інструкцій у діалоговому вікні, щоб завершити процес " +"реєстрації ключа доступу." #: src/views/preference/tabs/NodeSettings.vue:42 #: src/views/preference/tabs/NodeSettings.vue:54 @@ -3396,10 +3386,8 @@ msgid "For commercial or professional use, contact" msgstr "Для комерційного або професійного використання зв'яжіться з" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." -msgstr "" -"Для журналів помилок використовуйте Raw Log Viewer для кращого перегляду." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." +msgstr "Для журналів помилок використовуйте Raw Log Viewer для кращого перегляду." #: src/components/AutoCertForm/AutoCertForm.vue:140 msgid "" @@ -3412,8 +3400,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" "Для сертифікатів на основі IP вкажіть IP-адресу сервера, яка буде включена " "до сертифіката." @@ -3465,14 +3453,16 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "" "Режим налагодження фронтенду: процес встановлення завершено без надсилання " "запиту до бекенду" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "" "Режим налагодження фронтенду: процес відновлення завершено без надсилання " "запиту до бекенду" @@ -3489,21 +3479,24 @@ msgstr "Підтримка повнотекстового пошуку" msgid "General Certificate" msgstr "Загальний сертифікат" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "Згенерувати" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "Згенерувати" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "Створити нові коди відновлення" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "Створити нові коди відновлення" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "Згенерувати коди відновлення" @@ -3511,6 +3504,14 @@ msgstr "Згенерувати коди відновлення" msgid "Generate recovery codes successfully" msgstr "Коди відновлення успішно згенеровано" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "Створити самопідписаний сертифікат" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "Створити самопідписаний сертифікат" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "Генерація приватного ключа для реєстрації облікового запису" @@ -3541,8 +3542,8 @@ msgid "" "GeoLite2 database not found at {0}. Log indexing requires GeoLite2 database " "for geographic IP analysis" msgstr "" -"База даних GeoLite2 не знайдена за шляхом {0}. Індексування журналів вимагає " -"базу даних GeoLite2 для географічного аналізу IP-адрес" +"База даних GeoLite2 не знайдена за шляхом {0}. Індексування журналів " +"вимагає базу даних GeoLite2 для географічного аналізу IP-адрес" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:150 msgid "GeoLite2 Database Required" @@ -3591,6 +3592,10 @@ msgstr "" msgid "Go to Raw Log Viewer" msgstr "Перейти до перегляду сирих логів" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "Перейти до кодів відновлення" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3609,7 +3614,8 @@ msgid "" "For testing, SSL validation is disabled by default." msgstr "" "gRPCS використовує шифрування TLS. Сервер повинен реалізувати службу " -"перевірки стану gRPC. Для тестування перевірка SSL за замовчуванням вимкнена." +"перевірки стану gRPC. Для тестування перевірка SSL за замовчуванням " +"вимкнена." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67 msgid "GZIP Compression" @@ -3660,10 +3666,6 @@ msgstr "Приховати" msgid "Hide Assistant" msgstr "Приховати помічника" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3685,27 +3687,10 @@ msgid "Home" msgstr "Головна" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "Хост" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "Хост, напр. @ або www" @@ -3756,8 +3741,7 @@ msgstr "" msgid "" "If you want to automatically revoke the old certificate, please enable this " "option." -msgstr "" -"Якщо ви хочете автоматично відкликати старий сертифікат, увімкніть цю опцію." +msgstr "Якщо ви хочете автоматично відкликати старий сертифікат, увімкніть цю опцію." #: src/views/nginx_log/components/IndexingSettingsModal.vue:167 msgid "" @@ -3769,8 +3753,7 @@ msgstr "" #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." -msgstr "" -"Якщо ваш браузер підтримує WebAuthn Passkey, з’явиться діалогове вікно." +msgstr "Якщо ваш браузер підтримує WebAuthn Passkey, з’явиться діалогове вікно." #: src/components/AutoCertForm/AutoCertForm.vue:271 msgid "" @@ -3780,12 +3763,12 @@ msgstr "" "Якщо ваш домен має записи CNAME і ви не можете отримати сертифікати, вам " "потрібно активувати цю опцію." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "Імпорт" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "Імпортувати сертифікат" @@ -3848,7 +3831,7 @@ msgstr "Індексація..." msgid "Indicator" msgstr "Індикатор" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "Інформація" @@ -3872,7 +3855,7 @@ msgstr "Ініціалізація оновлення ядра" msgid "Input the code from the app:" msgstr "Введіть код з додатку:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "Введіть код відновлення:" @@ -3931,12 +3914,12 @@ msgstr "" "Після 10 хвилин після запуску системи установка заборонена. Будь ласка, " "перезапустіть Nginx UI." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "Інтервал" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "Інтервал (секунди)" @@ -4010,7 +3993,7 @@ msgstr "Недійсний OTP-код" msgid "Invalid padding in decrypted data" msgstr "Недійсне заповнення в розшифрованих даних" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "Невірний код підтвердження або код відновлення" @@ -4063,15 +4046,43 @@ msgstr "IP-адреса" msgid "IP Address / Target" msgstr "IP-адреса / Ціль" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "IP-адреси" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "Повідомлення про IP-сертифікат" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "Версія IP" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "Лише IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4, потім IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "Лише IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6, потім IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "Видача не вдалася" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "Видати сертифікат" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "Видати сертифікат" @@ -4079,10 +4090,18 @@ msgstr "Видати сертифікат" msgid "Issued certificate successfully" msgstr "Сертифікат успішно видано" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "Успішно випущено" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "Видавець: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "Випуск..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "елемент(и)" @@ -4096,15 +4115,16 @@ msgid "" "Keep your recovery codes as safe as your password. We recommend saving them " "with a password manager." msgstr "" -"Зберігайте ваші коди відновлення так само надійно, як і пароль. Рекомендуємо " -"зберігати їх у менеджері паролів." +"Зберігайте ваші коди відновлення так само надійно, як і пароль. " +"Рекомендуємо зберігати їх у менеджері паролів." #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60 msgid "Keepalive Timeout" msgstr "Таймаут Keepalive" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "Тип ключа" @@ -4186,7 +4206,7 @@ msgstr "Останнє індексування" msgid "Last month" msgstr "Минулий місяць" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "Останній запуск" @@ -4202,14 +4222,17 @@ msgstr "Останнє оновлення:" msgid "Last used at" msgstr "Востаннє використано" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "Пізніше" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "Залиште порожнім, щоб не змінювати" #: src/views/preference/tabs/OpenAISettings.vue:33 msgid "Leave blank for the default: https://api.openai.com/" -msgstr "" -"Залиште порожнім для значення за замовчуванням: https://api.openai.com/" +msgstr "Залиште порожнім для значення за замовчуванням: https://api.openai.com/" #: src/language/curd.ts:39 msgid "Leave blank if do not want to modify" @@ -4224,11 +4247,10 @@ msgid "Leave blank if you don't need this." msgstr "Залиште порожнім, якщо вам це не потрібно." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" msgstr "" -"Залиште порожнім для значення за замовчуванням: https://api.openai.com/" +"Залиште порожнім, щоб використовувати кінцеву точку Atlas Cloud: " +"https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4237,6 +4259,15 @@ msgstr "" msgid "Leave blank will not change anything" msgstr "Залишити порожнім — нічого не зміниться" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"Застарілий код відновлення вийшов з ужитку. Згенеруйте нові коди " +"відновлення, щоб забезпечити безпеку відновлення облікового запису." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "Застарілий код відновлення не дозволяється, оскільки TOTP не ввімкнено" @@ -4293,7 +4324,7 @@ msgstr "Прослуховує" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4341,18 +4372,14 @@ msgstr "Завантаження..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "Локальний" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "Локальний шлях (напр., /var/backups)" @@ -4365,19 +4392,20 @@ msgstr "Розташування" msgid "Locations" msgstr "Розташування" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "Журнал" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" -"Файл журналу %{log_path} не є звичайним файлом. Якщо ви використовуєте nginx-" -"ui у контейнері Docker, будь ласка, зверніться до https://nginxui.com/zh_CN/" -"guide/config-nginx-log.html для отримання додаткової інформації." +"Файл журналу %{log_path} не є звичайним файлом. Якщо ви використовуєте " +"nginx-ui у контейнері Docker, будь ласка, зверніться до " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html для отримання " +"додаткової інформації." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4421,7 +4449,7 @@ msgstr "" msgid "Log path is not under whitelist" msgstr "Шлях до журналу не знаходиться у білому списку" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "Увійти" @@ -4429,7 +4457,7 @@ msgstr "Увійти" msgid "Login successful" msgstr "Успішний вхід" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "Вихід успішний" @@ -4439,16 +4467,16 @@ msgstr "Logrotate" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" "Logrotate за замовчуванням увімкнено у більшості популярних дистрибутивів " -"Linux для користувачів, які встановлюють Nginx UI безпосередньо на хост-" -"машині, тому вам не потрібно змінювати параметри на цій сторінці. Для " +"Linux для користувачів, які встановлюють Nginx UI безпосередньо на " +"хост-машині, тому вам не потрібно змінювати параметри на цій сторінці. Для " "користувачів, які встановлюють Nginx UI за допомогою контейнерів Docker, ви " "можете вручну активувати цю опцію. Планувальник завдань crontab у Nginx UI " "виконуватиме команду logrotate з інтервалом, який ви встановите у хвилинах." @@ -4478,15 +4506,13 @@ msgstr "Режим обслуговування успішно вимкнено" msgid "Maintenance mode enabled successfully" msgstr "Режим обслуговування успішно ввімкнено" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "Режим обслуговування успішно ввімкнено" +msgstr "Шаблон обслуговування (лише ім'я файлу)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "Технічне обслуговування" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4620,10 +4646,6 @@ msgstr "Дизайн пам'яті" msgid "Memory Usage (RSS)" msgstr "Використання пам'яті (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4657,7 +4679,7 @@ msgstr "Хвилина" msgid "Minutes" msgstr "Хвилини" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "Дзеркало" @@ -4686,7 +4708,7 @@ msgid "Modify" msgstr "Змінити" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "Редагувати сертифікат" @@ -4718,10 +4740,9 @@ msgstr "Щомісяця" msgid "Monthly on day %{day} at %{time}" msgstr "Щомісяця %{day} числа о %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "Захищена директорія" +msgstr "Змонтований каталог" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4751,6 +4772,7 @@ msgstr "Н/Д" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4825,7 +4847,7 @@ msgstr "Помилка нового клієнта lego: {0}" msgid "New name" msgstr "Нова назва" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "Новий пароль" @@ -4841,12 +4863,11 @@ msgstr "Помилка нового транспорту: {0}" msgid "New version released" msgstr "Випущено нову версію" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "Далі" @@ -4858,7 +4879,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Вивід Nginx -T порожній" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Шлях до журналу доступу Nginx" @@ -4912,11 +4933,11 @@ msgstr "Конфігурацію Nginx відновлено" msgid "Nginx Configuration Parse Error" msgstr "Помилка аналізу конфігурації Nginx" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Шлях до конфігурації Nginx" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Каталог конфігурацій Nginx" @@ -4924,7 +4945,7 @@ msgstr "Каталог конфігурацій Nginx" msgid "Nginx Control" msgstr "Керування Nginx" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Режим керування Nginx" @@ -4933,7 +4954,7 @@ msgstr "Режим керування Nginx" msgid "Nginx CPU usage rate" msgstr "Рівень використання CPU Nginx" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Шлях до журналу помилок Nginx" @@ -4969,7 +4990,7 @@ msgstr "Nginx працює" msgid "Nginx Log" msgstr "Nginx Журнал" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Білий список каталогів журналів Nginx" @@ -4982,7 +5003,7 @@ msgstr "Індексація логів Nginx..." msgid "Nginx Memory usage" msgstr "Використання пам'яті Nginx" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Шлях до PID Nginx" @@ -4990,7 +5011,7 @@ msgstr "Шлях до PID Nginx" msgid "Nginx PID path exists" msgstr "Шлях PID Nginx існує" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Команда перезавантаження Nginx" @@ -5011,7 +5032,7 @@ msgstr "Nginx успішно перезавантажено" msgid "Nginx reported a configuration syntax error." msgstr "Nginx повідомив про синтаксичну помилку в конфігурації." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Команда перезавантаження Nginx" @@ -5027,7 +5048,7 @@ msgstr "Nginx успішно перезапущено" msgid "Nginx sbin path exists" msgstr "Шлях sbin для Nginx існує" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Команда тестування конфігурації Nginx" @@ -5050,12 +5071,22 @@ msgstr "Конфігурацію Nginx UI відновлено" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "" "Конфігурацію Nginx UI відновлено, і вона автоматично перезавантажиться за " "кілька секунд." +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"Nginx UI автоматично оновить цей сертифікат, коли наближатиметься " +"закінчення його терміну дії, на основі глобального інтервалу оновлення " +"сертифікатів та періоду дії цього сертифіката." + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf включає каталог conf.d" @@ -5082,7 +5113,7 @@ msgid "No" msgstr "Ні" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "Без дії" @@ -5120,10 +5151,6 @@ msgstr "Немає записів у поточній сторінці" msgid "No geographic data available" msgstr "Географічні дані недоступні" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "У вибраному часовому діапазоні журналів не знайдено." @@ -5185,7 +5212,7 @@ msgstr "Стан вузла" msgid "Nodes" msgstr "Вузли" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "Не пізніше" @@ -5206,7 +5233,7 @@ msgstr "Не індексовано" msgid "Not Loaded" msgstr "Не завантажено" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "Ще не запущено" @@ -5288,7 +5315,7 @@ msgstr "Кількість робочих процесів" msgid "Obtain cert error: {0}" msgstr "Помилка отримання сертифіката: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "Отримати сертифікат" @@ -5342,7 +5369,7 @@ msgstr "Вхід через OIDC" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5386,10 +5413,6 @@ msgstr "Дозволені лише zip-файли" msgid "Open" msgstr "Відкрито" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "Обмеження відкритого коду" @@ -5406,7 +5429,7 @@ msgstr "Статистика операційної системи" msgid "Optional comment for this DNS record" msgstr "Необов’язковий коментар до цього DNS-запису" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "Або" @@ -5455,11 +5478,6 @@ msgstr "Інші" msgid "Otp or recovery code empty" msgstr "OTP або код відновлення порожній" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "Перезаписати існуючий файл" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "Перезаписати" @@ -5508,10 +5526,6 @@ msgstr "Пароль" msgid "Password (*)" msgstr "Пароль (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "Невірний пароль" @@ -5520,11 +5534,11 @@ msgstr "Невірний пароль" msgid "Password length cannot exceed 20 characters" msgstr "Довжина пароля не може перевищувати 20 символів" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "Пароль успішно оновлено" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "Паролі не збігаються" @@ -5596,7 +5610,7 @@ msgstr "Налаштування продуктивності успішно з msgid "Performing core upgrade" msgstr "Виконується оновлення ядра" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "Особиста інформація" @@ -5641,6 +5655,12 @@ msgstr "" msgid "Please enter" msgstr "Будь ласка, введіть" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "Будь ласка, введіть назву для сертифіката" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5661,15 +5681,21 @@ msgstr "Будь ласка, введіть дійсну IPv4 або IPv6 адр msgid "Please enter a valid port range" msgstr "Будь ласка, введіть дійсний діапазон портів" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "Будь ласка, введіть хоча б один домен" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "Будь ласка, введіть принаймні один домен або IP-адресу" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "Будь ласка, введіть секретний код установки перед продовженням" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "Будь ласка, введіть OTP-код:" @@ -5680,8 +5706,7 @@ msgstr "Будь ласка, введіть токен безпеки" #: src/components/SystemRestore/SystemRestoreContent.vue:236 #: src/components/SystemRestore/SystemRestoreContent.vue:319 msgid "Please enter the security token received during backup" -msgstr "" -"Будь ласка, введіть токен безпеки, отриманий під час резервного копіювання" +msgstr "Будь ласка, введіть токен безпеки, отриманий під час резервного копіювання" #: src/components/AutoCertForm/AutoCertForm.vue:80 msgid "Please enter the server IP address" @@ -5718,8 +5743,8 @@ msgstr "" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "" "Будь ласка, негайно згенеруйте нові коди відновлення в налаштуваннях, щоб " "уникнути блокування." @@ -5767,8 +5792,7 @@ msgid "Please log in." msgstr "Будь ласка, увійдіть." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "" "Будь ласка, зверніть увагу, що одиницею виміру часу в наведених нижче " "налаштуваннях є секунди." @@ -5780,7 +5804,8 @@ msgstr "Будь ласка, усуньте всі проблеми перед #: src/views/backup/components/BackupCreator.vue:107 msgid "Please save this security token, you will need it for restoration:" msgstr "" -"Будь ласка, збережіть цей токен безпеки, він знадобиться вам для відновлення:" +"Будь ласка, збережіть цей токен безпеки, він знадобиться вам для " +"відновлення:" #: src/components/SystemRestore/SystemRestoreContent.vue:112 msgid "Please select a backup file" @@ -5788,10 +5813,9 @@ msgstr "Будь ласка, виберіть файл резервної коп #: src/views/site/site_edit/components/SiteEditor/store.ts:144 msgid "Please select a certificate before saving the TLS server configuration." -msgstr "" -"Будь ласка, виберіть сертифікат перед збереженням конфігурації TLS-сервера." +msgstr "Будь ласка, виберіть сертифікат перед збереженням конфігурації TLS-сервера." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "Будь ласка, виберіть облікові дані DNS" @@ -5871,10 +5895,6 @@ msgstr "Налаштування" msgid "Preparing lego configurations" msgstr "Підготовка конфігурацій Lego" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5886,18 +5906,13 @@ msgstr "Приватний CA:" #: src/components/AutoCertForm/AutoCertForm.vue:202 msgid "Private IPs (192.168.x.x, 10.x.x.x, 172.16-31.x.x) will fail" -msgstr "" -"Приватні IP-адреси (192.168.x.x, 10.x.x.x, 172.16-31.x.x) не працюватимуть" +msgstr "Приватні IP-адреси (192.168.x.x, 10.x.x.x, 172.16-31.x.x) не працюватимуть" #: src/views/certificate/components/CertificateFileUpload.vue:121 #: src/views/certificate/components/CertificateFileUpload.vue:45 msgid "private key" msgstr "приватний ключ" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "Процес" @@ -5941,13 +5956,14 @@ msgstr "Протокол" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" "Налаштування протоколу діє лише при прямому підключенні. Якщо ви " "використовуєте зворотний проксі, налаштуйте протокол окремо у зворотному " "проксі." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5986,14 +6002,6 @@ msgstr "Цілі проксі" msgid "Public CA Requirements:" msgstr "Вимоги публічного CA:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "Номер громадської безпеки" @@ -6094,11 +6102,11 @@ msgstr "Тип запису" msgid "Record updated" msgstr "Запис оновлено" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "Записи" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "Відновлення" @@ -6132,7 +6140,7 @@ msgstr "Повідомлення про перенаправлення (3xx)" msgid "Referer" msgstr "Реферер" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "Оновити" @@ -6141,11 +6149,6 @@ msgstr "Оновити" msgid "Refresh Modules Cache" msgstr "Оновити кеш модулів" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "Повторити відповідь" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "Повторити відповідь" @@ -6204,7 +6207,7 @@ msgid "Reload" msgstr "Перезавантажити" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Перезавантажити Nginx" @@ -6243,16 +6246,12 @@ msgstr "Перезавантаження" msgid "Reloading nginx" msgstr "Перезавантаження nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "Віддалено" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "Не вибрано жодного вузла" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "Видалити" @@ -6262,6 +6261,10 @@ msgstr "Видалити" msgid "Remove successfully" msgstr "Успішно видалено" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "Видалено %{count} конфліктних записів: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "Успішно видалено" @@ -6341,8 +6344,8 @@ msgstr "Успішно перейменовано" msgid "Renew cert error: {0}" msgstr "Помилка поновлення сертифіката: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "Оновити сертифікат" @@ -6354,8 +6357,7 @@ msgstr "Помилка поновлення сертифіката" msgid "Renew Certificate Success" msgstr "Успішне поновлення сертифіката" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "Оновлення успішне" @@ -6407,9 +6409,9 @@ msgid "" "shared library memory, which will be repeated calculated for multiple " "processes" msgstr "" -"Розмір резидентного набору: Фактична пам'ять, резидентна у фізичній пам'яті, " -"включаючи всю пам'ять спільних бібліотек, яка буде повторно обчислюватися " -"для кількох процесів" +"Розмір резидентного набору: Фактична пам'ять, резидентна у фізичній " +"пам'яті, включаючи всю пам'ять спільних бібліотек, яка буде повторно " +"обчислюватися для кількох процесів" #: src/views/nginx_log/components/IndexingSettingsModal.vue:109 msgid "Resource Usage Warning" @@ -6486,6 +6488,19 @@ msgstr "Відновити цю версію" msgid "Restored successfully" msgstr "Успішно відновлено" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "Повторити" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "Повторити випуск сертифіката" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "Переглянути спочатку" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6532,11 +6547,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "Режим роботи" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "Оновити сертифікат" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "Біг" @@ -6656,7 +6666,7 @@ msgstr "Субота" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6666,19 +6676,14 @@ msgstr "Субота" msgid "Save" msgstr "Зберегти" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "Конфігурація сховища" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "Зберегти директиву" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "Зберегти зараз" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "Зберегти порядок" @@ -6721,15 +6726,19 @@ msgstr "Потік %{name} успішно збережено на %{node}" msgid "Save successful" msgstr "Успішно збережено" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "Успішно збережено" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "Зберегти конфігурацію сайту зараз?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "У відповіді збереженого сертифіката відсутній ID." #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6739,6 +6748,15 @@ msgstr "" msgid "Saved successfully" msgstr "Успішно збережено" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"Не вдалося зберегти конфігурацію сайту; директиви сертифіката знаходяться в " +"редакторі — перегляньте зміни та повторіть спробу за допомогою кнопки " +"«Зберегти»." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "Шлях sbin не існує" @@ -6789,7 +6807,7 @@ msgstr "SDK" msgid "Search" msgstr "Пошук" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "Пошук домену, постачальника або цілі" @@ -6821,7 +6839,7 @@ msgstr "Пошук шаблонів" msgid "Secret has been copied" msgstr "Секрет скопійовано" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "Налаштування безпеки" @@ -6869,6 +6887,10 @@ msgstr "Виберіть DNS-домен" msgid "Select existing record" msgstr "Вибрати існуючий запис" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "Вибрати відповідні A/AAAA записи" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6895,6 +6917,24 @@ msgstr "Самоперевірка" msgid "Self check failed, Nginx UI may not work properly" msgstr "Самоперевірка не вдалася, інтерфейс Nginx може працювати неправильно" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "Самопідписаний сертифікат" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "Самопідписаний сертифікат" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "Самопідписаний сертифікат застосовано" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "Самопідписаний сертифікат згенеровано" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6909,7 +6949,7 @@ msgid "Server" msgstr "Сервер" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "Помилка сервера" @@ -6937,7 +6977,7 @@ msgstr "Розмір хеш-таблиці імен серверів" msgid "Server names hash table size" msgstr "Розмір хеш-таблиці імен серверів" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "server_name не знайдено в директивах" @@ -6989,19 +7029,21 @@ msgstr "Налаштування провайдера HTTP01-виклику" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath порожній, див. https://nginxui.com/" -"guide/config-nginx.html для отримання додаткової інформації" +"Settings.NginxLogSettings.AccessLogPath порожній, див. " +"https://nginxui.com/guide/config-nginx.html для отримання додаткової " +"інформації" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath порожній, див. https://nginxui.com/" -"guide/config-nginx.html для отримання додаткової інформації" +"Settings.NginxLogSettings.ErrorLogPath порожній, див. " +"https://nginxui.com/guide/config-nginx.html для отримання додаткової " +"інформації" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -7020,7 +7062,7 @@ msgstr "Показати" msgid "Show Assistant" msgstr "Показати помічника" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "Увійти за допомогою ключа доступу" @@ -7085,8 +7127,8 @@ msgid "" "Sites will appear here once you configure nginx server blocks with valid " "server_name (localhost excluded) directives." msgstr "" -"Сайти з’являться тут, як тільки ви налаштуєте блоки сервера nginx з дійсними " -"директивами server_name (за винятком localhost)." +"Сайти з’являться тут, як тільки ви налаштуєте блоки сервера nginx з " +"дійсними директивами server_name (за винятком localhost)." #: src/constants/errors/self_check.ts:11 msgid "Sites-available directory not exist" @@ -7106,10 +7148,6 @@ msgstr "Розмір" msgid "Skip Installation" msgstr "Пропустити встановлення" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "Час очікування між ітераціями завантажувача кешу" @@ -7122,6 +7160,10 @@ msgstr "Час очікування між ітераціями менеджер msgid "Socket" msgstr "Сокет" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "Деякі браузери відхиляють TLS-сертифікати, дійсні понад 398 днів." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "Відсортовано за" @@ -7138,15 +7180,6 @@ msgstr "Спонсор" msgid "SSD storage for better I/O performance" msgstr "SSD-накопич для кращої продуктивності вводу-виводу" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "Рекомендовано 2+ ядра" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7154,8 +7187,7 @@ msgstr "Вміст SSL-сертифіката" #: src/constants/errors/system.ts:11 msgid "SSL certificate file must be under Nginx configuration directory: {0}" -msgstr "" -"Файл SSL-сертифіката повинен знаходитися в каталозі конфігурації Nginx: {0}" +msgstr "Файл SSL-сертифіката повинен знаходитися в каталозі конфігурації Nginx: {0}" #: src/constants/errors/system.ts:9 msgid "SSL certificate file not found" @@ -7233,9 +7265,9 @@ msgstr "Статичний" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7310,7 +7342,7 @@ msgstr "Каталог streams-enabled не існує" msgid "Structured" msgstr "Структурований" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Порт статусу Stub" @@ -7318,7 +7350,7 @@ msgstr "Порт статусу Stub" msgid "Stub_status is not enabled" msgstr "Stub_status не увімкнено" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7336,14 +7368,14 @@ msgstr "Неділя" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" "Підтримка зв'язку з бекендом через протокол WebSocket. Якщо ваш Nginx UI " -"використовується через зворотний проксі Nginx, перегляньте це посилання, щоб " -"написати відповідний конфігураційний файл: https://nginxui.com/guide/nginx-" -"proxy-example.html" +"використовується через зворотний проксі Nginx, перегляньте це посилання, " +"щоб написати відповідний конфігураційний файл: " +"https://nginxui.com/guide/nginx-proxy-example.html" #: src/language/curd.ts:53 src/language/curd.ts:57 msgid "Support single or batch upload of files" @@ -7430,6 +7462,7 @@ msgid "Sync strategy" msgstr "Стратегія синхронізації" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "Синхронізувати з" @@ -7467,21 +7500,13 @@ msgstr "Відновлення системи" msgid "System restored successfully." msgstr "Систему успішно відновлено." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "Цілі" @@ -7549,26 +7574,36 @@ msgstr "" "поновлюватися, якщо з моменту останнього випуску минуло більше 1 тижня або " "встановлений вами період у налаштуваннях." +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"Сертифікат створено за шляхом %{path}, і директиви ssl_certificate додано " +"до поточного блоку сервера. Збережіть конфігурацію зараз або перегляньте " +"зміни в редакторі та збережіть вручну." + #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "Наступні сайти буде вимкнено:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "Наступні сайти будуть увімкнені:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" "Для відключеного географічного аналізу IP-адрес потрібна база даних " "GeoLite2. Будь ласка, завантажте її, щоб увімкнути цю функцію." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" "База даних GeoLite2 надає географічну інформацію для IP-адрес. Вона " "використовується для офлайн-географічного аналізу в аналізі журналів." @@ -7599,10 +7634,11 @@ msgstr "" #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" -"Шлях до журналу не знаходиться серед шляхів у settings.NginxSettings." -"LogDirWhiteList" +"Шлях до журналу не знаходиться серед шляхів у " +"settings.NginxSettings.LogDirWhiteList" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 @@ -7614,8 +7650,7 @@ msgstr "" "двокрапки та крапки." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" "Модель, яка використовується для завершення коду. Якщо вона не встановлена, " "буде використовуватися модель чату." @@ -7689,7 +7724,7 @@ msgstr "Теоретична максимальна кількість одно msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "Теоретичний максимум RPS (запитів за секунду):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " @@ -7706,7 +7741,8 @@ msgstr "Сторонні компоненти" #: src/views/certificate/components/AutoCertManagement.vue:45 msgid "This Auto Cert item is invalid, please remove it." msgstr "" -"Цей елемент автоматичного сертифікату є недійсним, будь ласка, видаліть його." +"Цей елемент автоматичного сертифікату є недійсним, будь ласка, видаліть " +"його." #: src/constants/errors/backup.ts:62 msgid "" @@ -7743,20 +7779,18 @@ msgid "This field should not be empty" msgstr "Це поле не повинно бути порожнім" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." msgstr "Це поле має містити лише літери, символи Unicode, цифри та -_." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" msgstr "Це поле має містити лише літери, символи Unicode, цифри та -_./:" #: src/components/Notification/notifications.ts:102 msgid "This is a test message sent at %{timestamp} from Nginx UI." -msgstr "" -"Це тестове повідомлення, надіслане на %{timestamp} з користувача Nginx." +msgstr "Це тестове повідомлення, надіслане на %{timestamp} з користувача Nginx." #: src/components/SelfCheck/store.ts:25 msgid "" @@ -7766,10 +7800,6 @@ msgstr "" "Цей режим лише попередньо переглядає процес інсталяції інтерфейсу " "користувача та не змінює стан сервера." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " @@ -7794,11 +7824,19 @@ msgstr "" "Ця операція лише видалить сертифікат із бази даних. Файли сертифіката у " "файловій системі не будуть видалені." +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "" +"Цей самопідписаний сертифікат керується Nginx UI та автоматично " +"поновлюється." + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" "Цей сайт налаштований як сервер за замовчуванням (default_server) для HTTPS " "(порт 443). IP-сертифікати вимагають підтримки Центру сертифікації (CA) і " @@ -7806,13 +7844,13 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" -"Цей сайт використовує шаблонне ім’я сервера (_), яке зазвичай вказує на IP-" -"сертифікат. IP-сертифікати вимагають підтримки Центру сертифікації (CA) і " -"можуть бути недоступні у всіх провайдерів ACME." +"Цей сайт використовує шаблонне ім’я сервера (_), яке зазвичай вказує на " +"IP-сертифікат. IP-сертифікати вимагають підтримки Центру сертифікації (CA) " +"і можуть бути недоступні у всіх провайдерів ACME." #: src/views/backup/components/BackupCreator.vue:141 msgid "" @@ -7862,10 +7900,8 @@ msgstr "" "після завершення відновлення." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." -msgstr "" -"Це оновить або перевстановить Nginx UI на %{nodeNames} до версії %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgstr "Це оновить або перевстановить Nginx UI на %{nodeNames} до версії %{version}." #: src/views/preference/tabs/AuthSettings.vue:89 msgid "Throttle" @@ -7919,8 +7955,8 @@ msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." msgstr "" -"Щоб увімкнути його, вам потрібно встановити додаток Google Authenticator або " -"Microsoft Authenticator на свій мобільний телефон." +"Щоб увімкнути його, вам потрібно встановити додаток Google Authenticator " +"або Microsoft Authenticator на свій мобільний телефон." #: src/views/preference/components/AuthSettings/AddPasskey.vue:95 msgid "" @@ -7929,15 +7965,15 @@ msgid "" "and restart Nginx UI." msgstr "" "Для забезпечення безпеки конфігурацію WebAuthn не можна додати через " -"інтерфейс. Будь ласка, налаштуйте вручну наступне у файлі конфігурації app." -"ini та перезапустіть Nginx UI." +"інтерфейс. Будь ласка, налаштуйте вручну наступне у файлі конфігурації " +"app.ini та перезапустіть Nginx UI." #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" "Щоб гарантувати нормальну роботу автоматичного поновлення сертифікатів, нам " @@ -8083,7 +8119,7 @@ msgstr "TTL (секунди)" msgid "Tuesday" msgstr "Вівторок" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "Потрібна двофакторна аутентифікація" @@ -8104,10 +8140,6 @@ msgstr "Тип" msgid "Type %{delete} to confirm" msgstr "Введіть %{delete} для підтвердження" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "Введіть або виберіть записи A/AAAA" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "Введіть або виберіть браузер" @@ -8153,11 +8185,11 @@ msgstr "Непідтримуваний формат журналу" msgid "Update already in progress" msgstr "Оновлення вже в процесі" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "Оновити пароль" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "Оновити профіль" @@ -8246,11 +8278,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "Використовуйте @ для кореня" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "Використовувати OTP" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "Використати код відновлення" @@ -8258,10 +8290,6 @@ msgstr "Використати код відновлення" msgid "Use Temporary Path" msgstr "Використовувати тимчасовий шлях" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "Користувач" @@ -8275,7 +8303,7 @@ msgstr "Користувацький агент" msgid "User banned" msgstr "Користувача заблоковано" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "Інформацію про користувача успішно оновлено" @@ -8288,7 +8316,7 @@ msgid "User Profile" msgstr "Профіль користувача" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "Ім’я користувача" @@ -8306,10 +8334,14 @@ msgstr "Унікальні відвідувачі" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "Дійсний" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "Дійсний (днів)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "Перевірити SSL-сертифікат" @@ -8320,11 +8352,6 @@ msgstr "Перевірити SSL-сертифікат" msgid "Value" msgstr "Значення" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "Перевірити секрет" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8361,7 +8388,7 @@ msgstr "Переглянути всі сповіщення" msgid "View on GitHub" msgstr "Переглянути на GitHub" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "Переглянути коди відновлення" @@ -8389,7 +8416,7 @@ msgstr "Візити" msgid "Waiting processes" msgstr "Процеси очікування" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8413,19 +8440,19 @@ msgid "" "Encrypt cannot issue certificates for private IPs. Use a public IP address " "or consider using a private CA." msgstr "" -"Попередження: Схоже, що це приватна IP-адреса. Публічні центри сертифікації, " -"такі як Let's Encrypt, не можуть видавати сертифікати для приватних IP. " -"Використовуйте публічну IP-адресу або розгляньте можливість використання " -"приватного центру сертифікації." +"Попередження: Схоже, що це приватна IP-адреса. Публічні центри " +"сертифікації, такі як Let's Encrypt, не можуть видавати сертифікати для " +"приватних IP. Використовуйте публічну IP-адресу або розгляньте можливість " +"використання приватного центру сертифікації." #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "Ми не приймаємо жодних запитів на функції" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" "Ми видалимо конфігурацію HTTPChallenge з цього файлу та перезавантажимо " "Nginx. Ви впевнені, що хочете продовжити?" @@ -8463,6 +8490,18 @@ msgstr "Щотижня в %{day} о %{time}" msgid "Weight" msgstr "Вага" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"Коли увімкнено, DDNS володіє вибраними іменами: автоматично створює пари " +"споріднених записів, створює відсутні записи та видаляє ті, чия IP-родина " +"недоступна. Вимкніть, щоб керувати лише тими записами, які ви явно вибрали, " +"і зберегти весь інший стан DNS без змін." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8482,7 +8521,7 @@ msgstr "" "Коли ви вмикаєте/вимикаєте, видаляєте або зберігаєте цей сайт, вузли, " "встановлені в просторі імен, і вузли, вибрані нижче, будуть синхронізовані." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8494,7 +8533,7 @@ msgstr "" msgid "Whether to use a temporary path when writing temporary files" msgstr "Чи використовувати тимчасовий шлях під час запису тимчасових файлів" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "Сертифікат зі знаком підстановки" @@ -8513,7 +8552,7 @@ msgstr "Робочі процеси" msgid "Workers" msgstr "Робочі процеси" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "Робоча область" @@ -8552,8 +8591,8 @@ msgstr "Так" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" "Ви отримуєте доступ до цього терміналу через незахищене HTTP-з’єднання в " "домені, який не є локальним. Це може призвести до витоку конфіденційної " @@ -8583,30 +8622,55 @@ msgstr "Тепер ви можете закрити це діалогове ві msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." -msgstr "" -"Ви не налаштували параметри WebAuthn, тому не можете додати ключ доступу." +msgstr "Ви не налаштували параметри WebAuthn, тому не можете додати ключ доступу." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" -"Ви ще не ввімкнули двофакторну аутентифікацію. Будь ласка, увімкніть її, щоб " -"згенерувати коди відновлення." +"Ви ще не ввімкнули двофакторну аутентифікацію. Будь ласка, увімкніть її, " +"щоб згенерувати коди відновлення." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "Ви ще не згенерували коди відновлення." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"Ваш обліковий запис все ще використовує застарілий код відновлення. " +"Створіть нові коди відновлення після перевірки, щоб забезпечити безпеку " +"відновлення облікового запису." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"Ваш обліковий запис використовує застарілий код відновлення. Згенеруйте " +"нові коди відновлення зараз, щоб завершити міграцію та зберегти безпеку " +"відновлення облікового запису." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" "Ваш поточний код відновлення може бути застарілим і ненадійним. Будь ласка, " "згенеруйте нові коди відновлення якнайшвидше, щоб забезпечити безпеку." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"Ваш старий код відновлення вже використано і більше не діє. Створіть нові " +"коди відновлення зараз, щоб зберегти можливість відновлення облікового " +"запису." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "Ваші старі коди більше не працюватимуть." @@ -8618,13 +8682,66 @@ msgstr "Ваші ключі доступу" msgid "Zero-allocation pipeline" msgstr "Конвеєр без виділення пам’яті" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx не вдалося перевірити конфігурацію." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "Аутентифікація..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Підключено" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "Вміст" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "Копіювати" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "Зовнішній контейнер Docker" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "Згенерувати" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "Перезаписати існуючий файл" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "Повторити відповідь" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "Не вибрано жодного вузла" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "Оновити сертифікат" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "Рекомендовано 2+ ядра" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "Введіть або виберіть записи A/AAAA" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "Перевірити секрет" + #~ msgid "OpenAI" #~ msgstr "OpenAI" #~ msgid "Backup file integrity check failed, it may have been tampered with" -#~ msgstr "" -#~ "Перевірка цілісності резервного файлу не вдалася, можливо, його було " -#~ "змінено" +#~ msgstr "Перевірка цілісності резервного файлу не вдалася, можливо, його було змінено" #~ msgid "Once the verification is complete, the records will be removed." #~ msgstr "Після завершення перевірки записи будуть видалені." @@ -8718,8 +8835,7 @@ msgstr "Конвеєр без виділення пам’яті" #~ msgstr "Стабільна продуктивність на сучасному обладнанні" #~ msgid "Backup path not in granted access paths: {0}" -#~ msgstr "" -#~ "Шлях резервного копіювання не входить до наданих шляхів доступу: {0}" +#~ msgstr "Шлях резервного копіювання не входить до наданих шляхів доступу: {0}" #~ msgid "Build with" #~ msgstr "Створено за допомогою" @@ -8802,18 +8918,17 @@ msgstr "Конвеєр без виділення пам’яті" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" #~ "Підтримка зв’язку з бекендом через протокол Server-Sent Events. Якщо ваш " #~ "Nginx UI використовується через зворотний проксі Nginx, перейдіть за цим " -#~ "посиланням, щоб написати відповідний конфігураційний файл: https://" -#~ "nginxui.com/guide/nginx-proxy-example.html" +#~ "посиланням, щоб написати відповідний конфігураційний файл: " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." -#~ msgstr "" -#~ "Якщо залишити порожнім, буде використовуватися стандартний каталог CA." +#~ msgstr "Якщо залишити порожнім, буде використовуватися стандартний каталог CA." #~ msgid "Save error %{msg}" #~ msgstr "Помилка збереження %{msg}" @@ -8877,12 +8992,12 @@ msgstr "Конвеєр без виділення пам’яті" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" -#~ "Перевірте, чи існує /var/run/docker.sock. Якщо ви використовуєте " -#~ "офіційний Docker-образ Nginx UI, переконайтеся, що сокет Docker " -#~ "підключено таким чином: `-v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Перевірте, чи існує /var/run/docker.sock. Якщо ви використовуєте офіційний " +#~ "Docker-образ Nginx UI, переконайтеся, що сокет Docker підключено таким " +#~ "чином: `-v /var/run/docker.sock:/var/run/docker.sock`." #~ msgid "Check if the nginx access log path exists" #~ msgstr "Перевірити, чи існує шлях до журналу доступу nginx" @@ -8903,15 +9018,15 @@ msgstr "Конвеєр без виділення пам’яті" #~ msgstr "Лише керування DNS-записами" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" #~ "DNS-домени використовуються в NGINX UI для керування DNS-записами й " #~ "відокремлені від перевірок сертифікатів ACME DNS-01." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" #~ "Наразі керування DNS-записами підтримує лише Alibaba Cloud DNS, Tencent " #~ "Cloud DNS і Cloudflare." @@ -8923,6 +9038,7 @@ msgstr "Конвеєр без виділення пам’яті" #~ "Для випуску сертифікатів ACME DNS-01 створіть DNS-облікові дані в DNS > " #~ "Облікові дані та виберіть їх у налаштуваннях сертифіката." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains використовує лише провайдерів із реалізаціями керування DNS-записами." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "" +#~ "DNS Domains використовує лише провайдерів із реалізаціями керування " +#~ "DNS-записами." diff --git a/app/src/language/vi_VN/app.po b/app/src/language/vi_VN/app.po index 54f7c93f..3298bc73 100644 --- a/app/src/language/vi_VN/app.po +++ b/app/src/language/vi_VN/app.po @@ -5,14 +5,13 @@ msgstr "" "Language-Team: none\n" "Language: vi_VN\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/language/generate.ts:37 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}" -msgstr "" -"[Nginx UI] Người dùng ACME: %{name}, Email: %{email}, Thư mục CA: %{caDir}" +msgstr "[Nginx UI] Người dùng ACME: %{name}, Email: %{email}, Thư mục CA: %{caDir}" #: src/language/generate.ts:38 msgid "[Nginx UI] Backing up current certificate for later revocation" @@ -27,11 +26,10 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] Hủy chứng chỉ thành công" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "" -"[Nginx UI] Chứng chỉ đã được sử dụng cho máy chủ, đang tải lại chứng chỉ TLS " -"của máy chủ" +"[Nginx UI] Chứng chỉ đã được sử dụng cho máy chủ, đang tải lại chứng chỉ " +"TLS của máy chủ" #: src/language/generate.ts:42 msgid "[Nginx UI] Creating client facilitates communication with the CA server" @@ -108,8 +106,8 @@ msgstr "* Bao gồm các nút từ nhóm %{groupName} và các nút được ch #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "" "* Các tệp chỉ mục được lưu trữ trong thư mục \"log-index\" trong đường dẫn " "cấu hình NGINX UI theo mặc định." @@ -122,10 +120,6 @@ msgstr "" "* Số liệu hiệu suất được đo trên Apple M2 Pro (12 lõi) với 32GB RAM. Hiệu " "suất thực tế có thể thay đổi tùy theo cấu hình phần cứng của bạn." -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" - #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" msgstr "%{count} trang web đã chọn" @@ -177,7 +171,7 @@ msgstr "Thống kê UV/PV 24 giờ" msgid "2FA" msgstr "2fa" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "Cài đặt 2FA" @@ -185,11 +179,26 @@ msgstr "Cài đặt 2FA" msgid "4GB+ RAM recommended" msgstr "Khuyến nghị RAM 4GB trở lên" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "" +"Các bản ghi A có cùng tên không được quản lý trong chế độ chỉ IPv6. Chúng " +"vẫn không thay đổi trong DNS." + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "Thiếu tệp include bắt buộc trong sandbox hoặc cấu hình nguồn." +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "" +"Các bản ghi AAAA có cùng tên sẽ không được quản lý trong chế độ chỉ IPv4. " +"Chúng được giữ nguyên trong DNS." + #: src/routes/modules/system.ts:38 msgid "About" msgstr "Tác giả" @@ -207,10 +216,6 @@ msgstr "Đường dẫn nhật ký truy cập không tồn tại" msgid "Access Logs" msgstr "Log truy cập" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -222,10 +227,10 @@ msgstr "Hành động" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -267,7 +272,8 @@ msgstr "Thêm cấu hình" msgid "Add Directive Below" msgstr "Thêm Directive" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "Thêm tên miền" @@ -275,6 +281,14 @@ msgstr "Thêm tên miền" msgid "Add Header" msgstr "Thêm tiêu đề" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "Thêm địa chỉ IP" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "Thêm mục" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -347,11 +361,6 @@ msgstr "Sau đó, làm mới trang này và nhấp vào thêm khóa truy cập m msgid "All" msgstr "Tất cả" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx không thể xác thực cấu hình." - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "Tất cả các thành phần" @@ -361,7 +370,7 @@ msgstr "Tất cả các thành phần" msgid "All Recovery Codes Have Been Used" msgstr "Tất cả mã khôi phục đã được sử dụng" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -374,8 +383,8 @@ msgid "" "Alternatively, if you cannot download the database, you can manually place " "GeoLite2-City.mmdb in the same directory as app.ini." msgstr "" -"Ngoài ra, nếu bạn không thể tải xuống cơ sở dữ liệu, bạn có thể đặt thủ công " -"tệp GeoLite2-City.mmdb vào cùng thư mục với app.ini." +"Ngoài ra, nếu bạn không thể tải xuống cơ sở dữ liệu, bạn có thể đặt thủ " +"công tệp GeoLite2-City.mmdb vào cùng thư mục với app.ini." #: src/constants/errors/nginx_log.ts:10 msgid "Analytics service not available" @@ -386,8 +395,7 @@ msgid "Any" msgstr "Bất kỳ" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "" "Bất kỳ địa chỉ IP có thể truy cập nào đều có thể được sử dụng với các cơ " "quan cấp chứng chỉ riêng tư" @@ -416,10 +424,6 @@ msgstr "Loại API" msgid "App" msgstr "Ứng dụng" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "Áp dụng" @@ -432,7 +436,7 @@ msgstr "Kiến trúc" msgid "Are you sure to delete this banned IP immediately?" msgstr "Bạn có chắc chắn muốn xóa IP bị cấm này ngay lập tức không?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "Bạn có chắc chắn muốn xóa cấu hình DDNS này không?" @@ -444,7 +448,7 @@ msgstr "Bạn có chắc chắn muốn xóa ngay lập tức khóa truy cập n msgid "Are you sure to delete this record?" msgstr "Bạn có chắc chắn muốn xóa bản ghi này không?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "Bạn có chắc chắn muốn tạo mã khôi phục mới không?" @@ -488,8 +492,7 @@ msgstr "Bạn có chắc chắn muốn xóa vị trí này không?" #: src/components/NamespaceTabs/NamespaceTabs.vue:146 msgid "Are you sure you want to restart Nginx on the following sync nodes?" -msgstr "" -"Bạn có chắc chắn muốn khởi động lại Nginx trên các nút đồng bộ sau không?" +msgstr "Bạn có chắc chắn muốn khởi động lại Nginx trên các nút đồng bộ sau không?" #: src/language/curd.ts:26 msgid "Are you sure you want to restore?" @@ -512,6 +515,8 @@ msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." msgstr "" +"Atlas Cloud tương thích với OpenAI. Sử dụng https://api.atlascloud.ai/v1 và " +"khóa API Atlas Cloud." #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -521,12 +526,11 @@ msgstr "Cố gắng sửa chữa" msgid "Attempts" msgstr "Nỗ lực" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "Xác thực" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "Xác thực với một cô ấy" @@ -534,11 +538,6 @@ msgstr "Xác thực với một cô ấy" msgid "Authenticating..." msgstr "Đang xác thực..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "Đang xác thực..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -586,15 +585,15 @@ msgstr "Tự động làm mới đã bị vô hiệu hóa" msgid "Auto refresh enabled" msgstr "Cập nhật tự động đã được bật" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "Đã tắt tự động gia hạn SSL cho %{name}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "Đã bật tự động gia hạn SSL cho %{name}" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert đang chạy, vui lòng chờ..." @@ -708,15 +707,13 @@ msgstr "Khóa ký sao lưu không khả dụng" #: src/components/Notification/notifications.ts:38 msgid "Backup task %{backup_name} completed successfully, file: %{file_path}" -msgstr "" -"Tác vụ sao lưu %{backup_name} đã hoàn thành thành công, tệp: %{file_path}" +msgstr "Tác vụ sao lưu %{backup_name} đã hoàn thành thành công, tệp: %{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "" -"Tác vụ sao lưu %{backup_name} thất bại trong quá trình tải lên lưu trữ, lỗi: " -"%{error}" +"Tác vụ sao lưu %{backup_name} thất bại trong quá trình tải lên lưu trữ, " +"lỗi: %{error}" #: src/components/Notification/notifications.ts:30 msgid "Backup task %{backup_name} failed to execute, error: %{error}" @@ -777,12 +774,6 @@ msgstr "Nâng cấp hàng loạt" msgid "Belows are selected items that you want to batch modify" msgstr "Dưới đây là các mục đã chọn mà bạn muốn sửa hàng loạt" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "Khối là nil" @@ -808,9 +799,9 @@ msgid "" "requirements and understand the performance implications. This will start " "indexing existing log files immediately." msgstr "" -"Bằng cách kích hoạt lập chỉ mục nâng cao, bạn xác nhận rằng hệ thống của bạn " -"đáp ứng các yêu cầu và hiểu rõ các tác động đến hiệu suất. Điều này sẽ bắt " -"đầu lập chỉ mục các tệp nhật ký hiện có ngay lập tức." +"Bằng cách kích hoạt lập chỉ mục nâng cao, bạn xác nhận rằng hệ thống của " +"bạn đáp ứng các yêu cầu và hiểu rõ các tác động đến hiệu suất. Điều này sẽ " +"bắt đầu lập chỉ mục các tệp nhật ký hiện có ngay lập tức." #: src/views/certificate/ACMEUser.vue:39 msgid "CA Dir" @@ -872,14 +863,14 @@ msgstr "" #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -971,6 +962,12 @@ msgstr "Nội dung chứng chỉ và khóa riêng tư không thể để trống msgid "Certificate decode error" msgstr "Lỗi giải mã chứng chỉ" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "" +"Các chỉ thị chứng chỉ đã được thêm vào trình chỉnh sửa; hãy xem lại và lưu " +"khi sẵn sàng." + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "Thông báo hết hạn chứng chỉ" @@ -989,6 +986,14 @@ msgstr "Chứng chỉ sắp hết hạn" msgid "Certificate files downloaded successfully" msgstr "Tải xuống tệp chứng chỉ thành công" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "Thành phần cấp chứng chỉ chưa sẵn sàng" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "Chứng chỉ đã được cấp thành công" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "Tên chứng chỉ không được để trống" @@ -1023,17 +1028,18 @@ msgid "Certificate revoked successfully" msgstr "Hủy chứng chỉ thành công" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "Trạng thái chứng chỉ" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "Loại chứng chỉ" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "Chứng chỉ" @@ -1054,11 +1060,11 @@ msgstr "Phương pháp xác thực" msgid "Change Certificate" msgstr "Thay đổi chứng chỉ" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "Đổi mật khẩu" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "Chứng chỉ đã thay đổi" @@ -1097,13 +1103,13 @@ msgstr "Kiểm tra favicon" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" "Kiểm tra xem /var/run/docker.sock có tồn tại không. Nếu bạn đang sử dụng " @@ -1122,12 +1128,11 @@ msgid "" "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and " "prevents using Passkeys and clipboard features" msgstr "" -"Kiểm tra xem HTTPS có được bật không. Sử dụng HTTP bên ngoài localhost không " -"an toàn và ngăn chặn việc sử dụng tính năng Passkeys và clipboard" +"Kiểm tra xem HTTPS có được bật không. Sử dụng HTTP bên ngoài localhost " +"không an toàn và ngăn chặn việc sử dụng tính năng Passkeys và clipboard" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "Kiểm tra xem thư mục conf.d có nằm trong thư mục cấu hình nginx không" #: src/language/generate.ts:7 @@ -1139,23 +1144,23 @@ msgid "" msgstr "" "Kiểm tra xem cơ sở dữ liệu GeoLite2 có sẵn không khi chỉ mục nhật ký được " "bật. Cơ sở dữ liệu GeoLite2 là cần thiết cho phân tích địa lý IP trong chỉ " -"mục nhật ký. Bạn có thể tải nó từ trang Tùy chọn hoặc đặt tệp GeoLite2-City." -"mmdb vào cùng thư mục với app.ini một cách thủ công" +"mục nhật ký. Bạn có thể tải nó từ trang Tùy chọn hoặc đặt tệp " +"GeoLite2-City.mmdb vào cùng thư mục với app.ini một cách thủ công" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" "Kiểm tra xem đường dẫn nhật ký truy cập nginx có tồn tại không. Theo mặc " "định, đường dẫn này được lấy từ 'nginx -V'. Nếu không thể lấy được hoặc " "đường dẫn lấy được không trỏ đến một tệp hợp lệ đang tồn tại, một lỗi sẽ " -"được báo cáo. Trong trường hợp này, bạn cần sửa đổi tệp cấu hình để chỉ định " -"đường dẫn nhật ký truy cập. Tham khảo tài liệu để biết thêm chi tiết: " +"được báo cáo. Trong trường hợp này, bạn cần sửa đổi tệp cấu hình để chỉ " +"định đường dẫn nhật ký truy cập. Tham khảo tài liệu để biết thêm chi tiết: " "https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 @@ -1172,29 +1177,29 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" "Kiểm tra xem đường dẫn nhật ký lỗi của nginx có tồn tại không. Theo mặc " "định, đường dẫn này được lấy từ 'nginx -V'. Nếu không thể lấy được hoặc " "đường dẫn lấy được không trỏ đến một tệp hợp lệ đang tồn tại, một lỗi sẽ " -"được báo cáo. Trong trường hợp này, bạn cần sửa đổi tệp cấu hình để chỉ định " -"đường dẫn nhật ký lỗi. Tham khảo tài liệu để biết thêm chi tiết: https://" -"nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" +"được báo cáo. Trong trường hợp này, bạn cần sửa đổi tệp cấu hình để chỉ " +"định đường dẫn nhật ký lỗi. Tham khảo tài liệu để biết thêm chi tiết: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" "Kiểm tra xem đường dẫn PID của Nginx có tồn tại không. Theo mặc định, đường " -"dẫn này được lấy từ lệnh 'nginx -V'. Nếu không thể lấy được, một lỗi sẽ được " -"báo cáo. Trong trường hợp này, bạn cần sửa đổi tệp cấu hình để chỉ định " -"đường dẫn PID của Nginx. Tham khảo tài liệu để biết thêm chi tiết: https://" -"nginxui.com/zh_CN/guide/config-nginx.html#pidpath" +"dẫn này được lấy từ lệnh 'nginx -V'. Nếu không thể lấy được, một lỗi sẽ " +"được báo cáo. Trong trường hợp này, bạn cần sửa đổi tệp cấu hình để chỉ " +"định đường dẫn PID của Nginx. Tham khảo tài liệu để biết thêm chi tiết: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1222,8 +1227,8 @@ msgstr "" #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "" "Kiểm tra xem các thư mục streams-available và streams-enabled có nằm trong " "thư mục cấu hình nginx không" @@ -1245,6 +1250,10 @@ msgstr "Bản đồ Trung Quốc" msgid "Cipher text is too short" msgstr "Văn bản mã hóa quá ngắn" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "Dọn dẹp bản ghi xung đột" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "Xoá các biến môi trường" @@ -1454,11 +1463,11 @@ msgstr "Tên cấu hình" msgid "Configurations" msgstr "Cấu hình" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "Cấu hình" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "Cấu hình DDNS" @@ -1470,7 +1479,7 @@ msgstr "Cấu hình SSL" msgid "Confirm Delete" msgstr "Xác nhận xóa" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "Xác nhận mật khẩu mới" @@ -1483,11 +1492,6 @@ msgstr "Yêu cầu xác nhận" msgid "Connected" msgstr "Đã kết nối" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "Đã kết nối" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "Lỗi kết nối, đang thử kết nối lại..." @@ -1500,15 +1504,6 @@ msgstr "Mất kết nối với thiết bị đầu cuối này. Vui lòng làm msgid "Connection timeout period" msgstr "Khoảng thời gian chờ kết nối" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "Nội dung" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "Trạng thái container không xác định" @@ -1521,8 +1516,7 @@ msgstr "Nội dung" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "Đã sao chép" @@ -1533,19 +1527,13 @@ msgstr "Đã sao chép!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "Sao chép" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "Sao chép mã" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "Sao chép" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "Cập nhật core" @@ -1625,8 +1613,8 @@ msgid "" "Create system backups including Nginx configuration and Nginx UI settings. " "Backup files will be automatically downloaded to your computer." msgstr "" -"Tạo bản sao lưu hệ thống bao gồm cấu hình Nginx và cài đặt Nginx UI. Các tệp " -"sao lưu sẽ tự động được tải xuống máy tính của bạn." +"Tạo bản sao lưu hệ thống bao gồm cấu hình Nginx và cài đặt Nginx UI. Các " +"tệp sao lưu sẽ tự động được tải xuống máy tính của bạn." #: src/views/backup/AutoBackup/AutoBackup.vue:229 #: src/views/namespace/columns.ts:85 @@ -1646,7 +1634,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "Tạo client để giao tiếp với CA server" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "Chứng chỉ" @@ -1678,7 +1666,7 @@ msgstr "Kết nối đang hoạt động hiện tại" msgid "Current Content" msgstr "Nội dung hiện tại" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "Mật khẩu hiện tại" @@ -1704,11 +1692,11 @@ msgstr "Biểu thức cron tùy chỉnh" msgid "Custom Directory" msgstr "Thư mục tùy chỉnh" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "Tên miền tùy chỉnh" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "Chứng chỉ Tên miền Tùy chỉnh" @@ -1769,15 +1757,15 @@ msgstr "Tệp cơ sở dữ liệu không tìm thấy" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "Cấu hình DDNS đã bị xóa" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "Tổng quan DDNS" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "Đã lưu DDNS" @@ -1795,8 +1783,7 @@ msgstr "Phạm vi mặc định" #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:149 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m" -msgstr "" -"Xác định tên và kích thước vùng bộ nhớ dùng chung, ví dụ proxy_cache:10m" +msgstr "Xác định tên và kích thước vùng bộ nhớ dùng chung, ví dụ proxy_cache:10m" #: src/components/LLM/LLMSessionTabs.vue:293 #: src/components/LLM/LLMSessionTabs.vue:384 @@ -1807,7 +1794,7 @@ msgstr "" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "Xoá" @@ -1892,8 +1879,8 @@ msgstr "Bản demo" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "" "Chế độ demo đã được bật. Thiết bị đầu cuối này chỉ cho phép một tập hợp nhỏ " "các lệnh an toàn chỉ đọc." @@ -2007,7 +1994,7 @@ msgstr "Vô hiệu hóa" msgid "Disable" msgstr "Vô hiệu hóa" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "Vô hiệu hóa gia hạn tự động thất bại cho %{name}" @@ -2062,7 +2049,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "Đã vô hiệu hóa luồng %{name} từ %{node} thành công" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2181,19 +2168,17 @@ msgstr "Bạn có muốn %{action} trang web này không?" msgid "Do you want to %{action} this stream?" msgstr "Bạn có muốn %{action} luồng này không?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "Bạn muốn tắt tự động gia hạn chứng chỉ SSL ?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "Bạn muốn tắt trang web này ?" +msgstr "Bạn có muốn vô hiệu hóa các trang web đã chọn không?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "Bạn có muốn bật luồng này không?" +msgstr "Bạn có muốn kích hoạt các trang web đã chọn không?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2212,10 +2197,6 @@ msgstr "Bạn có muốn xóa upstream này không?" msgid "Docker client not initialized" msgstr "Máy khách Docker chưa được khởi tạo" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Ổ cắm Docker tồn tại" @@ -2224,10 +2205,6 @@ msgstr "Ổ cắm Docker tồn tại" msgid "Docker socket not exist" msgstr "Ổ cắm Docker không tồn tại" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2238,11 +2215,15 @@ msgstr[0] "Tài liệu" msgid "Document Count" msgstr "Số lượng tài liệu" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "Tên miền" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "Tên miền" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" @@ -2390,7 +2371,7 @@ msgstr "Bật lập chỉ mục nâng cao" msgid "Enable Advanced Log Indexing" msgstr "Bật lập chỉ mục nhật ký nâng cao" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "Không thể bật tự động gia hạn SSL cho %{name}" @@ -2402,7 +2383,7 @@ msgstr "Bật hoàn thành mã" msgid "Enable compression for content transfer" msgstr "Bật nén để chuyển nội dung" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "Bật DDNS" @@ -2499,7 +2480,7 @@ msgid "Enable TOTP" msgstr "Bật TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2536,8 +2517,8 @@ msgid "" "minimum requirements before proceeding." msgstr "" "Bật tính năng lập chỉ mục nhật ký nâng cao sẽ tiêu tốn tài nguyên tính toán " -"đáng kể bao gồm CPU và bộ nhớ. Vui lòng đảm bảo hệ thống của bạn đáp ứng các " -"yêu cầu tối thiểu trước khi tiếp tục." +"đáng kể bao gồm CPU và bộ nhớ. Vui lòng đảm bảo hệ thống của bạn đáp ứng " +"các yêu cầu tối thiểu trước khi tiếp tục." #: src/views/site/site_edit/components/Cert/IssueCert.vue:95 msgid "Encrypt website with Let's Encrypt" @@ -2551,10 +2532,19 @@ msgstr "Kết thúc" msgid "End Date" msgstr "Ngày kết thúc" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "Nhập tên chứng chỉ" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "Nhập tên miền" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "Nhập địa chỉ IP" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "Nhập địa chỉ IP máy chủ (ví dụ: 203.0.113.1 hoặc 2001:db8::1)" @@ -2571,7 +2561,7 @@ msgstr "" "Nhập mật khẩu cài đặt một lần được hiển thị bởi tập lệnh cài đặt hoặc tìm " "thấy trong tệp ẩn của thư mục cấu hình để mở khóa thiết lập." -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "Nhập tên miền của bạn" @@ -2583,7 +2573,7 @@ msgstr "Cấu hình môi trường trống" msgid "Environment variables cleaned" msgstr "Đã dọn dẹp biến môi trường" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2616,8 +2606,8 @@ msgstr "Log lỗi" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "" "Nhật ký lỗi không hỗ trợ phân tích có cấu trúc vì chúng chứa các thông báo " "văn bản tự do." @@ -2667,7 +2657,7 @@ msgid "Expected Text" msgstr "Văn bản mong đợi" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "Đã hết hạn" @@ -2689,18 +2679,13 @@ msgstr "" #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." msgstr "" -"ID khóa liên kết tài khoản bên ngoài (tùy chọn). Bắt buộc đối với một số nhà " -"cung cấp ACME như ZeroSSL." +"ID khóa liên kết tài khoản bên ngoài (tùy chọn). Bắt buộc đối với một số " +"nhà cung cấp ACME như ZeroSSL." -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "Container Docker bên ngoài" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "Container Docker bên ngoài" @@ -2723,6 +2708,7 @@ msgstr "Không thể lấy chứng chỉ" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "Thất bại" @@ -2962,6 +2948,11 @@ msgstr "Không thể tạo khóa AES: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "Không thể tạo vector khởi tạo: {0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "Không thể tạo chứng chỉ tự ký" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "Không thể truy xuất thông tin chứng chỉ" @@ -3293,8 +3284,7 @@ msgid "For commercial or professional use, contact" msgstr "Để sử dụng thương mại hoặc chuyên nghiệp, vui lòng liên hệ" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "" "Đối với nhật ký lỗi, vui lòng sử dụng Trình xem Nhật ký Thô để có trải " "nghiệm xem tốt hơn." @@ -3309,8 +3299,8 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "" "Đối với chứng chỉ dựa trên IP, vui lòng chỉ định địa chỉ IP của máy chủ sẽ " "được đưa vào chứng chỉ." @@ -3361,14 +3351,16 @@ msgstr "" #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "" "Chế độ gỡ lỗi frontend: quá trình cài đặt hoàn tất mà không gửi yêu cầu " "backend" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "" "Chế độ gỡ lỗi frontend: quá trình khôi phục hoàn tất mà không cần gửi yêu " "cầu đến backend" @@ -3385,21 +3377,24 @@ msgstr "Hỗ trợ tìm kiếm toàn văn" msgid "General Certificate" msgstr "Chứng chỉ chung" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "Tạo" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "Tạo" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "Tạo mã khôi phục mới" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "Tạo mã khôi phục mới" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "Tạo mã khôi phục" @@ -3407,6 +3402,14 @@ msgstr "Tạo mã khôi phục" msgid "Generate recovery codes successfully" msgstr "Tạo mã khôi phục thành công" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "Tạo chứng chỉ tự ký" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "Tạo chứng chỉ tự ký" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "Tạo khóa riêng để đăng ký tài khoản" @@ -3485,6 +3488,10 @@ msgstr "Đi tới DNS > Thông tin xác thực để tạo hoặc quản lý th msgid "Go to Raw Log Viewer" msgstr "Đi đến Trình xem Nhật ký Thô" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "Đi đến mã khôi phục" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3554,10 +3561,6 @@ msgstr "Ẩn" msgid "Hide Assistant" msgstr "Ẩn trợ lý" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3579,27 +3582,10 @@ msgid "Home" msgstr "Trang chủ" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "Máy chủ" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "Máy chủ, vd: @ hoặc www" @@ -3661,8 +3647,7 @@ msgstr "" #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." -msgstr "" -"Nếu trình duyệt của bạn hỗ trợ WebAuthn Passkey, một hộp thoại sẽ xuất hiện." +msgstr "Nếu trình duyệt của bạn hỗ trợ WebAuthn Passkey, một hộp thoại sẽ xuất hiện." #: src/components/AutoCertForm/AutoCertForm.vue:271 msgid "" @@ -3672,12 +3657,12 @@ msgstr "" "Nếu tên miền của bạn có bản ghi CNAME và bạn không thể nhận được chứng chỉ, " "bạn cần bật tùy chọn này." -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "Nhập" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "Nhập chứng chỉ" @@ -3740,7 +3725,7 @@ msgstr "Đang lập chỉ mục..." msgid "Indicator" msgstr "Chỉ số" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "Thông tin" @@ -3764,7 +3749,7 @@ msgstr "Đang khởi tạo trình nâng cấp" msgid "Input the code from the app:" msgstr "Nhập mã từ ứng dụng:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "Nhập mã khôi phục:" @@ -3823,12 +3808,12 @@ msgstr "" "Không được phép cài đặt sau 10 phút khởi động hệ thống, vui lòng khởi động " "lại Nginx UI." -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "Khoảng thời gian" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "Khoảng thời gian (giây)" @@ -3902,7 +3887,7 @@ msgstr "Mã OTP không hợp lệ" msgid "Invalid padding in decrypted data" msgstr "Đệm không hợp lệ trong dữ liệu đã giải mã" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "Mã xác thực hoặc mã khôi phục không hợp lệ" @@ -3955,15 +3940,43 @@ msgstr "Địa chỉ IP" msgid "IP Address / Target" msgstr "Địa chỉ IP / Mục tiêu" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "Địa chỉ IP" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "Thông báo chứng chỉ IP" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "Phiên bản IP" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "Chỉ IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "IPv4 rồi IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "Chỉ IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "IPv6 rồi đến IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "Phát hành thất bại" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "Cấp chứng chỉ" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "Cấp chứng chỉ" @@ -3971,10 +3984,18 @@ msgstr "Cấp chứng chỉ" msgid "Issued certificate successfully" msgstr "Đã phát hành chứng chỉ thành công" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "Đã cấp thành công" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "Nhà phát hành: %{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "Đang phát hành..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "mục" @@ -3996,7 +4017,8 @@ msgid "Keepalive Timeout" msgstr "Thời gian chờ Keepalive" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "Loại khóa" @@ -4078,7 +4100,7 @@ msgstr "Lần lập chỉ mục cuối" msgid "Last month" msgstr "Tháng trước" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "Lần chạy cuối" @@ -4094,6 +4116,10 @@ msgstr "Lần cập nhật cuối:" msgid "Last used at" msgstr "Lần sử dụng cuối" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "Để sau" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "Bỏ trống nếu không thay đổi" @@ -4115,10 +4141,8 @@ msgid "Leave blank if you don't need this." msgstr "Để trống nếu bạn không cần cái này." #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "Bỏ trống để sử dụng địa chỉ mặc định: https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "Để trống để sử dụng điểm cuối Atlas Cloud: https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4127,6 +4151,15 @@ msgstr "Bỏ trống để sử dụng địa chỉ mặc định: https://api.o msgid "Leave blank will not change anything" msgstr "Để trống sẽ không thay đổi bất cứ điều gì" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "" +"Mã khôi phục cũ đã không còn được hỗ trợ. Tạo mã khôi phục mới để đảm bảo " +"an toàn cho việc khôi phục tài khoản." + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "Không cho phép mã khôi phục cũ vì TOTP chưa được bật" @@ -4183,7 +4216,7 @@ msgstr "Đang lắng nghe" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4231,18 +4264,14 @@ msgstr "Đang tải..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "Cục bộ" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "Đường dẫn cục bộ (vd: /var/backups)" @@ -4255,19 +4284,20 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "Nhật ký" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" -"Tệp nhật ký %{log_path} không phải là tệp thông thường. Nếu bạn đang sử dụng " -"nginx-ui trong container docker, vui lòng tham khảo https://nginxui.com/" -"zh_CN/guide/config-nginx-log.html để biết thêm thông tin." +"Tệp nhật ký %{log_path} không phải là tệp thông thường. Nếu bạn đang sử " +"dụng nginx-ui trong container docker, vui lòng tham khảo " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html để biết thêm thông " +"tin." #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4311,7 +4341,7 @@ msgstr "" msgid "Log path is not under whitelist" msgstr "Đường dẫn nhật ký không nằm trong danh sách trắng" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "Đăng nhập" @@ -4319,7 +4349,7 @@ msgstr "Đăng nhập" msgid "Login successful" msgstr "Đăng nhập thành công" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "Đã đăng xuất" @@ -4329,19 +4359,19 @@ msgstr "Logrotate" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" "Logrotate được kích hoạt mặc định trong hầu hết các bản phân phối Linux phổ " -"biến dành cho người dùng cài đặt Nginx UI trực tiếp trên máy chủ, vì vậy bạn " -"không cần phải thay đổi các tham số trên trang này. Đối với người dùng cài " -"đặt Nginx UI bằng container Docker, bạn có thể kích hoạt thủ công tùy chọn " -"này. Bộ lập lịch tác vụ crontab của Nginx UI sẽ thực thi lệnh logrotate theo " -"khoảng thời gian bạn đặt (tính bằng phút)." +"biến dành cho người dùng cài đặt Nginx UI trực tiếp trên máy chủ, vì vậy " +"bạn không cần phải thay đổi các tham số trên trang này. Đối với người dùng " +"cài đặt Nginx UI bằng container Docker, bạn có thể kích hoạt thủ công tùy " +"chọn này. Bộ lập lịch tác vụ crontab của Nginx UI sẽ thực thi lệnh " +"logrotate theo khoảng thời gian bạn đặt (tính bằng phút)." #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4368,15 +4398,13 @@ msgstr "Đã tắt chế độ bảo trì thành công" msgid "Maintenance mode enabled successfully" msgstr "Đã bật chế độ bảo trì thành công" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "Đã bật chế độ bảo trì thành công" +msgstr "Mẫu bảo trì (chỉ tên tệp)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "Bảo trì" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4510,10 +4538,6 @@ msgstr "Thiết kế bộ nhớ" msgid "Memory Usage (RSS)" msgstr "Mức sử dụng bộ nhớ (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4547,7 +4571,7 @@ msgstr "Phút" msgid "Minutes" msgstr "Phút" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "Gương" @@ -4576,7 +4600,7 @@ msgid "Modify" msgstr "Sửa đổi" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "Sửa đổi chứng chỉ" @@ -4608,10 +4632,9 @@ msgstr "Hàng tháng" msgid "Monthly on day %{day} at %{time}" msgstr "Hàng tháng vào ngày %{day} lúc %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "Thư mục được bảo vệ" +msgstr "Thư mục được gắn kết" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4641,6 +4664,7 @@ msgstr "Không có" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4715,7 +4739,7 @@ msgstr "Lỗi máy khách lego mới: {0}" msgid "New name" msgstr "Tên mới" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "Mật khẩu mới" @@ -4731,12 +4755,11 @@ msgstr "Lỗi vận chuyển mới: {0}" msgid "New version released" msgstr "Đã có phiên bản mới" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "Tiếp theo" @@ -4748,7 +4771,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Đầu ra của Nginx -T trống" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Vị trí lưu log truy cập (Access log) của Nginx" @@ -4802,11 +4825,11 @@ msgstr "Cấu hình Nginx đã được khôi phục" msgid "Nginx Configuration Parse Error" msgstr "Lỗi phân tích cấu hình Nginx" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Đường dẫn cấu hình Nginx" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Thư mục cấu hình Nginx" @@ -4814,7 +4837,7 @@ msgstr "Thư mục cấu hình Nginx" msgid "Nginx Control" msgstr "Điều khiển Nginx" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Chế độ điều khiển Nginx" @@ -4823,7 +4846,7 @@ msgstr "Chế độ điều khiển Nginx" msgid "Nginx CPU usage rate" msgstr "Tỷ lệ sử dụng CPU của Nginx" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Vị trí lưu log lỗi (Error log) của Nginx" @@ -4859,7 +4882,7 @@ msgstr "Nginx đang chạy" msgid "Nginx Log" msgstr "Nhật ký Nginx" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Danh sách trắng thư mục nhật ký Nginx" @@ -4872,7 +4895,7 @@ msgstr "Đang lập chỉ mục nhật ký Nginx..." msgid "Nginx Memory usage" msgstr "Mức sử dụng bộ nhớ Nginx" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Đường dẫn PID của Nginx" @@ -4880,7 +4903,7 @@ msgstr "Đường dẫn PID của Nginx" msgid "Nginx PID path exists" msgstr "Đường dẫn PID của Nginx tồn tại" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Lệnh Tải lại Nginx" @@ -4901,7 +4924,7 @@ msgstr "Nginx đã tải lại thành công" msgid "Nginx reported a configuration syntax error." msgstr "Nginx báo cáo lỗi cú pháp cấu hình." -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Lệnh khởi động lại Nginx" @@ -4917,7 +4940,7 @@ msgstr "Khởi động lại Nginx thành công" msgid "Nginx sbin path exists" msgstr "Đường dẫn sbin của Nginx tồn tại" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Lệnh kiểm tra cấu hình Nginx" @@ -4940,10 +4963,20 @@ msgstr "Cấu hình Nginx UI đã được khôi phục" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "" -"Cấu hình Nginx UI đã được khôi phục và sẽ tự động khởi động lại sau vài giây." +"Cấu hình Nginx UI đã được khôi phục và sẽ tự động khởi động lại sau vài " +"giây." + +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "" +"Nginx UI sẽ tự động gia hạn chứng chỉ này khi gần hết hạn, dựa trên khoảng " +"thời gian gia hạn chứng chỉ toàn cục và thời hạn hiệu lực của chứng chỉ này." #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" @@ -4971,7 +5004,7 @@ msgid "No" msgstr "Không" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "Không hành động" @@ -5009,10 +5042,6 @@ msgstr "Không có mục nào trong trang hiện tại" msgid "No geographic data available" msgstr "Không có dữ liệu địa lý" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "Không tìm thấy nhật ký trong khoảng thời gian đã chọn." @@ -5074,7 +5103,7 @@ msgstr "Trạng thái nút" msgid "Nodes" msgstr "Nút" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "Không phải sau khi" @@ -5095,7 +5124,7 @@ msgstr "Chưa được lập chỉ mục" msgid "Not Loaded" msgstr "Chưa tải" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "Chưa được chạy" @@ -5126,8 +5155,8 @@ msgid "" "Note: If the server does not support gRPC Reflection, health checks may " "fail. Please ensure your gRPC server has Reflection enabled." msgstr "" -"Lưu ý: Nếu máy chủ không hỗ trợ gRPC Reflection, việc kiểm tra tình trạng có " -"thể thất bại. Hãy đảm bảo rằng máy chủ gRPC của bạn đã bật Reflection." +"Lưu ý: Nếu máy chủ không hỗ trợ gRPC Reflection, việc kiểm tra tình trạng " +"có thể thất bại. Hãy đảm bảo rằng máy chủ gRPC của bạn đã bật Reflection." #: src/views/certificate/components/CertificateBasicInfo.vue:24 #: src/views/certificate/components/CertificateContentEditor.vue:105 @@ -5174,7 +5203,7 @@ msgstr "Số lượng tiến trình worker" msgid "Obtain cert error: {0}" msgstr "Lỗi khi lấy chứng chỉ: {0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "Nhận chứng chỉ" @@ -5228,7 +5257,7 @@ msgstr "Đăng nhập OIDC" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5272,10 +5301,6 @@ msgstr "Chỉ cho phép tệp zip" msgid "Open" msgstr "Mở" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "Hạn chế mã nguồn mở" @@ -5292,7 +5317,7 @@ msgstr "Thống kê hệ điều hành" msgid "Optional comment for this DNS record" msgstr "Bình luận tùy chọn cho bản ghi DNS này" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "Hoặc" @@ -5341,11 +5366,6 @@ msgstr "Khác" msgid "Otp or recovery code empty" msgstr "OTP hoặc mã khôi phục trống" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "Ghi đè tập tin đã tồn tại" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "Ghi đè" @@ -5382,9 +5402,9 @@ msgid "" "password replacement or as a 2FA method." msgstr "" "Passkey là thông tin xác thực WebAuthn dùng để xác minh danh tính của bạn " -"thông qua chạm, nhận diện khuôn mặt, mật khẩu thiết bị hoặc mã PIN. Chúng có " -"thể được sử dụng để thay thế mật khẩu hoặc làm phương thức xác thực hai yếu " -"tố (2FA)." +"thông qua chạm, nhận diện khuôn mặt, mật khẩu thiết bị hoặc mã PIN. Chúng " +"có thể được sử dụng để thay thế mật khẩu hoặc làm phương thức xác thực hai " +"yếu tố (2FA)." #: src/views/other/Login.vue:308 src/views/user/userColumns.tsx:16 msgid "Password" @@ -5394,10 +5414,6 @@ msgstr "Mật khẩu" msgid "Password (*)" msgstr "Mật khẩu (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "Mật khẩu không đúng" @@ -5406,11 +5422,11 @@ msgstr "Mật khẩu không đúng" msgid "Password length cannot exceed 20 characters" msgstr "Độ dài mật khẩu không được vượt quá 20 ký tự" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "Cập nhật mật khẩu thành công" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "Mật khẩu không khớp" @@ -5482,7 +5498,7 @@ msgstr "Đã lưu cài đặt hiệu suất thành công" msgid "Performing core upgrade" msgstr "Nâng cấp core" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "Thông tin cá nhân" @@ -5513,8 +5529,7 @@ msgstr "" #: src/components/AutoCertForm/DNSChallenge.vue:131 msgid "Please create DNS credentials first in DNS > Credentials" -msgstr "" -"Vui lòng tạo thông tin xác thực DNS trước trong DNS > Thông tin xác thực" +msgstr "Vui lòng tạo thông tin xác thực DNS trước trong DNS > Thông tin xác thực" #: src/views/dashboard/NginxDashBoard.vue:196 msgid "" @@ -5528,12 +5543,19 @@ msgstr "" msgid "Please enter" msgstr "Vui lòng nhập" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "Vui lòng nhập tên cho chứng chỉ" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " "button below." msgstr "" -"Vui lòng nhập tên cho khóa truy cập bạn muốn tạo và nhấp vào nút OK bên dưới." +"Vui lòng nhập tên cho khóa truy cập bạn muốn tạo và nhấp vào nút OK bên " +"dưới." #: src/components/AutoCertForm/AutoCertForm.vue:98 msgid "Please enter a valid IPv4 address (0-255 per octet)" @@ -5547,15 +5569,21 @@ msgstr "Vui lòng nhập địa chỉ IPv4 hoặc IPv6 hợp lệ" msgid "Please enter a valid port range" msgstr "Vui lòng nhập một phạm vi cổng hợp lệ" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "Vui lòng nhập ít nhất một tên miền" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "Vui lòng nhập ít nhất một tên miền hoặc địa chỉ IP" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "Vui lòng nhập mật khẩu cài đặt trước khi tiếp tục" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "Vui lòng nhập mã OTP:" @@ -5589,22 +5617,21 @@ msgstr "Vui lòng điền vào các trường cấu hình S3 bắt buộc" msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." -msgstr "" -"Vui lòng điền thông tin xác thực API do nhà cung cấp DNS của bạn cung cấp" +msgstr "Vui lòng điền thông tin xác thực API do nhà cung cấp DNS của bạn cung cấp" #: src/components/AutoCertForm/AutoCertForm.vue:168 msgid "" "Please first add credentials in Certification > DNS Credentials, and then " "select one of the credentialsbelow to request the API of the DNS provider." msgstr "" -"Trước tiên, vui lòng thêm thông tin xác thực trong Chứng chỉ > Thông tin xác " -"thực DNS, sau đó chọn nhà cung cấp DNS" +"Trước tiên, vui lòng thêm thông tin xác thực trong Chứng chỉ > Thông tin " +"xác thực DNS, sau đó chọn nhà cung cấp DNS" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "" "Vui lòng tạo mã khôi phục mới trong phần tùy chọn ngay lập tức để tránh bị " "khóa." @@ -5622,15 +5649,13 @@ msgstr "Vui lòng nhập tên thư mục" msgid "" "Please input name, this will be used as the filename of the new " "configuration!" -msgstr "" -"Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp của cấu hình mới!" +msgstr "Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp của cấu hình mới!" #: src/views/site/site_list/SiteDuplicate.vue:33 msgid "" "Please input name, this will be used as the filename of the new " "configuration." -msgstr "" -"Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp cho cấu hình mới." +msgstr "Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp cho cấu hình mới." #: src/views/install/components/InstallForm.vue:29 msgid "Please input your E-mail!" @@ -5650,8 +5675,7 @@ msgid "Please log in." msgstr "Vui lòng đăng nhập." #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "Lưu ý đơn vị cấu hình thời gian bên dưới được tính bằng giây." #: src/views/install/components/InstallView.vue:136 @@ -5670,7 +5694,7 @@ msgstr "Vui lòng chọn tệp sao lưu" msgid "Please select a certificate before saving the TLS server configuration." msgstr "Vui lòng chọn chứng chỉ trước khi lưu cấu hình máy chủ TLS." -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "Vui lòng chọn thông tin xác thực DNS" @@ -5750,10 +5774,6 @@ msgstr "Cài đặt" msgid "Preparing lego configurations" msgstr "Chuẩn bị cấu hình Lego" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5772,10 +5792,6 @@ msgstr "IP riêng (192.168.x.x, 10.x.x.x, 172.16-31.x.x) sẽ thất bại" msgid "private key" msgstr "khóa riêng tư" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "Quá trình" @@ -5819,12 +5835,13 @@ msgstr "Giao thức" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." msgstr "" "Cấu hình giao thức chỉ có hiệu lực khi kết nối trực tiếp. Nếu sử dụng proxy " "ngược, vui lòng cấu hình giao thức riêng trong proxy ngược." -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5863,14 +5880,6 @@ msgstr "Mục tiêu proxy" msgid "Public CA Requirements:" msgstr "Yêu cầu của CA công cộng:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "Số An ninh Công cộng" @@ -5971,11 +5980,11 @@ msgstr "Loại bản ghi" msgid "Record updated" msgstr "Bản ghi đã được cập nhật" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "Bản ghi" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "Khôi phục" @@ -6008,7 +6017,7 @@ msgstr "Thông điệp chuyển hướng (3xx)" msgid "Referer" msgstr "Người giới thiệu" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "Làm mới" @@ -6017,11 +6026,6 @@ msgstr "Làm mới" msgid "Refresh Modules Cache" msgstr "Làm mới bộ nhớ đệm mô-đun" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "Tạo lại câu trả lời" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "Tạo lại câu trả lời" @@ -6080,7 +6084,7 @@ msgid "Reload" msgstr "Tải lại" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "Tải lại Nginx" @@ -6117,16 +6121,12 @@ msgstr "Đang tải lại" msgid "Reloading nginx" msgstr "Tải lại nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "Từ xa" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "Không có nút nào được chọn" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "Xóa" @@ -6136,6 +6136,10 @@ msgstr "Xóa" msgid "Remove successfully" msgstr "Xóa thành công" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "Đã xóa %{count} bản ghi xung đột: %{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "Đã xóa thành công" @@ -6215,8 +6219,8 @@ msgstr "Đổi tên thành công" msgid "Renew cert error: {0}" msgstr "Lỗi gia hạn chứng chỉ: {0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "Gia hạn chứng chỉ" @@ -6228,8 +6232,7 @@ msgstr "Lỗi gia hạn chứng chỉ" msgid "Renew Certificate Success" msgstr "Gia hạn chứng chỉ thành công" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "Gia hạn thành công" @@ -6282,8 +6285,8 @@ msgid "" "processes" msgstr "" "Kích thước tập hợp thường trú: Bộ nhớ thực tế thường trú trong bộ nhớ vật " -"lý, bao gồm tất cả bộ nhớ thư viện dùng chung, sẽ được tính toán lặp lại cho " -"nhiều tiến trình" +"lý, bao gồm tất cả bộ nhớ thư viện dùng chung, sẽ được tính toán lặp lại " +"cho nhiều tiến trình" #: src/views/nginx_log/components/IndexingSettingsModal.vue:109 msgid "Resource Usage Warning" @@ -6358,6 +6361,19 @@ msgstr "Khôi phục phiên bản này" msgid "Restored successfully" msgstr "Khôi phục thành công" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "Thử lại" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "Thử lại cấp chứng chỉ" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "Xem lại trước" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6380,14 +6396,13 @@ msgid "" "Revoking a certificate will affect any services currently using it. This " "action cannot be undone." msgstr "" -"Việc thu hồi chứng chỉ sẽ ảnh hưởng đến bất kỳ dịch vụ nào hiện đang sử dụng " -"nó. Hành động này không thể hoàn tác." +"Việc thu hồi chứng chỉ sẽ ảnh hưởng đến bất kỳ dịch vụ nào hiện đang sử " +"dụng nó. Hành động này không thể hoàn tác." #: src/views/site/site_add/components/DNSRecordIntegration.vue:356 #: src/views/site/site_edit/components/RightPanel/DNS.vue:650 msgid "Route traffic through proxy for additional protection and features" -msgstr "" -"Định tuyến lưu lượng qua proxy để có thêm tính năng bảo vệ và chức năng" +msgstr "Định tuyến lưu lượng qua proxy để có thêm tính năng bảo vệ và chức năng" #: src/views/preference/tabs/AuthSettings.vue:72 msgid "RP Display Name" @@ -6405,11 +6420,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "Chế độ chạy" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "Gia hạn chứng chỉ" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "Running" @@ -6529,7 +6539,7 @@ msgstr "Thứ Bảy" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6539,19 +6549,14 @@ msgstr "Thứ Bảy" msgid "Save" msgstr "Lưu" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "Cấu hình lưu trữ" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "Lưu Directive" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "Lưu ngay" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "Lưu thứ tự" @@ -6594,15 +6599,19 @@ msgstr "Đã lưu luồng %{name} vào %{node} thành công" msgid "Save successful" msgstr "Lưu thành công" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "Lưu thành công" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "Lưu cấu hình trang web ngay bây giờ?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "Phản hồi chứng chỉ đã lưu bị thiếu ID." #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6612,6 +6621,14 @@ msgstr "" msgid "Saved successfully" msgstr "Lưu thành công" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "" +"Lưu cấu hình trang web không thành công; các chỉ thị chứng chỉ nằm trong " +"trình chỉnh sửa — hãy xem lại các thay đổi và thử lại từ nút Lưu." + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "Đường dẫn sbin không tồn tại" @@ -6634,8 +6651,7 @@ msgstr "Kết quả quét" #: src/views/preference/components/AuthSettings/TOTP.vue:71 msgid "Scan the QR code with your mobile phone to add the account to the app." -msgstr "" -"Quét mã QR bằng điện thoại di động của bạn để thêm tài khoản vào ứng dụng." +msgstr "Quét mã QR bằng điện thoại di động của bạn để thêm tài khoản vào ứng dụng." #: src/views/nginx_log/indexing/components/IndexProgressBar.vue:50 msgid "Scanning" @@ -6661,7 +6677,7 @@ msgstr "SDK" msgid "Search" msgstr "Tìm kiếm" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "Tìm kiếm tên miền, nhà cung cấp hoặc mục tiêu" @@ -6693,7 +6709,7 @@ msgstr "Tìm kiếm mẫu" msgid "Secret has been copied" msgstr "Mật khẩu đã được sao chép" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "Cài đặt bảo mật" @@ -6741,6 +6757,10 @@ msgstr "Chọn tên miền DNS" msgid "Select existing record" msgstr "Chọn bản ghi hiện có" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "Chọn bản ghi A/AAAA phù hợp" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6765,8 +6785,25 @@ msgstr "Tự kiểm tra" #: src/components/SelfCheck/SelfCheckHeaderBanner.vue:37 #: src/components/SelfCheck/SelfCheckHeaderBanner.vue:60 msgid "Self check failed, Nginx UI may not work properly" -msgstr "" -"Tự kiểm tra thất bại, giao diện Nginx có thể không hoạt động bình thường" +msgstr "Tự kiểm tra thất bại, giao diện Nginx có thể không hoạt động bình thường" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "Chứng chỉ tự ký" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "Chứng chỉ tự ký" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "Đã áp dụng chứng chỉ tự ký" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "Đã tạo chứng chỉ tự ký" #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 @@ -6782,7 +6819,7 @@ msgid "Server" msgstr "Máy chủ" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "Lỗi máy chủ" @@ -6810,7 +6847,7 @@ msgstr "Kích thước bảng băm tên máy chủ" msgid "Server names hash table size" msgstr "Kích thước bảng băm tên máy chủ" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "không tìm thấy server_name trong directives" @@ -6839,8 +6876,8 @@ msgid "" "Set the recursive nameservers to override the systems nameservers for the " "step of DNS challenge." msgstr "" -"Đặt các máy chủ tên đệ quy để ghi đè các máy chủ tên hệ thống trong bước thử " -"thách DNS." +"Đặt các máy chủ tên đệ quy để ghi đè các máy chủ tên hệ thống trong bước " +"thử thách DNS." #: src/views/site/components/SiteStatusSelect.vue:116 msgid "set to maintenance mode" @@ -6860,19 +6897,19 @@ msgstr "Đang thiết lập nhà cung cấp thử thách HTTP01" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath trống, tham khảo https://nginxui.com/" -"guide/config-nginx.html để biết thêm thông tin" +"Settings.NginxLogSettings.AccessLogPath trống, tham khảo " +"https://nginxui.com/guide/config-nginx.html để biết thêm thông tin" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath trống, tham khảo https://nginxui.com/" -"guide/config-nginx.html để biết thêm thông tin" +"Settings.NginxLogSettings.ErrorLogPath trống, tham khảo " +"https://nginxui.com/guide/config-nginx.html để biết thêm thông tin" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6891,7 +6928,7 @@ msgstr "Hiển thị" msgid "Show Assistant" msgstr "Hiển thị trợ lý" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "Đăng nhập bằng khóa truy cập" @@ -6956,8 +6993,8 @@ msgid "" "Sites will appear here once you configure nginx server blocks with valid " "server_name (localhost excluded) directives." msgstr "" -"Các trang web sẽ xuất hiện ở đây sau khi bạn cấu hình các khối máy chủ nginx " -"với các chỉ thị server_name hợp lệ (không bao gồm localhost)." +"Các trang web sẽ xuất hiện ở đây sau khi bạn cấu hình các khối máy chủ " +"nginx với các chỉ thị server_name hợp lệ (không bao gồm localhost)." #: src/constants/errors/self_check.ts:11 msgid "Sites-available directory not exist" @@ -6977,10 +7014,6 @@ msgstr "Kích thước" msgid "Skip Installation" msgstr "Bỏ qua cài đặt" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "Thời gian chờ giữa các lần lặp của bộ nạp bộ đệm" @@ -6993,6 +7026,10 @@ msgstr "Thời gian chờ giữa các lần lặp của trình quản lý bộ n msgid "Socket" msgstr "Socket" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "Một số trình duyệt từ chối chứng chỉ TLS có hiệu lực hơn 398 ngày." + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "Sắp xếp theo" @@ -7009,15 +7046,6 @@ msgstr "Nhà tài trợ" msgid "SSD storage for better I/O performance" msgstr "Lưu trữ SSD để hiệu suất I/O tốt hơn" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "Khuyên dùng 2+ lõi" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -7103,9 +7131,9 @@ msgstr "Tĩnh" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7180,7 +7208,7 @@ msgstr "Thư mục streams-enabled không tồn tại" msgid "Structured" msgstr "Có cấu trúc" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Cổng trạng thái stub" @@ -7188,7 +7216,7 @@ msgstr "Cổng trạng thái stub" msgid "Stub_status is not enabled" msgstr "Stub_status chưa được bật" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7206,14 +7234,14 @@ msgstr "Chủ nhật" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" -"Hỗ trợ giao tiếp với backend thông qua giao thức WebSocket. Nếu Nginx UI của " -"bạn đang được sử dụng thông qua proxy ngược Nginx, vui lòng tham khảo liên " -"kết này để viết tệp cấu hình tương ứng: https://nginxui.com/guide/nginx-" -"proxy-example.html" +"Hỗ trợ giao tiếp với backend thông qua giao thức WebSocket. Nếu Nginx UI " +"của bạn đang được sử dụng thông qua proxy ngược Nginx, vui lòng tham khảo " +"liên kết này để viết tệp cấu hình tương ứng: " +"https://nginxui.com/guide/nginx-proxy-example.html" #: src/language/curd.ts:53 src/language/curd.ts:57 msgid "Support single or batch upload of files" @@ -7300,6 +7328,7 @@ msgid "Sync strategy" msgstr "Chiến lược đồng bộ hóa" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "Đồng bộ tới" @@ -7337,21 +7366,13 @@ msgstr "Khôi phục hệ thống" msgid "System restored successfully." msgstr "Hệ thống đã được khôi phục thành công." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "Mục tiêu" @@ -7416,29 +7437,39 @@ msgid "" "since it was last issued." msgstr "" "Chứng chỉ cho tên miền sẽ được kiểm tra sau mỗi 30 phút và sẽ được gia hạn " -"nếu đã hơn 1 tuần hoặc khoảng thời gian bạn đặt trong cài đặt kể từ lần phát " -"hành cuối cùng." +"nếu đã hơn 1 tuần hoặc khoảng thời gian bạn đặt trong cài đặt kể từ lần " +"phát hành cuối cùng." + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "" +"Chứng chỉ đã được tạo tại %{path} và các chỉ thị ssl_certificate đã được " +"thêm vào khối máy chủ hiện tại. Lưu cấu hình ngay bây giờ, hoặc xem lại các " +"thay đổi trong trình chỉnh sửa và lưu thủ công." #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "Các site sau sẽ bị vô hiệu hóa:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "Các trang web sau sẽ được kích hoạt:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "" "Cần có cơ sở dữ liệu GeoLite2 để phân tích địa lý IP ngoại tuyến. Vui lòng " "tải xuống để kích hoạt tính năng này." #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." msgstr "" "Cơ sở dữ liệu GeoLite2 cung cấp thông tin địa lý cho các địa chỉ IP. Điều " "này được sử dụng để phân tích địa lý ngoại tuyến trong phân tích nhật ký." @@ -7448,8 +7479,8 @@ msgid "" "The ICP Number should only contain letters, unicode, numbers, hyphens, " "dashes, colons, and dots." msgstr "" -"Số ICP chỉ được chứa chữ cái, unicode, số, dấu gạch ngang, dấu gạch dài, dấu " -"hai chấm và dấu chấm." +"Số ICP chỉ được chứa chữ cái, unicode, số, dấu gạch ngang, dấu gạch dài, " +"dấu hai chấm và dấu chấm." #: src/views/certificate/components/CertificateContentEditor.vue:205 msgid "The input is not a SSL Certificate" @@ -7469,10 +7500,11 @@ msgstr "" #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "" -"Đường dẫn nhật ký không nằm trong các đường dẫn trong settings.NginxSettings." -"LogDirWhiteList" +"Đường dẫn nhật ký không nằm trong các đường dẫn trong " +"settings.NginxSettings.LogDirWhiteList" #: src/views/preference/tabs/OpenAISettings.vue:153 #: src/views/preference/tabs/OpenAISettings.vue:87 @@ -7484,8 +7516,7 @@ msgstr "" "dài, dấu hai chấm và dấu chấm." #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "" "Mô hình được sử dụng để hoàn thành mã, nếu không được đặt, mô hình trò " "chuyện sẽ được sử dụng." @@ -7516,8 +7547,8 @@ msgid "" "The Public Security Number should only contain letters, unicode, numbers, " "hyphens, dashes, colons, and dots." msgstr "" -"Số Công an chỉ được chứa chữ cái, unicode, số, dấu gạch ngang, dấu gạch dài, " -"dấu hai chấm và dấu chấm." +"Số Công an chỉ được chứa chữ cái, unicode, số, dấu gạch ngang, dấu gạch " +"dài, dấu hai chấm và dấu chấm." #: src/views/dashboard/components/NodeAnalyticItem.vue:90 msgid "" @@ -7525,9 +7556,9 @@ msgid "" "version. To avoid potential errors, please upgrade the remote Nginx UI to " "match the local version." msgstr "" -"Phiên bản Nginx UI từ xa không tương thích với phiên bản Nginx UI cục bộ. Để " -"tránh các lỗi tiềm ẩn, vui lòng nâng cấp phiên bản Nginx UI từ xa để khớp " -"với phiên bản cục bộ." +"Phiên bản Nginx UI từ xa không tương thích với phiên bản Nginx UI cục bộ. " +"Để tránh các lỗi tiềm ẩn, vui lòng nâng cấp phiên bản Nginx UI từ xa để " +"khớp với phiên bản cục bộ." #: src/components/AutoCertForm/AutoCertForm.vue:155 msgid "" @@ -7559,7 +7590,7 @@ msgstr "Số kết nối đồng thời tối đa lý thuyết:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "RPS tối đa lý thuyết (Yêu cầu mỗi giây):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " @@ -7582,8 +7613,8 @@ msgid "" "This backup uses an unsupported legacy format. Please create a new backup " "with a newer version before restoring." msgstr "" -"Bản sao lưu này sử dụng định dạng cũ không được hỗ trợ. Vui lòng tạo bản sao " -"lưu mới với phiên bản mới hơn trước khi khôi phục." +"Bản sao lưu này sử dụng định dạng cũ không được hỗ trợ. Vui lòng tạo bản " +"sao lưu mới với phiên bản mới hơn trước khi khôi phục." #: src/views/certificate/components/AutoCertManagement.vue:35 msgid "This certificate is managed by Nginx UI" @@ -7612,14 +7643,13 @@ msgid "This field should not be empty" msgstr "Trường này không được để trống" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." msgstr "Trường này chỉ được chứa chữ cái, ký tự Unicode, số và -_." #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" msgstr "Trường này chỉ được chứa chữ cái, ký tự Unicode, số và -_./:" #: src/components/Notification/notifications.ts:102 @@ -7634,17 +7664,13 @@ msgstr "" "Chế độ này chỉ xem trước luồng giao diện người dùng cài đặt và không thay " "đổi trạng thái máy chủ nào." -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " "After enabling it, you can view performance statistics" msgstr "" -"Mô-đun này cung cấp dữ liệu như thống kê yêu cầu Nginx, số lượng kết nối, v." -"v. Sau khi bật, bạn có thể xem thống kê hiệu suất" +"Mô-đun này cung cấp dữ liệu như thống kê yêu cầu Nginx, số lượng kết nối, " +"v.v. Sau khi bật, bạn có thể xem thống kê hiệu suất" #: src/views/nginx_log/dashboard/components/DateRangeSelector.vue:25 msgid "This month" @@ -7659,14 +7685,20 @@ msgid "" "This operation will only remove the certificate from the database. The " "certificate files on the file system will not be deleted." msgstr "" -"Thao tác này sẽ chỉ xóa chứng chỉ khỏi cơ sở dữ liệu. Các tệp chứng chỉ trên " -"hệ thống tệp sẽ không bị xóa." +"Thao tác này sẽ chỉ xóa chứng chỉ khỏi cơ sở dữ liệu. Các tệp chứng chỉ " +"trên hệ thống tệp sẽ không bị xóa." + +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "Chứng chỉ tự ký này được Nginx UI quản lý và tự động gia hạn." #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" "Trang web này được cấu hình làm máy chủ mặc định (default_server) cho HTTPS " "(cổng 443). Chứng chỉ IP yêu cầu hỗ trợ từ Tổ chức cấp chứng chỉ (CA) và có " @@ -7674,13 +7706,13 @@ msgstr "" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." msgstr "" "Trang web này sử dụng tên máy chủ đại diện (_) thường chỉ ra chứng chỉ dựa " -"trên IP. Chứng chỉ IP yêu cầu hỗ trợ từ Tổ chức cấp chứng chỉ (CA) và có thể " -"không khả dụng với tất cả nhà cung cấp ACME." +"trên IP. Chứng chỉ IP yêu cầu hỗ trợ từ Tổ chức cấp chứng chỉ (CA) và có " +"thể không khả dụng với tất cả nhà cung cấp ACME." #: src/views/backup/components/BackupCreator.vue:141 msgid "" @@ -7704,8 +7736,8 @@ msgid "" "deleted and rebuilt from scratch. This may take some time. Continue?" msgstr "" "Điều này sẽ xây dựng lại toàn bộ chỉ mục nhật ký. Tất cả dữ liệu chỉ mục " -"hiện có sẽ bị xóa và xây dựng lại từ đầu. Việc này có thể mất một thời gian. " -"Tiếp tục?" +"hiện có sẽ bị xóa và xây dựng lại từ đầu. Việc này có thể mất một thời " +"gian. Tiếp tục?" #: src/views/nginx_log/indexing/IndexManagement.vue:56 msgid "This will rebuild the index data for this specific file: %{path}" @@ -7726,12 +7758,11 @@ msgid "" "This will restore configuration files and database. Nginx UI will restart " "after the restoration is complete." msgstr "" -"Thao tác này sẽ khôi phục các tệp cấu hình và cơ sở dữ liệu. Giao diện Nginx " -"sẽ khởi động lại sau khi quá trình khôi phục hoàn tất." +"Thao tác này sẽ khôi phục các tệp cấu hình và cơ sở dữ liệu. Giao diện " +"Nginx sẽ khởi động lại sau khi quá trình khôi phục hoàn tất." #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "" "Thao tác này sẽ nâng cấp hoặc cài đặt lại Nginx UI trên %{nodeNames} lên " "phiên bản %{version}." @@ -7798,20 +7829,20 @@ msgid "" "and restart Nginx UI." msgstr "" "Để đảm bảo bảo mật, cấu hình WebAuthn không thể được thêm qua giao diện " -"người dùng. Vui lòng cấu hình thủ công các mục sau trong tệp cấu hình app." -"ini và khởi động lại Nginx UI." +"người dùng. Vui lòng cấu hình thủ công các mục sau trong tệp cấu hình " +"app.ini và khởi động lại Nginx UI." #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" -"Để đảm bảo tính năng tự động gia hạn chứng chỉ có thể hoạt động bình thường, " -"chúng tôi cần thêm một vị trí có thể ủy quyền yêu cầu từ cơ quan có thẩm " -"quyền đến chương trình phụ trợ và chúng tôi cần lưu tệp này và tải lại " +"Để đảm bảo tính năng tự động gia hạn chứng chỉ có thể hoạt động bình " +"thường, chúng tôi cần thêm một vị trí có thể ủy quyền yêu cầu từ cơ quan có " +"thẩm quyền đến chương trình phụ trợ và chúng tôi cần lưu tệp này và tải lại " "Nginx. Bạn có chắc chắn muốn Tiếp tục?" #: src/views/preference/tabs/OpenAISettings.vue:44 @@ -7931,8 +7962,7 @@ msgstr "Thùng rác" #: src/views/nginx_log/structured/StructuredLogViewer.vue:829 msgid "Try adjusting your search criteria or navigate to different pages." -msgstr "" -"Hãy thử điều chỉnh tiêu chí tìm kiếm hoặc điều hướng đến các trang khác." +msgstr "Hãy thử điều chỉnh tiêu chí tìm kiếm hoặc điều hướng đến các trang khác." #: src/views/nginx_log/structured/StructuredLogViewer.vue:839 msgid "Try adjusting your search criteria or time range." @@ -7953,7 +7983,7 @@ msgstr "TTL (giây)" msgid "Tuesday" msgstr "Thứ Ba" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "Yêu cầu xác thực hai yếu tố" @@ -7974,10 +8004,6 @@ msgstr "Loại" msgid "Type %{delete} to confirm" msgstr "Nhập %{delete} để xác nhận" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "Nhập hoặc chọn bản ghi A/AAAA" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "Nhập hoặc chọn trình duyệt" @@ -8023,11 +8049,11 @@ msgstr "Định dạng nhật ký không được hỗ trợ" msgid "Update already in progress" msgstr "Cập nhật đang được thực hiện" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "Cập nhật mật khẩu" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "Cập nhật hồ sơ" @@ -8116,11 +8142,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "Sử dụng @ cho gốc" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "Sử dụng OTP" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "Sử dụng mã khôi phục" @@ -8128,10 +8154,6 @@ msgstr "Sử dụng mã khôi phục" msgid "Use Temporary Path" msgstr "Sử dụng đường dẫn tạm thời" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "Người dùng" @@ -8145,7 +8167,7 @@ msgstr "Trình duyệt người dùng" msgid "User banned" msgstr "Người dùng bị cấm" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "Cập nhật thông tin người dùng thành công" @@ -8158,7 +8180,7 @@ msgid "User Profile" msgstr "Hồ sơ người dùng" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "Username" @@ -8176,10 +8198,14 @@ msgstr "Lượt truy cập duy nhất" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "Hợp lệ" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "Hiệu lực (ngày)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "Xác thực chứng chỉ SSL" @@ -8190,11 +8216,6 @@ msgstr "Xác thực chứng chỉ SSL" msgid "Value" msgstr "Giá trị" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "Xác minh bí mật" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8231,7 +8252,7 @@ msgstr "Xem tất cả thông báo" msgid "View on GitHub" msgstr "Xem trên GitHub" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "Xem mã phục hồi" @@ -8259,7 +8280,7 @@ msgstr "Lượt truy cập" msgid "Waiting processes" msgstr "Quá trình chờ đợi" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8273,9 +8294,9 @@ msgid "" "you have a valid backup file and security token, and carefully select what " "to restore." msgstr "" -"Cảnh báo: Thao tác khôi phục sẽ ghi đè lên cấu hình hiện tại. Đảm bảo bạn có " -"tệp sao lưu hợp lệ và mã bảo mật, đồng thời cẩn thận chọn nội dung cần khôi " -"phục." +"Cảnh báo: Thao tác khôi phục sẽ ghi đè lên cấu hình hiện tại. Đảm bảo bạn " +"có tệp sao lưu hợp lệ và mã bảo mật, đồng thời cẩn thận chọn nội dung cần " +"khôi phục." #: src/components/AutoCertForm/AutoCertForm.vue:103 msgid "" @@ -8284,17 +8305,17 @@ msgid "" "or consider using a private CA." msgstr "" "Cảnh báo: Đây có vẻ là một địa chỉ IP riêng. Các tổ chức cấp chứng chỉ công " -"cộng như Let's Encrypt không thể cấp chứng chỉ cho các IP riêng. Hãy sử dụng " -"địa chỉ IP công cộng hoặc cân nhắc sử dụng tổ chức cấp chứng chỉ riêng." +"cộng như Let's Encrypt không thể cấp chứng chỉ cho các IP riêng. Hãy sử " +"dụng địa chỉ IP công cộng hoặc cân nhắc sử dụng tổ chức cấp chứng chỉ riêng." #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "Chúng tôi không chấp nhận bất kỳ yêu cầu tính năng nào" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" msgstr "" "Chúng tôi sẽ xóa cấu hình HTTPChallenge khỏi tệp này và tải lại Nginx. Bạn " "có muốn tiếp tục không?" @@ -8332,6 +8353,18 @@ msgstr "Hàng tuần vào %{day} lúc %{time}" msgid "Weight" msgstr "Trọng lượng" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"Khi được bật, DDNS sở hữu các tên đã chọn: nó tự động ghép cặp các bản ghi " +"cùng họ, tạo các bản ghi bị thiếu và xóa các bản ghi có họ IP không thể " +"truy cập. Tắt để chỉ quản lý các bản ghi bạn đã chọn rõ ràng và giữ nguyên " +"toàn bộ trạng thái DNS khác." + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " @@ -8351,7 +8384,7 @@ msgstr "" "Khi bạn bật/tắt, xóa hoặc lưu trang web này, các nút được đặt trong không " "gian tên và các nút được chọn bên dưới sẽ được đồng bộ hóa." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8361,7 +8394,7 @@ msgstr "Khi bạn tạo mã khôi phục mới, bạn phải tải xuống hoặ msgid "Whether to use a temporary path when writing temporary files" msgstr "Có sử dụng đường dẫn tạm thời khi ghi các tập tin tạm thời hay không" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "Chứng Chỉ Wildcard" @@ -8380,7 +8413,7 @@ msgstr "Tiến trình công nhân" msgid "Workers" msgstr "Công nhân" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "Không gian làm việc" @@ -8419,12 +8452,12 @@ msgstr "Có" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." msgstr "" -"Bạn đang truy cập thiết bị đầu cuối này thông qua kết nối HTTP không an toàn " -"trên một miền không phải localhost. Điều này có thể làm lộ thông tin nhạy " -"cảm." +"Bạn đang truy cập thiết bị đầu cuối này thông qua kết nối HTTP không an " +"toàn trên một miền không phải localhost. Điều này có thể làm lộ thông tin " +"nhạy cảm." #: src/constants/errors/config.ts:12 msgid "You are not allowed to delete a file outside of the nginx config path" @@ -8450,30 +8483,54 @@ msgstr "Bạn có thể đóng hộp thoại này ngay bây giờ" msgid "" "You have not configured the settings of Webauthn, so you cannot add a " "passkey." -msgstr "" -"Bạn chưa cấu hình cài đặt WebAuthn, vì vậy không thể thêm khóa truy cập." +msgstr "Bạn chưa cấu hình cài đặt WebAuthn, vì vậy không thể thêm khóa truy cập." #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "" -"Bạn chưa bật xác thực hai yếu tố. Vui lòng bật xác thực hai yếu tố để tạo mã " -"khôi phục." +"Bạn chưa bật xác thực hai yếu tố. Vui lòng bật xác thực hai yếu tố để tạo " +"mã khôi phục." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "Bạn chưa tạo mã khôi phục." +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "" +"Tài khoản của bạn vẫn đang sử dụng mã khôi phục cũ. Hãy tạo mã khôi phục " +"mới sau khi xác minh để giữ an toàn cho việc khôi phục tài khoản." + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "" +"Tài khoản của bạn đang sử dụng mã khôi phục cũ không còn được hỗ trợ. Hãy " +"tạo mã khôi phục mới ngay bây giờ để hoàn tất quá trình chuyển đổi và giữ " +"an toàn cho việc khôi phục tài khoản." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "" "Mã khôi phục hiện tại của bạn có thể đã lỗi thời và không an toàn. Vui lòng " "tạo mã khôi phục mới càng sớm càng tốt để đảm bảo an toàn." -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "" +"Mã khôi phục cũ của bạn đã được sử dụng và không thể dùng lại. Hãy tạo mã " +"khôi phục mới ngay bây giờ để giữ cho tính năng khôi phục tài khoản luôn " +"sẵn sàng." + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "Mã cũ của bạn sẽ không còn hoạt động nữa." @@ -8485,13 +8542,66 @@ msgstr "Khóa truy cập của bạn" msgid "Zero-allocation pipeline" msgstr "Đường ống không cấp phát" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx không thể xác thực cấu hình." + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "Đang xác thực..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Đã kết nối" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "Nội dung" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "Sao chép" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "Container Docker bên ngoài" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "Tạo" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "Ghi đè tập tin đã tồn tại" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "Tạo lại câu trả lời" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "Không có nút nào được chọn" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "Gia hạn chứng chỉ" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "Khuyên dùng 2+ lõi" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "Nhập hoặc chọn bản ghi A/AAAA" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "Xác minh bí mật" + #~ msgid "OpenAI" #~ msgstr "OpenAI" #~ msgid "Backup file integrity check failed, it may have been tampered with" -#~ msgstr "" -#~ "Kiểm tra tính toàn vẹn của tập tin sao lưu thất bại, có thể đã bị can " -#~ "thiệp" +#~ msgstr "Kiểm tra tính toàn vẹn của tập tin sao lưu thất bại, có thể đã bị can thiệp" #~ msgid "Once the verification is complete, the records will be removed." #~ msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa." @@ -8585,8 +8695,7 @@ msgstr "Đường ống không cấp phát" #~ msgstr "Hiệu suất ổn định trên phần cứng hiện đại" #~ msgid "Backup path not in granted access paths: {0}" -#~ msgstr "" -#~ "Đường dẫn sao lưu không nằm trong các đường dẫn truy cập được cấp: {0}" +#~ msgstr "Đường dẫn sao lưu không nằm trong các đường dẫn truy cập được cấp: {0}" #~ msgid "Build with" #~ msgstr "Xây dựng với" @@ -8622,8 +8731,7 @@ msgstr "Đường ống không cấp phát" #~ msgstr "Điểm cuối S3 không hợp lệ: {0}" #~ msgid "Storage path not in granted access paths: {0}" -#~ msgstr "" -#~ "Đường dẫn lưu trữ không nằm trong các đường dẫn truy cập được cấp: {0}" +#~ msgstr "Đường dẫn lưu trữ không nằm trong các đường dẫn truy cập được cấp: {0}" #~ msgid "files" #~ msgstr "tệp" @@ -8670,14 +8778,14 @@ msgstr "Đường ống không cấp phát" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" #~ "Hỗ trợ giao tiếp với backend thông qua giao thức Server-Sent Events. Nếu " #~ "Nginx UI của bạn đang được sử dụng qua proxy ngược Nginx, vui lòng tham " -#~ "khảo liên kết này để viết tệp cấu hình tương ứng: https://nginxui.com/" -#~ "guide/nginx-proxy-example.html" +#~ "khảo liên kết này để viết tệp cấu hình tương ứng: " +#~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "Nếu để trống, thư mục CA mặc định sẽ được sử dụng." @@ -8747,8 +8855,8 @@ msgstr "Đường ống không cấp phát" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" #~ "Kiểm tra xem /var/run/docker.sock có tồn tại không. Nếu bạn đang sử dụng " #~ "Docker Image chính thức của Nginx UI, hãy đảm bảo rằng ổ cắm Docker được " @@ -8822,14 +8930,11 @@ msgstr "Đường ống không cấp phát" #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" #, fuzzy -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" #, fuzzy -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" #, fuzzy @@ -8843,8 +8948,7 @@ msgstr "Đường ống không cấp phát" #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" #, fuzzy -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" #, fuzzy @@ -8901,15 +9005,15 @@ msgstr "Đường ống không cấp phát" #~ msgstr "Chỉ quản lý bản ghi DNS" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." #~ msgstr "" #~ "Miền DNS được dùng để quản lý bản ghi DNS trong NGINX UI và tách biệt với " #~ "thử thách chứng chỉ ACME DNS-01." #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "" #~ "Hiện tại, quản lý bản ghi DNS chỉ hỗ trợ Alibaba Cloud DNS, Tencent Cloud " #~ "DNS và Cloudflare." @@ -8921,6 +9025,5 @@ msgstr "Đường ống không cấp phát" #~ "Để cấp chứng chỉ ACME DNS-01, hãy tạo thông tin xác thực DNS trong DNS > " #~ "Thông tin xác thực và chọn chúng trong cài đặt chứng chỉ." -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains chỉ sử dụng các nhà cung cấp có triển khai quản lý bản ghi DNS." +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "DNS Domains chỉ sử dụng các nhà cung cấp có triển khai quản lý bản ghi DNS." diff --git a/app/src/language/zh_CN/app.po b/app/src/language/zh_CN/app.po index 9397c329..7a93dbfa 100644 --- a/app/src/language/zh_CN/app.po +++ b/app/src/language/zh_CN/app.po @@ -5,11 +5,11 @@ msgstr "" "POT-Creation-Date: \n" "PO-Revision-Date: 2025-05-09 21:33+0800\n" "Last-Translator: 0xJacky \n" -"Language-Team: Chinese (Simplified Han script) \n" +"Language-Team: Chinese (Simplified Han script) " +"\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.6\n" @@ -32,8 +32,7 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] 证书成功撤销" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "[Nginx UI] 证书已用于服务器,正在重新加载服务器 TLS 证书" #: src/language/generate.ts:42 @@ -111,21 +110,15 @@ msgstr "* 包含来自组 %{groupName} 的节点和手动选择的节点" #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "* 索引文件默认存储在您的 Nginx UI 配置路径下的 \"log-index\" 目录中。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:215 msgid "" "* Performance metrics measured on Apple M2 Pro (12-core) with 32GB RAM. " "Actual performance may vary based on your hardware configuration." -msgstr "" -"* 性能指标基于 Apple M2 Pro (12 核)和 32GB 内存测得。实际性能可能因您的硬件" -"配置而异。" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" +msgstr "* 性能指标基于 Apple M2 Pro (12 核)和 32GB 内存测得。实际性能可能因您的硬件配置而异。" #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" @@ -174,7 +167,7 @@ msgstr "24 小时 UV/PV 统计" msgid "2FA" msgstr "2FA" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "2FA 设置" @@ -182,11 +175,22 @@ msgstr "2FA 设置" msgid "4GB+ RAM recommended" msgstr "推荐 4GB 以上内存" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "在仅 IPv6 模式下,不会管理同名 A 记录。它们在 DNS 中保持不变。" + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "沙盒或源配置中缺少必需的包含文件。" +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "在仅 IPv4 模式下,同名的 AAAA 记录不会被管理。它们在 DNS 中保持不变。" + #: src/routes/modules/system.ts:38 msgid "About" msgstr "关于" @@ -204,10 +208,6 @@ msgstr "访问日志路径不存在" msgid "Access Logs" msgstr "访问日志" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -219,10 +219,10 @@ msgstr "操作" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -264,7 +264,8 @@ msgstr "添加配置" msgid "Add Directive Below" msgstr "在下面添加指令" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "添加域名" @@ -272,6 +273,14 @@ msgstr "添加域名" msgid "Add Header" msgstr "添加标头" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "添加 IP 地址" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "添加项目" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -342,11 +351,6 @@ msgstr "之后,请刷新此页面并再次点击添加通行密钥。" msgid "All" msgstr "全部" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx 未能验证配置。" - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "所有组件" @@ -356,7 +360,7 @@ msgstr "所有组件" msgid "All Recovery Codes Have Been Used" msgstr "所有恢复代码已用完" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -366,9 +370,7 @@ msgstr "所有选定的子域名必须属于同一 DNS 提供商,否则证书 msgid "" "Alternatively, if you cannot download the database, you can manually place " "GeoLite2-City.mmdb in the same directory as app.ini." -msgstr "" -"或者,如果您无法下载数据库,可以手动将 GeoLite2-City.mmdb 文件放置在与 app." -"ini 相同的目录中。" +msgstr "或者,如果您无法下载数据库,可以手动将 GeoLite2-City.mmdb 文件放置在与 app.ini 相同的目录中。" #: src/constants/errors/nginx_log.ts:10 msgid "Analytics service not available" @@ -379,8 +381,7 @@ msgid "Any" msgstr "任意" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "任何可访问的 IP 地址均可用于私有证书颁发机构" #: src/views/preference/tabs/OpenAISettings.vue:96 @@ -407,10 +408,6 @@ msgstr "API 类型" msgid "App" msgstr "应用" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "应用" @@ -423,7 +420,7 @@ msgstr "架构" msgid "Are you sure to delete this banned IP immediately?" msgstr "您确定要立即删除这个被禁用的 IP 吗?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "确定要删除这个 DDNS 配置吗?" @@ -435,7 +432,7 @@ msgstr "您确定要立即删除这个 Passkey 吗?" msgid "Are you sure to delete this record?" msgstr "确定要删除这条记录吗?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "您确定要生成新的恢复代码吗?" @@ -501,7 +498,7 @@ msgstr "至少 20GB 可用磁盘空间" msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." -msgstr "" +msgstr "Atlas Cloud 兼容 OpenAI。使用 https://api.atlascloud.ai/v1 和 Atlas Cloud API 密钥。" #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -511,12 +508,11 @@ msgstr "尝试修复" msgid "Attempts" msgstr "尝试次数" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "认证" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "通过 Passkey 认证" @@ -524,11 +520,6 @@ msgstr "通过 Passkey 认证" msgid "Authenticating..." msgstr "正在验证..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "正在验证..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -576,15 +567,15 @@ msgstr "自动刷新已禁用" msgid "Auto refresh enabled" msgstr "自动刷新已启用" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "成功关闭 %{name} 自动续签" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "成功启用 %{name} 自动续签" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert 正在运行,请稍候..." @@ -699,8 +690,7 @@ msgid "Backup task %{backup_name} completed successfully, file: %{file_path}" msgstr "备份任务 %{backup_name} 已完成,文件:%{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "备份任务 %{backup_name} 在存储上传过程中失败,错误:%{error}" #: src/components/Notification/notifications.ts:30 @@ -762,12 +752,6 @@ msgstr "批量升级" msgid "Belows are selected items that you want to batch modify" msgstr "以下是您选定的需要批量修改的项目" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "区块为空" @@ -792,9 +776,7 @@ msgid "" "By enabling advanced indexing, you acknowledge that your system meets the " "requirements and understand the performance implications. This will start " "indexing existing log files immediately." -msgstr "" -"启用高级索引即表示您确认系统满足要求并了解性能影响。这将立即开始对现有日志文" -"件进行索引。" +msgstr "启用高级索引即表示您确认系统满足要求并了解性能影响。这将立即开始对现有日志文件进行索引。" #: src/views/certificate/ACMEUser.vue:39 msgid "CA Dir" @@ -847,23 +829,21 @@ msgstr "CADir" msgid "" "Calculated based on worker_processes * worker_connections. Actual " "performance depends on hardware, configuration, and workload" -msgstr "" -"基于 worker_processes * worker_connections 计算得出。实际性能取决于硬件、配置" -"和工作负载" +msgstr "基于 worker_processes * worker_connections 计算得出。实际性能取决于硬件、配置和工作负载" #: src/components/LLM/ChatMessage.vue:245 #: src/components/NgxConfigEditor/NgxServer.vue:61 #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -953,6 +933,10 @@ msgstr "证书内容和私钥内容不能为空" msgid "Certificate decode error" msgstr "证书解码错误" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "证书指令已添加到编辑器中;准备就绪后请检查并保存。" + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "证书到期通知" @@ -971,6 +955,14 @@ msgstr "证书即将过期" msgid "Certificate files downloaded successfully" msgstr "证书文件下载成功" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "证书签发组件未就绪" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "证书签发成功" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "证书名称不能为空" @@ -1005,17 +997,18 @@ msgid "Certificate revoked successfully" msgstr "证书撤销成功" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "证书状态" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "证书类型" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "证书" @@ -1036,11 +1029,11 @@ msgstr "挑战方法" msgid "Change Certificate" msgstr "更改证书" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "更改密码" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "变更证书" @@ -1079,34 +1072,30 @@ msgstr "检查网站图标" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" -"检查 /var/run/docker.sock 是否存在。如果您使用的是 Nginx UI 官方 Docker 镜" -"像,请确保以这种方式挂载 Docker 套接字:`-v /var/run/docker.sock:/var/run/" -"docker.sock`。Nginx UI 官方镜像使用 /var/run/docker.sock 通过 Docker Client " -"API 与主机 Docker Engine 通信。此功能用于在另一个容器中控制 Nginx,并在 " -"Nginx UI 的 OTA 升级期间执行容器替换而非二进制替换,以确保容器依赖项也得到升" -"级。如果您不需要此功能,请向容器添加环境变量 " +"检查 /var/run/docker.sock 是否存在。如果您使用的是 Nginx UI 官方 Docker 镜像,请确保以这种方式挂载 " +"Docker 套接字:`-v /var/run/docker.sock:/var/run/docker.sock`。Nginx UI 官方镜像使用 " +"/var/run/docker.sock 通过 Docker Client API 与主机 Docker Engine " +"通信。此功能用于在另一个容器中控制 Nginx,并在 Nginx UI 的 OTA " +"升级期间执行容器替换而非二进制替换,以确保容器依赖项也得到升级。如果您不需要此功能,请向容器添加环境变量 " "NGINX_UI_IGNORE_DOCKER_SOCKET=true。" #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 msgid "" "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and " "prevents using Passkeys and clipboard features" -msgstr "" -"检查是否启用了 HTTPS。在本地主机之外使用 HTTP 是不安全的,这也会导致无法使用 " -"Passkey 和剪贴板功能" +msgstr "检查是否启用了 HTTPS。在本地主机之外使用 HTTP 是不安全的,这也会导致无法使用 Passkey 和剪贴板功能" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "检查 conf.d 目录是否位于 nginx 配置目录下" #: src/language/generate.ts:7 @@ -1116,23 +1105,21 @@ msgid "" "indexing. You can download it from the Preference page or manually place " "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" -"当启用日志索引时,检查 GeoLite2 数据库是否可用。GeoLite2 数据库是日志索引中地" -"理 IP 分析所必需的。您可以在偏好设置页面下载它,或者手动将 GeoLite2-City." -"mmdb 放在与 app.ini 相同的目录中" +"当启用日志索引时,检查 GeoLite2 数据库是否可用。GeoLite2 数据库是日志索引中地理 IP " +"分析所必需的。您可以在偏好设置页面下载它,或者手动将 GeoLite2-City.mmdb 放在与 app.ini 相同的目录中" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" -"检查 nginx 访问日志路径是否存在。默认情况下,此路径从 'nginx -V' 获取。如果无" -"法获取或获取的路径未指向有效的现有文件,将报告错误。在这种情况下,您需要修改" -"配置文件以指定访问日志路径。更多详情请参阅文档:https://nginxui.com/zh_CN/" -"guide/config-nginx.html#accesslogpath" +"检查 nginx 访问日志路径是否存在。默认情况下,此路径从 'nginx -V' " +"获取。如果无法获取或获取的路径未指向有效的现有文件,将报告错误。在这种情况下,您需要修改配置文件以指定访问日志路径。更多详情请参阅文档:https://" +"nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1148,25 +1135,24 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" -"检查 nginx 错误日志路径是否存在。默认情况下,该路径从 'nginx -V' 获取。如果无" -"法获取或获取的路径未指向有效的现有文件,将报错。此时需要修改配置文件以指定错" -"误日志路径。详情请参阅文档:https://nginxui.com/zh_CN/guide/config-nginx." -"html#errorlogpath" +"检查 nginx 错误日志路径是否存在。默认情况下,该路径从 'nginx -V' " +"获取。如果无法获取或获取的路径未指向有效的现有文件,将报错。此时需要修改配置文件以指定错误日志路径。详情请参阅文档:https://nginxui." +"com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" -"检查 Nginx PID 路径是否存在。默认情况下,该路径是从 'nginx -V' 获取的。如果无" -"法获取,将会报错。在这种情况下,您需要修改配置文件以指定 Nginx PID 路径。更多" -"详情请参阅文档:https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" +"检查 Nginx PID 路径是否存在。默认情况下,该路径是从 'nginx -V' " +"获取的。如果无法获取,将会报错。在这种情况下,您需要修改配置文件以指定 Nginx PID " +"路径。更多详情请参阅文档:https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1192,8 +1178,8 @@ msgstr "检查 sites-available 和 sites-enabled 目录是否位于 Nginx 配置 #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" msgstr "检查 Nginx 配置目录下是否有 streams-available 和 streams-enabled 目录" #: src/views/dashboard/components/SiteHealthCheckModal.vue:625 @@ -1213,6 +1199,10 @@ msgstr "中国地图" msgid "Cipher text is too short" msgstr "密码文本太短" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "清理冲突记录" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "正在清理环境变量" @@ -1422,11 +1412,11 @@ msgstr "配置名称" msgid "Configurations" msgstr "配置" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "配置" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "配置 DDNS" @@ -1438,7 +1428,7 @@ msgstr "配置 SSL" msgid "Confirm Delete" msgstr "确认删除" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "确认新密码" @@ -1451,11 +1441,6 @@ msgstr "需要确认" msgid "Connected" msgstr "已连接" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "已连接" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "连接错误,正在尝试重新连接..." @@ -1468,15 +1453,6 @@ msgstr "此终端连接已断开。请根据需要刷新。" msgid "Connection timeout period" msgstr "连接超时期限" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "内容" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "容器状态未知" @@ -1489,8 +1465,7 @@ msgstr "内容" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "已拷贝" @@ -1501,19 +1476,13 @@ msgstr "已拷贝!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "拷贝" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "复制代码" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "拷贝" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "核心升级" @@ -1592,8 +1561,7 @@ msgstr "创建记录" msgid "" "Create system backups including Nginx configuration and Nginx UI settings. " "Backup files will be automatically downloaded to your computer." -msgstr "" -"创建系统备份,包括 Nginx 配置和 Nginx UI 设置。备份文件将自动下载到你的电脑。" +msgstr "创建系统备份,包括 Nginx 配置和 Nginx UI 设置。备份文件将自动下载到你的电脑。" #: src/views/backup/AutoBackup/AutoBackup.vue:229 #: src/views/namespace/columns.ts:85 @@ -1613,7 +1581,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "正在创建客户端用于与 CA 服务器通信" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "DNS 凭证" @@ -1645,7 +1613,7 @@ msgstr "当前活动连接" msgid "Current Content" msgstr "当前内容" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "当前密码" @@ -1671,11 +1639,11 @@ msgstr "自定义 cron 表达式" msgid "Custom Directory" msgstr "自定义目录" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "自定义域名" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "自定义域名证书" @@ -1736,15 +1704,15 @@ msgstr "数据库文件未找到" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "DDNS 配置已删除" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "DDNS 概览" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS 已保存" @@ -1773,7 +1741,7 @@ msgstr "定义共享内存区名称和大小,例如 proxy_cache:10m" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "删除" @@ -1858,8 +1826,8 @@ msgstr "Demo" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "演示模式已启用。此终端仅允许执行少量安全的只读命令。" #: src/views/config/components/ConfigRightPanel/Basic.vue:60 @@ -1971,7 +1939,7 @@ msgstr "禁用" msgid "Disable" msgstr "禁用" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "禁用 %{name} 的自动续期失败" @@ -2026,7 +1994,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "在 %{node} 上禁用 %{name} 成功" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2145,19 +2113,17 @@ msgstr "您想将这个网站%{action}吗?" msgid "Do you want to %{action} this stream?" msgstr "您要%{action}此流吗?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "你想禁用自动更新证书吗?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "你想停用这个网站吗?" +msgstr "您要禁用选中的站点吗?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "你想启用这个 Stream 吗?" +msgstr "您要启用所选站点吗?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2176,10 +2142,6 @@ msgstr "你想删除这个 Upstream 吗?" msgid "Docker client not initialized" msgstr "Docker 客户端未初始化" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Docker Socket 存在" @@ -2188,10 +2150,6 @@ msgstr "Docker Socket 存在" msgid "Docker socket not exist" msgstr "不存在 Docker Socket" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2202,11 +2160,15 @@ msgstr[0] "文档" msgid "Document Count" msgstr "文档数量" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "域名" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "域名" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "域名列表为空,请尝试为 %{config} 重新打开证书自动续期" @@ -2252,9 +2214,7 @@ msgstr "试运行模式已启动" msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." -msgstr "" -"由于某些浏览器的安全策略,除非在 localhost 上使用,否则不能在非 HTTPS 网站上" -"使用 Passkey。" +msgstr "由于某些浏览器的安全策略,除非在 localhost 上使用,否则不能在非 HTTPS 网站上使用 Passkey。" #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2352,7 +2312,7 @@ msgstr "启用高级索引" msgid "Enable Advanced Log Indexing" msgstr "启用高级日志索引" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "启用 %{name} 自动续签失败" @@ -2364,7 +2324,7 @@ msgstr "启动代码补全" msgid "Enable compression for content transfer" msgstr "启用内容传输压缩" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "启用 DDNS" @@ -2461,7 +2421,7 @@ msgid "Enable TOTP" msgstr "启用 TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2496,9 +2456,7 @@ msgid "" "Enabling advanced log indexing will consume significant computational " "resources including CPU and memory. Please ensure your system meets the " "minimum requirements before proceeding." -msgstr "" -"启用高级日志索引将消耗大量计算资源,包括 CPU 和内存。请确保您的系统满足最低要" -"求后再继续。" +msgstr "启用高级日志索引将消耗大量计算资源,包括 CPU 和内存。请确保您的系统满足最低要求后再继续。" #: src/views/site/site_edit/components/Cert/IssueCert.vue:95 msgid "Encrypt website with Let's Encrypt" @@ -2512,10 +2470,19 @@ msgstr "结束" msgid "End Date" msgstr "结束日期" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "输入证书名称" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "输入域名" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "输入 IP 地址" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "输入服务器 IP 地址(例如:203.0.113.1 或 2001:db8::1)" @@ -2530,7 +2497,7 @@ msgid "" "the config directory hidden file to unlock setup." msgstr "输入安装脚本显示或在配置目录隐藏文件中找到的一次性安装密钥以解锁设置。" -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "输入您的域名" @@ -2542,7 +2509,7 @@ msgstr "环境配置为空" msgid "Environment variables cleaned" msgstr "环境变量已清理" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2575,8 +2542,8 @@ msgstr "错误日志" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "错误日志不支持结构化分析,因为它们包含自由格式的文本消息。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:272 @@ -2624,7 +2591,7 @@ msgid "Expected Text" msgstr "预期文本" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "已过期" @@ -2644,17 +2611,11 @@ msgstr "外部账户绑定 HMAC 密钥(可选)。应为 Base64 URL 编码格 #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." -msgstr "" -"外部账户绑定密钥 ID (可选)。某些 ACME 提供商(如 ZeroSSL)需要此信息。" +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." +msgstr "外部账户绑定密钥 ID (可选)。某些 ACME 提供商(如 ZeroSSL)需要此信息。" -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "外部 Docker 容器" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "外部 Docker 容器" @@ -2677,6 +2638,7 @@ msgstr "获取证书失败" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "失败" @@ -2916,6 +2878,11 @@ msgstr "生成 AES 密钥失败: {0}" msgid "Failed to generate initialization vector: {0}" msgstr "生成初始化向量失败:{0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "生成自签名证书失败" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "获取证书信息失败" @@ -3245,22 +3212,19 @@ msgid "For commercial or professional use, contact" msgstr "如需商业或专业用途,请联系" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "对于错误日志,请使用原始日志查看器以获得更好的查看体验。" #: src/components/AutoCertForm/AutoCertForm.vue:140 msgid "" "For IP-based certificate configurations, only HTTP-01 challenge method is " "supported. DNS-01 challenge is not compatible with IP-based certificates." -msgstr "" -"对于基于 IP 的证书配置,仅支持 HTTP-01 验证方法。DNS-01 验证与基于 IP 的证书" -"不兼容。" +msgstr "对于基于 IP 的证书配置,仅支持 HTTP-01 验证方法。DNS-01 验证与基于 IP 的证书不兼容。" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "对于基于 IP 的证书,请指定将包含在证书中的服务器 IP 地址。" #: src/constants/errors/middleware.ts:4 @@ -3305,12 +3269,14 @@ msgstr "前端调试模式已激活。密钥验证在本地模拟,不会发送 #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "前端调试模式:安装流程完成,未发送后端请求" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "前端调试模式:恢复流程已完成,无需发送后端请求" #: src/views/nginx_log/structured/components/SearchFilters.vue:65 @@ -3325,21 +3291,24 @@ msgstr "全文搜索支持" msgid "General Certificate" msgstr "普通证书" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "生成" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "生成" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "生成新的恢复代码" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "生成新的恢复代码" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "生成恢复代码" @@ -3347,6 +3316,14 @@ msgstr "生成恢复代码" msgid "Generate recovery codes successfully" msgstr "成功生成恢复代码" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "生成自签名证书" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "生成自签名证书" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "正在生成私钥用于注册账户" @@ -3376,8 +3353,7 @@ msgstr "在 {0} 未找到 GeoLite2 数据库" msgid "" "GeoLite2 database not found at {0}. Log indexing requires GeoLite2 database " "for geographic IP analysis" -msgstr "" -"未在 {0} 找到 GeoLite2 数据库。日志索引需要 GeoLite2 数据库进行地理 IP 分析" +msgstr "未在 {0} 找到 GeoLite2 数据库。日志索引需要 GeoLite2 数据库进行地理 IP 分析" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:150 msgid "GeoLite2 Database Required" @@ -3424,6 +3400,10 @@ msgstr "前往 DNS > 凭证 以创建或管理凭证" msgid "Go to Raw Log Viewer" msgstr "转到原始日志查看器" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "前往恢复码" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3432,16 +3412,13 @@ msgstr "Gotify" msgid "" "gRPC health check requires server to implement gRPC Health Check service " "(grpc.health.v1.Health)." -msgstr "" -"gRPC 健康检查要求服务器实现 gRPC 健康检查服务(grpc.health.v1.Health)。" +msgstr "gRPC 健康检查要求服务器实现 gRPC 健康检查服务(grpc.health.v1.Health)。" #: src/views/dashboard/components/SiteHealthCheckModal.vue:599 msgid "" "gRPCS uses TLS encryption. Server must implement gRPC Health Check service. " "For testing, SSL validation is disabled by default." -msgstr "" -"gRPCS 使用 TLS 加密。服务器必须实现 gRPC 健康检查服务。出于测试目的,默认情况" -"下禁用 SSL 验证。" +msgstr "gRPCS 使用 TLS 加密。服务器必须实现 gRPC 健康检查服务。出于测试目的,默认情况下禁用 SSL 验证。" #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67 msgid "GZIP Compression" @@ -3492,10 +3469,6 @@ msgstr "隐藏" msgid "Hide Assistant" msgstr "隐藏助手" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3517,27 +3490,10 @@ msgid "Home" msgstr "首页" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "主机" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "主机,例如 @ 或 www" @@ -3579,9 +3535,7 @@ msgstr "ICP 备案号" msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." -msgstr "" -"如果某个 IP 的登录失败次数达到禁用阈值分钟内的最大尝试次数,该 IP 将被禁止登" -"录一段时间。" +msgstr "如果某个 IP 的登录失败次数达到禁用阈值分钟内的最大尝试次数,该 IP 将被禁止登录一段时间。" #: src/components/AutoCertForm/AutoCertForm.vue:280 msgid "" @@ -3593,9 +3547,7 @@ msgstr "如果要自动撤销旧证书,请启用此选项。" msgid "" "If you want to change the storage location, you can set the `IndexPath` of " "`nginx_log` section in the Nginx UI config." -msgstr "" -"如果要更改存储位置,可以在 Nginx UI 配置中设置 `nginx_log` 部分的 " -"`IndexPath`。" +msgstr "如果要更改存储位置,可以在 Nginx UI 配置中设置 `nginx_log` 部分的 `IndexPath`。" #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." @@ -3607,12 +3559,12 @@ msgid "" "need to enable this option." msgstr "如果您的域名有 CNAME 记录且无法获取证书,则需要启用此选项。" -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "导入" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "导入证书" @@ -3673,7 +3625,7 @@ msgstr "索引中..." msgid "Indicator" msgstr "指示器" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "信息" @@ -3697,7 +3649,7 @@ msgstr "初始化核心升级器" msgid "Input the code from the app:" msgstr "输入应用程序中的代码:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "输入恢复代码:" @@ -3754,12 +3706,12 @@ msgid "" "restart the Nginx UI." msgstr "系统启动 10 分钟后不允许安装,请重启 Nginx UI。" -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "间隔" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "间隔(秒)" @@ -3833,7 +3785,7 @@ msgstr "无效的 OTP 代码" msgid "Invalid padding in decrypted data" msgstr "解密数据中的无效填充" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "二次验证码或恢复代码无效" @@ -3886,15 +3838,43 @@ msgstr "IP 地址" msgid "IP Address / Target" msgstr "IP 地址/目标" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "IP 地址" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "IP 证书通知" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "IP 版本" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "仅 IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "先 IPv4 后 IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "仅 IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "先 IPv6 后 IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "签发失败" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "签发证书" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "签发证书" @@ -3902,10 +3882,18 @@ msgstr "签发证书" msgid "Issued certificate successfully" msgstr "证书申请成功" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "签发成功" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "颁发者:%{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "签发中..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "项" @@ -3918,15 +3906,15 @@ msgstr "Jwt 密钥" msgid "" "Keep your recovery codes as safe as your password. We recommend saving them " "with a password manager." -msgstr "" -"请像保护密码一样安全地保管您的恢复代码。我们建议使用密码管理器保存它们。" +msgstr "请像保护密码一样安全地保管您的恢复代码。我们建议使用密码管理器保存它们。" #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60 msgid "Keepalive Timeout" msgstr "Keepalive 超时" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "密钥类型" @@ -4008,7 +3996,7 @@ msgstr "最后索引时间" msgid "Last month" msgstr "上个月" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "上次运行" @@ -4024,6 +4012,10 @@ msgstr "最后更新:" msgid "Last used at" msgstr "上次使用" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "稍后" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "留空表示不修改" @@ -4045,10 +4037,8 @@ msgid "Leave blank if you don't need this." msgstr "如果不需要,请留空。" #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "留空为默认:https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "留空则使用 Atlas Cloud 端点:https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4057,6 +4047,13 @@ msgstr "留空为默认:https://api.openai.com/" msgid "Leave blank will not change anything" msgstr "留空不做任何更改" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "旧恢复码已弃用。生成新的恢复码以保持账户恢复安全。" + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "由于未启用 TOTP,因此不允许使用传统恢复代码" @@ -4093,9 +4090,7 @@ msgstr "将此站点链接到 DNS 记录。server_name 将用作 DNS 记录名 msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name. You can skip this step if DNS is already configured." -msgstr "" -"将此站点链接到 DNS 记录。server_name 将用作 DNS 记录名称。如果 DNS 已配置,可" -"以跳过此步骤。" +msgstr "将此站点链接到 DNS 记录。server_name 将用作 DNS 记录名称。如果 DNS 已配置,可以跳过此步骤。" #: src/views/site/site_edit/components/RightPanel/DNS.vue:466 msgid "Linked DNS Record" @@ -4111,7 +4106,7 @@ msgstr "监听中" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4159,18 +4154,14 @@ msgstr "加载中..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "本地" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "本地路径(例如:/var/backups)" @@ -4183,15 +4174,15 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "日志" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" "日志文件 %{log_path} 不是常规文件。如果在 Docker 容器中使用 Nginx UI,请参阅 " "https://nginxui.com/zh_CN/guide/config-nginx-log.html 获取更多信息。" @@ -4236,7 +4227,7 @@ msgstr "日志解析器未初始化;使用前请调用 indexer.InitLogParser() msgid "Log path is not under whitelist" msgstr "日志路径不在白名单中" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "登录" @@ -4244,7 +4235,7 @@ msgstr "登录" msgid "Login successful" msgstr "登录成功" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "登出成功" @@ -4254,17 +4245,16 @@ msgstr "Logrotate" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" -"对于在宿主机上安装 Nginx UI 的用户,大多数主流 Linux 发行版都默认启用 " -"logrotate 定时任务,因此您无需修改本页面的参数。对于使用 Docker 容器安装 " -"Nginx 用户界面的用户,您可以手动启用该选项。Nginx UI 的定时任务任务调度器将按" -"照您设置的时间间隔(以分钟为单位)执行 logrotate 命令。" +"对于在宿主机上安装 Nginx UI 的用户,大多数主流 Linux 发行版都默认启用 logrotate " +"定时任务,因此您无需修改本页面的参数。对于使用 Docker 容器安装 Nginx 用户界面的用户,您可以手动启用该选项。Nginx UI " +"的定时任务任务调度器将按照您设置的时间间隔(以分钟为单位)执行 logrotate 命令。" #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4291,15 +4281,13 @@ msgstr "成功禁用维护模式" msgid "Maintenance mode enabled successfully" msgstr "成功启用维护模式" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "成功启用维护模式" +msgstr "维护模板(仅文件名)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "维护模式" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4309,9 +4297,7 @@ msgstr "创建证书目录错误:{0}" msgid "" "Make sure you have configured a reverse proxy for .well-known directory to " "HTTPChallengePort before obtaining the certificate." -msgstr "" -"在获取签发证书前,请确保配置文件中已将 .well-known 目录反向代理到 " -"HTTPChallengePort。" +msgstr "在获取签发证书前,请确保配置文件中已将 .well-known 目录反向代理到 HTTPChallengePort。" #: src/routes/modules/config.ts:10 #: src/views/config/components/ConfigLeftPanel.vue:114 @@ -4433,10 +4419,6 @@ msgstr "内存设计" msgid "Memory Usage (RSS)" msgstr "内存使用量(RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4470,7 +4452,7 @@ msgstr "分钟" msgid "Minutes" msgstr "分钟" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "镜像" @@ -4499,7 +4481,7 @@ msgid "Modify" msgstr "修改" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "修改证书" @@ -4531,10 +4513,9 @@ msgstr "每月" msgid "Monthly on day %{day} at %{time}" msgstr "每月%{day}日%{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "受保护目录" +msgstr "挂载目录" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4564,6 +4545,7 @@ msgstr "不适用" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4636,7 +4618,7 @@ msgstr "新建 lego 客户端错误:{0}" msgid "New name" msgstr "新名称" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "新密码" @@ -4652,12 +4634,11 @@ msgstr "新建传输错误:{0}" msgid "New version released" msgstr "新版本发布" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "下一步" @@ -4669,7 +4650,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Nginx -T 的输出为空" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Nginx 访问日志路径" @@ -4723,11 +4704,11 @@ msgstr "Nginx 配置已恢复" msgid "Nginx Configuration Parse Error" msgstr "Nginx 配置解析错误" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Nginx 配置路径" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Nginx 配置目录" @@ -4735,7 +4716,7 @@ msgstr "Nginx 配置目录" msgid "Nginx Control" msgstr "控制 Nginx" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Nginx 控制模式" @@ -4744,7 +4725,7 @@ msgstr "Nginx 控制模式" msgid "Nginx CPU usage rate" msgstr "Nginx CPU 使用率" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Nginx 错误日志路径" @@ -4780,7 +4761,7 @@ msgstr "Nginx 正在运行" msgid "Nginx Log" msgstr "Nginx 日志" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Nginx 日志目录白名单" @@ -4793,7 +4774,7 @@ msgstr "Nginx 日志索引中..." msgid "Nginx Memory usage" msgstr "Nginx 内存使用量" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Nginx PID 路径" @@ -4801,7 +4782,7 @@ msgstr "Nginx PID 路径" msgid "Nginx PID path exists" msgstr "Nginx PID 路径存在" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Nginx 重载命令" @@ -4822,7 +4803,7 @@ msgstr "Nginx 重载成功" msgid "Nginx reported a configuration syntax error." msgstr "Nginx 报告了一个配置语法错误。" -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Nginx 重启命令" @@ -4838,7 +4819,7 @@ msgstr "Nginx 重启成功" msgid "Nginx sbin path exists" msgstr "Nginx Sbin 路径存在" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Nginx 测试配置命令" @@ -4861,10 +4842,17 @@ msgstr "Nginx 用户界面配置已恢复" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "Nginx UI 配置已恢复,几秒钟后将自动重启。" +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "Nginx UI 将根据全局证书续期间隔和此证书的有效期,在证书即将过期时自动续期。" + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf 包括 conf.d 目录" @@ -4891,7 +4879,7 @@ msgid "No" msgstr "取消" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "无操作" @@ -4929,10 +4917,6 @@ msgstr "当前页面没有条目" msgid "No geographic data available" msgstr "无可用地理数据" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "在选定的时间范围内未找到日志。" @@ -4957,9 +4941,7 @@ msgstr "未找到站点" msgid "" "No specific IP address found in server_name configuration. Please specify " "the server IP address below for the certificate." -msgstr "" -"在 server_name 配置中未找到特定 IP 地址。请在下方指定服务器 IP 地址以获取证" -"书。" +msgstr "在 server_name 配置中未找到特定 IP 地址。请在下方指定服务器 IP 地址以获取证书。" #: src/views/nginx_log/structured/StructuredLogViewer.vue:836 msgid "No structured log data available" @@ -4994,7 +4976,7 @@ msgstr "节点状态" msgid "Nodes" msgstr "节点" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "有效期" @@ -5015,7 +4997,7 @@ msgstr "未索引" msgid "Not Loaded" msgstr "未加载" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "尚未运行" @@ -5043,9 +5025,7 @@ msgstr "注意,如果配置文件中包含其他配置或证书,请提前将 msgid "" "Note: If the server does not support gRPC Reflection, health checks may " "fail. Please ensure your gRPC server has Reflection enabled." -msgstr "" -"注意:如果服务器不支持 gRPC 反射,健康检查可能会失败。请确保您的 gRPC 服务器" -"已启用反射功能。" +msgstr "注意:如果服务器不支持 gRPC 反射,健康检查可能会失败。请确保您的 gRPC 服务器已启用反射功能。" #: src/views/certificate/components/CertificateBasicInfo.vue:24 #: src/views/certificate/components/CertificateContentEditor.vue:105 @@ -5092,7 +5072,7 @@ msgstr "工作进程数量" msgid "Obtain cert error: {0}" msgstr "获取证书错误:{0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "获取证书" @@ -5144,7 +5124,7 @@ msgstr "OIDC 登录" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5186,10 +5166,6 @@ msgstr "只允许使用 zip 文件" msgid "Open" msgstr "开放" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "开源限制" @@ -5206,7 +5182,7 @@ msgstr "操作系统统计" msgid "Optional comment for this DNS record" msgstr "此 DNS 记录的可选注释" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "或" @@ -5255,11 +5231,6 @@ msgstr "其他" msgid "Otp or recovery code empty" msgstr "OTP 或恢复代码为空" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "覆盖现有文件" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "覆盖" @@ -5294,9 +5265,7 @@ msgid "" "Passkeys are webauthn credentials that validate your identity using touch, " "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." -msgstr "" -"Passkey 是一种网络认证凭据,可通过指纹、面部识别、设备密码或 PIN 码验证身份。" -"它们可用作密码替代品或二步验证方法。" +msgstr "Passkey 是一种网络认证凭据,可通过指纹、面部识别、设备密码或 PIN 码验证身份。它们可用作密码替代品或二步验证方法。" #: src/views/other/Login.vue:308 src/views/user/userColumns.tsx:16 msgid "Password" @@ -5306,10 +5275,6 @@ msgstr "密码" msgid "Password (*)" msgstr "密码 (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "用户名和密码错误" @@ -5318,11 +5283,11 @@ msgstr "用户名和密码错误" msgid "Password length cannot exceed 20 characters" msgstr "密码长度不能超过 20 个字符" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "密码更新成功" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "密码不匹配" @@ -5394,7 +5359,7 @@ msgstr "性能调优参数保存成功" msgid "Performing core upgrade" msgstr "正在进行核心升级" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "个人信息" @@ -5435,6 +5400,12 @@ msgstr "请启用 stub_status 模块,以获取请求统计信息、连接数 msgid "Please enter" msgstr "请输入" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "请输入证书名称" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5453,15 +5424,21 @@ msgstr "请输入有效的 IPv4 或 IPv6 地址" msgid "Please enter a valid port range" msgstr "请输入有效的端口范围" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "请输入至少一个域名" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "请输入至少一个域名或IP地址" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "请先输入安装密钥再继续" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "请输入 OTP:" @@ -5501,15 +5478,13 @@ msgstr "请填写 DNS 提供商提供的 API 验证凭据。" msgid "" "Please first add credentials in Certification > DNS Credentials, and then " "select one of the credentialsbelow to request the API of the DNS provider." -msgstr "" -"请首先在 “证书”> “DNS 凭证” 中添加凭证,然后在下方选择一个凭证,请求 DNS 提供" -"商的 API。" +msgstr "请首先在 “证书”> “DNS 凭证” 中添加凭证,然后在下方选择一个凭证,请求 DNS 提供商的 API。" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "请立即在偏好设置中生成新的恢复码,以防止无法访问您的账户。" #: src/views/config/components/ConfigRightPanel/Basic.vue:27 @@ -5551,8 +5526,7 @@ msgid "Please log in." msgstr "请登录。" #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "请注意,下面的时间单位配置均以秒为单位。" #: src/views/install/components/InstallView.vue:136 @@ -5571,7 +5545,7 @@ msgstr "请选择备份文件" msgid "Please select a certificate before saving the TLS server configuration." msgstr "请在保存 TLS 服务器配置前选择一个证书。" -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "请选择一个 DNS 凭证" @@ -5651,10 +5625,6 @@ msgstr "偏好设置" msgid "Preparing lego configurations" msgstr "正在准备 Lego 的配置" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5673,10 +5643,6 @@ msgstr "私有 IP (192.168.x.x、10.x.x.x、172.16-31.x.x)将失败" msgid "private key" msgstr "私钥" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "进程" @@ -5720,11 +5686,11 @@ msgstr "协议" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." -msgstr "" -"协议配置仅在直接连接时生效。如果使用反向代理,请在反向代理中单独配置协议。" +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." +msgstr "协议配置仅在直接连接时生效。如果使用反向代理,请在反向代理中单独配置协议。" -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5763,14 +5729,6 @@ msgstr "代理目标" msgid "Public CA Requirements:" msgstr "公共 CA 要求:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "公安备案号" @@ -5871,11 +5829,11 @@ msgstr "记录类型" msgid "Record updated" msgstr "记录已更新" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "记录" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "恢复" @@ -5887,9 +5845,7 @@ msgstr "恢复代码" msgid "" "Recovery codes are used to access your account when you lose access to your " "2FA device. Each code can only be used once." -msgstr "" -"恢复代码用于在您无法访问双重身份验证设备时登录您的账户。每个代码只能使用一" -"次。" +msgstr "恢复代码用于在您无法访问双重身份验证设备时登录您的账户。每个代码只能使用一次。" #: src/views/site/site_edit/components/RightPanel/DNS.vue:535 msgid "Recreate DNS Record" @@ -5908,7 +5864,7 @@ msgstr "重定向消息 (3xx)" msgid "Referer" msgstr "来源" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "刷新" @@ -5917,11 +5873,6 @@ msgstr "刷新" msgid "Refresh Modules Cache" msgstr "刷新模块缓存" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "重新生成响应" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "重新生成响应" @@ -5978,7 +5929,7 @@ msgid "Reload" msgstr "重载" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "重载 Nginx" @@ -6015,16 +5966,12 @@ msgstr "重载中" msgid "Reloading nginx" msgstr "正在重载 Nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "远程" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "未选择节点" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "删除" @@ -6034,6 +5981,10 @@ msgstr "删除" msgid "Remove successfully" msgstr "移除成功" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "已删除 %{count} 条冲突记录:%{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "删除成功" @@ -6113,8 +6064,8 @@ msgstr "重命名成功" msgid "Renew cert error: {0}" msgstr "续签证书错误:{0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "更新证书" @@ -6126,8 +6077,7 @@ msgstr "证书续期错误" msgid "Renew Certificate Success" msgstr "证书续期成功" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "更新成功" @@ -6178,9 +6128,7 @@ msgid "" "Resident Set Size: Actual memory resident in physical memory, including all " "shared library memory, which will be repeated calculated for multiple " "processes" -msgstr "" -"驻留集大小:实际驻留在物理内存中的内存,包括所有共享库内存,将为多个进程重复" -"计算" +msgstr "驻留集大小:实际驻留在物理内存中的内存,包括所有共享库内存,将为多个进程重复计算" #: src/views/nginx_log/components/IndexingSettingsModal.vue:109 msgid "Resource Usage Warning" @@ -6255,6 +6203,19 @@ msgstr "恢复此版本" msgid "Restored successfully" msgstr "恢复成功" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "重试" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "重试证书签发" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "先检查" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6299,11 +6260,6 @@ msgstr "依赖方 ID" msgid "Run Mode" msgstr "运行模式" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "更新证书" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "运行中" @@ -6421,7 +6377,7 @@ msgstr "星期六" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6431,19 +6387,14 @@ msgstr "星期六" msgid "Save" msgstr "保存" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "存储配置" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "保存指令" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "立即保存" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "保存顺序" @@ -6486,15 +6437,19 @@ msgstr "成功将站点 %{name} 保存到 %{node} 中" msgid "Save successful" msgstr "保存成功" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "保存成功" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "立即保存站点配置?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "保存的证书响应缺少 ID" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6504,6 +6459,12 @@ msgstr "" msgid "Saved successfully" msgstr "保存成功" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "保存站点配置失败;证书指令已在编辑器中 — 请检查更改,然后通过“保存”按钮重新尝试。" + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "Sbin 路径不存在" @@ -6552,7 +6513,7 @@ msgstr "SDK" msgid "Search" msgstr "搜索" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "搜索域名、提供商或目标记录" @@ -6584,7 +6545,7 @@ msgstr "搜索模板" msgid "Secret has been copied" msgstr "密钥已复制" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "安全设置" @@ -6628,6 +6589,10 @@ msgstr "选择 DNS 域名" msgid "Select existing record" msgstr "选择现有记录" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "选择匹配的 A/AAAA 记录" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6654,6 +6619,24 @@ msgstr "自我检查" msgid "Self check failed, Nginx UI may not work properly" msgstr "自检失败,Nginx UI 可能无法正常工作" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "自签名证书" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "自签名证书" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "自签名证书已应用" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "自签名证书已生成" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6668,7 +6651,7 @@ msgid "Server" msgstr "服务器" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "服务器错误" @@ -6696,7 +6679,7 @@ msgstr "服务器名称哈希桶大小" msgid "Server names hash table size" msgstr "服务器名称哈希表大小" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "未在指令集合中找到 server_name" @@ -6744,19 +6727,19 @@ msgstr "使用 HTTP01 challenge provider" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath 为空,更多信息请参阅 https://nginxui." -"com/guide/config-nginx.html" +"Settings.NginxLogSettings.AccessLogPath 为空,更多信息请参阅 " +"https://nginxui.com/guide/config-nginx.html" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath 为空,更多信息请参阅 https://nginxui." -"com/guide/config-nginx.html" +"Settings.NginxLogSettings.ErrorLogPath 为空,更多信息请参阅 " +"https://nginxui.com/guide/config-nginx.html" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6775,7 +6758,7 @@ msgstr "显示" msgid "Show Assistant" msgstr "显示助手" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "使用 Passkey 登录" @@ -6839,9 +6822,7 @@ msgstr "站点列表" msgid "" "Sites will appear here once you configure nginx server blocks with valid " "server_name (localhost excluded) directives." -msgstr "" -"配置带有有效 server_name 指令(不包括 localhost)的 nginx 服务器块后,站点将" -"显示在此处。" +msgstr "配置带有有效 server_name 指令(不包括 localhost)的 nginx 服务器块后,站点将显示在此处。" #: src/constants/errors/self_check.ts:11 msgid "Sites-available directory not exist" @@ -6861,10 +6842,6 @@ msgstr "大小" msgid "Skip Installation" msgstr "跳过安装" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "缓存加载器迭代之间的休眠时间" @@ -6877,6 +6854,10 @@ msgstr "缓存管理器迭代之间的休眠时间" msgid "Socket" msgstr "套接字" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "某些浏览器会拒绝有效期超过 398 天的 TLS 证书。" + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "排序方式" @@ -6893,15 +6874,6 @@ msgstr "赞助" msgid "SSD storage for better I/O performance" msgstr "SSD 存储以获得更好的 I/O 性能" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "推荐 2+ 核心" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -6987,9 +6959,9 @@ msgstr "静态" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7062,7 +7034,7 @@ msgstr "Streams-enabled 目录不存在" msgid "Structured" msgstr "结构化" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "Stub 状态端口" @@ -7070,7 +7042,7 @@ msgstr "Stub 状态端口" msgid "Stub_status is not enabled" msgstr "未启用 stub_status" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7088,9 +7060,9 @@ msgstr "星期日" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" "支持通过 WebSocket 协议与后端通信,如果您正在使用 Nginx 反向代理了 Nginx UI " "请参考:https://nginxui.com/guide/nginx-proxy-example.html 编写配置文件" @@ -7180,6 +7152,7 @@ msgid "Sync strategy" msgstr "同步策略" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "同步到" @@ -7217,21 +7190,13 @@ msgstr "系统还原" msgid "System restored successfully." msgstr "系统恢复成功。" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "目标" @@ -7294,30 +7259,34 @@ msgid "" "The certificate for the domain will be checked 30 minutes, and will be " "renewed if it has been more than 1 week or the period you set in settings " "since it was last issued." -msgstr "" -"域名证书将在 30 分钟内接受检查,如果距离上次签发证书的时间超过 1 周或您在设置" -"中设定的时间,证书将被更新。" +msgstr "域名证书将在 30 分钟内接受检查,如果距离上次签发证书的时间超过 1 周或您在设置中设定的时间,证书将被更新。" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "证书已生成在 %{path},并且 ssl_certificate 指令已添加到当前服务器块中。请立即保存配置,或在编辑器中查看更改后手动保存。" #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "以下站点将被禁用:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "以下站点将被启用:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "离线地理 IP 分析需要 GeoLite2 数据库。请下载以启用此功能。" #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." -msgstr "" -"GeoLite2 数据库为 IP 地址提供地理信息。这用于日志分析中的离线地理分析。" +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." +msgstr "GeoLite2 数据库为 IP 地址提供地理信息。这用于日志分析中的离线地理分析。" #: src/views/preference/tabs/NodeSettings.vue:37 msgid "" @@ -7341,7 +7310,8 @@ msgstr "关联的 DNS 记录已从 DNS 服务器中删除。您可以重新创 #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "日志路径不在 settings.NginxSettings.LogDirWhiteList 中的路径之下" #: src/views/preference/tabs/OpenAISettings.vue:153 @@ -7352,8 +7322,7 @@ msgid "" msgstr "模型名称只能包含字母、单码、数字、连字符、破折号、冒号和点。" #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "用于代码自动补全的模型,如果未设置,则使用聊天模型。" #: src/views/preference/tabs/NodeSettings.vue:18 @@ -7386,9 +7355,7 @@ msgid "" "The remote Nginx UI version is not compatible with the local Nginx UI " "version. To avoid potential errors, please upgrade the remote Nginx UI to " "match the local version." -msgstr "" -"远程 Nginx UI 版本与本地 Nginx UI 版本不兼容。为避免意料之外的错误,请升级远" -"程 Nginx UI,使其与本地版本一致。" +msgstr "远程 Nginx UI 版本与本地 Nginx UI 版本不兼容。为避免意料之外的错误,请升级远程 Nginx UI,使其与本地版本一致。" #: src/components/AutoCertForm/AutoCertForm.vue:155 msgid "" @@ -7418,14 +7385,12 @@ msgstr "理论最大并发连接数:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "理论最大 RPS (每秒请求次数):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " "lose access to your account." -msgstr "" -"这些代码是在您丢失密码和双重身份验证方式时,访问账户的最后手段。如果找不到这" -"些代码,您将无法再访问您的账户。" +msgstr "这些代码是在您丢失密码和双重身份验证方式时,访问账户的最后手段。如果找不到这些代码,您将无法再访问您的账户。" #: src/routes/modules/system.ts:45 msgid "Third-party Components" @@ -7468,14 +7433,13 @@ msgid "This field should not be empty" msgstr "该字段不能为空" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." msgstr "该字段只能包含字母、unicode 字符、数字和 -_。" #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" msgstr "此字段应仅包含字母、Unicode 字符、数字和 -_./:" #: src/components/Notification/notifications.ts:102 @@ -7488,10 +7452,6 @@ msgid "" "server state." msgstr "此模式仅预览安装界面流程,不会更改任何服务器状态。" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " @@ -7512,23 +7472,27 @@ msgid "" "certificate files on the file system will not be deleted." msgstr "此操作只会从数据库中删除证书。文件系统中的证书文件不会被删除。" +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "此自签名证书由 Nginx UI 管理并自动续期。" + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" -"此站点已配置为 HTTPS (端口 443)的默认服务器(default_server)。IP 证书需要" -"证书颁发机构(CA)的支持,且并非所有 ACME 提供商都提供此类证书。" +"此站点已配置为 HTTPS (端口 443)的默认服务器(default_server)。IP 证书需要证书颁发机构(CA)的支持,且并非所有 " +"ACME 提供商都提供此类证书。" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." -msgstr "" -"此站点使用通配符服务器名称(_),通常表示基于 IP 的证书。IP 证书需要证书颁发" -"机构(CA)的支持,并且可能并非所有 ACME 提供商都提供。" +msgstr "此站点使用通配符服务器名称(_),通常表示基于 IP 的证书。IP 证书需要证书颁发机构(CA)的支持,并且可能并非所有 ACME 提供商都提供。" #: src/views/backup/components/BackupCreator.vue:141 msgid "" @@ -7548,9 +7512,7 @@ msgstr "这将永久删除%{type}。" msgid "" "This will rebuild the entire log index. All existing index data will be " "deleted and rebuilt from scratch. This may take some time. Continue?" -msgstr "" -"这将重建整个日志索引。所有现有索引数据将被删除并从头开始重建。这可能需要一些" -"时间。是否继续?" +msgstr "这将重建整个日志索引。所有现有索引数据将被删除并从头开始重建。这可能需要一些时间。是否继续?" #: src/views/nginx_log/indexing/IndexManagement.vue:56 msgid "This will rebuild the index data for this specific file: %{path}" @@ -7571,8 +7533,7 @@ msgid "" msgstr "这将恢复配置文件和数据库。恢复完成后,Nginx UI 将重新启动。" #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "将 %{nodeNames} 上的 Nginx UI 升级或重新安装到 %{version} 版本。" #: src/views/preference/tabs/AuthSettings.vue:89 @@ -7606,8 +7567,7 @@ msgstr "提示" msgid "" "Tips: You can increase the concurrency processing capacity by increasing " "worker_processes or worker_connections" -msgstr "" -"提示您可以通过增加 worker_processes 或 worker_connections 来提高并发处理能力" +msgstr "提示您可以通过增加 worker_processes 或 worker_connections 来提高并发处理能力" #: src/views/notification/notificationColumns.tsx:58 msgid "Title" @@ -7625,28 +7585,25 @@ msgstr "要确认撤销,请在下面的字段中输入 \"撤销\":" msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." -msgstr "" -"要启用该功能,您需要在手机上安装 Google 或 Microsoft Authenticator 应用程序。" +msgstr "要启用该功能,您需要在手机上安装 Google 或 Microsoft Authenticator 应用程序。" #: src/views/preference/components/AuthSettings/AddPasskey.vue:95 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " "and restart Nginx UI." -msgstr "" -"为确保安全,Webauthn 配置不能通过用户界面添加。请在 app.ini 配置文件中手动配" -"置以下内容,并重启 Nginx UI 服务。" +msgstr "为确保安全,Webauthn 配置不能通过用户界面添加。请在 app.ini 配置文件中手动配置以下内容,并重启 Nginx UI 服务。" #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" -"为了确保认证自动更新能够正常工作,我们需要添加一个能够代理从权威机构到后端的" -"请求的 Location,并且我们需要保存这个文件并重新加载 Nginx。你确定要继续吗?" +"为了确保认证自动更新能够正常工作,我们需要添加一个能够代理从权威机构到后端的请求的 Location,并且我们需要保存这个文件并重新加载 " +"Nginx。你确定要继续吗?" #: src/views/preference/tabs/OpenAISettings.vue:44 msgid "" @@ -7654,8 +7611,8 @@ msgid "" "provide an OpenAI-compatible API endpoint, so just set the baseUrl to your " "local API." msgstr "" -"要使用本地大型模型,可使用 ollama、vllm 或 lmdeploy 进行部署。它们提供了与 " -"OpenAI 兼容的 API 端点,因此只需将 baseUrl 设置为本地 API 即可。" +"要使用本地大型模型,可使用 ollama、vllm 或 lmdeploy 进行部署。它们提供了与 OpenAI 兼容的 API 端点,因此只需将 " +"baseUrl 设置为本地 API 即可。" #: src/views/dashboard/NginxDashBoard.vue:56 msgid "Toggle failed" @@ -7783,7 +7740,7 @@ msgstr "TTL(秒)" msgid "Tuesday" msgstr "星期二" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "需要两步验证" @@ -7804,10 +7761,6 @@ msgstr "类型" msgid "Type %{delete} to confirm" msgstr "输入 %{delete} 以确认" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "输入或选择 A/AAAA 记录" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "输入或选择浏览器" @@ -7853,11 +7806,11 @@ msgstr "不支持的日志格式" msgid "Update already in progress" msgstr "更新已经在进行中" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "更新密码" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "更新资料" @@ -7946,11 +7899,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "使用 @ 表示根域名" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "使用二步验证码" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "使用恢复代码" @@ -7958,10 +7911,6 @@ msgstr "使用恢复代码" msgid "Use Temporary Path" msgstr "使用临时路径" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "用户" @@ -7975,7 +7924,7 @@ msgstr "用户代理" msgid "User banned" msgstr "用户被禁止" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "用户信息更新成功" @@ -7988,7 +7937,7 @@ msgid "User Profile" msgstr "用户资料" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "用户名" @@ -8006,10 +7955,14 @@ msgstr "独立访客" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "有效的" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "有效期(天)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "验证 SSL 证书" @@ -8020,11 +7973,6 @@ msgstr "验证 SSL 证书" msgid "Value" msgstr "值" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "验证密钥" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8061,7 +8009,7 @@ msgstr "查看全部通知" msgid "View on GitHub" msgstr "在 GitHub 上查看" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "查看恢复代码" @@ -8089,7 +8037,7 @@ msgstr "访问量" msgid "Waiting processes" msgstr "等待处理" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8102,9 +8050,7 @@ msgid "" "Warning: Restore operation will overwrite current configurations. Make sure " "you have a valid backup file and security token, and carefully select what " "to restore." -msgstr "" -"警告:还原操作将覆盖当前配置。请确保您有有效的备份文件和安全令牌,并仔细选择" -"要还原的内容。" +msgstr "警告:还原操作将覆盖当前配置。请确保您有有效的备份文件和安全令牌,并仔细选择要还原的内容。" #: src/components/AutoCertForm/AutoCertForm.vue:103 msgid "" @@ -8112,20 +8058,18 @@ msgid "" "Encrypt cannot issue certificates for private IPs. Use a public IP address " "or consider using a private CA." msgstr "" -"警告:这似乎是一个私有 IP 地址。像 Let's Encrypt 这样的公共 CA 无法为私有 IP " -"颁发证书。请使用公共 IP 地址或考虑使用私有 CA。" +"警告:这似乎是一个私有 IP 地址。像 Let's Encrypt 这样的公共 CA 无法为私有 IP 颁发证书。请使用公共 IP 地址或考虑使用私有 " +"CA。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "我们不接受任何功能请求" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" -msgstr "" -"我们将从这个文件中删除 HTTPChallenge 的配置,并重新加载 Nginx。你确定要继续" -"吗?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" +msgstr "我们将从这个文件中删除 HTTPChallenge 的配置,并重新加载 Nginx。你确定要继续吗?" #: src/views/preference/tabs/AuthSettings.vue:62 msgid "Webauthn" @@ -8160,25 +8104,31 @@ msgstr "每周%{day}的%{time}" msgid "Weight" msgstr "权重" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"启用后,DDNS 将拥有所选名称:自动配对同族记录,创建缺失的记录,并删除 IP 族不可达的记录。禁用后,仅管理您明确选择的记录,保持所有其他 DNS " +"状态不变。" + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " "Generally, do not enable this unless you are in a dev environment and using " "Pebble as CA." -msgstr "" -"启用后,Nginx UI 将在启动时自动重新注册用户。一般情况下,除非在开发环境中使" -"用 Pebble 作为 CA,否则不要启用此功能。" +msgstr "启用后,Nginx UI 将在启动时自动重新注册用户。一般情况下,除非在开发环境中使用 Pebble 作为 CA,否则不要启用此功能。" #: src/views/site/site_edit/components/RightPanel/Basic.vue:62 #: src/views/stream/components/RightPanel/Basic.vue:57 msgid "" "When you enable/disable, delete, or save this site, the nodes set in the " "namespace and the nodes selected below will be synchronized." -msgstr "" -"当您启用/禁用、删除或保存此站点时,命名空间中设置的节点和下方选择的节点将被同" -"步。" +msgstr "当您启用/禁用、删除或保存此站点时,命名空间中设置的节点和下方选择的节点将被同步。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8188,7 +8138,7 @@ msgstr "当您生成新的恢复代码时,必须下载或打印新的代码。 msgid "Whether to use a temporary path when writing temporary files" msgstr "写入临时文件时是否使用临时路径" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "通配符证书" @@ -8207,7 +8157,7 @@ msgstr "工作进程" msgid "Workers" msgstr "Workers" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "工作区" @@ -8246,10 +8196,9 @@ msgstr "是的" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." -msgstr "" -"您正在通过非本地主机域上的不安全 HTTP 连接访问此终端。这可能会暴露敏感信息。" +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." +msgstr "您正在通过非本地主机域上的不安全 HTTP 连接访问此终端。这可能会暴露敏感信息。" #: src/constants/errors/config.ts:12 msgid "You are not allowed to delete a file outside of the nginx config path" @@ -8278,22 +8227,39 @@ msgid "" msgstr "您尚未配置 Webauthn 的设置,因此无法添加 Passkey。" #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "您尚未启用双重身份验证。请启用双重身份验证以生成恢复代码。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "您尚未生成恢复代码。" +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "您的账户仍在使用旧版恢复码。请在验证后生成新的恢复码,以确保账户恢复的安全性。" + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "您的帐户使用了已弃用的旧恢复代码。请立即生成新的恢复代码以完成迁移,并确保帐户恢复安全。" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "您的当前恢复代码可能已过期且不安全。请尽快生成新的恢复代码以确保安全。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "您的旧恢复码已使用,无法再次使用。立即生成新的恢复码,以保持账户恢复功能可用。" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "您的旧代码将不再有效。" @@ -8305,6 +8271,61 @@ msgstr "你的 Passkeys" msgid "Zero-allocation pipeline" msgstr "零分配管道" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx 未能验证配置。" + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "正在验证..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "已连接" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "内容" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "拷贝" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "外部 Docker 容器" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "生成" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "覆盖现有文件" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "重新生成响应" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "未选择节点" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "更新证书" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "推荐 2+ 核心" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "输入或选择 A/AAAA 记录" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "验证密钥" + #~ msgid "OpenAI" #~ msgstr "OpenAI" @@ -8317,8 +8338,7 @@ msgstr "零分配管道" #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." -#~ msgstr "" -#~ "我们将在您域名的 DNS 记录中添加一个或多个 TXT 记录,以核实域名所有权。" +#~ msgstr "我们将在您域名的 DNS 记录中添加一个或多个 TXT 记录,以核实域名所有权。" #~ msgid "Settings" #~ msgstr "设置" @@ -8481,13 +8501,12 @@ msgstr "零分配管道" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" -#~ "支持通过 Server-Sent Events 协议与后端通信。如果您的 Nginx UI 是通过 " -#~ "Nginx 反向代理使用的,请参考此链接编写相应的配置文件:https://nginxui.com/" -#~ "guide/nginx-proxy-example.html" +#~ "支持通过 Server-Sent Events 协议与后端通信。如果您的 Nginx UI 是通过 Nginx " +#~ "反向代理使用的,请参考此链接编写相应的配置文件:https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "如果留空,则使用默认 CA Dir。" @@ -8557,12 +8576,11 @@ msgstr "零分配管道" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" -#~ "检查 /var/run/docker.sock 是否存在。如果你使用的是 Nginx UI 官方 Docker " -#~ "Image,请确保 Docker Socket 像这样挂载:`-v /var/run/docker.sock:/var/run/" -#~ "docker.sock`." +#~ "检查 /var/run/docker.sock 是否存在。如果你使用的是 Nginx UI 官方 Docker Image,请确保 Docker " +#~ "Socket 像这样挂载:`-v /var/run/docker.sock:/var/run/docker.sock`." #~ msgid "Check if the nginx access log path exists" #~ msgstr "检查 Nginx 访问日志路径是否存在" @@ -8582,9 +8600,7 @@ msgstr "零分配管道" #~ msgid "" #~ "If logs are not indexed, please check if the log file is under the " #~ "directory in Nginx.LogDirWhiteList." -#~ msgstr "" -#~ "如果日志未被索引,请检查日志文件是否位于 Nginx.LogDirWhiteList 中的目录" -#~ "下。" +#~ msgstr "如果日志未被索引,请检查日志文件是否位于 Nginx.LogDirWhiteList 中的目录下。" #~ msgid "Docker Socket" #~ msgstr "Docker Socket" @@ -8602,11 +8618,9 @@ msgstr "零分配管道" #~ msgstr "保存错误 %{msg}" #~ msgid "" -#~ "When you enable/disable, delete, or save this stream, the nodes set in " -#~ "the Node Group and the nodes selected below will be synchronized." -#~ msgstr "" -#~ "启用/禁用、删除或保存此站点时,环境组中设置的节点和下面选择的节点将同步执" -#~ "行操作。" +#~ "When you enable/disable, delete, or save this stream, the nodes set in the " +#~ "Node Group and the nodes selected below will be synchronized." +#~ msgstr "启用/禁用、删除或保存此站点时,环境组中设置的节点和下面选择的节点将同步执行操作。" #~ msgid "KB" #~ msgstr "KB" @@ -8672,16 +8686,11 @@ msgstr "零分配管道" #~ msgid "Please upgrade the remote Nginx UI to the latest version" #~ msgstr "请将远程 Nginx UI 升级到最新版本" -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" -#~ msgstr "" -#~ "将 %{env_name} 上的 %{orig_path} 重命名为 %{new_path} 失败,响应:%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" +#~ msgstr "将 %{env_name} 上的 %{orig_path} 重命名为 %{new_path} 失败,响应:%{resp}" -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" -#~ msgstr "" -#~ "在 %{node} 上将站点 %{site} 重命名为 %{new_site} 失败,响应:%{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgstr "在 %{node} 上将站点 %{site} 重命名为 %{new_site} 失败,响应:%{resp}" #~ msgid "Save site %{site} to %{node} error, response: %{resp}" #~ msgstr "保存站点 %{site} 到 %{node} 错误,响应: %{resp}" @@ -8689,24 +8698,20 @@ msgstr "零分配管道" #~ msgid "" #~ "Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " #~ "remote Nginx UI to the latest version" -#~ msgstr "" -#~ "同步证书 %{cert_name} 到 %{env_name} 失败,请先将远程的 Nginx UI 升级到最" -#~ "新版本" +#~ msgstr "同步证书 %{cert_name} 到 %{env_name} 失败,请先将远程的 Nginx UI 升级到最新版本" -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "同步证书 %{cert_name} 到 %{env_name} 失败,响应:%{resp}" #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}" #~ msgstr "同步配置 %{config_name} 到 %{env_name} 失败,响应:%{resp}" #~ msgid "" -#~ "If you lose your mobile phone, you can use the recovery code to reset " -#~ "your 2FA." +#~ "If you lose your mobile phone, you can use the recovery code to reset your " +#~ "2FA." #~ msgstr "如果丢失了手机,可以使用恢复代码重置二步验证。" -#~ msgid "" -#~ "The recovery code is only displayed once, please save it in a safe place." +#~ msgid "The recovery code is only displayed once, please save it in a safe place." #~ msgstr "恢复密码只会显示一次,请妥善保存。" #~ msgid "Can't scan? Use text key binding" @@ -8721,9 +8726,7 @@ msgstr "零分配管道" #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" -#~ msgstr "" -#~ "将 %{env_name} 上的 %{orig_path} 重命名为 %{new_path} 失败,请将远程 " -#~ "Nginx UI 升级到最新版本" +#~ msgstr "将 %{env_name} 上的 %{orig_path} 重命名为 %{new_path} 失败,请将远程 Nginx UI 升级到最新版本" #~ msgid "Enable 2FA" #~ msgstr "启用二步验证" @@ -8794,9 +8797,8 @@ msgstr "零分配管道" #~ "Once the verification is complete, the records will be removed.\n" #~ "Please note that the unit of time configurations below are all in seconds." #~ msgstr "" -#~ "请填写您的 DNS 提供商提供的 API 认证凭证。我们将在你的域名的 DNS 记录中添" -#~ "加一个或多个 TXT 记录,以进行所有权验证。一旦验证完成,这些记录将被删除。" -#~ "请注意,下面的时间配置都是以秒为单位。" +#~ "请填写您的 DNS 提供商提供的 API 认证凭证。我们将在你的域名的 DNS 记录中添加一个或多个 TXT " +#~ "记录,以进行所有权验证。一旦验证完成,这些记录将被删除。请注意,下面的时间配置都是以秒为单位。" #~ msgid "Delete ID: %{id}" #~ msgstr "删除 ID: %{id}" @@ -8811,11 +8813,11 @@ msgstr "零分配管道" #~ msgstr "主题" #~ msgid "" -#~ "Such as Reload and Configs, regex can configure as `/api/nginx/reload|/" -#~ "api/nginx/test|/api/config/.+`, please see system api" +#~ "Such as Reload and Configs, regex can configure as " +#~ "`/api/nginx/reload|/api/nginx/test|/api/config/.+`, please see system api" #~ msgstr "" -#~ "`重载`和`配置管理`的操作同步正则可以配置为`/api/nginx/reload|/api/nginx/" -#~ "test|/api/config/.+`,详细请查看系统 API" +#~ "`重载`和`配置管理`的操作同步正则可以配置为`/api/nginx/reload|/api/nginx/test|/api/config/.+`" +#~ ",详细请查看系统 API" #~ msgid "SyncApiRegex" #~ msgstr "Api 正则表达式" @@ -8833,11 +8835,9 @@ msgstr "零分配管道" #~ msgstr "你想启用自动更新证书吗?" #~ msgid "" -#~ "We need to add the HTTPChallenge configuration to this file and reload " -#~ "the Nginx. Are you sure you want to continue?" -#~ msgstr "" -#~ "我们需要将 HTTPChallenge 的配置添加到这个文件中,并重新加载 Nginx。你确定" -#~ "要继续吗?" +#~ "We need to add the HTTPChallenge configuration to this file and reload the " +#~ "Nginx. Are you sure you want to continue?" +#~ msgstr "我们需要将 HTTPChallenge 的配置添加到这个文件中,并重新加载 Nginx。你确定要继续吗?" #~ msgid "Chat with ChatGPT" #~ msgstr "与 ChatGPT 聊天" @@ -8890,8 +8890,8 @@ msgstr "零分配管道" #~ "you do not have a certificate before, please click \"Getting Certificate " #~ "from Let's Encrypt\" first." #~ msgstr "" -#~ "系统将会每小时检测一次该域名证书,若距离上次签发已超过 1 个月,则将自动续" -#~ "签。
如果您之前没有证书,请先点击 \"从 Let's Encrypt 获取证书\"。" +#~ "系统将会每小时检测一次该域名证书,若距离上次签发已超过 1 个月,则将自动续签。
如果您之前没有证书,请先点击 \"从 Let's " +#~ "Encrypt 获取证书\"。" #~ msgid "Do you want to change the template to support the TLS?" #~ msgstr "你想要改变模板以支持 TLS 吗?" @@ -8906,15 +8906,12 @@ msgstr "零分配管道" #~ "The following values will only take effect if you have the corresponding " #~ "fields in your configuration file. The configuration filename cannot be " #~ "changed after it has been created." -#~ msgstr "" -#~ "只有在您的配置文件中有相应字段时,下列的配置才能生效。配置文件名称创建后不" -#~ "可修改。" +#~ msgstr "只有在您的配置文件中有相应字段时,下列的配置才能生效。配置文件名称创建后不可修改。" #~ msgid "This operation will lose the custom configuration." #~ msgstr "该操作将会丢失自定义配置。" -#~ msgid "" -#~ "Add site here first, then you can configure TLS on the domain edit page." +#~ msgid "Add site here first, then you can configure TLS on the domain edit page." #~ msgstr "在这里添加站点,完成后可进入编辑页面配置 TLS。" #~ msgid "Server Status" @@ -8930,24 +8927,19 @@ msgstr "零分配管道" #~ msgstr "仅用于 DNS 记录管理" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." -#~ msgstr "" -#~ "DNS 域名用于 NGINX UI 中的 DNS 记录管理,与 ACME DNS-01 证书挑战是两个不同" -#~ "的功能。" +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." +#~ msgstr "DNS 域名用于 NGINX UI 中的 DNS 记录管理,与 ACME DNS-01 证书挑战是两个不同的功能。" #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "目前,DNS 记录管理仅支持阿里云 DNS、腾讯云 DNS 和 Cloudflare。" #~ msgid "" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " #~ "Credentials and select them in certificate settings." -#~ msgstr "" -#~ "如需使用 ACME DNS-01 签发证书,请在 DNS > 凭证中创建 DNS 凭证,并在证书设" -#~ "置中选择它。" +#~ msgstr "如需使用 ACME DNS-01 签发证书,请在 DNS > 凭证中创建 DNS 凭证,并在证书设置中选择它。" -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains 仅使用已实现 DNS 记录管理的提供商。" +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "DNS Domains 仅使用已实现 DNS 记录管理的提供商。" diff --git a/app/src/language/zh_TW/app.po b/app/src/language/zh_TW/app.po index 1198ef43..dd60094f 100644 --- a/app/src/language/zh_TW/app.po +++ b/app/src/language/zh_TW/app.po @@ -9,11 +9,11 @@ msgstr "" "POT-Creation-Date: \n" "PO-Revision-Date: 2025-04-10 02:51+0000\n" "Last-Translator: 0xJacky \n" -"Language-Team: Chinese (Traditional Han script) \n" +"Language-Team: Chinese (Traditional Han script) " +"\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.10.4\n" @@ -36,8 +36,7 @@ msgid "[Nginx UI] Certificate successfully revoked" msgstr "[Nginx UI] 證書已成功撤銷" #: src/language/generate.ts:41 -msgid "" -"[Nginx UI] Certificate was used for server, reloading server TLS certificate" +msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate" msgstr "[Nginx UI] 憑證已用於伺服器,正在重新載入伺服器 TLS 憑證" #: src/language/generate.ts:42 @@ -115,21 +114,15 @@ msgstr "* 包含來自群組 %{groupName} 的節點和手動選擇的節點" #: src/views/nginx_log/components/IndexingSettingsModal.vue:166 msgid "" -"* Index files are stored in the \"log-index\" directory within your Nginx UI " -"config path by default." +"* Index files are stored in the \"log-index\" directory within your Nginx " +"UI config path by default." msgstr "* 索引文件預設存儲在您的 Nginx UI 配置路徑下的 \"log-index\" 目錄中。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:215 msgid "" "* Performance metrics measured on Apple M2 Pro (12-core) with 32GB RAM. " "Actual performance may vary based on your hardware configuration." -msgstr "" -"* 效能指標基於 Apple M2 Pro (12 核)和 32GB 記憶體測得。實際效能可能因您的硬" -"體配置而異。" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:30 -msgid "/etc/sudoers.d/nginx-ui (sudo visudo -f)" -msgstr "" +msgstr "* 效能指標基於 Apple M2 Pro (12 核)和 32GB 記憶體測得。實際效能可能因您的硬體配置而異。" #: src/views/site/site_list/SiteList.vue:191 msgid "%{count} sites selected" @@ -178,7 +171,7 @@ msgstr "24 小時 UV/PV 統計" msgid "2FA" msgstr "雙因素驗證" -#: src/views/user/UserProfile.vue:151 +#: src/views/user/UserProfile.vue:146 msgid "2FA Settings" msgstr "多重要素驗證設定" @@ -186,11 +179,22 @@ msgstr "多重要素驗證設定" msgid "4GB+ RAM recommended" msgstr "推薦 4GB 以上記憶體" -#: src/components/InspectConfig/InspectConfig.vue:37 +#: src/views/dns/DDNSManager.vue:86 msgid "" -"A required include file is missing from the sandbox or source configuration." +"A records at the same names are not managed in IPv6 only mode. They remain " +"unchanged in DNS." +msgstr "在僅 IPv6 模式下,不會管理同名 A 記錄。它們在 DNS 中保持不變。" + +#: src/components/InspectConfig/InspectConfig.vue:37 +msgid "A required include file is missing from the sandbox or source configuration." msgstr "沙盒或源配置中缺少必需的包含文件。" +#: src/views/dns/DDNSManager.vue:85 +msgid "" +"AAAA records at the same names are not managed in IPv4 only mode. They " +"remain unchanged in DNS." +msgstr "在僅 IPv4 模式下,同名的 AAAA 記錄不會被管理。它們在 DNS 中保持不變。" + #: src/routes/modules/system.ts:38 msgid "About" msgstr "關於" @@ -208,10 +212,6 @@ msgstr "存取記錄路徑不存在" msgid "Access Logs" msgstr "存取日誌" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:42 -msgid "ACL commands (run as root)" -msgstr "" - #: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:140 #: src/views/certificate/components/ACMEUserSelector.vue:64 msgid "ACME User" @@ -223,10 +223,10 @@ msgstr "操作" #: src/views/backup/AutoBackup/AutoBackup.vue:273 #: src/views/certificate/ACMEUser.vue:122 -#: src/views/certificate/CertificateList/certColumns.tsx:92 +#: src/views/certificate/CertificateList/certColumns.tsx:113 #: src/views/config/configColumns.tsx:51 #: src/views/dns/components/DNSRecordTable.vue:42 -#: src/views/dns/DDNSManager.vue:129 src/views/dns/DNSCredential.vue:71 +#: src/views/dns/DDNSManager.vue:180 src/views/dns/DNSCredential.vue:71 #: src/views/dns/DNSDomainList.vue:242 src/views/namespace/columns.ts:97 #: src/views/nginx_log/NginxLogList.vue:338 src/views/node/nodeColumns.tsx:96 #: src/views/notification/notificationColumns.tsx:72 @@ -268,7 +268,8 @@ msgstr "新增設定" msgid "Add Directive Below" msgstr "在下方新增指令" -#: src/views/certificate/components/DNSIssueCertificate.vue:159 +#: src/views/certificate/components/DNSIssueCertificate.vue:197 +#: src/views/certificate/components/SelfSignedCertFields.vue:37 msgid "Add Domain" msgstr "添加域名" @@ -276,6 +277,14 @@ msgstr "添加域名" msgid "Add Header" msgstr "添加標頭" +#: src/views/certificate/components/SelfSignedCertFields.vue:44 +msgid "Add IP Address" +msgstr "新增 IP 位址" + +#: src/components/StringListInput/StringListInput.vue:48 +msgid "Add Item" +msgstr "新增項目" + #: src/components/NgxConfigEditor/LocationEditor.vue:143 #: src/components/NgxConfigEditor/LocationEditor.vue:170 msgid "Add Location" @@ -346,11 +355,6 @@ msgstr "之後,請重新整理此頁面並再次點擊新增通行金鑰。" msgid "All" msgstr "全部" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:73 -#, fuzzy -msgid "All checks passed — you may save the configuration." -msgstr "Nginx 未能驗證配置。" - #: src/views/system/Licenses.vue:152 msgid "All Components" msgstr "所有組件" @@ -360,7 +364,7 @@ msgstr "所有組件" msgid "All Recovery Codes Have Been Used" msgstr "所有恢復代碼已用完" -#: src/views/certificate/components/DNSIssueCertificate.vue:164 +#: src/views/certificate/components/DNSIssueCertificate.vue:200 msgid "" "All selected subdomains must belong to the same DNS Provider, otherwise the " "certificate application will fail." @@ -370,9 +374,7 @@ msgstr "所有選定的子網域名稱必須屬於同一 DNS 提供商,否則 msgid "" "Alternatively, if you cannot download the database, you can manually place " "GeoLite2-City.mmdb in the same directory as app.ini." -msgstr "" -"或者,如果您無法下載數據庫,可以手動將 GeoLite2-City.mmdb 文件放置於與 app." -"ini 相同的目錄中。" +msgstr "或者,如果您無法下載數據庫,可以手動將 GeoLite2-City.mmdb 文件放置於與 app.ini 相同的目錄中。" #: src/constants/errors/nginx_log.ts:10 msgid "Analytics service not available" @@ -383,8 +385,7 @@ msgid "Any" msgstr "任意" #: src/components/AutoCertForm/AutoCertForm.vue:209 -msgid "" -"Any reachable IP address can be used with private Certificate Authorities" +msgid "Any reachable IP address can be used with private Certificate Authorities" msgstr "任何可訪問的 IP 地址均可用於私有證書頒發機構" #: src/views/preference/tabs/OpenAISettings.vue:96 @@ -411,10 +412,6 @@ msgstr "API 類型" msgid "App" msgstr "應用" -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:36 -msgid "Append to ~nginxui/.ssh/authorized_keys" -msgstr "" - #: src/language/curd.ts:65 msgid "Apply" msgstr "應用" @@ -427,7 +424,7 @@ msgstr "架構" msgid "Are you sure to delete this banned IP immediately?" msgstr "您確定要刪除這個被停用的 IP 嗎?" -#: src/views/dns/DDNSManager.vue:276 +#: src/views/dns/DDNSManager.vue:349 msgid "Are you sure to delete this DDNS config?" msgstr "您確定要刪除此 DDNS 設定嗎?" @@ -439,7 +436,7 @@ msgstr "您確定要刪除這個被停用的通行金鑰嗎?" msgid "Are you sure to delete this record?" msgstr "確定要刪除這條記錄嗎?" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:155 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:158 msgid "Are you sure to generate new recovery codes?" msgstr "您確定要生成新的復原代碼嗎?" @@ -505,7 +502,7 @@ msgstr "至少 20GB 可用磁碟空間" msgid "" "Atlas Cloud is OpenAI-compatible. Use https://api.atlascloud.ai/v1 and an " "Atlas Cloud API key." -msgstr "" +msgstr "Atlas Cloud 相容 OpenAI。使用 https://api.atlascloud.ai/v1 和 Atlas Cloud API 金鑰。" #: src/components/SelfCheck/SelfCheck.vue:85 msgid "Attempt to fix" @@ -515,12 +512,11 @@ msgstr "嘗試修復" msgid "Attempts" msgstr "嘗試次數" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:59 #: src/views/preference/Preference.vue:83 msgid "Auth" msgstr "身份驗證" -#: src/components/TwoFA/Authorization.vue:109 +#: src/components/TwoFA/Authorization.vue:117 msgid "Authenticate with a passkey" msgstr "使用通行金鑰認證" @@ -528,11 +524,6 @@ msgstr "使用通行金鑰認證" msgid "Authenticating..." msgstr "正在驗證..." -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:39 -#, fuzzy -msgid "Authentication method" -msgstr "正在驗證..." - #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:122 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:96 msgid "Author" @@ -580,15 +571,15 @@ msgstr "自動刷新已停用" msgid "Auto refresh enabled" msgstr "自動刷新已啟用" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:134 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:93 msgid "Auto-renewal disabled for %{name}" msgstr "已關閉 %{name} 的自動續簽" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:127 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:86 msgid "Auto-renewal enabled for %{name}" msgstr "已啟用 %{name} 的自動續簽" -#: src/views/certificate/components/RenewCert.vue:54 +#: src/views/certificate/components/RenewCert.vue:47 #: src/views/site/site_edit/components/Cert/IssueCert.vue:103 msgid "AutoCert is running, please wait..." msgstr "AutoCert 正在執行中,請稍候..." @@ -703,8 +694,7 @@ msgid "Backup task %{backup_name} completed successfully, file: %{file_path}" msgstr "備份任務 %{backup_name} 已完成,檔案:%{file_path}" #: src/components/Notification/notifications.ts:34 -msgid "" -"Backup task %{backup_name} failed during storage upload, error: %{error}" +msgid "Backup task %{backup_name} failed during storage upload, error: %{error}" msgstr "備份任務 %{backup_name} 在儲存上傳過程中失敗,錯誤:%{error}" #: src/components/Notification/notifications.ts:30 @@ -766,12 +756,6 @@ msgstr "批次升級" msgid "Belows are selected items that you want to batch modify" msgstr "以下是您要批次修改的選定項目" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:57 -msgid "" -"bind-mount cannot reach remote filesystems — config editing, log viewing and " -"certificate management will fail." -msgstr "" - #: src/constants/errors/nginx.ts:3 msgid "Block is nil" msgstr "區塊為空" @@ -796,9 +780,7 @@ msgid "" "By enabling advanced indexing, you acknowledge that your system meets the " "requirements and understand the performance implications. This will start " "indexing existing log files immediately." -msgstr "" -"啟用進階索引即表示您確認系統滿足要求並瞭解效能影響。這將立即開始對現有日誌檔" -"案進行索引。" +msgstr "啟用進階索引即表示您確認系統滿足要求並瞭解效能影響。這將立即開始對現有日誌檔案進行索引。" #: src/views/certificate/ACMEUser.vue:39 msgid "CA Dir" @@ -851,23 +833,21 @@ msgstr "CADir" msgid "" "Calculated based on worker_processes * worker_connections. Actual " "performance depends on hardware, configuration, and workload" -msgstr "" -"基於 worker_processes * worker_connections 計算得出。實際效能取決於硬體、配置" -"和工作負載" +msgstr "基於 worker_processes * worker_connections 計算得出。實際效能取決於硬體、配置和工作負載" #: src/components/LLM/ChatMessage.vue:245 #: src/components/NgxConfigEditor/NgxServer.vue:61 #: src/components/NgxConfigEditor/NgxUpstream.vue:32 src/language/curd.ts:37 #: src/views/config/components/Delete.vue:98 #: src/views/dashboard/components/SiteHealthCheckModal.vue:710 -#: src/views/dns/DDNSManager.vue:334 src/views/dns/DNSRecordManager.vue:219 +#: src/views/dns/DDNSManager.vue:438 src/views/dns/DNSRecordManager.vue:219 #: src/views/nginx_log/components/IndexingSettingsModal.vue:101 #: src/views/nginx_log/indexing/IndexManagement.vue:33 #: src/views/nginx_log/indexing/IndexManagement.vue:59 #: src/views/preference/components/AuthSettings/Passkey.vue:142 #: src/views/site/components/SiteStatusSelect.vue:124 #: src/views/site/site_edit/components/Cert/IssueCert.vue:53 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:184 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:143 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21 #: src/views/site/site_list/SiteList.vue:102 #: src/views/stream/components/StreamStatusSelect.vue:62 @@ -957,6 +937,10 @@ msgstr "證書內容和私鑰內容不能為空" msgid "Certificate decode error" msgstr "證書解碼錯誤" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:54 +msgid "Certificate directives added to the editor; review and save when ready." +msgstr "憑證指令已新增至編輯器;準備就緒後請檢閱並儲存。" + #: src/components/Notification/notifications.ts:53 msgid "Certificate Expiration Notice" msgstr "憑證到期通知" @@ -975,6 +959,14 @@ msgstr "憑證即將到期" msgid "Certificate files downloaded successfully" msgstr "憑證檔案下載成功" +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:57 +msgid "Certificate issuance component is not ready" +msgstr "憑證簽發元件未就緒" + +#: src/views/certificate/components/RetryCert.vue:33 +msgid "Certificate issued successfully" +msgstr "憑證簽發成功" + #: src/views/certificate/components/CertificateDownload.vue:42 msgid "Certificate name cannot be empty" msgstr "證書名稱不能為空" @@ -1009,17 +1001,18 @@ msgid "Certificate revoked successfully" msgstr "證書撤銷成功" #: src/views/certificate/components/AutoCertManagement.vue:67 -#: src/views/site/site_edit/components/Cert/Cert.vue:58 +#: src/views/certificate/components/SelfSignedCertManagement.vue:25 +#: src/views/site/site_edit/components/Cert/Cert.vue:59 msgid "Certificate Status" msgid_plural "Certificates Status" msgstr[0] "憑證狀態" -#: src/views/certificate/components/DNSIssueCertificate.vue:112 +#: src/views/certificate/components/DNSIssueCertificate.vue:168 msgid "Certificate Type" msgstr "證書類型" #: src/routes/modules/certificates.ts:11 -#: src/views/certificate/CertificateList/Certificate.vue:19 +#: src/views/certificate/CertificateList/Certificate.vue:20 msgid "Certificates" msgstr "憑證" @@ -1040,11 +1033,11 @@ msgstr "驗證方式" msgid "Change Certificate" msgstr "更換憑證" -#: src/views/user/UserProfile.vue:181 +#: src/views/user/UserProfile.vue:176 msgid "Change Password" msgstr "更改密碼" -#: src/views/site/site_edit/components/Cert/Cert.vue:77 +#: src/views/site/site_edit/components/Cert/Cert.vue:78 msgid "Changed Certificate" msgid_plural "Changed Certificates" msgstr[0] "變更後憑證" @@ -1083,34 +1076,30 @@ msgstr "檢查網站圖示" #: src/language/generate.ts:6 msgid "" "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -"Docker Image, please make sure the docker socket is mounted like this: `-v /" -"var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses /var/" -"run/docker.sock to communicate with the host Docker Engine via Docker Client " -"API. This feature is used to control Nginx in another container and perform " -"container replacement rather than binary replacement during OTA upgrades of " -"Nginx UI to ensure container dependencies are also upgraded. If you don't " -"need this feature, please add the environment variable " +"Docker Image, please make sure the docker socket is mounted like this: `-v " +"/var/run/docker.sock:/var/run/docker.sock`. Nginx UI official image uses " +"/var/run/docker.sock to communicate with the host Docker Engine via Docker " +"Client API. This feature is used to control Nginx in another container and " +"perform container replacement rather than binary replacement during OTA " +"upgrades of Nginx UI to ensure container dependencies are also upgraded. If " +"you don't need this feature, please add the environment variable " "NGINX_UI_IGNORE_DOCKER_SOCKET=true to the container." msgstr "" -"檢查 /var/run/docker.sock 是否存在。如果您使用的是 Nginx UI 官方 Docker 映" -"像,請確保以這種方式掛載 Docker 通訊端:`-v /var/run/docker.sock:/var/run/" -"docker.sock`。Nginx UI 官方映像使用 /var/run/docker.sock 通過 Docker Client " -"API 與主機 Docker Engine 通訊。此功能用於在另一個容器中控制 Nginx,並在 " -"Nginx UI 的 OTA 升級期間執行容器替換而非二進位替換,以確保容器依賴項也得到升" -"級。如果您不需要此功能,請向容器新增環境變數 " +"檢查 /var/run/docker.sock 是否存在。如果您使用的是 Nginx UI 官方 Docker 映像,請確保以這種方式掛載 " +"Docker 通訊端:`-v /var/run/docker.sock:/var/run/docker.sock`。Nginx UI 官方映像使用 " +"/var/run/docker.sock 通過 Docker Client API 與主機 Docker Engine " +"通訊。此功能用於在另一個容器中控制 Nginx,並在 Nginx UI 的 OTA " +"升級期間執行容器替換而非二進位替換,以確保容器依賴項也得到升級。如果您不需要此功能,請向容器新增環境變數 " "NGINX_UI_IGNORE_DOCKER_SOCKET=true。" #: src/components/SelfCheck/tasks/frontend/https-check.ts:14 msgid "" "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and " "prevents using Passkeys and clipboard features" -msgstr "" -"檢查是否啟用了 HTTPS。在 localhost 之外使用 HTTP 不安全,並且會阻止使用 " -"Passkeys 和剪貼簿功能" +msgstr "檢查是否啟用了 HTTPS。在 localhost 之外使用 HTTP 不安全,並且會阻止使用 Passkeys 和剪貼簿功能" #: src/language/generate.ts:8 -msgid "" -"Check if the conf.d directory is under the nginx configuration directory" +msgid "Check if the conf.d directory is under the nginx configuration directory" msgstr "檢查 conf.d 目錄是否位於 nginx 配置目錄下" #: src/language/generate.ts:7 @@ -1120,23 +1109,21 @@ msgid "" "indexing. You can download it from the Preference page or manually place " "GeoLite2-City.mmdb in the same directory as app.ini" msgstr "" -"當啟用日誌索引時,檢查 GeoLite2 資料庫是否可用。GeoLite2 資料庫是日誌索引中地" -"理 IP 分析所必需的。您可以在偏好設置頁面下載它,或者手動將 GeoLite2-City." -"mmdb 放在與 app.ini 相同的目錄中" +"當啟用日誌索引時,檢查 GeoLite2 資料庫是否可用。GeoLite2 資料庫是日誌索引中地理 IP " +"分析所必需的。您可以在偏好設置頁面下載它,或者手動將 GeoLite2-City.mmdb 放在與 app.ini 相同的目錄中" #: src/language/generate.ts:10 msgid "" -"Check if the nginx access log path exists. By default, this path is obtained " -"from 'nginx -V'. If it cannot be obtained or the obtained path does not " -"point to a valid, existing file, an error will be reported. In this case, " -"you need to modify the configuration file to specify the access log path." -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#accesslogpath" +"Check if the nginx access log path exists. By default, this path is " +"obtained from 'nginx -V'. If it cannot be obtained or the obtained path " +"does not point to a valid, existing file, an error will be reported. In " +"this case, you need to modify the configuration file to specify the access " +"log path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" msgstr "" -"檢查 nginx 訪問日誌路徑是否存在。預設情況下,此路徑從 'nginx -V' 獲取。如果無" -"法獲取或獲取的路徑未指向有效的現有文件,將報告錯誤。在這種情況下,您需要修改" -"配置文件以指定訪問日誌路徑。更多詳情請參閱文檔:https://nginxui.com/zh_CN/" -"guide/config-nginx.html#accesslogpath" +"檢查 nginx 訪問日誌路徑是否存在。預設情況下,此路徑從 'nginx -V' " +"獲取。如果無法獲取或獲取的路徑未指向有效的現有文件,將報告錯誤。在這種情況下,您需要修改配置文件以指定訪問日誌路徑。更多詳情請參閱文檔:https://" +"nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath" #: src/language/generate.ts:11 msgid "Check if the nginx configuration directory exists" @@ -1152,25 +1139,24 @@ msgid "" "from 'nginx -V'. If it cannot be obtained or the obtained path does not " "point to a valid, existing file, an error will be reported. In this case, " "you need to modify the configuration file to specify the error log path. " -"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-" -"nginx.html#errorlogpath" +"Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath" msgstr "" -"檢查 nginx 錯誤日誌路徑是否存在。預設情況下,該路徑從 'nginx -V' 獲取。如果無" -"法獲取或獲取的路徑未指向有效的現有文件,將報錯。此時需要修改配置文件以指定錯" -"誤日誌路徑。詳情請參閱文件:https://nginxui.com/zh_CN/guide/config-nginx." -"html#errorlogpath" +"檢查 nginx 錯誤日誌路徑是否存在。預設情況下,該路徑從 'nginx -V' " +"獲取。如果無法獲取或獲取的路徑未指向有效的現有文件,將報錯。此時需要修改配置文件以指定錯誤日誌路徑。詳情請參閱文件:https://nginxui." +"com/zh_CN/guide/config-nginx.html#errorlogpath" #: src/language/generate.ts:9 msgid "" "Check if the nginx PID path exists. By default, this path is obtained from " "'nginx -V'. If it cannot be obtained, an error will be reported. In this " "case, you need to modify the configuration file to specify the Nginx PID " -"path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/" -"config-nginx.html#pidpath" +"path.Refer to the docs for more details: " +"https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" msgstr "" -"檢查 Nginx PID 路徑是否存在。預設情況下,該路徑是從 'nginx -V' 獲取的。如果無" -"法獲取,將會報錯。在這種情況下,您需要修改設定檔以指定 Nginx PID 路徑。更多詳" -"情請參閱文件:https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" +"檢查 Nginx PID 路徑是否存在。預設情況下,該路徑是從 'nginx -V' " +"獲取的。如果無法獲取,將會報錯。在這種情況下,您需要修改設定檔以指定 Nginx PID " +"路徑。更多詳情請參閱文件:https://nginxui.com/zh_CN/guide/config-nginx.html#pidpath" #: src/language/generate.ts:14 msgid "Check if the nginx sbin path exists" @@ -1196,10 +1182,9 @@ msgstr "檢查 sites-available 和 sites-enabled 目錄是否位於 nginx 配置 #: src/language/generate.ts:19 msgid "" -"Check if the streams-available and streams-enabled directories are under the " -"nginx configuration directory" -msgstr "" -"檢查 streams-available 和 streams-enabled 目錄是否位於 nginx 配置目錄下" +"Check if the streams-available and streams-enabled directories are under " +"the nginx configuration directory" +msgstr "檢查 streams-available 和 streams-enabled 目錄是否位於 nginx 配置目錄下" #: src/views/dashboard/components/SiteHealthCheckModal.vue:625 msgid "Check Interval (seconds)" @@ -1218,6 +1203,10 @@ msgstr "中國地圖" msgid "Cipher text is too short" msgstr "加密文字過短" +#: src/views/dns/DDNSManager.vue:393 +msgid "Clean up conflicting records" +msgstr "清理衝突記錄" + #: src/language/constants.ts:13 msgid "Cleaning environment variables" msgstr "清理環境變數" @@ -1427,11 +1416,11 @@ msgstr "設定名稱" msgid "Configurations" msgstr "設定" -#: src/views/dns/DDNSManager.vue:273 +#: src/views/dns/DDNSManager.vue:346 msgid "Configure" msgstr "配置" -#: src/views/dns/DDNSManager.vue:301 +#: src/views/dns/DDNSManager.vue:374 msgid "Configure DDNS" msgstr "配置 DDNS" @@ -1443,7 +1432,7 @@ msgstr "設定 SSL" msgid "Confirm Delete" msgstr "確認刪除" -#: src/views/user/UserProfile.vue:204 +#: src/views/user/UserProfile.vue:199 msgid "Confirm New Password" msgstr "確認新密碼" @@ -1456,11 +1445,6 @@ msgstr "需要確認" msgid "Connected" msgstr "已連線" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:62 -#, fuzzy -msgid "Connection" -msgstr "已連線" - #: src/views/dashboard/NginxDashBoard.vue:100 msgid "Connection error, trying to reconnect..." msgstr "連線錯誤,正在嘗試重新連線..." @@ -1473,15 +1457,6 @@ msgstr "此終端連接已斷開。請根據需要重新整理。" msgid "Connection timeout period" msgstr "連接逾時期限" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:60 -#, fuzzy -msgid "Container" -msgstr "內容" - -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:24 -msgid "Container side — choose one of the three formats below" -msgstr "" - #: src/constants/errors/docker.ts:7 msgid "Container status unknown" msgstr "容器狀態未知" @@ -1494,8 +1469,7 @@ msgstr "內容" #: src/components/SensitiveString/SensitiveInput.vue:62 #: src/components/SensitiveString/SensitiveString.vue:71 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copied" msgstr "已複製" @@ -1506,19 +1480,13 @@ msgstr "已複製!" #: src/components/SensitiveString/SensitiveInput.vue:85 #: src/components/SensitiveString/SensitiveString.vue:100 #: src/views/backup/components/BackupCreator.vue:128 -#: src/views/preference/components/NginxHostSetup/CodeBlock.vue:31 msgid "Copy" msgstr "複製" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:122 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:125 msgid "Copy Codes" msgstr "恢復碼" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:60 -#, fuzzy -msgid "Copy fix" -msgstr "複製" - #: src/views/system/Upgrade.vue:162 msgid "Core Upgrade" msgstr "核心升級" @@ -1597,8 +1565,7 @@ msgstr "建立記錄" msgid "" "Create system backups including Nginx configuration and Nginx UI settings. " "Backup files will be automatically downloaded to your computer." -msgstr "" -"建立系統備份,包括 Nginx 設定與 Nginx UI 設定。備份檔案將自動下載至您的電腦。" +msgstr "建立系統備份,包括 Nginx 設定與 Nginx UI 設定。備份檔案將自動下載至您的電腦。" #: src/views/backup/AutoBackup/AutoBackup.vue:229 #: src/views/namespace/columns.ts:85 @@ -1618,7 +1585,7 @@ msgid "Creating client facilitates communication with the CA server" msgstr "建立客戶端方便與 CA 伺服器通訊" #: src/components/AutoCertForm/DNSChallenge.vue:130 -#: src/views/dns/DDNSManager.vue:103 src/views/dns/DNSDomainList.vue:139 +#: src/views/dns/DDNSManager.vue:154 src/views/dns/DNSDomainList.vue:139 msgid "Credential" msgstr "認證" @@ -1650,7 +1617,7 @@ msgstr "目前使用中連線數" msgid "Current Content" msgstr "目前內容" -#: src/views/user/UserProfile.vue:186 +#: src/views/user/UserProfile.vue:181 msgid "Current Password" msgstr "當前密碼" @@ -1676,11 +1643,11 @@ msgstr "自訂 cron 表達式" msgid "Custom Directory" msgstr "自訂目錄" -#: src/views/certificate/components/DNSIssueCertificate.vue:134 +#: src/views/certificate/components/DNSIssueCertificate.vue:193 msgid "Custom Domains" msgstr "自訂網域" -#: src/views/certificate/components/DNSIssueCertificate.vue:118 +#: src/views/certificate/components/DNSIssueCertificate.vue:174 msgid "Custom Domains Certificate" msgstr "自訂網域證書" @@ -1741,15 +1708,15 @@ msgstr "資料庫檔案未找到" msgid "DDNS" msgstr "DDNS" -#: src/views/dns/DDNSManager.vue:195 +#: src/views/dns/DDNSManager.vue:266 msgid "DDNS config deleted" msgstr "DDNS 配置已刪除" -#: src/views/dns/DDNSManager.vue:212 +#: src/views/dns/DDNSManager.vue:285 msgid "DDNS Overview" msgstr "DDNS 概覽" -#: src/views/dns/DDNSManager.vue:180 +#: src/views/dns/DDNSManager.vue:239 msgid "DDNS saved" msgstr "DDNS 已儲存" @@ -1778,7 +1745,7 @@ msgstr "定義共享記憶體區域名稱和大小,例如 proxy_cache:10m" #: src/views/config/components/Delete.vue:97 #: src/views/config/ConfigList.vue:199 #: src/views/dns/components/DNSRecordTable.vue:107 -#: src/views/dns/DDNSManager.vue:290 src/views/site/site_list/SiteList.vue:177 +#: src/views/dns/DDNSManager.vue:363 src/views/site/site_list/SiteList.vue:177 #: src/views/stream/StreamList.vue:110 msgid "Delete" msgstr "刪除" @@ -1863,8 +1830,8 @@ msgstr "演示" #: src/views/terminal/Terminal.vue:212 msgid "" -"Demo mode is enabled. This terminal only allows a small set of safe read-" -"only commands." +"Demo mode is enabled. This terminal only allows a small set of safe " +"read-only commands." msgstr "演示模式已啟用。此終端僅允許執行少量安全的唯讀命令。" #: src/views/config/components/ConfigRightPanel/Basic.vue:60 @@ -1976,7 +1943,7 @@ msgstr "禁用" msgid "Disable" msgstr "停用" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:136 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:95 msgid "Disable auto-renewal failed for %{name}" msgstr "停用 %{name} 的自動續期失敗" @@ -2031,7 +1998,7 @@ msgid "Disable stream %{name} from %{node} successfully" msgstr "已成功從 %{node} 停用串流 %{name}" #: src/views/backup/AutoBackup/AutoBackup.vue:175 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:60 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:60 #: src/views/node/nodeColumns.tsx:78 #: src/views/preference/tabs/HTTPSettings.vue:24 #: src/views/preference/tabs/NodeSettings.vue:25 @@ -2150,19 +2117,17 @@ msgstr "您想要 %{action} 這個網站嗎?" msgid "Do you want to %{action} this stream?" msgstr "您要 %{action} 此串流嗎?" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:180 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:139 msgid "Do you want to disable auto-cert renewal?" msgstr "您要停用自動憑證續訂嗎?" #: src/views/site/site_list/SiteList.vue:89 -#, fuzzy msgid "Do you want to disable selected sites?" -msgstr "您想停用這個網站嗎?" +msgstr "您要停用選取的站台嗎?" #: src/views/site/site_list/SiteList.vue:88 -#, fuzzy msgid "Do you want to enable selected sites?" -msgstr "您要啟用此 Stream 嗎?" +msgstr "您要啟用所選站台嗎?" #: src/views/site/site_edit/components/Cert/IssueCert.vue:46 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14 @@ -2181,10 +2146,6 @@ msgstr "您要移除這個 Upstream 嗎?" msgid "Docker client not initialized" msgstr "Docker 客戶端未初始化" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:44 -msgid "docker run" -msgstr "" - #: src/language/generate.ts:21 msgid "Docker socket exists" msgstr "Docker 套接字存在" @@ -2193,10 +2154,6 @@ msgstr "Docker 套接字存在" msgid "Docker socket not exist" msgstr "Docker 通訊端不存在" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:28 -msgid "docker-compose snippet" -msgstr "" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:88 #: src/components/NgxConfigEditor/directive/DirectiveDocuments.vue:16 msgid "Document" @@ -2207,11 +2164,15 @@ msgstr[0] "檔案" msgid "Document Count" msgstr "文件數量" -#: src/views/certificate/components/DNSIssueCertificate.vue:124 -#: src/views/dns/DDNSManager.vue:98 src/views/dns/DNSDomainList.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:183 +#: src/views/dns/DDNSManager.vue:149 src/views/dns/DNSDomainList.vue:128 msgid "Domain" msgstr "網域" +#: src/views/certificate/components/SelfSignedCertFields.vue:33 +msgid "Domains" +msgstr "網域" + #: src/views/certificate/components/AutoCertManagement.vue:55 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "網域列表為空,請嘗試重新開啟 %{config} 的自動憑證" @@ -2257,9 +2218,7 @@ msgstr "試運轉模式已啟用" msgid "" "Due to the security policies of some browsers, you cannot use passkeys on " "non-HTTPS websites, except when running on localhost." -msgstr "" -"基於部分瀏覽器的安全政策,您無法在未啟用 HTTPS 網站,特別是 localhost 上使用" -"通行金鑰。" +msgstr "基於部分瀏覽器的安全政策,您無法在未啟用 HTTPS 網站,特別是 localhost 上使用通行金鑰。" #: src/components/LLM/LLMSessionTabs.vue:287 #: src/components/LLM/LLMSessionTabs.vue:378 @@ -2357,7 +2316,7 @@ msgstr "啟用高級索引" msgid "Enable Advanced Log Indexing" msgstr "啟用進階日誌索引" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:129 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:88 msgid "Enable auto-renewal failed for %{name}" msgstr "啟用 %{name} 自動續簽失敗" @@ -2369,7 +2328,7 @@ msgstr "啟用代碼補全" msgid "Enable compression for content transfer" msgstr "啟用內容傳輸壓縮" -#: src/views/dns/DDNSManager.vue:308 +#: src/views/dns/DDNSManager.vue:381 msgid "Enable DDNS" msgstr "啟用 DDNS" @@ -2466,7 +2425,7 @@ msgid "Enable TOTP" msgstr "啟用 TOTP" #: src/views/backup/AutoBackup/AutoBackup.vue:174 -#: src/views/dns/DDNSManager.vue:247 src/views/node/nodeColumns.tsx:69 +#: src/views/dns/DDNSManager.vue:320 src/views/node/nodeColumns.tsx:69 #: src/views/node/nodeColumns.tsx:75 #: src/views/preference/components/ExternalNotify/columns.tsx:47 #: src/views/preference/tabs/HTTPSettings.vue:24 @@ -2501,9 +2460,7 @@ msgid "" "Enabling advanced log indexing will consume significant computational " "resources including CPU and memory. Please ensure your system meets the " "minimum requirements before proceeding." -msgstr "" -"啟用進階日誌索引將消耗大量計算資源,包括 CPU 和記憶體。請確保您的系統滿足最低" -"要求後再繼續。" +msgstr "啟用進階日誌索引將消耗大量計算資源,包括 CPU 和記憶體。請確保您的系統滿足最低要求後再繼續。" #: src/views/site/site_edit/components/Cert/IssueCert.vue:95 msgid "Encrypt website with Let's Encrypt" @@ -2517,10 +2474,19 @@ msgstr "結束" msgid "End Date" msgstr "結束日期" -#: src/views/certificate/components/DNSIssueCertificate.vue:143 +#: src/views/certificate/components/SelfSignedCertFields.vue:30 +msgid "Enter certificate name" +msgstr "輸入憑證名稱" + +#: src/views/certificate/components/DNSIssueCertificate.vue:196 +#: src/views/certificate/components/SelfSignedCertFields.vue:36 msgid "Enter domain name" msgstr "輸入網域名稱" +#: src/views/certificate/components/SelfSignedCertFields.vue:43 +msgid "Enter IP address" +msgstr "輸入 IP 位址" + #: src/components/AutoCertForm/AutoCertForm.vue:183 msgid "Enter server IP address (e.g., 203.0.113.1 or 2001:db8::1)" msgstr "輸入伺服器 IP 位址(例如:203.0.113.1 或 2001:db8::1)" @@ -2535,7 +2501,7 @@ msgid "" "the config directory hidden file to unlock setup." msgstr "輸入安裝腳本顯示或在配置目錄隱藏檔案中找到的一次性安裝密鑰以解鎖設定。" -#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/DNSIssueCertificate.vue:187 msgid "Enter your domain" msgstr "輸入您的域名" @@ -2547,7 +2513,7 @@ msgstr "環境配置為空" msgid "Environment variables cleaned" msgstr "環境變數已清理" -#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:23 +#: src/components/InspectConfig/InspectConfig.vue:30 src/constants/index.ts:24 #: src/views/nginx_log/NginxLogList.vue:249 #: src/views/notification/notificationColumns.tsx:14 msgid "Error" @@ -2580,8 +2546,8 @@ msgstr "錯誤日誌" #: src/views/nginx_log/structured/StructuredLogViewer.vue:675 msgid "" -"Error logs do not support structured analysis as they contain free-form text " -"messages." +"Error logs do not support structured analysis as they contain free-form " +"text messages." msgstr "錯誤日誌不支援結構化分析,因為它們包含自由格式的文字訊息。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:272 @@ -2629,7 +2595,7 @@ msgid "Expected Text" msgstr "預期文本" #: src/components/CertInfo/CertInfo.vue:31 -#: src/views/certificate/CertificateList/certColumns.tsx:80 +#: src/views/certificate/CertificateList/certColumns.tsx:103 msgid "Expired" msgstr "已過期" @@ -2649,17 +2615,11 @@ msgstr "外部帳戶綁定 HMAC 金鑰(可選)。應為 Base64 URL 編碼格 #: src/views/certificate/ACMEUser.vue:83 msgid "" -"External Account Binding Key ID (optional). Required for some ACME providers " -"like ZeroSSL." -msgstr "" -"外部帳戶綁定密鑰 ID (可選)。某些 ACME 提供商(如 ZeroSSL)需要此信息。" +"External Account Binding Key ID (optional). Required for some ACME " +"providers like ZeroSSL." +msgstr "外部帳戶綁定密鑰 ID (可選)。某些 ACME 提供商(如 ZeroSSL)需要此信息。" -#: src/views/preference/tabs/NginxSettings.vue:89 -#, fuzzy -msgid "External Container" -msgstr "外部 Docker 容器" - -#: src/views/preference/tabs/NginxSettings.vue:102 +#: src/views/preference/tabs/NginxSettings.vue:58 msgid "External Docker Container" msgstr "外部 Docker 容器" @@ -2682,6 +2642,7 @@ msgstr "取得憑證失敗" #: src/views/backup/AutoBackup/AutoBackup.vue:196 #: src/views/backup/AutoBackup/AutoBackup.vue:221 +#: src/views/certificate/CertificateList/certColumns.tsx:87 msgid "Failed" msgstr "失敗" @@ -2921,6 +2882,11 @@ msgstr "生成 AES 金鑰失敗:{0}" msgid "Failed to generate initialization vector: {0}" msgstr "無法生成初始化向量:{0}" +#: src/views/certificate/components/DNSIssueCertificate.vue:146 +#: src/views/certificate/components/SelfSignedCertForm.vue:69 +msgid "Failed to generate self-signed certificate" +msgstr "產生自簽署憑證失敗" + #: src/language/constants.ts:5 msgid "Failed to get certificate information" msgstr "取得憑證資訊失敗" @@ -3250,22 +3216,19 @@ msgid "For commercial or professional use, contact" msgstr "如需商業或專業用途,請聯繫" #: src/views/nginx_log/structured/StructuredLogViewer.vue:677 -msgid "" -"For error logs, please use the Raw Log Viewer for better viewing experience." +msgid "For error logs, please use the Raw Log Viewer for better viewing experience." msgstr "對於錯誤日誌,請使用原始日誌檢視器以獲得更好的檢視體驗。" #: src/components/AutoCertForm/AutoCertForm.vue:140 msgid "" "For IP-based certificate configurations, only HTTP-01 challenge method is " "supported. DNS-01 challenge is not compatible with IP-based certificates." -msgstr "" -"對於基於 IP 的證書配置,僅支援 HTTP-01 驗證方法。DNS-01 驗證與基於 IP 的證書" -"不相容。" +msgstr "對於基於 IP 的證書配置,僅支援 HTTP-01 驗證方法。DNS-01 驗證與基於 IP 的證書不相容。" #: src/components/AutoCertForm/AutoCertForm.vue:188 msgid "" -"For IP-based certificates, please specify the server IP address that will be " -"included in the certificate." +"For IP-based certificates, please specify the server IP address that will " +"be included in the certificate." msgstr "對於基於 IP 的證書,請指定將包含在證書中的伺服器 IP 地址。" #: src/constants/errors/middleware.ts:4 @@ -3310,12 +3273,14 @@ msgstr "前端除錯模式已啟用。密鑰驗證在本地模擬,不會發送 #: src/views/install/components/InstallForm.vue:64 msgid "" -"Frontend debug mode: install flow completed without sending a backend request" +"Frontend debug mode: install flow completed without sending a backend " +"request" msgstr "前端調試模式:安裝流程完成,未發送後端請求" #: src/components/SystemRestore/SystemRestoreContent.vue:158 msgid "" -"Frontend debug mode: restore flow completed without sending a backend request" +"Frontend debug mode: restore flow completed without sending a backend " +"request" msgstr "前端調試模式:恢復流程已完成,無需發送後端請求" #: src/views/nginx_log/structured/components/SearchFilters.vue:65 @@ -3330,21 +3295,24 @@ msgstr "全文搜索支援" msgid "General Certificate" msgstr "普通憑證" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:45 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:69 #: src/language/curd.ts:17 +#: src/views/certificate/components/DNSIssueCertificate.vue:237 +#: src/views/certificate/components/SelfSignedCertForm.vue:82 msgid "Generate" msgstr "產生" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Generate keypair" -msgstr "產生" +#: src/components/TwoFA/use2FAModal.ts:31 +msgid "Generate new recovery codes" +msgstr "產生新的復原代碼" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:139 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:142 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate New Recovery Codes" msgstr "生成新的復原代碼" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:162 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:165 msgid "Generate Recovery Codes" msgstr "生成復原代碼" @@ -3352,6 +3320,14 @@ msgstr "生成復原代碼" msgid "Generate recovery codes successfully" msgstr "成功生成復原代碼" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:65 +msgid "Generate self-signed certificate" +msgstr "產生自簽名憑證" + +#: src/views/certificate/components/SelfSignedCertForm.vue:80 +msgid "Generate Self-signed Certificate" +msgstr "產生自簽署憑證" + #: src/language/constants.ts:7 msgid "Generating private key for registering account" msgstr "產生註冊帳號的私鑰" @@ -3381,8 +3357,7 @@ msgstr "在 {0} 未找到 GeoLite2 資料庫" msgid "" "GeoLite2 database not found at {0}. Log indexing requires GeoLite2 database " "for geographic IP analysis" -msgstr "" -"未在 {0} 找到 GeoLite2 資料庫。日誌索引需要 GeoLite2 資料庫進行地理 IP 分析" +msgstr "未在 {0} 找到 GeoLite2 資料庫。日誌索引需要 GeoLite2 資料庫進行地理 IP 分析" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:150 msgid "GeoLite2 Database Required" @@ -3429,6 +3404,10 @@ msgstr "前往 DNS > 憑證 以建立或管理憑證" msgid "Go to Raw Log Viewer" msgstr "轉到原始日誌查看器" +#: src/components/TwoFA/use2FAModal.ts:33 +msgid "Go to Recovery Codes" +msgstr "前往復原碼" + #: src/views/preference/components/ExternalNotify/gotify.ts:5 msgid "Gotify" msgstr "Gotify" @@ -3437,16 +3416,13 @@ msgstr "Gotify" msgid "" "gRPC health check requires server to implement gRPC Health Check service " "(grpc.health.v1.Health)." -msgstr "" -"gRPC 健康檢查要求伺服器實現 gRPC 健康檢查服務(grpc.health.v1.Health)。" +msgstr "gRPC 健康檢查要求伺服器實現 gRPC 健康檢查服務(grpc.health.v1.Health)。" #: src/views/dashboard/components/SiteHealthCheckModal.vue:599 msgid "" "gRPCS uses TLS encryption. Server must implement gRPC Health Check service. " "For testing, SSL validation is disabled by default." -msgstr "" -"gRPCS 使用 TLS 加密。伺服器必須實作 gRPC 健康檢查服務。出於測試目的,預設情況" -"下禁用 SSL 驗證。" +msgstr "gRPCS 使用 TLS 加密。伺服器必須實作 gRPC 健康檢查服務。出於測試目的,預設情況下禁用 SSL 驗證。" #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67 msgid "GZIP Compression" @@ -3497,10 +3473,6 @@ msgstr "隱藏" msgid "Hide Assistant" msgstr "隱藏助手" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Hide setup wizard" -msgstr "" - #: src/composables/useGeoTranslation.ts:165 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 #: src/views/nginx_log/dashboard/components/WorldMapChart/WorldMapChart.vue:133 @@ -3522,27 +3494,10 @@ msgid "Home" msgstr "首頁" #: src/views/dns/components/DNSRecordFilter.vue:42 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:61 #: src/views/preference/tabs/ServerSettings.vue:19 msgid "Host" msgstr "主機" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:31 -msgid "Host address (host:port)" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step2bHost.vue:23 -msgid "Host side — run these on the machine that runs nginx" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:57 -msgid "Host SSH setup wizard" -msgstr "" - -#: src/views/preference/tabs/NginxSettings.vue:92 -msgid "Host via SSH" -msgstr "" - #: src/views/dns/components/DNSRecordFilter.vue:45 msgid "Host, e.g. @ or www" msgstr "主機,例如 @ 或 www" @@ -3584,9 +3539,7 @@ msgstr "ICP 編號" msgid "" "If the number of login failed attempts from a ip reach the max attempts in " "ban threshold minutes, the ip will be banned for a period of time." -msgstr "" -"如果來自某個 IP 的登入失敗次數在禁止閾值分鐘內達到最大嘗試次數,該 IP 將被禁" -"止一段時間。" +msgstr "如果來自某個 IP 的登入失敗次數在禁止閾值分鐘內達到最大嘗試次數,該 IP 將被禁止一段時間。" #: src/components/AutoCertForm/AutoCertForm.vue:280 msgid "" @@ -3598,9 +3551,7 @@ msgstr "如果您想要自動撤銷舊憑證,請啟用此選項。" msgid "" "If you want to change the storage location, you can set the `IndexPath` of " "`nginx_log` section in the Nginx UI config." -msgstr "" -"如果要更改存儲位置,可以在 Nginx UI 配置中設置 `nginx_log` 部分的 " -"`IndexPath`。" +msgstr "如果要更改存儲位置,可以在 Nginx UI 配置中設置 `nginx_log` 部分的 `IndexPath`。" #: src/views/preference/components/AuthSettings/AddPasskey.vue:76 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear." @@ -3612,12 +3563,12 @@ msgid "" "need to enable this option." msgstr "如果您的域名有 CNAME 記錄且無法取得證書,您需要啟用此選項。" -#: src/views/certificate/CertificateList/Certificate.vue:27 +#: src/views/certificate/CertificateList/Certificate.vue:28 msgid "Import" msgstr "匯入" #: src/routes/modules/certificates.ts:46 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Import Certificate" msgstr "匯入憑證" @@ -3678,7 +3629,7 @@ msgstr "建立索引中..." msgid "Indicator" msgstr "指標" -#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:28 +#: src/constants/index.ts:26 src/views/notification/notificationColumns.tsx:28 msgid "Info" msgstr "資訊" @@ -3702,7 +3653,7 @@ msgstr "正在初始化核心升級程式" msgid "Input the code from the app:" msgstr "請輸入應用程式中的代碼:" -#: src/components/TwoFA/Authorization.vue:72 +#: src/components/TwoFA/Authorization.vue:80 msgid "Input the recovery code:" msgstr "輸入恢復碼:" @@ -3759,12 +3710,12 @@ msgid "" "restart the Nginx UI." msgstr "系統啟動 10 分鐘後不允許安裝,請重新啟動 Nginx UI。" -#: src/views/dns/DDNSManager.vue:117 +#: src/views/dns/DDNSManager.vue:168 #: src/views/preference/tabs/LogrotateSettings.vue:26 msgid "Interval" msgstr "間隔" -#: src/views/dns/DDNSManager.vue:322 +#: src/views/dns/DDNSManager.vue:426 msgid "Interval (seconds)" msgstr "間隔(秒)" @@ -3838,7 +3789,7 @@ msgstr "無效的 OTP 代碼" msgid "Invalid padding in decrypted data" msgstr "解密資料中的填充無效" -#: src/components/TwoFA/use2FAModal.ts:61 +#: src/components/TwoFA/use2FAModal.ts:74 msgid "Invalid passcode or recovery code" msgstr "無效的密碼或恢復碼" @@ -3891,15 +3842,43 @@ msgstr "IP 位址" msgid "IP Address / Target" msgstr "IP 位址/目標" +#: src/views/certificate/components/SelfSignedCertFields.vue:40 +msgid "IP Addresses" +msgstr "IP 位址" + #: src/components/AutoCertForm/AutoCertForm.vue:123 msgid "IP Certificate Notice" msgstr "IP 證書通知" -#: src/views/certificate/CertificateList/Certificate.vue:37 +#: src/views/dns/DDNSManager.vue:384 +msgid "IP Version" +msgstr "IP 版本" + +#: src/views/dns/DDNSManager.vue:40 +msgid "IPv4 only" +msgstr "僅 IPv4" + +#: src/views/dns/DDNSManager.vue:42 +msgid "IPv4 then IPv6" +msgstr "先 IPv4 後 IPv6" + +#: src/views/dns/DDNSManager.vue:41 +msgid "IPv6 only" +msgstr "僅 IPv6" + +#: src/views/dns/DDNSManager.vue:43 +msgid "IPv6 then IPv4" +msgstr "先 IPv6 後 IPv4" + +#: src/views/certificate/CertificateList/certColumns.tsx:83 +msgid "Issuance failed" +msgstr "簽發失敗" + +#: src/views/certificate/CertificateList/Certificate.vue:38 msgid "Issue certificate" msgstr "簽發證書" -#: src/views/certificate/components/DNSIssueCertificate.vue:103 +#: src/views/certificate/components/DNSIssueCertificate.vue:159 msgid "Issue Certificate" msgstr "簽發證書" @@ -3907,10 +3886,18 @@ msgstr "簽發證書" msgid "Issued certificate successfully" msgstr "憑證簽發成功" +#: src/views/certificate/components/DNSIssueCertificate.vue:110 +msgid "Issued successfully" +msgstr "簽發成功" + #: src/components/CertInfo/CertInfo.vue:35 msgid "Issuer: %{issuer}" msgstr "簽發者:%{issuer}" +#: src/views/certificate/CertificateList/certColumns.tsx:79 +msgid "Issuing..." +msgstr "簽發中..." + #: src/language/curd.ts:6 msgid "item(s)" msgstr "項" @@ -3923,15 +3910,15 @@ msgstr "Jwt 金鑰" msgid "" "Keep your recovery codes as safe as your password. We recommend saving them " "with a password manager." -msgstr "" -"請將您的復原代碼與密碼一樣妥善保管。我們建議使用密碼管理工具來儲存這些代碼。" +msgstr "請將您的復原代碼與密碼一樣妥善保管。我們建議使用密碼管理工具來儲存這些代碼。" #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60 msgid "Keepalive Timeout" msgstr "Keepalive 逾時時間" #: src/components/AutoCertForm/AutoCertForm.vue:236 -#: src/views/certificate/CertificateList/certColumns.tsx:57 +#: src/views/certificate/CertificateList/certColumns.tsx:65 +#: src/views/certificate/components/SelfSignedCertFields.vue:47 msgid "Key Type" msgstr "金鑰類型" @@ -4013,7 +4000,7 @@ msgstr "最後索引時間" msgid "Last month" msgstr "上個月" -#: src/views/dns/DDNSManager.vue:125 +#: src/views/dns/DDNSManager.vue:176 msgid "Last run" msgstr "上次執行" @@ -4029,6 +4016,10 @@ msgstr "最後更新:" msgid "Last used at" msgstr "最後使用時間" +#: src/components/TwoFA/use2FAModal.ts:34 +msgid "Later" +msgstr "稍後" + #: src/views/user/userColumns.tsx:23 msgid "Leave blank for no change" msgstr "留空表示不修改" @@ -4050,10 +4041,8 @@ msgid "Leave blank if you don't need this." msgstr "留空表示不需要此項目。" #: src/views/preference/tabs/OpenAISettings.vue:31 -#, fuzzy -msgid "" -"Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" -msgstr "預設留空:https://api.openai.com/" +msgid "Leave blank to use the Atlas Cloud endpoint: https://api.atlascloud.ai/v1" +msgstr "留空則使用 Atlas Cloud 端點:https://api.atlascloud.ai/v1" #: src/views/certificate/components/CertificateContentEditor.vue:240 #: src/views/certificate/components/CertificateContentEditor.vue:258 @@ -4062,6 +4051,13 @@ msgstr "預設留空:https://api.openai.com/" msgid "Leave blank will not change anything" msgstr "留空將不會改變任何內容" +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:41 +#: src/components/RecoveryCodeMigrationWarning/RecoveryCodeMigrationWarning.vue:65 +msgid "" +"Legacy recovery code is deprecated. Generate new recovery codes to keep " +"account recovery secure." +msgstr "舊有的復原碼已不建議使用。請產生新的復原碼以確保帳戶復原安全。" + #: src/constants/errors/user.ts:6 msgid "Legacy recovery code not allowed since totp is not enabled" msgstr "不允許使用舊版恢復代碼,因為未啟用 TOTP 功能" @@ -4098,9 +4094,7 @@ msgstr "將此站點鏈接到 DNS 記錄。server_name 將用作 DNS 記錄名 msgid "" "Link this site to a DNS record. The server_name will be used for the DNS " "record name. You can skip this step if DNS is already configured." -msgstr "" -"將此站點連結到 DNS 記錄。server_name 將用作 DNS 記錄名稱。如果 DNS 已配置,可" -"以跳過此步驟。" +msgstr "將此站點連結到 DNS 記錄。server_name 將用作 DNS 記錄名稱。如果 DNS 已配置,可以跳過此步驟。" #: src/views/site/site_edit/components/RightPanel/DNS.vue:466 msgid "Linked DNS Record" @@ -4116,7 +4110,7 @@ msgstr "監聽中" #: src/views/preference/Preference.vue:101 msgid "LLM" -msgstr "" +msgstr "LLM" #: src/views/dashboard/ServerAnalytic.vue:188 msgid "Load Average:" @@ -4164,18 +4158,14 @@ msgstr "載入中..." #: src/components/NamespaceTabs/NamespaceTabs.vue:116 #: src/components/NodeIndicator/NodeIndicator.vue:38 -#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:42 -#: src/constants/index.ts:48 src/views/backup/AutoBackup/AutoBackup.vue:74 +#: src/components/NodeSelector/NodeSelector.vue:62 src/constants/index.ts:43 +#: src/constants/index.ts:49 src/views/backup/AutoBackup/AutoBackup.vue:74 #: src/views/backup/AutoBackup/AutoBackup.vue:83 #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:48 -#: src/views/preference/tabs/NginxSettings.vue:108 +#: src/views/preference/tabs/NginxSettings.vue:64 msgid "Local" msgstr "本機" -#: src/views/preference/tabs/NginxSettings.vue:86 -msgid "Local / Bundled" -msgstr "" - #: src/views/backup/AutoBackup/components/StorageConfigEditor.vue:60 msgid "Local path (e.g., /var/backups)" msgstr "本地路徑(例如:/var/backups)" @@ -4188,18 +4178,18 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:124 +#: src/views/certificate/CertificateEditor.vue:181 msgid "Log" msgstr "日誌" #: src/language/generate.ts:25 msgid "" "Log file %{log_path} is not a regular file. If you are using nginx-ui in " -"docker container, please refer to https://nginxui.com/zh_CN/guide/config-" -"nginx-log.html for more information." +"docker container, please refer to " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information." msgstr "" -"日誌文件 %{log_path} 不是常規文件。如果您在 docker 容器中使用 nginx-ui,請參" -"考 https://nginxui.com/zh_CN/guide/config-nginx-log.html 獲取更多信息。" +"日誌文件 %{log_path} 不是常規文件。如果您在 docker 容器中使用 nginx-ui,請參考 " +"https://nginxui.com/zh_CN/guide/config-nginx-log.html 獲取更多信息。" #: src/constants/errors/nginx_log.ts:11 msgid "Log file does not exist" @@ -4241,7 +4231,7 @@ msgstr "日誌解析器未初始化;使用前請呼叫 indexer.InitLogParser() msgid "Log path is not under whitelist" msgstr "日誌路徑不在白名單中" -#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:356 +#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:357 msgid "Login" msgstr "登入" @@ -4249,7 +4239,7 @@ msgstr "登入" msgid "Login successful" msgstr "登入成功" -#: src/layouts/HeaderLayout.vue:21 +#: src/layouts/HeaderLayout.vue:22 msgid "Logout successful" msgstr "登出成功" @@ -4259,17 +4249,16 @@ msgstr "Logrotate" #: src/views/preference/tabs/LogrotateSettings.vue:13 msgid "" -"Logrotate, by default, is enabled in most mainstream Linux distributions for " -"users who install Nginx UI on the host machine, so you don't need to modify " -"the parameters on this page. For users who install Nginx UI using Docker " -"containers, you can manually enable this option. The crontab task scheduler " -"of Nginx UI will execute the logrotate command at the interval you set in " -"minutes." +"Logrotate, by default, is enabled in most mainstream Linux distributions " +"for users who install Nginx UI on the host machine, so you don't need to " +"modify the parameters on this page. For users who install Nginx UI using " +"Docker containers, you can manually enable this option. The crontab task " +"scheduler of Nginx UI will execute the logrotate command at the interval " +"you set in minutes." msgstr "" -"預設情況下,對於在主機上安裝 Nginx UI 的使用者,大多數主流 Linux 發行版都啟用" -"了 logrotate,因此您無需修改此頁面的參數。對於使用 Docker 容器安裝 Nginx UI " -"的使用者,您可以手動啟用此選項。Nginx UI 的 crontab 任務排程器將按照您設定的" -"分鐘間隔執行 logrotate 命令。" +"預設情況下,對於在主機上安裝 Nginx UI 的使用者,大多數主流 Linux 發行版都啟用了 " +"logrotate,因此您無需修改此頁面的參數。對於使用 Docker 容器安裝 Nginx UI 的使用者,您可以手動啟用此選項。Nginx UI " +"的 crontab 任務排程器將按照您設定的分鐘間隔執行 logrotate 命令。" #: src/composables/useGeoTranslation.ts:166 #: src/views/nginx_log/dashboard/components/ChinaMapChart/ChinaMapChart.vue:165 @@ -4296,15 +4285,13 @@ msgstr "維護模式已成功停用" msgid "Maintenance mode enabled successfully" msgstr "維護模式已成功啟用" -#: src/views/preference/tabs/NginxSettings.vue:38 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:13 msgid "Maintenance template (filename only)" -msgstr "維護模式已成功啟用" +msgstr "維護範本(僅檔名)" -#: src/views/preference/tabs/NginxSettings.vue:41 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:16 msgid "maintenance.html" -msgstr "維護" +msgstr "maintenance.html" #: src/constants/errors/cert.ts:20 msgid "Make certificate dir error: {0}" @@ -4314,8 +4301,7 @@ msgstr "建立憑證目錄錯誤:{0}" msgid "" "Make sure you have configured a reverse proxy for .well-known directory to " "HTTPChallengePort before obtaining the certificate." -msgstr "" -"在取得憑證前,請確保您已將 .well-known 目錄反向代理到 HTTPChallengePort。" +msgstr "在取得憑證前,請確保您已將 .well-known 目錄反向代理到 HTTPChallengePort。" #: src/routes/modules/config.ts:10 #: src/views/config/components/ConfigLeftPanel.vue:114 @@ -4437,10 +4423,6 @@ msgstr "記憶體設計" msgid "Memory Usage (RSS)" msgstr "記憶體使用量 (RSS)" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:33 -msgid "Merge into services.nginx-ui" -msgstr "" - #: src/views/nginx_log/structured/components/SearchFilters.vue:92 #: src/views/nginx_log/structured/StructuredLogViewer.vue:519 msgid "Method" @@ -4474,7 +4456,7 @@ msgstr "分鐘" msgid "Minutes" msgstr "分鐘" -#: src/constants/index.ts:44 +#: src/constants/index.ts:45 msgid "Mirror" msgstr "鏡像" @@ -4503,7 +4485,7 @@ msgid "Modify" msgstr "修改" #: src/routes/modules/certificates.ts:36 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:132 msgid "Modify Certificate" msgstr "修改憑證" @@ -4535,10 +4517,9 @@ msgstr "每月" msgid "Monthly on day %{day} at %{time}" msgstr "每月 %{day} 日 %{time}" -#: src/views/preference/tabs/NginxSettings.vue:44 -#, fuzzy +#: src/views/preference/tabs/NginxSettings.vue:19 msgid "Mounted directory" -msgstr "受保護目錄" +msgstr "掛載目錄" #: src/views/nginx_log/structured/components/SearchFilters.vue:204 msgid "Mozilla/5.0..." @@ -4568,6 +4549,7 @@ msgstr "不適用" #: src/views/certificate/components/CertificateBasicInfo.vue:44 #: src/views/certificate/components/CertificateBasicInfo.vue:58 #: src/views/certificate/components/CertificateBasicInfo.vue:70 +#: src/views/certificate/components/SelfSignedCertFields.vue:25 #: src/views/config/components/ConfigRightPanel/Basic.vue:34 #: src/views/config/components/Delete.vue:123 #: src/views/config/components/Mkdir.vue:64 @@ -4640,7 +4622,7 @@ msgstr "新建 lego 客戶端錯誤:{0}" msgid "New name" msgstr "新名稱" -#: src/views/user/UserProfile.vue:195 +#: src/views/user/UserProfile.vue:190 msgid "New Password" msgstr "新密碼" @@ -4656,12 +4638,11 @@ msgstr "新建傳輸錯誤:{0}" msgid "New version released" msgstr "新版本發布" -#: src/views/certificate/components/DNSIssueCertificate.vue:189 +#: src/views/certificate/components/DNSIssueCertificate.vue:223 #: src/views/install/components/InstallView.vue:212 -#: src/views/preference/components/NginxHostSetup/Wizard.vue:87 #: src/views/site/site_add/SiteAdd.vue:237 #: src/views/site/site_add/SiteAdd.vue:244 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:264 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:223 msgid "Next" msgstr "下一步" @@ -4673,7 +4654,7 @@ msgstr "Nginx" msgid "Nginx -T output is empty" msgstr "Nginx -T 的輸出為空" -#: src/views/preference/tabs/NginxSettings.vue:47 +#: src/views/preference/tabs/NginxSettings.vue:22 msgid "Nginx Access Log Path" msgstr "Nginx 存取日誌路徑" @@ -4727,11 +4708,11 @@ msgstr "Nginx 設定已恢復" msgid "Nginx Configuration Parse Error" msgstr "Nginx 設定解析錯誤" -#: src/views/preference/tabs/NginxSettings.vue:56 +#: src/views/preference/tabs/NginxSettings.vue:31 msgid "Nginx Configuration Path" msgstr "Nginx 設定路徑" -#: src/views/preference/tabs/NginxSettings.vue:53 +#: src/views/preference/tabs/NginxSettings.vue:28 msgid "Nginx Configurations Directory" msgstr "Nginx 設定目錄" @@ -4739,7 +4720,7 @@ msgstr "Nginx 設定目錄" msgid "Nginx Control" msgstr "Nginx 控制元件" -#: src/views/preference/tabs/NginxSettings.vue:80 +#: src/views/preference/tabs/NginxSettings.vue:55 msgid "Nginx Control Mode" msgstr "Nginx 控制模式" @@ -4748,7 +4729,7 @@ msgstr "Nginx 控制模式" msgid "Nginx CPU usage rate" msgstr "Nginx CPU 使用率" -#: src/views/preference/tabs/NginxSettings.vue:50 +#: src/views/preference/tabs/NginxSettings.vue:25 msgid "Nginx Error Log Path" msgstr "Nginx 錯誤日誌路徑" @@ -4784,7 +4765,7 @@ msgstr "Nginx 執行中" msgid "Nginx Log" msgstr "Nginx 日誌" -#: src/views/preference/tabs/NginxSettings.vue:59 +#: src/views/preference/tabs/NginxSettings.vue:34 msgid "Nginx Log Directory Whitelist" msgstr "Nginx 日誌目錄白名單" @@ -4797,7 +4778,7 @@ msgstr "Nginx 日誌索引中..." msgid "Nginx Memory usage" msgstr "Nginx 記憶體使用量" -#: src/views/preference/tabs/NginxSettings.vue:68 +#: src/views/preference/tabs/NginxSettings.vue:43 msgid "Nginx PID Path" msgstr "Nginx PID 路徑" @@ -4805,7 +4786,7 @@ msgstr "Nginx PID 路徑" msgid "Nginx PID path exists" msgstr "Nginx PID 路徑存在" -#: src/views/preference/tabs/NginxSettings.vue:74 +#: src/views/preference/tabs/NginxSettings.vue:49 msgid "Nginx Reload Command" msgstr "Nginx 重新載入指令" @@ -4826,7 +4807,7 @@ msgstr "Nginx 重新載入成功" msgid "Nginx reported a configuration syntax error." msgstr "Nginx 報告了一個配置語法錯誤。" -#: src/views/preference/tabs/NginxSettings.vue:77 +#: src/views/preference/tabs/NginxSettings.vue:52 msgid "Nginx Restart Command" msgstr "Nginx 重啟指令" @@ -4842,7 +4823,7 @@ msgstr "Nginx 重啟成功" msgid "Nginx sbin path exists" msgstr "Nginx Sbin 路徑存在" -#: src/views/preference/tabs/NginxSettings.vue:71 +#: src/views/preference/tabs/NginxSettings.vue:46 msgid "Nginx Test Config Command" msgstr "Nginx 測試設定指令" @@ -4865,10 +4846,17 @@ msgstr "Nginx UI 設定已恢復" #: src/components/SystemRestore/SystemRestoreContent.vue:368 msgid "" -"Nginx UI configuration has been restored and will restart automatically in a " -"few seconds." +"Nginx UI configuration has been restored and will restart automatically in " +"a few seconds." msgstr "Nginx UI 設定已恢復,將在幾秒後自動重新啟動。" +#: src/views/certificate/components/SelfSignedCertFields.vue:22 +msgid "" +"Nginx UI will automatically renew this certificate as it approaches " +"expiration, based on the global certificate renewal interval and this " +"certificate's validity period." +msgstr "Nginx UI 將根據全域憑證續期間隔和此憑證的有效期,在憑證即將過期時自動續期。" + #: src/language/generate.ts:32 msgid "Nginx.conf includes conf.d directory" msgstr "Nginx.conf 包含 conf.d 目錄" @@ -4895,7 +4883,7 @@ msgid "No" msgstr "取消" #: src/components/NamespaceRender/NamespaceRender.vue:41 -#: src/constants/index.ts:37 +#: src/constants/index.ts:38 msgid "No Action" msgstr "無行動" @@ -4933,10 +4921,6 @@ msgstr "當前頁面沒有條目" msgid "No geographic data available" msgstr "無可用地理數據" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:60 -msgid "No key generated yet" -msgstr "" - #: src/views/nginx_log/structured/StructuredLogViewer.vue:567 msgid "No logs found in the selected time range." msgstr "在選定的時間範圍內未找到日誌。" @@ -4961,9 +4945,7 @@ msgstr "未找到站點" msgid "" "No specific IP address found in server_name configuration. Please specify " "the server IP address below for the certificate." -msgstr "" -"在 server_name 設定中未找到特定 IP 位址。請在下方指定伺服器 IP 位址以取得憑" -"證。" +msgstr "在 server_name 設定中未找到特定 IP 位址。請在下方指定伺服器 IP 位址以取得憑證。" #: src/views/nginx_log/structured/StructuredLogViewer.vue:836 msgid "No structured log data available" @@ -4998,7 +4980,7 @@ msgstr "節點狀態" msgid "Nodes" msgstr "節點" -#: src/views/certificate/CertificateList/certColumns.tsx:86 +#: src/views/certificate/CertificateList/certColumns.tsx:107 msgid "Not After" msgstr "不晚於" @@ -5019,7 +5001,7 @@ msgstr "未索引" msgid "Not Loaded" msgstr "未載入" -#: src/views/dns/DDNSManager.vue:140 +#: src/views/dns/DDNSManager.vue:191 msgid "Not run yet" msgstr "尚未執行" @@ -5047,9 +5029,7 @@ msgstr "請注意,如果設定檔包含其他設定或憑證,請提前將它 msgid "" "Note: If the server does not support gRPC Reflection, health checks may " "fail. Please ensure your gRPC server has Reflection enabled." -msgstr "" -"注意:如果伺服器不支援 gRPC 反射,健康檢查可能會失敗。請確保您的 gRPC 伺服器" -"已啟用反射功能。" +msgstr "注意:如果伺服器不支援 gRPC 反射,健康檢查可能會失敗。請確保您的 gRPC 伺服器已啟用反射功能。" #: src/views/certificate/components/CertificateBasicInfo.vue:24 #: src/views/certificate/components/CertificateContentEditor.vue:105 @@ -5096,7 +5076,7 @@ msgstr "worker 行程數" msgid "Obtain cert error: {0}" msgstr "獲取證書錯誤:{0}" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:229 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:188 msgid "Obtain certificate" msgstr "取得憑證" @@ -5148,7 +5128,7 @@ msgstr "OIDC 登入" #: src/views/notification/Notification.vue:39 #: src/views/site/components/SiteStatusSelect.vue:123 #: src/views/site/site_edit/components/Cert/IssueCert.vue:52 -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:183 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:142 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20 #: src/views/site/site_list/SiteList.vue:167 #: src/views/stream/components/StreamStatusSelect.vue:61 @@ -5190,10 +5170,6 @@ msgstr "只允許壓縮檔" msgid "Open" msgstr "開放" -#: src/views/preference/tabs/NginxSettings.vue:97 -msgid "Open setup wizard" -msgstr "" - #: src/views/nginx_log/components/IndexingSettingsModal.vue:285 msgid "Open Source Limitation" msgstr "開源限制" @@ -5210,7 +5186,7 @@ msgstr "作業系統統計" msgid "Optional comment for this DNS record" msgstr "此 DNS 記錄的選用註解" -#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:365 +#: src/components/TwoFA/Authorization.vue:108 src/views/other/Login.vue:366 msgid "Or" msgstr "或" @@ -5259,11 +5235,6 @@ msgstr "其他" msgid "Otp or recovery code empty" msgstr "OTP 或復原碼為空" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:36 -#, fuzzy -msgid "override file" -msgstr "覆寫現有檔案" - #: src/views/config/components/ConfigRightPanel/Deploy.vue:18 msgid "Overwrite" msgstr "覆寫" @@ -5299,8 +5270,8 @@ msgid "" "facial recognition, a device password, or a PIN. They can be used as a " "password replacement or as a 2FA method." msgstr "" -"通行金鑰是 WebAuthn 認證,透過觸控、面部辨識、裝置密碼或 PIN 碼來驗證您的身" -"份。它們可以用作密碼替代品或作為雙重身份驗證 (2FA) 方法。" +"通行金鑰是 WebAuthn 認證,透過觸控、面部辨識、裝置密碼或 PIN 碼來驗證您的身份。它們可以用作密碼替代品或作為雙重身份驗證 (2FA) " +"方法。" #: src/views/other/Login.vue:308 src/views/user/userColumns.tsx:16 msgid "Password" @@ -5310,10 +5281,6 @@ msgstr "密碼" msgid "Password (*)" msgstr "密碼 (*)" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:45 -msgid "Password (not yet supported)" -msgstr "" - #: src/constants/errors/user.ts:2 msgid "Password incorrect" msgstr "密碼錯誤" @@ -5322,11 +5289,11 @@ msgstr "密碼錯誤" msgid "Password length cannot exceed 20 characters" msgstr "密碼長度不能超過 20 個字元" -#: src/views/user/UserProfile.vue:96 +#: src/views/user/UserProfile.vue:91 msgid "Password updated successfully" msgstr "密碼更新成功" -#: src/views/user/UserProfile.vue:75 +#: src/views/user/UserProfile.vue:70 msgid "Passwords do not match" msgstr "密碼不匹配" @@ -5398,7 +5365,7 @@ msgstr "效能設定已成功儲存" msgid "Performing core upgrade" msgstr "正在執行核心升級" -#: src/views/user/UserProfile.vue:121 +#: src/views/user/UserProfile.vue:116 msgid "Personal Information" msgstr "個人資訊" @@ -5439,6 +5406,12 @@ msgstr "請啟用 stub_status 模組以取得請求統計、連線數量等資 msgid "Please enter" msgstr "請輸入" +#: src/views/certificate/CertificateEditor.vue:71 +#: src/views/certificate/components/DNSIssueCertificate.vue:124 +#: src/views/certificate/components/SelfSignedCertForm.vue:47 +msgid "Please enter a name for the certificate" +msgstr "請輸入憑證名稱" + #: src/views/preference/components/AuthSettings/AddPasskey.vue:75 msgid "" "Please enter a name for the passkey you wish to create and click the OK " @@ -5457,15 +5430,21 @@ msgstr "請輸入有效的 IPv4 或 IPv6 地址" msgid "Please enter a valid port range" msgstr "請輸入有效的端口範圍" -#: src/views/certificate/components/DNSIssueCertificate.vue:82 +#: src/views/certificate/components/DNSIssueCertificate.vue:96 msgid "Please enter at least one domain" msgstr "請輸入至少一個域名" +#: src/views/certificate/CertificateEditor.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:128 +#: src/views/certificate/components/SelfSignedCertForm.vue:51 +msgid "Please enter at least one domain or IP address" +msgstr "請輸入至少一個網域或IP位址" + #: src/views/install/components/InstallView.vue:121 msgid "Please enter the install secret before continuing" msgstr "請先輸入安裝密鑰再繼續" -#: src/components/TwoFA/Authorization.vue:85 +#: src/components/TwoFA/Authorization.vue:93 msgid "Please enter the OTP code:" msgstr "請輸入 OTP 代碼:" @@ -5505,15 +5484,13 @@ msgstr "請填寫您的 DNS 供應商提供的 API 認證憑據。" msgid "" "Please first add credentials in Certification > DNS Credentials, and then " "select one of the credentialsbelow to request the API of the DNS provider." -msgstr "" -"請先在「憑證」 > 「DNS 認證」中新增認證,然後選擇以下認證之一以請求 DNS 供應" -"商的 API。" +msgstr "請先在「憑證」 > 「DNS 認證」中新增認證,然後選擇以下認證之一以請求 DNS 供應商的 API。" #: src/components/Notification/notifications.ts:202 #: src/language/constants.ts:59 msgid "" -"Please generate new recovery codes in the preferences immediately to prevent " -"lockout." +"Please generate new recovery codes in the preferences immediately to " +"prevent lockout." msgstr "請立即在偏好設定中產生新的恢復碼,以免無法存取您的賬戶。" #: src/views/config/components/ConfigRightPanel/Basic.vue:27 @@ -5555,8 +5532,7 @@ msgid "Please log in." msgstr "請登入。" #: src/views/dns/DNSCredential.vue:96 -msgid "" -"Please note that the unit of time configurations below are all in seconds." +msgid "Please note that the unit of time configurations below are all in seconds." msgstr "請注意,以下時間設定單位均為秒。" #: src/views/install/components/InstallView.vue:136 @@ -5575,7 +5551,7 @@ msgstr "請選擇備份檔案" msgid "Please select a certificate before saving the TLS server configuration." msgstr "請在儲存 TLS 伺服器設定前選擇一個憑證。" -#: src/views/certificate/components/DNSIssueCertificate.vue:75 +#: src/views/certificate/components/DNSIssueCertificate.vue:89 msgid "Please select a DNS credential" msgstr "請選擇一個 DNS 憑證" @@ -5655,10 +5631,6 @@ msgstr "偏好設定" msgid "Preparing lego configurations" msgstr "準備 Lego 設定" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:84 -msgid "Previous" -msgstr "" - #: src/views/dns/components/DNSRecordForm.vue:82 #: src/views/dns/components/DNSRecordTable.vue:34 msgid "Priority" @@ -5677,10 +5649,6 @@ msgstr "私有 IP (192.168.x.x、10.x.x.x、172.16-31.x.x)將失敗" msgid "private key" msgstr "私鑰" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:79 -msgid "Private key generated (shown once)" -msgstr "" - #: src/components/PortScanner/PortScannerCompact.vue:55 msgid "Process" msgstr "進程" @@ -5724,11 +5692,11 @@ msgstr "協定" #: src/views/preference/tabs/ServerSettings.vue:47 msgid "" "Protocol configuration only takes effect when directly connecting. If using " -"reverse proxy, please configure the protocol separately in the reverse proxy." -msgstr "" -"協議配置僅在直接連接時生效。如果使用反向代理,請在反向代理中單獨配置協議。" +"reverse proxy, please configure the protocol separately in the reverse " +"proxy." +msgstr "協議配置僅在直接連接時生效。如果使用反向代理,請在反向代理中單獨配置協議。" -#: src/views/dns/DDNSManager.vue:108 src/views/dns/DNSCredential.vue:26 +#: src/views/dns/DDNSManager.vue:159 src/views/dns/DNSCredential.vue:26 #: src/views/dns/DNSDomainList.vue:229 #: src/views/preference/tabs/OpenAISettings.vue:70 msgid "Provider" @@ -5767,14 +5735,6 @@ msgstr "代理目標" msgid "Public CA Requirements:" msgstr "公共 CA 要求:" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:51 -msgid "Public key" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:56 -msgid "Public key (paste into authorized_keys)" -msgstr "" - #: src/views/preference/tabs/NodeSettings.vue:46 msgid "Public Security Number" msgstr "公安編號" @@ -5875,11 +5835,11 @@ msgstr "記錄類型" msgid "Record updated" msgstr "記錄已更新" -#: src/views/dns/DDNSManager.vue:311 +#: src/views/dns/DDNSManager.vue:403 msgid "Records" msgstr "記錄" -#: src/components/TwoFA/Authorization.vue:79 +#: src/components/TwoFA/Authorization.vue:87 msgid "Recovery" msgstr "恢復" @@ -5891,8 +5851,7 @@ msgstr "復原代碼" msgid "" "Recovery codes are used to access your account when you lose access to your " "2FA device. Each code can only be used once." -msgstr "" -"復原代碼在您無法使用 2FA 裝置時,用於存取您的帳戶。每個代碼僅能使用一次。" +msgstr "復原代碼在您無法使用 2FA 裝置時,用於存取您的帳戶。每個代碼僅能使用一次。" #: src/views/site/site_edit/components/RightPanel/DNS.vue:535 msgid "Recreate DNS Record" @@ -5911,7 +5870,7 @@ msgstr "重新導向訊息 (3xx)" msgid "Referer" msgstr "來源" -#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:231 +#: src/language/curd.ts:70 src/views/dns/DDNSManager.vue:304 #: src/views/dns/DNSRecordManager.vue:170 msgid "Refresh" msgstr "重新整理" @@ -5920,11 +5879,6 @@ msgstr "重新整理" msgid "Refresh Modules Cache" msgstr "刷新模組快取" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:67 -#, fuzzy -msgid "Regenerate keypair" -msgstr "重新產生回應" - #: src/components/LLM/ChatMessageInput.vue:74 msgid "Regenerate response" msgstr "重新產生回應" @@ -5981,7 +5935,7 @@ msgid "Reload" msgstr "重新載入" #: src/components/NamespaceRender/NamespaceRender.vue:44 -#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:38 +#: src/components/NamespaceTabs/NamespaceTabs.vue:141 src/constants/index.ts:39 #: src/views/node/Node.vue:208 src/views/node/Node.vue:216 msgid "Reload Nginx" msgstr "重新載入 Nginx" @@ -6018,16 +5972,12 @@ msgstr "重新載入中" msgid "Reloading nginx" msgstr "正在重新載入 Nginx" -#: src/constants/index.ts:43 src/constants/index.ts:49 +#: src/constants/index.ts:44 src/constants/index.ts:50 msgid "Remote" msgstr "遠端" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:53 -#, fuzzy -msgid "Remote address detected" -msgstr "未選擇節點" - -#: src/views/certificate/components/DNSIssueCertificate.vue:152 +#: src/components/StringListInput/StringListInput.vue:38 +#: src/components/StringListInput/StringListInput.vue:41 #: src/views/preference/tabs/AuthSettings.vue:133 msgid "Remove" msgstr "移除" @@ -6037,6 +5987,10 @@ msgstr "移除" msgid "Remove successfully" msgstr "移除成功" +#: src/views/dns/DDNSManager.vue:243 +msgid "Removed %{count} conflicting record(s): %{names}" +msgstr "已移除 %{count} 個衝突記錄:%{names}" + #: src/components/Notification/Notification.vue:84 msgid "Removed successfully" msgstr "移除成功" @@ -6116,8 +6070,8 @@ msgstr "重新命名成功" msgid "Renew cert error: {0}" msgstr "續簽證書錯誤:{0}" +#: src/views/certificate/components/RenewCert.vue:44 #: src/views/certificate/components/RenewCert.vue:51 -#: src/views/certificate/components/RenewCert.vue:58 msgid "Renew Certificate" msgstr "更換憑證" @@ -6129,8 +6083,7 @@ msgstr "更新憑證錯誤" msgid "Renew Certificate Success" msgstr "更新憑證成功" -#: src/views/certificate/components/DNSIssueCertificate.vue:92 -#: src/views/certificate/components/RenewCert.vue:33 +#: src/views/certificate/components/RenewCert.vue:26 msgid "Renew successfully" msgstr "更新成功" @@ -6181,9 +6134,7 @@ msgid "" "Resident Set Size: Actual memory resident in physical memory, including all " "shared library memory, which will be repeated calculated for multiple " "processes" -msgstr "" -"常駐集大小:實際存在於實體記憶體中的記憶體,包含所有共用函式庫記憶體,這些記" -"憶體會在多個行程間重複計算" +msgstr "常駐集大小:實際存在於實體記憶體中的記憶體,包含所有共用函式庫記憶體,這些記憶體會在多個行程間重複計算" #: src/views/nginx_log/components/IndexingSettingsModal.vue:109 msgid "Resource Usage Warning" @@ -6258,6 +6209,19 @@ msgstr "恢復此版本" msgid "Restored successfully" msgstr "恢復成功" +#: src/views/certificate/components/DNSIssueCertificate.vue:259 +#: src/views/certificate/components/RetryCert.vue:48 +msgid "Retry" +msgstr "重試" + +#: src/views/certificate/components/RetryCert.vue:52 +msgid "Retry Certificate Issuance" +msgstr "重試憑證簽發" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:39 +msgid "Review first" +msgstr "先檢查" + #: src/views/certificate/components/RemoveCert.vue:108 #: src/views/certificate/components/RemoveCert.vue:36 msgid "Revoke" @@ -6302,11 +6266,6 @@ msgstr "RPID" msgid "Run Mode" msgstr "執行模式" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:34 -#, fuzzy -msgid "Run verification" -msgstr "更換憑證" - #: src/components/NginxControl/NginxControl.vue:72 msgid "Running" msgstr "執行中" @@ -6424,7 +6383,7 @@ msgstr "星期六" #: src/views/config/components/ConfigLeftPanel.vue:283 #: src/views/config/components/ConfigName.vue:58 #: src/views/dashboard/components/SiteHealthCheckModal.vue:713 -#: src/views/dns/DDNSManager.vue:337 src/views/dns/DNSRecordManager.vue:222 +#: src/views/dns/DDNSManager.vue:441 src/views/dns/DNSRecordManager.vue:222 #: src/views/preference/components/AuthSettings/Passkey.vue:131 #: src/views/preference/Preference.vue:124 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52 @@ -6434,19 +6393,14 @@ msgstr "星期六" msgid "Save" msgstr "儲存" -#: src/views/preference/components/NginxHostSetup/steps/Step2aContainer.vue:41 -msgid "Save as docker-compose.override.yml" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/Wizard.vue:90 -#, fuzzy -msgid "Save configuration" -msgstr "儲存配置" - #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:112 msgid "Save Directive" msgstr "儲存指令" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:38 +msgid "Save now" +msgstr "立即儲存" + #: src/views/dashboard/components/SiteNavigationToolbar.vue:48 msgid "Save Order" msgstr "儲存順序" @@ -6489,15 +6443,19 @@ msgstr "串流 %{name} 成功儲存至 %{node}" msgid "Save successful" msgstr "儲存成功" -#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:49 -#: src/views/certificate/components/RenewCert.vue:26 +#: src/language/curd.ts:35 src/views/certificate/CertificateEditor.vue:97 +#: src/views/certificate/components/RenewCert.vue:21 #: src/views/preference/store/index.ts:133 msgid "Save successfully" msgstr "儲存成功" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:82 -msgid "Save this private key somewhere safe. It will NOT be shown again." -msgstr "" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:31 +msgid "Save the site configuration now?" +msgstr "立即儲存網站設定?" + +#: src/views/certificate/CertificateEditor.vue:94 +msgid "Saved certificate response is missing an ID" +msgstr "儲存的憑證回應缺少 ID" #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:51 #: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198 @@ -6507,6 +6465,12 @@ msgstr "" msgid "Saved successfully" msgstr "儲存成功" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:47 +msgid "" +"Saving the site configuration failed; the certificate directives are in the " +"editor — review the changes and retry from the Save button." +msgstr "儲存站台設定失敗;憑證指令已在編輯器中 — 請檢查變更,然後透過 [儲存] 按鈕重新嘗試。" + #: src/constants/errors/self_check.ts:20 msgid "Sbin path not exist" msgstr "sbin 路徑不存在" @@ -6555,7 +6519,7 @@ msgstr "SDK" msgid "Search" msgstr "搜尋" -#: src/views/dns/DDNSManager.vue:220 +#: src/views/dns/DDNSManager.vue:293 msgid "Search domain, provider or target" msgstr "搜尋網域、供應商或目標" @@ -6587,7 +6551,7 @@ msgstr "搜尋模板" msgid "Secret has been copied" msgstr "金鑰已複製" -#: src/views/user/UserProfile.vue:175 +#: src/views/user/UserProfile.vue:170 msgid "Security Settings" msgstr "安全設定" @@ -6631,6 +6595,10 @@ msgstr "選擇 DNS 域名" msgid "Select existing record" msgstr "選擇現有記錄" +#: src/views/dns/DDNSManager.vue:410 +msgid "Select matching A/AAAA records" +msgstr "選取符合的 A/AAAA 紀錄" + #: src/views/certificate/ACMEUser.vue:46 #: src/views/preference/tabs/CertSettings.vue:29 msgid "Select or enter a CA directory URL" @@ -6657,6 +6625,24 @@ msgstr "自我檢查" msgid "Self check failed, Nginx UI may not work properly" msgstr "自我檢查失敗,Nginx UI 可能無法正常運作" +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:63 +msgid "Self-signed certificate" +msgstr "自行簽署憑證" + +#: src/views/certificate/CertificateList/certColumns.tsx:31 +#: src/views/certificate/components/DNSIssueCertificate.vue:177 +msgid "Self-signed Certificate" +msgstr "自行簽署憑證" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:44 +msgid "Self-signed certificate applied" +msgstr "已套用自行簽署憑證" + +#: src/views/certificate/components/DNSIssueCertificate.vue:140 +#: src/views/certificate/components/SelfSignedCertForm.vue:63 +msgid "Self-signed certificate generated" +msgstr "自簽名憑證已產生" + #: src/views/dashboard/ServerAnalytic.vue:35 #: src/views/dashboard/ServerAnalytic.vue:352 msgid "Send" @@ -6671,7 +6657,7 @@ msgid "Server" msgstr "伺服器" #: src/components/InspectConfig/InspectConfig.vue:81 -#: src/views/certificate/CertificateEditor.vue:56 +#: src/views/certificate/CertificateEditor.vue:104 msgid "Server error" msgstr "伺服器錯誤" @@ -6699,7 +6685,7 @@ msgstr "伺服器名稱雜湊桶大小" msgid "Server names hash table size" msgstr "伺服器名稱雜湊表大小" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:164 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:123 msgid "server_name not found in directives" msgstr "在指令中未找到 server_name" @@ -6747,19 +6733,19 @@ msgstr "使用 HTTP01 挑戰提供者" #: src/constants/errors/nginx_log.ts:8 msgid "" -"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.AccessLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.AccessLogPath 為空,請參考 https://nginxui.com/" -"guide/config-nginx.html 了解更多資訊" +"Settings.NginxLogSettings.AccessLogPath 為空,請參考 " +"https://nginxui.com/guide/config-nginx.html 了解更多資訊" #: src/constants/errors/nginx_log.ts:7 msgid "" -"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui." -"com/guide/config-nginx.html for more information" +"Settings.NginxLogSettings.ErrorLogPath is empty, refer to " +"https://nginxui.com/guide/config-nginx.html for more information" msgstr "" -"Settings.NginxLogSettings.ErrorLogPath 為空,請參考 https://nginxui.com/" -"guide/config-nginx.html 了解更多資訊" +"Settings.NginxLogSettings.ErrorLogPath 為空,請參考 " +"https://nginxui.com/guide/config-nginx.html 了解更多資訊" #: src/views/install/components/InstallView.vue:147 msgid "Setup your Nginx UI" @@ -6778,7 +6764,7 @@ msgstr "顯示" msgid "Show Assistant" msgstr "顯示助手" -#: src/views/other/Login.vue:374 +#: src/views/other/Login.vue:375 msgid "Sign in with a passkey" msgstr "使用通行金鑰登入" @@ -6842,9 +6828,7 @@ msgstr "網站列表" msgid "" "Sites will appear here once you configure nginx server blocks with valid " "server_name (localhost excluded) directives." -msgstr "" -"配置帶有有效 server_name 指令(不包括 localhost)的 nginx 伺服器區塊後,站點" -"將顯示在此處。" +msgstr "配置帶有有效 server_name 指令(不包括 localhost)的 nginx 伺服器區塊後,站點將顯示在此處。" #: src/constants/errors/self_check.ts:11 msgid "Sites-available directory not exist" @@ -6864,10 +6848,6 @@ msgstr "大小" msgid "Skip Installation" msgstr "跳過安裝" -#: src/views/preference/components/NginxHostSetup/steps/Step4Verify.vue:37 -msgid "Skip nginx -t (no side effects)" -msgstr "" - #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:324 msgid "Sleep time between cache loader iterations" msgstr "快取載入器迭代間的休眠時間" @@ -6880,6 +6860,10 @@ msgstr "快取管理器迭代間的休眠時間" msgid "Socket" msgstr "套接字" +#: src/views/certificate/components/SelfSignedCertFields.vue:69 +msgid "Some browsers reject TLS certificates valid for more than 398 days." +msgstr "某些瀏覽器會拒絕有效期超過 398 天的 TLS 憑證。" + #: src/views/nginx_log/structured/StructuredLogViewer.vue:742 msgid "Sorted by" msgstr "排序方式" @@ -6896,15 +6880,6 @@ msgstr "贊助" msgid "SSD storage for better I/O performance" msgstr "SSD 儲存以獲得更好的 I/O 效能" -#: src/views/preference/components/NginxHostSetup/steps/Step1AuthMethod.vue:42 -#, fuzzy -msgid "SSH key (recommended)" -msgstr "推薦 2+ 核心" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:35 -msgid "SSH user" -msgstr "" - #: src/views/certificate/components/CertificateContentEditor.vue:209 #: src/views/certificate/components/CertificateContentEditor.vue:214 msgid "SSL Certificate Content" @@ -6990,9 +6965,9 @@ msgstr "靜態" #: src/components/PortScanner/PortScannerCompact.vue:37 #: src/views/backup/AutoBackup/AutoBackup.vue:160 #: src/views/certificate/ACMEUser.vue:66 -#: src/views/certificate/CertificateList/certColumns.tsx:63 +#: src/views/certificate/CertificateList/certColumns.tsx:71 #: src/views/dashboard/components/ModulesTable.vue:75 -#: src/views/dns/DDNSManager.vue:113 +#: src/views/dns/DDNSManager.vue:164 #: src/views/nginx_log/structured/components/SearchFilters.vue:106 #: src/views/nginx_log/structured/StructuredLogViewer.vue:241 #: src/views/nginx_log/structured/StructuredLogViewer.vue:521 @@ -7065,7 +7040,7 @@ msgstr "streams-enabled 資料夾不存在" msgid "Structured" msgstr "結構化" -#: src/views/preference/tabs/NginxSettings.vue:35 +#: src/views/preference/tabs/NginxSettings.vue:10 msgid "Stub Status Port" msgstr "存根狀態端口" @@ -7073,7 +7048,7 @@ msgstr "存根狀態端口" msgid "Stub_status is not enabled" msgstr "未啟用 stub_status" -#: src/constants/index.ts:26 src/views/backup/AutoBackup/AutoBackup.vue:195 +#: src/constants/index.ts:27 src/views/backup/AutoBackup/AutoBackup.vue:195 #: src/views/backup/AutoBackup/AutoBackup.vue:220 #: src/views/notification/notificationColumns.tsx:35 msgid "Success" @@ -7091,13 +7066,12 @@ msgstr "星期日" #: src/components/SelfCheck/tasks/frontend/websocket.ts:19 msgid "" "Support communication with the backend through the WebSocket protocol. If " -"your Nginx UI is being used via an Nginx reverse proxy, please refer to this " -"link to write the corresponding configuration file: https://nginxui.com/" -"guide/nginx-proxy-example.html" +"your Nginx UI is being used via an Nginx reverse proxy, please refer to " +"this link to write the corresponding configuration file: " +"https://nginxui.com/guide/nginx-proxy-example.html" msgstr "" -"支援透過 WebSocket 協議與後端進行通訊。如果您的 Nginx UI 是透過 Nginx 反向代" -"理使用,請參考此連結編寫對應的設定文件:https://nginxui.com/guide/nginx-" -"proxy-example.html" +"支援透過 WebSocket 協議與後端進行通訊。如果您的 Nginx UI 是透過 Nginx " +"反向代理使用,請參考此連結編寫對應的設定文件:https://nginxui.com/guide/nginx-proxy-example.html" #: src/language/curd.ts:53 src/language/curd.ts:57 msgid "Support single or batch upload of files" @@ -7184,6 +7158,7 @@ msgid "Sync strategy" msgstr "同步策略" #: src/views/certificate/components/CertificateBasicInfo.vue:145 +#: src/views/certificate/components/SelfSignedCertFields.vue:72 msgid "Sync to" msgstr "同步到" @@ -7221,21 +7196,13 @@ msgstr "系統恢復" msgid "System restored successfully." msgstr "系統已成功恢復。" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:43 -msgid "systemctl path" -msgstr "" - -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:39 -msgid "systemd unit" -msgstr "" - #: src/views/site/site_add/components/DNSRecordIntegration.vue:338 #: src/views/site/site_edit/components/RightPanel/DNS.vue:508 #: src/views/site/site_edit/components/RightPanel/DNS.vue:632 msgid "target.example.com" msgstr "target.example.com" -#: src/views/dns/DDNSManager.vue:121 +#: src/views/dns/DDNSManager.vue:172 msgid "Targets" msgstr "目標" @@ -7298,30 +7265,34 @@ msgid "" "The certificate for the domain will be checked 30 minutes, and will be " "renewed if it has been more than 1 week or the period you set in settings " "since it was last issued." -msgstr "" -"網域憑證將在 30 分鐘內接受檢查,如果自上次簽發以來已超過 1 週或您在設定中設定" -"的時間,憑證將會自動更新。" +msgstr "網域憑證將在 30 分鐘內接受檢查,如果自上次簽發以來已超過 1 週或您在設定中設定的時間,憑證將會自動更新。" + +#: src/views/site/site_edit/components/Cert/SelfSignedCert.vue:32 +msgid "" +"The certificate has been generated at %{path} and the ssl_certificate " +"directives have been added to the current server block. Save the " +"configuration now, or review the changes in the editor and save manually." +msgstr "憑證已產生於 %{path},且 ssl_certificate 指令已新增至目前的伺服器區塊。請立即儲存設定,或在編輯器中檢閱變更後手動儲存。" #: src/views/site/site_list/SiteList.vue:93 msgid "The following sites will be disabled:" -msgstr "" +msgstr "以下站點將被停用:" #: src/views/site/site_list/SiteList.vue:92 msgid "The following sites will be enabled:" -msgstr "" +msgstr "以下站點將被啟用:" #: src/components/GeoLiteDownload/GeoLiteDownload.vue:158 msgid "" -"The GeoLite2 database is required for offline geographic IP analysis. Please " -"download it to enable this feature." +"The GeoLite2 database is required for offline geographic IP analysis. " +"Please download it to enable this feature." msgstr "離線地理 IP 分析需要 GeoLite2 資料庫。請下載以啟用此功能。" #: src/views/preference/tabs/GeoLiteSettings.vue:9 msgid "" -"The GeoLite2 database provides geographic information for IP addresses. This " -"is used for offline geographic analysis in log analytics." -msgstr "" -"GeoLite2 資料庫為 IP 位址提供地理資訊。這用於日誌分析中的離線地理分析。" +"The GeoLite2 database provides geographic information for IP addresses. " +"This is used for offline geographic analysis in log analytics." +msgstr "GeoLite2 資料庫為 IP 位址提供地理資訊。這用於日誌分析中的離線地理分析。" #: src/views/preference/tabs/NodeSettings.vue:37 msgid "" @@ -7345,7 +7316,8 @@ msgstr "關聯的 DNS 記錄已從 DNS 伺服器中刪除。您可以重新建 #: src/constants/errors/nginx_log.ts:2 msgid "" -"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList" +"The log path is not under the paths in " +"settings.NginxSettings.LogDirWhiteList" msgstr "日誌路徑不在 settings.NginxSettings.LogDirWhiteList 設定中的路徑範圍內" #: src/views/preference/tabs/OpenAISettings.vue:153 @@ -7356,8 +7328,7 @@ msgid "" msgstr "模型名稱僅能包含字母、Unicode 字元、數字、連字號、破折號、冒號和句點。" #: src/views/preference/tabs/OpenAISettings.vue:154 -msgid "" -"The model used for code completion, if not set, the chat model will be used." +msgid "The model used for code completion, if not set, the chat model will be used." msgstr "用於代碼補全的模型,如果未設置,將使用聊天模型。" #: src/views/preference/tabs/NodeSettings.vue:18 @@ -7390,9 +7361,7 @@ msgid "" "The remote Nginx UI version is not compatible with the local Nginx UI " "version. To avoid potential errors, please upgrade the remote Nginx UI to " "match the local version." -msgstr "" -"遠端 Nginx UI 版本與本機 Nginx UI 版本不相容。為避免潛在錯誤,請升級遠端 " -"Nginx UI 以匹配本機版本。" +msgstr "遠端 Nginx UI 版本與本機 Nginx UI 版本不相容。為避免潛在錯誤,請升級遠端 Nginx UI 以匹配本機版本。" #: src/components/AutoCertForm/AutoCertForm.vue:155 msgid "" @@ -7422,14 +7391,12 @@ msgstr "理論最大並發連接數:" msgid "Theoretical maximum RPS (Requests Per Second):" msgstr "理論最大 RPS (每秒請求數):" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:105 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:108 msgid "" "These codes are the last resort for accessing your account in case you lose " "your password and second factors. If you cannot find these codes, you will " "lose access to your account." -msgstr "" -"這些代碼是您在遺失密碼和第二重驗證因素時,存取帳戶的最後手段。如果您找不到這" -"些代碼,您將無法再存取您的帳戶。" +msgstr "這些代碼是您在遺失密碼和第二重驗證因素時,存取帳戶的最後手段。如果您找不到這些代碼,您將無法再存取您的帳戶。" #: src/routes/modules/system.ts:45 msgid "Third-party Components" @@ -7472,14 +7439,13 @@ msgid "This field should not be empty" msgstr "此欄位不應為空" #: src/constants/form_errors.ts:6 -msgid "" -"This field should only contain letters, unicode characters, numbers, and -_." +msgid "This field should only contain letters, unicode characters, numbers, and -_." msgstr "此欄位僅能包含字母、Unicode 字元、數字、連字號、破折號和底線。" #: src/language/curd.ts:46 msgid "" -"This field should only contain letters, unicode characters, numbers, and -" -"_./:" +"This field should only contain letters, unicode characters, numbers, and " +"-_./:" msgstr "此欄位應僅包含字母、Unicode 字符、數字和 -_./:" #: src/components/Notification/notifications.ts:102 @@ -7492,10 +7458,6 @@ msgid "" "server state." msgstr "此模式僅預覽安裝介面流程,不會更改任何伺服器狀態。" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:56 -msgid "This mode only supports nginx-ui and target nginx on the same host." -msgstr "" - #: src/views/dashboard/NginxDashBoard.vue:175 msgid "" "This module provides Nginx request statistics, connection count, etc. data. " @@ -7516,23 +7478,27 @@ msgid "" "certificate files on the file system will not be deleted." msgstr "此操作僅會從資料庫中移除憑證。檔案系統上的憑證檔案不會被刪除。" +#: src/views/certificate/components/SelfSignedCertManagement.vue:17 +msgid "" +"This self-signed certificate is managed by Nginx UI and renewed " +"automatically." +msgstr "此自簽名憑證由 Nginx UI 管理並自動續期。" + #: src/components/AutoCertForm/AutoCertForm.vue:128 msgid "" -"This site is configured as a default server (default_server) for HTTPS (port " -"443). IP certificates require Certificate Authority (CA) support and may not " -"be available with all ACME providers." +"This site is configured as a default server (default_server) for HTTPS " +"(port 443). IP certificates require Certificate Authority (CA) support and " +"may not be available with all ACME providers." msgstr "" -"此站點已配置為 HTTPS (端口 443)的預設伺服器(default_server)。IP 憑證需要" -"憑證頒發機構(CA)的支援,且並非所有 ACME 供應商都提供此類憑證。" +"此站點已配置為 HTTPS (端口 443)的預設伺服器(default_server)。IP 憑證需要憑證頒發機構(CA)的支援,且並非所有 " +"ACME 供應商都提供此類憑證。" #: src/components/AutoCertForm/AutoCertForm.vue:132 msgid "" -"This site uses wildcard server name (_) which typically indicates an IP-" -"based certificate. IP certificates require Certificate Authority (CA) " +"This site uses wildcard server name (_) which typically indicates an " +"IP-based certificate. IP certificates require Certificate Authority (CA) " "support and may not be available with all ACME providers." -msgstr "" -"此站點使用萬用字元伺服器名稱(_),通常表示基於 IP 的憑證。IP 憑證需要憑證授" -"權機構(CA)的支援,並且可能並非所有 ACME 供應商都提供。" +msgstr "此站點使用萬用字元伺服器名稱(_),通常表示基於 IP 的憑證。IP 憑證需要憑證授權機構(CA)的支援,並且可能並非所有 ACME 供應商都提供。" #: src/views/backup/components/BackupCreator.vue:141 msgid "" @@ -7552,9 +7518,7 @@ msgstr "這將永久刪除%{type}。" msgid "" "This will rebuild the entire log index. All existing index data will be " "deleted and rebuilt from scratch. This may take some time. Continue?" -msgstr "" -"這將重建整個日誌索引。所有現有索引數據將被刪除並從頭開始重建。這可能需要一些" -"時間。是否繼續?" +msgstr "這將重建整個日誌索引。所有現有索引數據將被刪除並從頭開始重建。這可能需要一些時間。是否繼續?" #: src/views/nginx_log/indexing/IndexManagement.vue:56 msgid "This will rebuild the index data for this specific file: %{path}" @@ -7575,8 +7539,7 @@ msgid "" msgstr "這將恢復設定檔案和資料庫。恢復完成後,Nginx UI 將重新啟動。" #: src/views/node/BatchUpgrader.vue:187 -msgid "" -"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." +msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}." msgstr "這將在 %{nodeNames} 上升級或重新安裝 Nginx UI 到 %{version}。" #: src/views/preference/tabs/AuthSettings.vue:89 @@ -7610,9 +7573,7 @@ msgstr "提示" msgid "" "Tips: You can increase the concurrency processing capacity by increasing " "worker_processes or worker_connections" -msgstr "" -"提示:您可以通過增加 worker_processes 或 worker_connections 來提高並行處理能" -"力" +msgstr "提示:您可以通過增加 worker_processes 或 worker_connections 來提高並行處理能力" #: src/views/notification/notificationColumns.tsx:58 msgid "Title" @@ -7630,28 +7591,25 @@ msgstr "若要確認撤銷,請在下方欄位中輸入「撤銷」:" msgid "" "To enable it, you need to install the Google or Microsoft Authenticator app " "on your mobile phone." -msgstr "" -"要啟用它,您需要在手機上安裝 Google 或 Microsoft Authenticator 應用程式。" +msgstr "要啟用它,您需要在手機上安裝 Google 或 Microsoft Authenticator 應用程式。" #: src/views/preference/components/AuthSettings/AddPasskey.vue:95 msgid "" "To ensure security, Webauthn configuration cannot be added through the UI. " "Please manually configure the following in the app.ini configuration file " "and restart Nginx UI." -msgstr "" -"為確保安全性,Webauthn 設定無法透過 UI 新增。請在 app.ini 設定檔中手動設定以" -"下內容,並重新啟動 Nginx UI。" +msgstr "為確保安全性,Webauthn 設定無法透過 UI 新增。請在 app.ini 設定檔中手動設定以下內容,並重新啟動 Nginx UI。" #: src/views/site/site_edit/components/Cert/IssueCert.vue:47 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15 msgid "" "To make sure the certification auto-renewal can work normally, we need to " -"add a location which can proxy the request from authority to backend, and we " -"need to save this file and reload the Nginx. Are you sure you want to " +"add a location which can proxy the request from authority to backend, and " +"we need to save this file and reload the Nginx. Are you sure you want to " "continue?" msgstr "" -"為了確保憑證自動續期能夠正常運作,我們需要新增一個 Location 來代理從授權後端" -"的請求,我們需要儲存這個檔案並重新載入 Nginx。你確定你要繼續嗎?" +"為了確保憑證自動續期能夠正常運作,我們需要新增一個 Location 來代理從授權後端的請求,我們需要儲存這個檔案並重新載入 " +"Nginx。你確定你要繼續嗎?" #: src/views/preference/tabs/OpenAISettings.vue:44 msgid "" @@ -7659,8 +7617,8 @@ msgid "" "provide an OpenAI-compatible API endpoint, so just set the baseUrl to your " "local API." msgstr "" -"要使用本機大型語言模型,請使用 ollama、vllm 或 lmdeploy 部署。它們提供與 " -"OpenAI 相容的 API 端點,因此只需將 baseUrl 設定為您的本機 API。" +"要使用本機大型語言模型,請使用 ollama、vllm 或 lmdeploy 部署。它們提供與 OpenAI 相容的 API 端點,因此只需將 " +"baseUrl 設定為您的本機 API。" #: src/views/dashboard/NginxDashBoard.vue:56 msgid "Toggle failed" @@ -7788,7 +7746,7 @@ msgstr "TTL(秒)" msgid "Tuesday" msgstr "星期二" -#: src/components/TwoFA/use2FAModal.ts:46 +#: src/components/TwoFA/use2FAModal.ts:59 msgid "Two-factor authentication required" msgstr "需要多重因素驗證" @@ -7809,10 +7767,6 @@ msgstr "類型" msgid "Type %{delete} to confirm" msgstr "輸入 %{delete} 以確認" -#: src/views/dns/DDNSManager.vue:318 -msgid "Type or select A/AAAA records" -msgstr "輸入或選擇 A/AAAA 記錄" - #: src/views/nginx_log/structured/components/SearchFilters.vue:142 msgid "Type or select browser" msgstr "輸入或選擇瀏覽器" @@ -7858,11 +7812,11 @@ msgstr "不支援的日誌格式" msgid "Update already in progress" msgstr "更新已經在進行中" -#: src/views/user/UserProfile.vue:218 +#: src/views/user/UserProfile.vue:213 msgid "Update Password" msgstr "更新密碼" -#: src/views/user/UserProfile.vue:142 +#: src/views/user/UserProfile.vue:137 msgid "Update Profile" msgstr "更新資料" @@ -7951,11 +7905,11 @@ msgstr "URL" msgid "Use @ for root" msgstr "使用 @ 表示根域名" -#: src/components/TwoFA/Authorization.vue:121 +#: src/components/TwoFA/Authorization.vue:129 msgid "Use OTP" msgstr "使用一次性密碼" -#: src/components/TwoFA/Authorization.vue:117 +#: src/components/TwoFA/Authorization.vue:125 msgid "Use recovery code" msgstr "使用恢復碼" @@ -7963,10 +7917,6 @@ msgstr "使用恢復碼" msgid "Use Temporary Path" msgstr "使用臨時路徑" -#: src/views/preference/components/NginxHostSetup/steps/Step3Connection.vue:63 -msgid "Use the cluster Node guide for cross-host setups." -msgstr "" - #: src/components/LLM/ChatMessage.vue:216 msgid "User" msgstr "使用者名稱" @@ -7980,7 +7930,7 @@ msgstr "使用者代理" msgid "User banned" msgstr "使用者被禁止" -#: src/views/user/UserProfile.vue:62 +#: src/views/user/UserProfile.vue:57 msgid "User info updated successfully" msgstr "用戶資訊更新成功" @@ -7993,7 +7943,7 @@ msgid "User Profile" msgstr "用戶資料" #: src/views/other/Login.vue:298 src/views/user/userColumns.tsx:7 -#: src/views/user/UserProfile.vue:127 src/views/user/UserProfile.vue:131 +#: src/views/user/UserProfile.vue:122 src/views/user/UserProfile.vue:126 msgid "Username" msgstr "使用者名稱" @@ -8011,10 +7961,14 @@ msgstr "獨立訪客" #: src/components/CertInfo/CertInfo.vue:24 #: src/views/certificate/ACMEUser.vue:152 -#: src/views/certificate/CertificateList/certColumns.tsx:76 +#: src/views/certificate/CertificateList/certColumns.tsx:98 msgid "Valid" msgstr "有效" +#: src/views/certificate/components/SelfSignedCertFields.vue:61 +msgid "Valid For (days)" +msgstr "有效期(天)" + #: src/views/dashboard/components/SiteHealthCheckModal.vue:658 msgid "Validate SSL Certificate" msgstr "驗證 SSL 憑證" @@ -8025,11 +7979,6 @@ msgstr "驗證 SSL 憑證" msgid "Value" msgstr "數值" -#: src/views/preference/components/NginxHostSetup/Wizard.vue:63 -#, fuzzy -msgid "Verify" -msgstr "驗證密鑰" - #: src/components/SystemRestore/SystemRestoreContent.vue:242 #: src/components/SystemRestore/SystemRestoreContent.vue:325 msgid "Verify Backup File Integrity (required)" @@ -8066,7 +8015,7 @@ msgstr "檢視所有通知" msgid "View on GitHub" msgstr "在 GitHub 上查看" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:135 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:138 msgid "View Recovery Codes" msgstr "檢視復原代碼" @@ -8094,7 +8043,7 @@ msgstr "訪問量" msgid "Waiting processes" msgstr "等待過程" -#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:24 +#: src/components/InspectConfig/InspectConfig.vue:156 src/constants/index.ts:25 #: src/views/backup/components/BackupCreator.vue:138 #: src/views/notification/notificationColumns.tsx:21 #: src/views/preference/components/AuthSettings/AddPasskey.vue:88 @@ -8107,9 +8056,7 @@ msgid "" "Warning: Restore operation will overwrite current configurations. Make sure " "you have a valid backup file and security token, and carefully select what " "to restore." -msgstr "" -"警告:恢復操作將覆蓋目前設定。請確保您擁有有效的備份檔案和安全令牌,並謹慎選" -"擇要恢復的內容。" +msgstr "警告:恢復操作將覆蓋目前設定。請確保您擁有有效的備份檔案和安全令牌,並謹慎選擇要恢復的內容。" #: src/components/AutoCertForm/AutoCertForm.vue:103 msgid "" @@ -8117,20 +8064,18 @@ msgid "" "Encrypt cannot issue certificates for private IPs. Use a public IP address " "or consider using a private CA." msgstr "" -"警告:這似乎是一個私有 IP 地址。像 Let's Encrypt 這樣的公共 CA 無法為私有 IP " -"頒發證書。請使用公共 IP 地址或考慮使用私有 CA。" +"警告:這似乎是一個私有 IP 地址。像 Let's Encrypt 這樣的公共 CA 無法為私有 IP 頒發證書。請使用公共 IP 地址或考慮使用私有 " +"CA。" #: src/views/nginx_log/components/IndexingSettingsModal.vue:298 msgid "We do not accept any feature requests" msgstr "我們不接受任何功能請求" -#: src/views/site/site_edit/components/Cert/ObtainCert.vue:181 +#: src/views/site/site_edit/components/Cert/ObtainCert.vue:140 msgid "" -"We will remove the HTTPChallenge configuration from this file and reload the " -"Nginx. Are you sure you want to continue?" -msgstr "" -"我們將從該檔案中刪除 HTTPChallenge 設定並重新載入 Nginx 設定檔案。你確定你要" -"繼續嗎?" +"We will remove the HTTPChallenge configuration from this file and reload " +"the Nginx. Are you sure you want to continue?" +msgstr "我們將從該檔案中刪除 HTTPChallenge 設定並重新載入 Nginx 設定檔案。你確定你要繼續嗎?" #: src/views/preference/tabs/AuthSettings.vue:62 msgid "Webauthn" @@ -8165,25 +8110,31 @@ msgstr "每週 %{day} 的 %{time}" msgid "Weight" msgstr "權重" +#: src/views/dns/DDNSManager.vue:400 +msgid "" +"When enabled, DDNS owns the selected names: it auto-pairs sibling family " +"records, creates missing records, and removes records whose IP family is " +"unreachable. Disable to manage only the records you explicitly selected and " +"keep all other DNS state untouched." +msgstr "" +"啟用後,DDNS 將擁有所選名稱:自動配對同族記錄,建立缺失的記錄,並移除 IP 族無法連線的記錄。停用後,僅管理您明確選取的記錄,保持所有其他 " +"DNS 狀態不變。" + #: src/views/certificate/ACMEUser.vue:110 msgid "" "When Enabled, Nginx UI will automatically re-register users upon startup. " "Generally, do not enable this unless you are in a dev environment and using " "Pebble as CA." -msgstr "" -"啟用後,Nginx UI 將在啟動時自動重新註冊使用者。通常,除非您處於開發環境並使" -"用 Pebble 作為 CA,否則不建議啟用此功能。" +msgstr "啟用後,Nginx UI 將在啟動時自動重新註冊使用者。通常,除非您處於開發環境並使用 Pebble 作為 CA,否則不建議啟用此功能。" #: src/views/site/site_edit/components/RightPanel/Basic.vue:62 #: src/views/stream/components/RightPanel/Basic.vue:57 msgid "" "When you enable/disable, delete, or save this site, the nodes set in the " "namespace and the nodes selected below will be synchronized." -msgstr "" -"當您啟用/停用、刪除或儲存此站點時,命名空間中設定的節點和下方選擇的節點將被同" -"步。" +msgstr "當您啟用/停用、刪除或儲存此站點時,命名空間中設定的節點和下方選擇的節點將被同步。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:141 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:144 msgid "" "When you generate new recovery codes, you must download or print the new " "codes." @@ -8193,7 +8144,7 @@ msgstr "當您產生新的復原碼時,必須下載或列印新的代碼。" msgid "Whether to use a temporary path when writing temporary files" msgstr "寫入暫存檔案時是否使用暫存路徑" -#: src/views/certificate/components/DNSIssueCertificate.vue:115 +#: src/views/certificate/components/DNSIssueCertificate.vue:171 msgid "Wildcard Certificate" msgstr "萬用字元憑證" @@ -8212,7 +8163,7 @@ msgstr "worker 行程" msgid "Workers" msgstr "worker" -#: src/layouts/HeaderLayout.vue:61 src/routes/index.ts:63 +#: src/layouts/HeaderLayout.vue:67 src/routes/index.ts:63 #: src/views/workspace/WorkSpace.vue:51 msgid "Workspace" msgstr "工作區" @@ -8251,11 +8202,9 @@ msgstr "是的" #: src/views/terminal/Terminal.vue:219 msgid "" -"You are accessing this terminal over an insecure HTTP connection on a non-" -"localhost domain. This may expose sensitive information." -msgstr "" -"您正在透過非本地主機域上的不安全 HTTP 連線存取此終端機。這可能會暴露敏感資" -"訊。" +"You are accessing this terminal over an insecure HTTP connection on a " +"non-localhost domain. This may expose sensitive information." +msgstr "您正在透過非本地主機域上的不安全 HTTP 連線存取此終端機。這可能會暴露敏感資訊。" #: src/constants/errors/config.ts:12 msgid "You are not allowed to delete a file outside of the nginx config path" @@ -8284,22 +8233,39 @@ msgid "" msgstr "您尚未設定 Webauthn 設定,因此無法新增通行金鑰。" #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:82 -msgid "" -"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." +msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes." msgstr "您尚未啟用雙重身份驗證 (2FA)。請啟用 2FA 以生成復原代碼。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:98 msgid "You have not generated recovery codes yet." msgstr "您尚未產生復原代碼。" +#: src/components/TwoFA/Authorization.vue:73 +msgid "" +"Your account still uses a legacy recovery code. Generate new recovery codes " +"after verification to keep account recovery secure." +msgstr "您的帳戶仍在使用舊版復原碼。請在驗證後產生新的復原碼,以確保帳戶復原的安全性。" + #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:92 msgid "" +"Your account uses a deprecated legacy recovery code. Generate new recovery " +"codes now to complete migration and keep account recovery secure." +msgstr "您的帳戶使用了已棄用的舊復原碼。請立即產生新的復原碼以完成移轉,並確保帳戶復原安全。" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:95 +msgid "" "Your current recovery code might be outdated and insecure. Please generate " "new recovery codes at your earliest convenience to ensure security." msgstr "您目前的復原代碼可能已過時且不安全。請盡早生成新的復原代碼以確保安全。" -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:143 -#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:156 +#: src/components/TwoFA/use2FAModal.ts:32 +msgid "" +"Your legacy recovery code has been used and cannot be used again. Generate " +"new recovery codes now to keep account recovery available." +msgstr "您的舊恢復碼已使用,無法再次使用。立即產生新的恢復碼,以確保帳戶恢復功能可用。" + +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:146 +#: src/views/preference/components/AuthSettings/RecoveryCodes.vue:159 msgid "Your old codes won't work anymore." msgstr "您的舊代碼將不再有效。" @@ -8311,6 +8277,61 @@ msgstr "您的通行金鑰" msgid "Zero-allocation pipeline" msgstr "零分配管道" +#, fuzzy +#~ msgid "All checks passed — you may save the configuration." +#~ msgstr "Nginx 未能驗證配置。" + +#, fuzzy +#~ msgid "Authentication method" +#~ msgstr "正在驗證..." + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "已連線" + +#, fuzzy +#~ msgid "Container" +#~ msgstr "內容" + +#, fuzzy +#~ msgid "Copy fix" +#~ msgstr "複製" + +#, fuzzy +#~ msgid "External Container" +#~ msgstr "外部 Docker 容器" + +#, fuzzy +#~ msgid "Generate keypair" +#~ msgstr "產生" + +#, fuzzy +#~ msgid "override file" +#~ msgstr "覆寫現有檔案" + +#, fuzzy +#~ msgid "Regenerate keypair" +#~ msgstr "重新產生回應" + +#, fuzzy +#~ msgid "Remote address detected" +#~ msgstr "未選擇節點" + +#, fuzzy +#~ msgid "Run verification" +#~ msgstr "更換憑證" + +#, fuzzy +#~ msgid "SSH key (recommended)" +#~ msgstr "推薦 2+ 核心" + +#~ msgid "Type or select A/AAAA records" +#~ msgstr "輸入或選擇 A/AAAA 記錄" + +#, fuzzy +#~ msgid "Verify" +#~ msgstr "驗證密鑰" + #~ msgid "OpenAI" #~ msgstr "OpenAI" @@ -8323,8 +8344,7 @@ msgstr "零分配管道" #~ msgid "" #~ "We will add one or more TXT records to the DNS records of your domain for " #~ "ownership verification." -#~ msgstr "" -#~ "我們將在您的網域的 DNS 記錄中新增一個或多個 TXT 記錄以進行所有權驗證。" +#~ msgstr "我們將在您的網域的 DNS 記錄中新增一個或多個 TXT 記錄以進行所有權驗證。" #~ msgid "Settings" #~ msgstr "設定" @@ -8487,13 +8507,12 @@ msgstr "零分配管道" #~ msgid "" #~ "Support communication with the backend through the Server-Sent Events " -#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, " -#~ "please refer to this link to write the corresponding configuration file: " +#~ "protocol. If your Nginx UI is being used via an Nginx reverse proxy, please " +#~ "refer to this link to write the corresponding configuration file: " #~ "https://nginxui.com/guide/nginx-proxy-example.html" #~ msgstr "" -#~ "支援透過 Server-Sent Events 協定與後端通訊。如果您的 Nginx UI 是透過 " -#~ "Nginx 反向代理使用的,請參考此連結編寫相應的設定檔:https://nginxui.com/" -#~ "guide/nginx-proxy-example.html" +#~ "支援透過 Server-Sent Events 協定與後端通訊。如果您的 Nginx UI 是透過 Nginx " +#~ "反向代理使用的,請參考此連結編寫相應的設定檔:https://nginxui.com/guide/nginx-proxy-example.html" #~ msgid "If left blank, the default CA Dir will be used." #~ msgstr "如果留空,將使用預設的 CA Dir。" @@ -8563,12 +8582,11 @@ msgstr "零分配管道" #~ msgid "" #~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official " -#~ "Docker Image, please make sure the docker socket is mounted like this: `-" -#~ "v /var/run/docker.sock:/var/run/docker.sock`." +#~ "Docker Image, please make sure the docker socket is mounted like this: `-v " +#~ "/var/run/docker.sock:/var/run/docker.sock`." #~ msgstr "" -#~ "檢查 /var/run/docker.sock 是否存在。如果您正在使用 Nginx UI 官方 Docker 映" -#~ "像,請確保 Docker 通訊端已掛載如下:`-v /var/run/docker.sock:/var/run/" -#~ "docker.sock`。" +#~ "檢查 /var/run/docker.sock 是否存在。如果您正在使用 Nginx UI 官方 Docker 映像,請確保 Docker " +#~ "通訊端已掛載如下:`-v /var/run/docker.sock:/var/run/docker.sock`。" #~ msgid "Check if the nginx access log path exists" #~ msgstr "檢查 Nginx 存取日誌路徑是否存在" @@ -8592,8 +8610,7 @@ msgstr "零分配管道" #~ msgid "" #~ "If logs are not indexed, please check if the log file is under the " #~ "directory in Nginx.LogDirWhiteList." -#~ msgstr "" -#~ "如果日誌未被索引,請檢查日誌檔案是否位於 Nginx 的 LogDirWhiteList 目錄下。" +#~ msgstr "如果日誌未被索引,請檢查日誌檔案是否位於 Nginx 的 LogDirWhiteList 目錄下。" #, fuzzy #~ msgid "Nginx Conf Include Conf.d" @@ -8609,11 +8626,9 @@ msgstr "零分配管道" #~ msgstr "格式錯誤 %{msg}" #~ msgid "" -#~ "When you enable/disable, delete, or save this stream, the nodes set in " -#~ "the Node Group and the nodes selected below will be synchronized." -#~ msgstr "" -#~ "當您啟用/停用、刪除或儲存此串流時,在節點群組中設定的節點以及下方選擇的節" -#~ "點將會同步更新。" +#~ "When you enable/disable, delete, or save this stream, the nodes set in the " +#~ "Node Group and the nodes selected below will be synchronized." +#~ msgstr "當您啟用/停用、刪除或儲存此串流時,在節點群組中設定的節點以及下方選擇的節點將會同步更新。" #, fuzzy #~ msgid "Bot Token" @@ -8661,17 +8676,11 @@ msgstr "零分配管道" #~ msgid "Please upgrade the remote Nginx UI to the latest version" #~ msgstr "請將遠端 Nginx UI 升級至最新版本" -#~ msgid "" -#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: " -#~ "%{resp}" -#~ msgstr "" -#~ "在 %{env_name} 上將 %{orig_path} 重新命名為 %{new_path} 失敗,回應:" -#~ "%{resp}" +#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}" +#~ msgstr "在 %{env_name} 上將 %{orig_path} 重新命名為 %{new_path} 失敗,回應:%{resp}" -#~ msgid "" -#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" -#~ msgstr "" -#~ "將站點 %{site} 重新命名為 %{new_site} 於 %{node} 時發生錯誤,回應:%{resp}" +#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}" +#~ msgstr "將站點 %{site} 重新命名為 %{new_site} 於 %{node} 時發生錯誤,回應:%{resp}" #~ msgid "Save site %{site} to %{node} error, response: %{resp}" #~ msgstr "儲存站點 %{site} 至 %{node} 時發生錯誤,回應:%{resp}" @@ -8679,24 +8688,20 @@ msgstr "零分配管道" #~ msgid "" #~ "Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " #~ "remote Nginx UI to the latest version" -#~ msgstr "" -#~ "同步憑證 %{cert_name} 到 %{env_name} 失敗,請將遠端 Nginx UI 升級到最新版" -#~ "本" +#~ msgstr "同步憑證 %{cert_name} 到 %{env_name} 失敗,請將遠端 Nginx UI 升級到最新版本" -#~ msgid "" -#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" #~ msgstr "同步憑證 %{cert_name} 到 %{env_name} 失敗,回應:%{resp}" #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}" #~ msgstr "同步設定 %{config_name} 到 %{env_name} 失敗,回應:%{resp}" #~ msgid "" -#~ "If you lose your mobile phone, you can use the recovery code to reset " -#~ "your 2FA." +#~ "If you lose your mobile phone, you can use the recovery code to reset your " +#~ "2FA." #~ msgstr "如果您遺失了手機,可以使用恢復碼重設您的多重因素驗證驗證。" -#~ msgid "" -#~ "The recovery code is only displayed once, please save it in a safe place." +#~ msgid "The recovery code is only displayed once, please save it in a safe place." #~ msgstr "恢復碼僅顯示一次,請將其儲存在安全的地方。" #~ msgid "Incorrect username or password" @@ -8708,9 +8713,7 @@ msgstr "零分配管道" #~ msgid "" #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade " #~ "the remote Nginx UI to the latest version" -#~ msgstr "" -#~ "將 %{orig_path} 重新命名為 %{new_path} 在 %{env_name} 失敗,請將遠端 " -#~ "Nginx UI 升級到最新版本" +#~ msgstr "將 %{orig_path} 重新命名為 %{new_path} 在 %{env_name} 失敗,請將遠端 Nginx UI 升級到最新版本" #~ msgid "Enable 2FA" #~ msgstr "啟用多因素身份驗證" @@ -8770,9 +8773,8 @@ msgstr "零分配管道" #~ "Once the verification is complete, the records will be removed.\n" #~ "Please note that the unit of time configurations below are all in seconds." #~ msgstr "" -#~ "請填寫您的 DNS 供應商提供的 API 身份驗證認證。我們會將一個或多個 TXT 記錄" -#~ "新增到您網域的 DNS 記錄中以進行所有權驗證。驗證完成後,記錄將被刪除。請注" -#~ "意,以下時間設定均以秒為單位。" +#~ "請填寫您的 DNS 供應商提供的 API 身份驗證認證。我們會將一個或多個 TXT 記錄新增到您網域的 DNS " +#~ "記錄中以進行所有權驗證。驗證完成後,記錄將被刪除。請注意,以下時間設定均以秒為單位。" #~ msgid "Delete ID: %{id}" #~ msgstr "刪除 ID: %{id}" @@ -8793,11 +8795,9 @@ msgstr "零分配管道" #~ msgstr "您要啟用自動憑證更新嗎?" #~ msgid "" -#~ "We need to add the HTTPChallenge configuration to this file and reload " -#~ "the Nginx. Are you sure you want to continue?" -#~ msgstr "" -#~ "我們需要將 HTTPChallenge 設定新增到此檔案並重新載入 Nginx。你確定你要繼續" -#~ "嗎?" +#~ "We need to add the HTTPChallenge configuration to this file and reload the " +#~ "Nginx. Are you sure you want to continue?" +#~ msgstr "我們需要將 HTTPChallenge 設定新增到此檔案並重新載入 Nginx。你確定你要繼續嗎?" #~ msgid "Chat with ChatGPT" #~ msgstr "使用 ChatGPT 聊天" @@ -8841,8 +8841,8 @@ msgstr "零分配管道" #~ "you do not have a certificate before, please click \"Getting Certificate " #~ "from Let's Encrypt\" first." #~ msgstr "" -#~ "系統將會每小時偵測一次該域名憑證,若距離上次簽發已超過 1 個月,則將自動續" -#~ "簽。
如果您之前沒有憑證,請先點選「從 Let's Encrypt 取得憑證」。" +#~ "系統將會每小時偵測一次該域名憑證,若距離上次簽發已超過 1 個月,則將自動續簽。
如果您之前沒有憑證,請先點選「從 Let's Encrypt " +#~ "取得憑證」。" #~ msgid "Do you want to change the template to support the TLS?" #~ msgstr "你想要改變範本以支援 TLS 嗎?" @@ -8857,15 +8857,12 @@ msgstr "零分配管道" #~ "The following values will only take effect if you have the corresponding " #~ "fields in your configuration file. The configuration filename cannot be " #~ "changed after it has been created." -#~ msgstr "" -#~ "只有在您的設定檔案中有相應欄位時,下列的設定才能生效。設定檔名稱建立後不可" -#~ "修改。" +#~ msgstr "只有在您的設定檔案中有相應欄位時,下列的設定才能生效。設定檔名稱建立後不可修改。" #~ msgid "This operation will lose the custom configuration." #~ msgstr "該操作將會遺失自定義設定。" -#~ msgid "" -#~ "Add site here first, then you can configure TLS on the domain edit page." +#~ msgid "Add site here first, then you can configure TLS on the domain edit page." #~ msgstr "在這裡新增網站,完成後可進入編輯頁面設定 TLS。" #~ msgid "Server Status" @@ -8881,24 +8878,19 @@ msgstr "零分配管道" #~ msgstr "僅用於 DNS 記錄管理" #~ msgid "" -#~ "DNS Domains are used for DNS record management in NGINX UI and are " -#~ "separate from ACME DNS-01 certificate challenges." -#~ msgstr "" -#~ "DNS 網域用於 NGINX UI 中的 DNS 記錄管理,與 ACME DNS-01 憑證驗證挑戰是兩個" -#~ "不同的功能。" +#~ "DNS Domains are used for DNS record management in NGINX UI and are separate " +#~ "from ACME DNS-01 certificate challenges." +#~ msgstr "DNS 網域用於 NGINX UI 中的 DNS 記錄管理,與 ACME DNS-01 憑證驗證挑戰是兩個不同的功能。" #~ msgid "" -#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent " -#~ "Cloud DNS, and Cloudflare only." +#~ "Currently, DNS record management supports Alibaba Cloud DNS, Tencent Cloud " +#~ "DNS, and Cloudflare only." #~ msgstr "目前,DNS 記錄管理僅支援阿里雲 DNS、騰訊雲 DNS 和 Cloudflare。" #~ msgid "" #~ "For ACME DNS-01 certificate issuance, create DNS credentials under DNS > " #~ "Credentials and select them in certificate settings." -#~ msgstr "" -#~ "如需使用 ACME DNS-01 簽發憑證,請在 DNS > 憑證中建立 DNS 憑證,並在憑證設" -#~ "定中選取它。" +#~ msgstr "如需使用 ACME DNS-01 簽發憑證,請在 DNS > 憑證中建立 DNS 憑證,並在憑證設定中選取它。" -#: src/views/dns/DNSDomainList.vue:115 -msgid "DNS Domains only use providers with DNS record management implementations." -msgstr "DNS Domains 僅使用已實作 DNS 記錄管理的提供商。" +#~ msgid "DNS Domains only use providers with DNS record management implementations." +#~ msgstr "DNS Domains 僅使用已實作 DNS 記錄管理的提供商。" diff --git a/app/src/views/certificate/CertificateEditor.vue b/app/src/views/certificate/CertificateEditor.vue index 120d72ce..02f3d4fc 100644 --- a/app/src/views/certificate/CertificateEditor.vue +++ b/app/src/views/certificate/CertificateEditor.vue @@ -1,14 +1,15 @@ - diff --git a/app/src/views/site/site_edit/components/Cert/ObtainCert.vue b/app/src/views/site/site_edit/components/Cert/ObtainCert.vue index 48e6c1f5..c57d1102 100644 --- a/app/src/views/site/site_edit/components/Cert/ObtainCert.vue +++ b/app/src/views/site/site_edit/components/Cert/ObtainCert.vue @@ -7,6 +7,7 @@ import { AutoCertChallengeMethod } from '@/api/auto_cert' import site from '@/api/site' import AutoCertStepOne from '@/components/AutoCertForm' import { PrivateKeyTypeEnum } from '@/constants' +import { useTLSDirectives } from '../../composables/useTLSDirectives' import { useSiteEditorStore } from '../SiteEditor/store' import ObtainCertLive from './ObtainCertLive.vue' @@ -17,7 +18,7 @@ const props = defineProps<{ const editorStore = useSiteEditorStore() const { message } = useGlobalApp() -const { ngxConfig, issuingCert, curServerDirectives, curDirectivesMap, isDefaultServer, hasWildcardServerName, hasExplicitIpAddress, isIpCertificate, needsManualIpInput } = storeToRefs(editorStore) +const { ngxConfig, issuingCert, curDirectivesMap, isDefaultServer, hasWildcardServerName, hasExplicitIpAddress, isIpCertificate, needsManualIpInput } = storeToRefs(editorStore) const autoCert = defineModel('autoCert') @@ -46,59 +47,7 @@ const name = computed(() => { const refObtainCertLive = useTemplateRef('refObtainCertLive') const refAutoCertForm = useTemplateRef('refAutoCertForm') -function hasTLSListen(params: string) { - return params.includes('443') && params.includes('ssl') -} - -function ensureDirective(directive: string, params: string, insertIndex?: number) { - if (!curServerDirectives.value) - curServerDirectives.value = [] - - const existingDirective = curServerDirectives.value.find(v => v.directive === directive) - - if (existingDirective) { - existingDirective.params = params - return - } - - const directiveItem = { directive, params } - - if (insertIndex === undefined || insertIndex < 0 || insertIndex > curServerDirectives.value.length) { - curServerDirectives.value.push(directiveItem) - return - } - - curServerDirectives.value.splice(insertIndex, 0, directiveItem) -} - -function ensureTLSDirectives(sslCertificate: string, sslCertificateKey: string) { - if (!curServerDirectives.value) - curServerDirectives.value = [] - - const hasIPv4TLSListen = curServerDirectives.value.some(v => v.directive === 'listen' && hasTLSListen(v.params) && !v.params.includes('[::]')) - const hasIPv6TLSListen = curServerDirectives.value.some(v => v.directive === 'listen' && hasTLSListen(v.params) && v.params.includes('[::]')) - - if (!hasIPv6TLSListen) { - curServerDirectives.value.splice(0, 0, { - directive: 'listen', - params: '[::]:443 ssl', - }) - } - - if (!hasIPv4TLSListen) { - curServerDirectives.value.splice(0, 0, { - directive: 'listen', - params: '443 ssl', - }) - } - - const serverNameIdx = curDirectivesMap.value.server_name?.[0]?.idx ?? (curServerDirectives.value.length - 1) - - ensureDirective('ssl_certificate', sslCertificate, serverNameIdx + 1) - - const sslCertificateIndex = curServerDirectives.value.findIndex(v => v.directive === 'ssl_certificate') - ensureDirective('ssl_certificate_key', sslCertificateKey, sslCertificateIndex + 1) -} +const { ensureTLSDirectives } = useTLSDirectives() function issueCert() { const live = refObtainCertLive.value diff --git a/app/src/views/site/site_edit/components/Cert/SelfSignedCert.vue b/app/src/views/site/site_edit/components/Cert/SelfSignedCert.vue new file mode 100644 index 00000000..3256fd94 --- /dev/null +++ b/app/src/views/site/site_edit/components/Cert/SelfSignedCert.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/app/src/views/site/site_edit/composables/useTLSDirectives.ts b/app/src/views/site/site_edit/composables/useTLSDirectives.ts new file mode 100644 index 00000000..0bf56268 --- /dev/null +++ b/app/src/views/site/site_edit/composables/useTLSDirectives.ts @@ -0,0 +1,78 @@ +import { storeToRefs } from 'pinia' +import { useSiteEditorStore } from '../components/SiteEditor/store' + +function getListenPort(params: string) { + const firstToken = params.trim().split(/\s+/)[0]?.replace(/;$/, '') + if (!firstToken) + return '' + + const ipv6Port = firstToken.match(/^\[[^\]]+\]:(\d+)$/) + if (ipv6Port) + return ipv6Port[1] + + const port = firstToken.match(/(?:^|:)(\d+)$/) + return port?.[1] ?? '' +} + +export function hasTLSListen(params: string) { + const tokens = params.trim().split(/\s+/).map(token => token.replace(/;$/, '')) + return getListenPort(params) === '443' && tokens.includes('ssl') +} + +export function isIPv6Listen(params: string) { + return params.trim().startsWith('[') +} + +// useTLSDirectives provides helpers that write SSL directives into the +// currently edited server block. +export function useTLSDirectives() { + const editorStore = useSiteEditorStore() + const { curServerDirectives, curDirectivesMap } = storeToRefs(editorStore) + + function ensureDirective(directive: string, params: string, insertIndex?: number) { + if (!curServerDirectives.value) + curServerDirectives.value = [] + + const existingDirective = curServerDirectives.value.find(v => v.directive === directive) + if (existingDirective) { + existingDirective.params = params + return + } + + const directiveItem = { directive, params } + if (insertIndex === undefined || insertIndex < 0 || insertIndex > curServerDirectives.value.length) { + curServerDirectives.value.push(directiveItem) + return + } + curServerDirectives.value.splice(insertIndex, 0, directiveItem) + } + + function ensureTLSDirectives(sslCertificate: string, sslCertificateKey: string) { + if (!curServerDirectives.value) + curServerDirectives.value = [] + + const hasIPv4TLSListen = curServerDirectives.value.some(v => v.directive === 'listen' && hasTLSListen(v.params) && !isIPv6Listen(v.params)) + const hasIPv6TLSListen = curServerDirectives.value.some(v => v.directive === 'listen' && hasTLSListen(v.params) && isIPv6Listen(v.params)) + + if (!hasIPv6TLSListen) { + curServerDirectives.value.splice(0, 0, { + directive: 'listen', + params: '[::]:443 ssl', + }) + } + if (!hasIPv4TLSListen) { + curServerDirectives.value.splice(0, 0, { + directive: 'listen', + params: '443 ssl', + }) + } + + const serverNameIdx = curDirectivesMap.value.server_name?.[0]?.idx ?? (curServerDirectives.value.length - 1) + ensureDirective('ssl_certificate', sslCertificate, serverNameIdx + 1) + + const sslCertificateIndex = curServerDirectives.value.findIndex(v => v.directive === 'ssl_certificate') + ensureDirective('ssl_certificate_key', sslCertificateKey, sslCertificateIndex + 1) + } + + return { ensureTLSDirectives } +} diff --git a/docs/superpowers/plans/2026-05-23-merge-self-signed-into-issue-cert.md b/docs/superpowers/plans/2026-05-23-merge-self-signed-into-issue-cert.md new file mode 100644 index 00000000..5a065a9d --- /dev/null +++ b/docs/superpowers/plans/2026-05-23-merge-self-signed-into-issue-cert.md @@ -0,0 +1,559 @@ +# Merge Self-signed Certificate into Issue Certificate Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Collapse the certificate list header from three actions to two by absorbing the standalone "Self-signed Certificate" entry into the existing "Issue Certificate" dialog as a third Certificate Type option. + +**Architecture:** Two-file frontend refactor. `DNSIssueCertificate.vue` gains a `'self_signed'` value for its `certType` state, renders `SelfSignedCertFields` instead of the ACME form when selected, and calls `cert.generate_self_signed()` on submit. `CertificateList/Certificate.vue` drops the standalone button, ref, handler, and `SelfSignedCertForm` mount. + +**Tech Stack:** Vue 3 (` +``` + +Key script-side changes vs. the original: + +- Added imports: `SelfSignedCertPayload` type, `cert` API client, `PrivateKeyTypeEnum` constant, `SelfSignedCertFields` component. +- Added `CertType` union, `selfSignedLoading`, `emptySelfSignedPayload()`, `selfSignedPayload` ref. +- `open()` resets `selfSignedPayload`. +- New `submitSelfSigned()` function. + +- [ ] **Step 2: Update the Certificate Type select** + +In the `