diff --git a/.changeset/dead-i18n-namespaces-workflow-publicform-demo.md b/.changeset/dead-i18n-namespaces-workflow-publicform-demo.md new file mode 100644 index 0000000000..3626c83f13 --- /dev/null +++ b/.changeset/dead-i18n-namespaces-workflow-publicform-demo.md @@ -0,0 +1,28 @@ +--- +'@object-ui/i18n': patch +--- + +Delete two dead i18n namespaces — `workflow.*` (58 keys) and `publicForm.demo.*` (36 keys) — from all ten locale packs. + +940 translated strings (94 keys x 10 packs) with **no reader anywhere in the +repo**. Measured with `node scripts/check-i18n-dead-keys.mjs`, the reverse sweep +from objectui#4658: it subtracts the referenced key set (the AST walk that +`check-i18n-call-site-keys.mjs` already uses, plus plural suffixes, plus +`returnObjects` branches, plus every dynamic template head) from the pack key +set, then re-checks each survivor with a fixed-string grep over the whole repo. +`workflow.*` scored 54/58 CONFIRMED with the other 4 appearing only in two i18n +test fixtures — mentions, not consumers; `publicForm.demo.*` scored 36/36 with +zero textual footprint anywhere outside the packs. + +`workflow.*` is a complete BPMN/workflow-designer vocabulary (`userTask`, +`serviceTask`, `parallelGateway`, `boundaryEvent`, `importBpmn`/`exportBpmn`, +`undo`/`redo`, …). Its one plausible consumer, +`packages/plugin-designer/src/ProcessDesigner.tsx`, hardcodes English +(`{ label: 'User Task', value: 'user-task' }`) and imports no translation hook +at all, while six sibling components in the same package do use one — the +vocabulary was never wired up. `publicForm.demo.*` is demo content (contact and +support form titles, field labels, industry/issue-type/priority options) for a +public-form showcase page that does not exist in this repo. + +No behaviour changes: a key with no reader cannot be read. The `publicForm.*` +parent namespace and every other namespace are untouched. diff --git a/packages/i18n/src/__tests__/ellipsis-glyph-3878.test.ts b/packages/i18n/src/__tests__/ellipsis-glyph-3878.test.ts index 78df587ab0..8874f8c0de 100644 --- a/packages/i18n/src/__tests__/ellipsis-glyph-3878.test.ts +++ b/packages/i18n/src/__tests__/ellipsis-glyph-3878.test.ts @@ -88,13 +88,26 @@ const PACKS: Record> = Object.fromEntries( ) as Record>; /** - * The 35 keys this pass converged: every key that held an ASCII ellipsis in at - * least one of the ten packs on the commit before the fix. Pinned by name so the - * scan below cannot go green by the keys quietly disappearing, and so the census - * is readable next to the rule rather than only in the PR that made it. + * The keys this pass converged that the packs still define: every key that held + * an ASCII ellipsis in at least one of the ten packs on the commit before the + * fix, minus the ones later deleted outright. Pinned by name so the scan below + * cannot go green by the keys quietly disappearing, and so the census is + * readable next to the rule rather than only in the PR that made it. * * 312 pack values changed in all: 34 in `en` (33 trailing + the one mid-sentence - * `collaboration.commentPlaceholder`) and 278 across the nine. + * `collaboration.commentPlaceholder`) and 278 across the nine. That historical + * count does not move when a converged key is later retired — only this pin does. + * + * The census was 35 keys at landing and is 33 today: `workflow.fromPlaceholder` + * and `workflow.toPlaceholder` went with the whole `workflow.*` namespace in + * objectui#4742, which deleted it as dead (no call site, no textual reference + * anywhere outside the packs, and its plausible consumer + * `packages/plugin-designer/src/ProcessDesigner.tsx` imports no translation hook + * at all). Their rows are deleted rather than swapped for live keys on purpose: + * this list is a census of which keys that pass actually touched, so naming a key + * it never converged would make the record say something untrue. A key that + * disappears WITHOUT this list being edited still fails, which is the guard + * working — deleting a row is a deliberate act, and this note is its receipt. */ const CONVERGED_KEYS = [ 'appManagement.searchPlaceholder', @@ -130,8 +143,6 @@ const CONVERGED_KEYS = [ 'table.search', 'topbar.connection.connecting', 'topbar.connection.reconnecting', - 'workflow.fromPlaceholder', - 'workflow.toPlaceholder', ] as const; describe('objectui#3878 — the ten packs spell the ellipsis U+2026 and only U+2026', () => { @@ -159,11 +170,13 @@ describe('objectui#3878 — the ten packs spell the ellipsis U+2026 and only U+2 ).toEqual([]); }); - it('keeps an ellipsis in every pack for each of the 35 keys this pass converged', () => { + it('keeps an ellipsis in every pack for each converged key the packs still define', () => { // The complement of the rule above. Without it, deleting the ellipsis // outright would pass the ASCII scan — green because nothing is produced, // which is not the same fact as green because the copy is right. - expect(CONVERGED_KEYS).toHaveLength(35); + // 33, not the 35 this pass converged: see the census note on CONVERGED_KEYS + // for the two `workflow.*` rows objectui#4742 retired with the namespace. + expect(CONVERGED_KEYS).toHaveLength(33); const missing: string[] = []; for (const lang of LANGS) { diff --git a/packages/i18n/src/__tests__/untranslated-identity-4376.test.ts b/packages/i18n/src/__tests__/untranslated-identity-4376.test.ts index 9c941313b6..ede825ff83 100644 --- a/packages/i18n/src/__tests__/untranslated-identity-4376.test.ts +++ b/packages/i18n/src/__tests__/untranslated-identity-4376.test.ts @@ -52,10 +52,15 @@ * * ## The allowlist is the cost, and it is keyed by KEY, not by key+lang * - * 22 keys below are byte-identical to `en` in at least one non-Latin pack and + * The keys below are byte-identical to `en` in at least one non-Latin pack and * are RIGHT that way — proper nouns, protocol and format names, example * addresses, generated filenames, and pure interpolation. Each carries a * one-line reason so the next reader can re-judge it instead of trusting it. + * (This sentence used to state the entry count. It said 22 while the list held + * 23, because nothing asserts the number and additions did not have to touch it; + * the count is deleted rather than corrected so the prose cannot drift again — + * the list itself is the count, and `no dead entries` below is what keeps it + * honest.) * * Key-level rather than key+lang is a deliberate trade: it is looser (an entry * excuses the identity in all five packs, not just the one that has it today) @@ -88,8 +93,13 @@ const LATIN_RUN = /[A-Za-z]{4,}/; const LEGITIMATE_IDENTITIES: Record = { // Proper nouns and product/protocol/format names — the same token in every language. 'layout.metadata.jsonBadge': 'JSON — the format name, not a word.', - 'workflow.webhook': 'Webhook — the protocol term these packs use untranslated.', - 'workflow.webhookEvent': 'Webhook — same term, event-typed.', + // `workflow.webhook` and `workflow.webhookEvent` sat here until objectui#4742 + // deleted the whole `workflow.*` namespace as dead. Their entries went with + // them rather than being re-pointed at another key: an entry is a fact about + // one key's value, so it cannot outlive the key or be transferred to a + // different one. Both assertions in `keeps the allowlist honest` would have + // failed on a leftover entry — dead (no identity left to excuse) and unknown + // (no such key in `en`) — which is that guard doing its job. 'publicForm.poweredBy': 'Powered by ObjectStack — product attribution; ja keeps the English wordmark line.', 'connectAgent.apiKey.badge': 'headless — the literal mode name the CLI and API use.', 'marketplace.pricing.freemium': 'Freemium — the pricing-tier term of art; ru keeps the loanword.', diff --git a/packages/i18n/src/locales/ar.ts b/packages/i18n/src/locales/ar.ts index bf692c6c97..fe53e260c7 100644 --- a/packages/i18n/src/locales/ar.ts +++ b/packages/i18n/src/locales/ar.ts @@ -1034,66 +1034,6 @@ const ar = { invalidCoordinates: "{{count}} سجل بإحداثيات مفقودة أو غير صالحة مستبعد من الخريطة.", invalidCoordinatesPlural: "{{count}} سجلات بإحداثيات مفقودة أو غير صالحة مستبعدة من الخريطة.", }, - workflow: { - draft: "مسودة", - active: "نشط", - paused: "متوقف مؤقتاً", - completed: "مكتمل", - cancelled: "ملغي", - save: "حفظ", - publish: "نشر", - addNode: "إضافة عقدة", - workflowFlow: "سير العمل", - properties: "الخصائص", - connections: "الاتصالات", - quickConnect: "اتصال سريع", - fromPlaceholder: "من…", - toPlaceholder: "إلى…", - connect: "ربط", - label: "التسمية", - type: "النوع", - description: "الوصف", - assignee: "المسؤول", - assigneeType: "نوع المسؤول", - user: "مستخدم", - role: "دور", - group: "مجموعة", - expression: "تعبير", - timeoutMinutes: "المهلة (دقائق)", - selectNodeToEdit: "حدد عقدة لتعديل خصائصها", - workflowTitle: "عنوان سير العمل", - newWorkflow: "سير عمل جديد", - outConnections: "{{count}} مخرج", - start: "بداية", - end: "نهاية", - task: "مهمة", - userTask: "مهمة مستخدم", - serviceTask: "مهمة خدمة", - scriptTask: "مهمة نصية", - approval: "موافقة", - condition: "شرط", - parallelGateway: "بوابة متوازية", - joinGateway: "بوابة دمج", - boundaryEvent: "حدث حدودي", - delay: "تأخير", - notification: "إشعار", - webhook: "Webhook", - allowConcurrency: "السماح (تنفيذ متزامن)", - forbidConcurrency: "منع (تخطي الجديد)", - replaceConcurrency: "استبدال (إلغاء الحالي)", - queueConcurrency: "طابور (تنفيذ بعد الحالي)", - conditionEvent: "شرط", - manualEvent: "يدوي", - webhookEvent: "Webhook", - timerEvent: "مؤقت", - signalEvent: "إشارة", - versionHistory: "تاريخ الإصدارات", - importBpmn: "استيراد BPMN", - exportBpmn: "تصدير BPMN", - undo: "تراجع", - redo: "إعادة", - resetZoom: "إعادة تعيين التكبير", - }, dashboard: { noRows: "لا توجد صفوف", loading: "جارٍ التحميل…", @@ -2785,52 +2725,6 @@ const ar = { consentRequired: "يرجى قبول سياسة الخصوصية للمتابعة.", rateLimited: "خذ لحظة لمراجعة إجاباتك قبل الإرسال.", redirectBlocked: "تم قبول الإرسال، لكن رابط إعادة التوجيه تم حظره لأسباب أمنية.", - demo: { - contactTitle: "تواصل معنا", - contactDescription: "أخبرنا عن مشروعك وسيتواصل معك أحد ممثلي المبيعات خلال يوم عمل.", - supportTitle: "إرسال طلب دعم", - supportDescription: "صف لنا المشكلة وسيرد فريقنا خلال يوم عمل.", - thankYouSalesTitle: "شكراً — لقد استلمنا رسالتك!", - thankYouSalesMessage: "سيتواصل معك أحد ممثلي المبيعات خلال يوم عمل.", - thankYouSupportTitle: "تم — طلبك في قائمة الانتظار.", - thankYouSupportMessage: "سيتابع معك مهندس الدعم قريباً. احفظ هذه الصفحة إذا كان لديك لقطات شاشة إضافية.", - field: { - firstName: "الاسم الأول", - lastName: "اسم العائلة", - email: "البريد الإلكتروني للعمل", - phone: "الهاتف", - jobTitle: "المسمى الوظيفي", - company: "الشركة", - website: "الموقع الإلكتروني", - industry: "القطاع", - companySize: "حجم الشركة", - howCanWeHelp: "كيف يمكننا مساعدتك؟", - subject: "الموضوع", - description: "الوصف", - issueType: "نوع المشكلة", - priority: "الأولوية", - }, - industry: { - technology: "التكنولوجيا", - software: "البرمجيات / SaaS", - finance: "المالية", - healthcare: "الرعاية الصحية", - retail: "التجزئة", - other: "أخرى", - }, - issueType: { - question: "سؤال", - problem: "مشكلة", - bug: "خطأ برمجي", - feature_request: "طلب ميزة", - }, - priority: { - low: "منخفضة", - medium: "متوسطة", - high: "عالية", - critical: "حرجة", - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/de.ts b/packages/i18n/src/locales/de.ts index d04cff25a3..b32c0d105e 100644 --- a/packages/i18n/src/locales/de.ts +++ b/packages/i18n/src/locales/de.ts @@ -1027,66 +1027,6 @@ const de = { invalidCoordinates: "{{count}} Datensatz mit fehlenden oder ungültigen Koordinaten von der Karte ausgeschlossen.", invalidCoordinatesPlural: "{{count}} Datensätze mit fehlenden oder ungültigen Koordinaten von der Karte ausgeschlossen.", }, - workflow: { - draft: "Entwurf", - active: "Aktiv", - paused: "Pausiert", - completed: "Abgeschlossen", - cancelled: "Abgebrochen", - save: "Speichern", - publish: "Veröffentlichen", - addNode: "Knoten hinzufügen", - workflowFlow: "Workflow-Ablauf", - properties: "Eigenschaften", - connections: "Verbindungen", - quickConnect: "Schnellverbindung", - fromPlaceholder: "Von…", - toPlaceholder: "Nach…", - connect: "Verbinden", - label: "Bezeichnung", - type: "Typ", - description: "Beschreibung", - assignee: "Zuständiger", - assigneeType: "Zuständigkeitstyp", - user: "Benutzer", - role: "Rolle", - group: "Gruppe", - expression: "Ausdruck", - timeoutMinutes: "Zeitlimit (Minuten)", - selectNodeToEdit: "Knoten auswählen, um Eigenschaften zu bearbeiten", - workflowTitle: "Workflow-Titel", - newWorkflow: "Neuer Workflow", - outConnections: "{{count}} Ausgänge", - start: "Start", - end: "Ende", - task: "Aufgabe", - userTask: "Benutzeraufgabe", - serviceTask: "Serviceaufgabe", - scriptTask: "Skriptaufgabe", - approval: "Genehmigung", - condition: "Bedingung", - parallelGateway: "Paralleles Gateway", - joinGateway: "Zusammenführungs-Gateway", - boundaryEvent: "Grenzereignis", - delay: "Verzögerung", - notification: "Benachrichtigung", - webhook: "Webhook", - allowConcurrency: "Erlauben (gleichzeitig ausführen)", - forbidConcurrency: "Verbieten (neue überspringen)", - replaceConcurrency: "Ersetzen (bestehende abbrechen)", - queueConcurrency: "Warteschlange (nach aktuellem ausführen)", - conditionEvent: "Bedingung", - manualEvent: "Manuell", - webhookEvent: "Webhook", - timerEvent: "Timer", - signalEvent: "Signal", - versionHistory: "Versionshistorie", - importBpmn: "BPMN importieren", - exportBpmn: "BPMN exportieren", - undo: "Rückgängig", - redo: "Wiederholen", - resetZoom: "Zoom zurücksetzen", - }, dashboard: { noRows: "Keine Zeilen", loading: "Wird geladen…", @@ -2778,52 +2718,6 @@ const de = { consentRequired: "Bitte akzeptieren Sie die Datenschutzrichtlinie, um fortzufahren.", rateLimited: "Bitte nehmen Sie sich einen Moment, um Ihre Antworten zu überprüfen, bevor Sie absenden.", redirectBlocked: "Einreichung akzeptiert, aber die Weiterleitungs-URL wurde aus Sicherheitsgründen blockiert.", - demo: { - contactTitle: "Kontakt aufnehmen", - contactDescription: "Erzählen Sie uns von Ihrem Projekt, und ein Vertriebsmitarbeiter wird sich innerhalb eines Werktages bei Ihnen melden.", - supportTitle: "Support-Anfrage einreichen", - supportDescription: "Schildern Sie uns das Problem — unser Team antwortet innerhalb eines Werktages.", - thankYouSalesTitle: "Danke — wir haben Ihre Nachricht erhalten!", - thankYouSalesMessage: "Ein Vertriebsmitarbeiter wird sich innerhalb eines Werktages bei Ihnen melden.", - thankYouSupportTitle: "Alles klar — Ihre Anfrage ist in der Warteschlange.", - thankYouSupportMessage: "Ein Support-Ingenieur wird sich in Kürze melden. Speichern Sie diese Seite, falls Sie weitere Screenshots hinzufügen möchten.", - field: { - firstName: "Vorname", - lastName: "Nachname", - email: "Geschäfts-E-Mail", - phone: "Telefon", - jobTitle: "Berufsbezeichnung", - company: "Unternehmen", - website: "Website", - industry: "Branche", - companySize: "Unternehmensgröße", - howCanWeHelp: "Wie können wir helfen?", - subject: "Betreff", - description: "Beschreibung", - issueType: "Problemart", - priority: "Priorität", - }, - industry: { - technology: "Technologie", - software: "Software / SaaS", - finance: "Finanzen", - healthcare: "Gesundheitswesen", - retail: "Einzelhandel", - other: "Sonstiges", - }, - issueType: { - question: "Frage", - problem: "Problem", - bug: "Fehler", - feature_request: "Funktionsanfrage", - }, - priority: { - low: "Niedrig", - medium: "Mittel", - high: "Hoch", - critical: "Kritisch", - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/en.ts b/packages/i18n/src/locales/en.ts index 769b9c9e53..7c709cc451 100644 --- a/packages/i18n/src/locales/en.ts +++ b/packages/i18n/src/locales/en.ts @@ -1179,66 +1179,6 @@ const en = { invalidCoordinates: '{{count}} record with missing or invalid coordinates excluded from the map.', invalidCoordinatesPlural: '{{count}} records with missing or invalid coordinates excluded from the map.', }, - workflow: { - draft: 'Draft', - active: 'Active', - paused: 'Paused', - completed: 'Completed', - cancelled: 'Cancelled', - save: 'Save', - publish: 'Publish', - addNode: 'Add Node', - workflowFlow: 'Workflow Flow', - properties: 'Properties', - connections: 'Connections', - quickConnect: 'Quick Connect', - fromPlaceholder: 'From…', - toPlaceholder: 'To…', - connect: 'Connect', - label: 'Label', - type: 'Type', - description: 'Description', - assignee: 'Assignee', - assigneeType: 'Assignee Type', - user: 'User', - role: 'Role', - group: 'Group', - expression: 'Expression', - timeoutMinutes: 'Timeout (minutes)', - selectNodeToEdit: 'Select a node to edit its properties', - workflowTitle: 'Workflow Title', - newWorkflow: 'New Workflow', - outConnections: '{{count}} out', - start: 'Start', - end: 'End', - task: 'Task', - userTask: 'User Task', - serviceTask: 'Service Task', - scriptTask: 'Script Task', - approval: 'Approval', - condition: 'Condition', - parallelGateway: 'Parallel Gateway', - joinGateway: 'Join Gateway', - boundaryEvent: 'Boundary Event', - delay: 'Delay', - notification: 'Notification', - webhook: 'Webhook', - allowConcurrency: 'Allow (run concurrently)', - forbidConcurrency: 'Forbid (skip new)', - replaceConcurrency: 'Replace (cancel existing)', - queueConcurrency: 'Queue (run after current)', - conditionEvent: 'Condition', - manualEvent: 'Manual', - webhookEvent: 'Webhook', - timerEvent: 'Timer', - signalEvent: 'Signal', - versionHistory: 'Version History', - importBpmn: 'Import BPMN', - exportBpmn: 'Export BPMN', - undo: 'Undo', - redo: 'Redo', - resetZoom: 'Reset zoom', - }, designer: { undo: 'Undo', redo: 'Redo', @@ -3075,55 +3015,6 @@ const en = { consentRequired: 'Please accept the privacy policy to continue.', rateLimited: 'Please take a moment to review your answers before submitting.', redirectBlocked: 'Submission accepted, but the redirect URL was blocked for security.', - demo: { - contactTitle: 'Contact us', - contactDescription: - 'Tell us about your project and a sales representative will get back to you within one business day.', - supportTitle: 'Submit a support request', - supportDescription: - 'Tell us what is going wrong — our team responds within one business day.', - thankYouSalesTitle: 'Thanks — we received your message!', - thankYouSalesMessage: 'A sales representative will be in touch within one business day.', - thankYouSupportTitle: 'Got it — your request is in the queue.', - thankYouSupportMessage: - 'A support engineer will follow up shortly. Save this page if you have more screenshots to add.', - field: { - firstName: 'First name', - lastName: 'Last name', - email: 'Work email', - phone: 'Phone', - jobTitle: 'Job title', - company: 'Company', - website: 'Website', - industry: 'Industry', - companySize: 'Company size', - howCanWeHelp: 'How can we help?', - subject: 'Subject', - description: 'Description', - issueType: 'Issue type', - priority: 'Priority', - }, - industry: { - technology: 'Technology', - software: 'Software / SaaS', - finance: 'Finance', - healthcare: 'Healthcare', - retail: 'Retail', - other: 'Other', - }, - issueType: { - question: 'Question', - problem: 'Problem', - bug: 'Bug', - feature_request: 'Feature request', - }, - priority: { - low: 'Low', - medium: 'Medium', - high: 'High', - critical: 'Critical', - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/es.ts b/packages/i18n/src/locales/es.ts index 38675d4b8a..ad8d97a04f 100644 --- a/packages/i18n/src/locales/es.ts +++ b/packages/i18n/src/locales/es.ts @@ -1031,66 +1031,6 @@ const es = { invalidCoordinates: "{{count}} registro con coordenadas faltantes o inválidas excluido del mapa.", invalidCoordinatesPlural: "{{count}} registros con coordenadas faltantes o inválidas excluidos del mapa.", }, - workflow: { - draft: "Borrador", - active: "Activo", - paused: "En pausa", - completed: "Completado", - cancelled: "Cancelado", - save: "Guardar", - publish: "Publicar", - addNode: "Añadir nodo", - workflowFlow: "Flujo de trabajo", - properties: "Propiedades", - connections: "Conexiones", - quickConnect: "Conexión rápida", - fromPlaceholder: "Desde…", - toPlaceholder: "Hasta…", - connect: "Conectar", - label: "Etiqueta", - type: "Tipo", - description: "Descripción", - assignee: "Responsable", - assigneeType: "Tipo de responsable", - user: "Usuario", - role: "Rol", - group: "Grupo", - expression: "Expresión", - timeoutMinutes: "Tiempo límite (minutos)", - selectNodeToEdit: "Selecciona un nodo para editar sus propiedades", - workflowTitle: "Título del flujo de trabajo", - newWorkflow: "Nuevo flujo de trabajo", - outConnections: "{{count}} salida(s)", - start: "Inicio", - end: "Fin", - task: "Tarea", - userTask: "Tarea de usuario", - serviceTask: "Tarea de servicio", - scriptTask: "Tarea de script", - approval: "Aprobación", - condition: "Condición", - parallelGateway: "Compuerta paralela", - joinGateway: "Compuerta de unión", - boundaryEvent: "Evento límite", - delay: "Retraso", - notification: "Notificación", - webhook: "Webhook", - allowConcurrency: "Permitir (ejecución simultánea)", - forbidConcurrency: "Prohibir (omitir nuevos)", - replaceConcurrency: "Reemplazar (cancelar existentes)", - queueConcurrency: "Cola (ejecutar después)", - conditionEvent: "Condición", - manualEvent: "Manual", - webhookEvent: "Webhook", - timerEvent: "Temporizador", - signalEvent: "Señal", - versionHistory: "Historial de versiones", - importBpmn: "Importar BPMN", - exportBpmn: "Exportar BPMN", - undo: "Deshacer", - redo: "Rehacer", - resetZoom: "Restablecer zoom", - }, dashboard: { noRows: "Sin filas", loading: "Cargando…", @@ -2782,52 +2722,6 @@ const es = { consentRequired: "Acepte la política de privacidad para continuar.", rateLimited: "Tómese un momento para revisar sus respuestas antes de enviar.", redirectBlocked: "Envío aceptado, pero la URL de redirección fue bloqueada por seguridad.", - demo: { - contactTitle: "Ponerse en contacto", - contactDescription: "Cuéntenos sobre su proyecto y un representante de ventas le contactará en un día hábil.", - supportTitle: "Enviar solicitud de soporte", - supportDescription: "Descríbanos el problema — nuestro equipo responderá en un día hábil.", - thankYouSalesTitle: "¡Gracias — recibimos su mensaje!", - thankYouSalesMessage: "Un representante de ventas le contactará en un día hábil.", - thankYouSupportTitle: "Listo — su solicitud está en cola.", - thankYouSupportMessage: "Un ingeniero de soporte le dará seguimiento pronto. Guarde esta página si tiene capturas de pantalla adicionales.", - field: { - firstName: "Nombre", - lastName: "Apellido", - email: "Correo empresarial", - phone: "Teléfono", - jobTitle: "Cargo", - company: "Empresa", - website: "Sitio web", - industry: "Industria", - companySize: "Tamaño de empresa", - howCanWeHelp: "¿Cómo podemos ayudarle?", - subject: "Asunto", - description: "Descripción", - issueType: "Tipo de problema", - priority: "Prioridad", - }, - industry: { - technology: "Tecnología", - software: "Software / SaaS", - finance: "Finanzas", - healthcare: "Salud", - retail: "Retail", - other: "Otro", - }, - issueType: { - question: "Pregunta", - problem: "Problema", - bug: "Error", - feature_request: "Solicitud de función", - }, - priority: { - low: "Baja", - medium: "Media", - high: "Alta", - critical: "Crítica", - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/fr.ts b/packages/i18n/src/locales/fr.ts index 0b8b17f971..ff616b4fcc 100644 --- a/packages/i18n/src/locales/fr.ts +++ b/packages/i18n/src/locales/fr.ts @@ -1029,66 +1029,6 @@ const fr = { invalidCoordinates: "{{count}} enregistrement avec des coordonnées manquantes ou invalides exclu de la carte.", invalidCoordinatesPlural: "{{count}} enregistrements avec des coordonnées manquantes ou invalides exclus de la carte.", }, - workflow: { - draft: "Brouillon", - active: "Actif", - paused: "En pause", - completed: "Terminé", - cancelled: "Annulé", - save: "Enregistrer", - publish: "Publier", - addNode: "Ajouter un nœud", - workflowFlow: "Flux de travail", - properties: "Propriétés", - connections: "Connexions", - quickConnect: "Connexion rapide", - fromPlaceholder: "De…", - toPlaceholder: "Vers…", - connect: "Connecter", - label: "Libellé", - type: "Type", - description: "Description", - assignee: "Responsable", - assigneeType: "Type de responsable", - user: "Utilisateur", - role: "Rôle", - group: "Groupe", - expression: "Expression", - timeoutMinutes: "Délai (minutes)", - selectNodeToEdit: "Sélectionnez un nœud pour modifier ses propriétés", - workflowTitle: "Titre du workflow", - newWorkflow: "Nouveau workflow", - outConnections: "{{count}} sortie(s)", - start: "Début", - end: "Fin", - task: "Tâche", - userTask: "Tâche utilisateur", - serviceTask: "Tâche service", - scriptTask: "Tâche script", - approval: "Approbation", - condition: "Condition", - parallelGateway: "Passerelle parallèle", - joinGateway: "Passerelle de jonction", - boundaryEvent: "Événement limite", - delay: "Délai", - notification: "Notification", - webhook: "Webhook", - allowConcurrency: "Autoriser (exécution simultanée)", - forbidConcurrency: "Interdire (ignorer les nouveaux)", - replaceConcurrency: "Remplacer (annuler les existants)", - queueConcurrency: "File d'attente (exécuter après)", - conditionEvent: "Condition", - manualEvent: "Manuel", - webhookEvent: "Webhook", - timerEvent: "Minuterie", - signalEvent: "Signal", - versionHistory: "Historique des versions", - importBpmn: "Importer BPMN", - exportBpmn: "Exporter BPMN", - undo: "Annuler", - redo: "Rétablir", - resetZoom: "Réinitialiser le zoom", - }, dashboard: { noRows: "Aucune ligne", loading: "Chargement…", @@ -2780,52 +2720,6 @@ const fr = { consentRequired: "Veuillez accepter la politique de confidentialité pour continuer.", rateLimited: "Prenez un moment pour vérifier vos réponses avant d'envoyer.", redirectBlocked: "Soumission acceptée, mais l'URL de redirection a été bloquée pour des raisons de sécurité.", - demo: { - contactTitle: "Nous contacter", - contactDescription: "Parlez-nous de votre projet et un représentant commercial vous contactera dans un jour ouvrable.", - supportTitle: "Soumettre une demande d'assistance", - supportDescription: "Décrivez-nous le problème — notre équipe répondra dans un jour ouvrable.", - thankYouSalesTitle: "Merci — nous avons reçu votre message !", - thankYouSalesMessage: "Un représentant commercial vous contactera dans un jour ouvrable.", - thankYouSupportTitle: "C'est bon — votre demande est en file d'attente.", - thankYouSupportMessage: "Un ingénieur d'assistance vous fera un suivi bientôt. Sauvegardez cette page si vous avez des captures d'écran supplémentaires.", - field: { - firstName: "Prénom", - lastName: "Nom", - email: "E-mail professionnel", - phone: "Téléphone", - jobTitle: "Titre du poste", - company: "Entreprise", - website: "Site web", - industry: "Secteur", - companySize: "Taille de l'entreprise", - howCanWeHelp: "Comment pouvons-nous vous aider ?", - subject: "Sujet", - description: "Description", - issueType: "Type de problème", - priority: "Priorité", - }, - industry: { - technology: "Technologie", - software: "Logiciel / SaaS", - finance: "Finance", - healthcare: "Santé", - retail: "Commerce de détail", - other: "Autre", - }, - issueType: { - question: "Question", - problem: "Problème", - bug: "Bug", - feature_request: "Demande de fonctionnalité", - }, - priority: { - low: "Faible", - medium: "Moyen", - high: "Élevé", - critical: "Critique", - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/ja.ts b/packages/i18n/src/locales/ja.ts index 91d0cf843f..e54fd59efb 100644 --- a/packages/i18n/src/locales/ja.ts +++ b/packages/i18n/src/locales/ja.ts @@ -1027,66 +1027,6 @@ const ja = { invalidCoordinates: "座標が欠落または無効なため、{{count}} 件のレコードが地図から除外されました。", invalidCoordinatesPlural: "座標が欠落または無効なため、{{count}} 件のレコードが地図から除外されました。", }, - workflow: { - draft: "下書き", - active: "アクティブ", - paused: "一時停止", - completed: "完了", - cancelled: "キャンセル", - save: "保存", - publish: "公開", - addNode: "ノードを追加", - workflowFlow: "ワークフロー", - properties: "プロパティ", - connections: "接続", - quickConnect: "クイック接続", - fromPlaceholder: "開始…", - toPlaceholder: "終了…", - connect: "接続", - label: "ラベル", - type: "タイプ", - description: "説明", - assignee: "担当者", - assigneeType: "担当者タイプ", - user: "ユーザー", - role: "ロール", - group: "グループ", - expression: "式", - timeoutMinutes: "タイムアウト(分)", - selectNodeToEdit: "ノードを選択してプロパティを編集", - workflowTitle: "ワークフロータイトル", - newWorkflow: "新規ワークフロー", - outConnections: "{{count}} 個の出力", - start: "開始", - end: "終了", - task: "タスク", - userTask: "ユーザータスク", - serviceTask: "サービスタスク", - scriptTask: "スクリプトタスク", - approval: "承認", - condition: "条件", - parallelGateway: "並列ゲートウェイ", - joinGateway: "結合ゲートウェイ", - boundaryEvent: "境界イベント", - delay: "遅延", - notification: "通知", - webhook: "Webhook", - allowConcurrency: "許可(並行実行)", - forbidConcurrency: "禁止(新規スキップ)", - replaceConcurrency: "置換(既存キャンセル)", - queueConcurrency: "キュー(完了後に実行)", - conditionEvent: "条件", - manualEvent: "手動", - webhookEvent: "Webhook", - timerEvent: "タイマー", - signalEvent: "シグナル", - versionHistory: "バージョン履歴", - importBpmn: "BPMNをインポート", - exportBpmn: "BPMNをエクスポート", - undo: "元に戻す", - redo: "やり直す", - resetZoom: "ズームをリセット", - }, dashboard: { noRows: "行がありません", loading: "読み込み中…", @@ -2778,52 +2718,6 @@ const ja = { consentRequired: "続行するにはプライバシーポリシーに同意してください。", rateLimited: "送信前に回答を確認してください。", redirectBlocked: "送信は受理されましたが、リダイレクトURLはセキュリティのためブロックされました。", - demo: { - contactTitle: "お問い合わせ", - contactDescription: "プロジェクトについてお聞かせください。1営業日以内に営業担当者がご連絡します。", - supportTitle: "サポートリクエストを送信", - supportDescription: "問題をお知らせください。チームが1営業日以内に対応します。", - thankYouSalesTitle: "メッセージを受信しました!ありがとうございます。", - thankYouSalesMessage: "1営業日以内に営業担当者がご連絡します。", - thankYouSupportTitle: "リクエストを受け付けました。", - thankYouSupportMessage: "サポートエンジニアがまもなくフォローアップします。追加のスクリーンショットがある場合は、このページを保存してください。", - field: { - firstName: "名", - lastName: "姓", - email: "仕事用メール", - phone: "電話番号", - jobTitle: "役職", - company: "会社", - website: "ウェブサイト", - industry: "業界", - companySize: "会社規模", - howCanWeHelp: "どのようなお手伝いができますか?", - subject: "件名", - description: "説明", - issueType: "問題の種類", - priority: "優先度", - }, - industry: { - technology: "テクノロジー", - software: "ソフトウェア / SaaS", - finance: "金融", - healthcare: "ヘルスケア", - retail: "小売", - other: "その他", - }, - issueType: { - question: "質問", - problem: "問題", - bug: "バグ", - feature_request: "機能リクエスト", - }, - priority: { - low: "低", - medium: "中", - high: "高", - critical: "緊急", - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/ko.ts b/packages/i18n/src/locales/ko.ts index 9f07e965d2..25dcb79537 100644 --- a/packages/i18n/src/locales/ko.ts +++ b/packages/i18n/src/locales/ko.ts @@ -1027,66 +1027,6 @@ const ko = { invalidCoordinates: "좌표가 누락되었거나 유효하지 않아 {{count}}개 레코드가 지도에서 제외되었습니다.", invalidCoordinatesPlural: "좌표가 누락되었거나 유효하지 않아 {{count}}개 레코드가 지도에서 제외되었습니다.", }, - workflow: { - draft: "초안", - active: "활성", - paused: "일시 중지", - completed: "완료", - cancelled: "취소됨", - save: "저장", - publish: "게시", - addNode: "노드 추가", - workflowFlow: "워크플로우", - properties: "속성", - connections: "연결", - quickConnect: "빠른 연결", - fromPlaceholder: "시작…", - toPlaceholder: "종료…", - connect: "연결", - label: "라벨", - type: "유형", - description: "설명", - assignee: "담당자", - assigneeType: "담당자 유형", - user: "사용자", - role: "역할", - group: "그룹", - expression: "수식", - timeoutMinutes: "제한 시간(분)", - selectNodeToEdit: "속성을 편집할 노드를 선택하세요", - workflowTitle: "워크플로우 제목", - newWorkflow: "새 워크플로우", - outConnections: "{{count}}개 출력", - start: "시작", - end: "종료", - task: "작업", - userTask: "사용자 작업", - serviceTask: "서비스 작업", - scriptTask: "스크립트 작업", - approval: "승인", - condition: "조건", - parallelGateway: "병렬 게이트웨이", - joinGateway: "합류 게이트웨이", - boundaryEvent: "경계 이벤트", - delay: "지연", - notification: "알림", - webhook: "Webhook", - allowConcurrency: "허용 (동시 실행)", - forbidConcurrency: "금지 (새 작업 건너뛰기)", - replaceConcurrency: "대체 (기존 취소)", - queueConcurrency: "대기열 (현재 완료 후 실행)", - conditionEvent: "조건", - manualEvent: "수동", - webhookEvent: "Webhook", - timerEvent: "타이머", - signalEvent: "시그널", - versionHistory: "버전 기록", - importBpmn: "BPMN 가져오기", - exportBpmn: "BPMN 내보내기", - undo: "실행 취소", - redo: "다시 실행", - resetZoom: "확대/축소 초기화", - }, dashboard: { noRows: "행 없음", loading: "로딩 중…", @@ -2777,52 +2717,6 @@ const ko = { consentRequired: "계속하려면 개인정보 처리방침에 동의하세요.", rateLimited: "제출하기 전에 잠시 답변을 검토하세요.", redirectBlocked: "제출이 수락되었지만 보안상의 이유로 리디렉션 URL이 차단되었습니다.", - demo: { - contactTitle: "문의하기", - contactDescription: "프로젝트에 대해 알려주시면 영업 담당자가 1 영업일 이내에 연락드립니다.", - supportTitle: "지원 요청 제출", - supportDescription: "문제를 설명해 주세요 — 팀이 1 영업일 이내에 답변 드립니다.", - thankYouSalesTitle: "감사합니다 — 메시지를 받았습니다!", - thankYouSalesMessage: "영업 담당자가 1 영업일 이내에 연락드립니다.", - thankYouSupportTitle: "접수되었습니다 — 요청이 대기 중입니다.", - thankYouSupportMessage: "지원 엔지니어가 곧 후속 조치를 취할 것입니다. 추가 스크린샷이 있으면 이 페이지를 저장하세요.", - field: { - firstName: "이름", - lastName: "성", - email: "업무용 이메일", - phone: "전화번호", - jobTitle: "직함", - company: "회사", - website: "웹사이트", - industry: "업종", - companySize: "회사 규모", - howCanWeHelp: "어떻게 도와드릴까요?", - subject: "제목", - description: "설명", - issueType: "문제 유형", - priority: "우선순위", - }, - industry: { - technology: "기술", - software: "소프트웨어 / SaaS", - finance: "금융", - healthcare: "의료", - retail: "리테일", - other: "기타", - }, - issueType: { - question: "질문", - problem: "문제", - bug: "버그", - feature_request: "기능 요청", - }, - priority: { - low: "낮음", - medium: "보통", - high: "높음", - critical: "긴급", - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/pt.ts b/packages/i18n/src/locales/pt.ts index ba25f7036f..6f27e252a7 100644 --- a/packages/i18n/src/locales/pt.ts +++ b/packages/i18n/src/locales/pt.ts @@ -1026,66 +1026,6 @@ const pt = { invalidCoordinates: "{{count}} registro com coordenadas ausentes ou inválidas excluído do mapa.", invalidCoordinatesPlural: "{{count}} registros com coordenadas ausentes ou inválidas excluídos do mapa.", }, - workflow: { - draft: "Rascunho", - active: "Ativo", - paused: "Pausado", - completed: "Concluído", - cancelled: "Cancelado", - save: "Salvar", - publish: "Publicar", - addNode: "Adicionar nó", - workflowFlow: "Fluxo de trabalho", - properties: "Propriedades", - connections: "Conexões", - quickConnect: "Conexão rápida", - fromPlaceholder: "De…", - toPlaceholder: "Para…", - connect: "Conectar", - label: "Rótulo", - type: "Tipo", - description: "Descrição", - assignee: "Responsável", - assigneeType: "Tipo de responsável", - user: "Usuário", - role: "Função", - group: "Grupo", - expression: "Expressão", - timeoutMinutes: "Tempo limite (minutos)", - selectNodeToEdit: "Selecione um nó para editar suas propriedades", - workflowTitle: "Título do fluxo de trabalho", - newWorkflow: "Novo fluxo de trabalho", - outConnections: "{{count}} saída(s)", - start: "Início", - end: "Fim", - task: "Tarefa", - userTask: "Tarefa de usuário", - serviceTask: "Tarefa de serviço", - scriptTask: "Tarefa de script", - approval: "Aprovação", - condition: "Condição", - parallelGateway: "Gateway paralelo", - joinGateway: "Gateway de junção", - boundaryEvent: "Evento de limite", - delay: "Atraso", - notification: "Notificação", - webhook: "Webhook", - allowConcurrency: "Permitir (execução simultânea)", - forbidConcurrency: "Proibir (pular novos)", - replaceConcurrency: "Substituir (cancelar existentes)", - queueConcurrency: "Fila (executar após atual)", - conditionEvent: "Condição", - manualEvent: "Manual", - webhookEvent: "Webhook", - timerEvent: "Temporizador", - signalEvent: "Sinal", - versionHistory: "Histórico de versões", - importBpmn: "Importar BPMN", - exportBpmn: "Exportar BPMN", - undo: "Desfazer", - redo: "Refazer", - resetZoom: "Redefinir zoom", - }, dashboard: { noRows: "Sem linhas", loading: "Carregando…", @@ -2777,52 +2717,6 @@ const pt = { consentRequired: "Por favor, aceite a política de privacidade para continuar.", rateLimited: "Reserve um momento para revisar suas respostas antes de enviar.", redirectBlocked: "Envio aceito, mas a URL de redirecionamento foi bloqueada por segurança.", - demo: { - contactTitle: "Entrar em contato", - contactDescription: "Conte-nos sobre seu projeto e um representante de vendas entrará em contato em um dia útil.", - supportTitle: "Enviar solicitação de suporte", - supportDescription: "Descreva-nos o problema — nossa equipe responderá em um dia útil.", - thankYouSalesTitle: "Obrigado — recebemos sua mensagem!", - thankYouSalesMessage: "Um representante de vendas entrará em contato em um dia útil.", - thankYouSupportTitle: "Pronto — sua solicitação está na fila.", - thankYouSupportMessage: "Um engenheiro de suporte fará o acompanhamento em breve. Salve esta página se tiver capturas de tela adicionais.", - field: { - firstName: "Nome", - lastName: "Sobrenome", - email: "E-mail corporativo", - phone: "Telefone", - jobTitle: "Cargo", - company: "Empresa", - website: "Site", - industry: "Setor", - companySize: "Tamanho da empresa", - howCanWeHelp: "Como podemos ajudar?", - subject: "Assunto", - description: "Descrição", - issueType: "Tipo de problema", - priority: "Prioridade", - }, - industry: { - technology: "Tecnologia", - software: "Software / SaaS", - finance: "Finanças", - healthcare: "Saúde", - retail: "Varejo", - other: "Outro", - }, - issueType: { - question: "Pergunta", - problem: "Problema", - bug: "Bug", - feature_request: "Solicitação de recurso", - }, - priority: { - low: "Baixa", - medium: "Média", - high: "Alta", - critical: "Crítica", - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/ru.ts b/packages/i18n/src/locales/ru.ts index a9747ff9bf..1fdb064c78 100644 --- a/packages/i18n/src/locales/ru.ts +++ b/packages/i18n/src/locales/ru.ts @@ -1037,66 +1037,6 @@ const ru = { invalidCoordinates: "{{count}} запись с отсутствующими или недействительными координатами исключена из карты.", invalidCoordinatesPlural: "{{count}} записей с отсутствующими или недействительными координатами исключены из карты.", }, - workflow: { - draft: "Черновик", - active: "Активный", - paused: "Приостановлен", - completed: "Завершён", - cancelled: "Отменён", - save: "Сохранить", - publish: "Опубликовать", - addNode: "Добавить узел", - workflowFlow: "Рабочий процесс", - properties: "Свойства", - connections: "Соединения", - quickConnect: "Быстрое соединение", - fromPlaceholder: "От…", - toPlaceholder: "К…", - connect: "Соединить", - label: "Метка", - type: "Тип", - description: "Описание", - assignee: "Ответственный", - assigneeType: "Тип ответственного", - user: "Пользователь", - role: "Роль", - group: "Группа", - expression: "Выражение", - timeoutMinutes: "Тайм-аут (минуты)", - selectNodeToEdit: "Выберите узел для редактирования его свойств", - workflowTitle: "Название рабочего процесса", - newWorkflow: "Новый рабочий процесс", - outConnections: "{{count}} выходов", - start: "Начало", - end: "Конец", - task: "Задача", - userTask: "Задача пользователя", - serviceTask: "Сервисная задача", - scriptTask: "Скриптовая задача", - approval: "Одобрение", - condition: "Условие", - parallelGateway: "Параллельный шлюз", - joinGateway: "Шлюз объединения", - boundaryEvent: "Граничное событие", - delay: "Задержка", - notification: "Уведомление", - webhook: "Webhook", - allowConcurrency: "Разрешить (параллельное выполнение)", - forbidConcurrency: "Запретить (пропустить новые)", - replaceConcurrency: "Заменить (отменить текущие)", - queueConcurrency: "Очередь (выполнить после текущего)", - conditionEvent: "Условие", - manualEvent: "Ручной", - webhookEvent: "Webhook", - timerEvent: "Таймер", - signalEvent: "Сигнал", - versionHistory: "История версий", - importBpmn: "Импорт BPMN", - exportBpmn: "Экспорт BPMN", - undo: "Отменить", - redo: "Повторить", - resetZoom: "Сбросить масштаб", - }, dashboard: { noRows: "Нет строк", loading: "Загрузка…", @@ -2789,52 +2729,6 @@ const ru = { consentRequired: "Пожалуйста, примите политику конфиденциальности.", rateLimited: "Проверьте ответы перед отправкой.", redirectBlocked: "Ответ принят, но URL перенаправления заблокирован по соображениям безопасности.", - demo: { - contactTitle: "Связаться с нами", - contactDescription: "Расскажите о вашем проекте, и наш менеджер свяжется с вами в течение рабочего дня.", - supportTitle: "Отправить запрос в поддержку", - supportDescription: "Опишите проблему — наша команда ответит в течение рабочего дня.", - thankYouSalesTitle: "Спасибо — мы получили ваше сообщение!", - thankYouSalesMessage: "Наш менеджер свяжется с вами в течение рабочего дня.", - thankYouSupportTitle: "Готово — ваш запрос в очереди.", - thankYouSupportMessage: "Инженер поддержки скоро свяжется с вами. Сохраните эту страницу, если у вас есть скриншоты.", - field: { - firstName: "Имя", - lastName: "Фамилия", - email: "Рабочий email", - phone: "Телефон", - jobTitle: "Должность", - company: "Компания", - website: "Сайт", - industry: "Отрасль", - companySize: "Размер компании", - howCanWeHelp: "Как мы можем помочь?", - subject: "Тема", - description: "Описание", - issueType: "Тип проблемы", - priority: "Приоритет", - }, - industry: { - technology: "Технологии", - software: "Программное обеспечение / SaaS", - finance: "Финансы", - healthcare: "Здравоохранение", - retail: "Розница", - other: "Другое", - }, - issueType: { - question: "Вопрос", - problem: "Проблема", - bug: "Ошибка", - feature_request: "Пожелание", - }, - priority: { - low: "Низкий", - medium: "Средний", - high: "Высокий", - critical: "Критический", - }, - }, }, connectAgent: { disabled: { diff --git a/packages/i18n/src/locales/zh.ts b/packages/i18n/src/locales/zh.ts index dfa1459408..9132838c9a 100644 --- a/packages/i18n/src/locales/zh.ts +++ b/packages/i18n/src/locales/zh.ts @@ -1092,66 +1092,6 @@ const zh = { invalidCoordinates: '{{count}} 条记录因坐标缺失或无效已从地图中排除。', invalidCoordinatesPlural: '{{count}} 条记录因坐标缺失或无效已从地图中排除。', }, - workflow: { - draft: '草稿', - active: '活跃', - paused: '已暂停', - completed: '已完成', - cancelled: '已取消', - save: '保存', - publish: '发布', - addNode: '添加节点', - workflowFlow: '工作流程', - properties: '属性', - connections: '连接', - quickConnect: '快速连接', - fromPlaceholder: '从…', - toPlaceholder: '到…', - connect: '连接', - label: '标签', - type: '类型', - description: '描述', - assignee: '负责人', - assigneeType: '负责人类型', - user: '用户', - role: '角色', - group: '组', - expression: '表达式', - timeoutMinutes: '超时时间(分钟)', - selectNodeToEdit: '选择节点以编辑其属性', - workflowTitle: '工作流标题', - newWorkflow: '新工作流', - outConnections: '{{count}} 个输出', - start: '开始', - end: '结束', - task: '任务', - userTask: '用户任务', - serviceTask: '服务任务', - scriptTask: '脚本任务', - approval: '审批', - condition: '条件', - parallelGateway: '并行网关', - joinGateway: '合并网关', - boundaryEvent: '边界事件', - delay: '延迟', - notification: '通知', - webhook: 'Webhook', - allowConcurrency: '允许(并发执行)', - forbidConcurrency: '禁止(跳过新任务)', - replaceConcurrency: '替换(取消现有任务)', - queueConcurrency: '排队(等待当前完成)', - conditionEvent: '条件', - manualEvent: '手动', - webhookEvent: 'Webhook', - timerEvent: '定时器', - signalEvent: '信号', - versionHistory: '版本历史', - importBpmn: '导入 BPMN', - exportBpmn: '导出 BPMN', - undo: '撤销', - redo: '重做', - resetZoom: '重置缩放', - }, dashboard: { addWidget: '添加组件', removeWidget: '移除组件', @@ -2898,52 +2838,6 @@ const zh = { consentRequired: '请先勾选同意隐私政策。', rateLimited: '请再花点时间核对一下您的填写内容,再点击提交。', redirectBlocked: '提交成功,但出于安全考虑,跳转链接已被阻止。', - demo: { - contactTitle: '联系我们', - contactDescription: '告诉我们您的项目需求,销售代表将在一个工作日内与您联系。', - supportTitle: '提交支持请求', - supportDescription: '描述您遇到的问题,我们的团队会在一个工作日内回复。', - thankYouSalesTitle: '已收到您的信息,感谢联系!', - thankYouSalesMessage: '我们的销售代表将在一个工作日内与您取得联系。', - thankYouSupportTitle: '您的请求已进入处理队列。', - thankYouSupportMessage: '支持工程师将尽快跟进。如需补充截图,请保留此页面。', - field: { - firstName: '名字', - lastName: '姓氏', - email: '工作邮箱', - phone: '电话', - jobTitle: '职位', - company: '公司', - website: '官网', - industry: '行业', - companySize: '公司规模', - howCanWeHelp: '我们可以为您做些什么?', - subject: '主题', - description: '问题描述', - issueType: '问题类型', - priority: '优先级', - }, - industry: { - technology: '科技', - software: '软件 / SaaS', - finance: '金融', - healthcare: '医疗健康', - retail: '零售', - other: '其他', - }, - issueType: { - question: '咨询', - problem: '问题', - bug: '缺陷', - feature_request: '功能建议', - }, - priority: { - low: '低', - medium: '中', - high: '高', - critical: '紧急', - }, - }, }, connectAgent: { disabled: {