From 6bc64f78fc17dc91b86c03933b62ee81a915fc8d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:48:49 +0100 Subject: [PATCH] i18n - docs translations (#17261) Created by Github action --------- Co-authored-by: github-actions --- packages/twenty-docs/docs.json | 74 ++-- .../developers/extend/capabilities/apps.mdx | 90 +++-- .../self-host/capabilities/setup.mdx | 28 +- .../capabilities/chart-settings.mdx | 268 +++++++------- .../dashboards/capabilities/dashboards.mdx | 24 +- .../dashboards/capabilities/widgets.mdx | 38 +- .../dashboards/how-tos/widget-faq.mdx | 72 ++-- .../l/ar/user-guide/dashboards/overview.mdx | 6 +- .../send-emails-from-workflows.mdx | 26 +- .../developers/extend/capabilities/apps.mdx | 92 +++-- .../self-host/capabilities/setup.mdx | 28 +- .../capabilities/chart-settings.mdx | 270 +++++++------- .../dashboards/capabilities/dashboards.mdx | 24 +- .../dashboards/capabilities/widgets.mdx | 38 +- .../dashboards/how-tos/widget-faq.mdx | 72 ++-- .../l/cs/user-guide/dashboards/overview.mdx | 6 +- .../send-emails-from-workflows.mdx | 26 +- .../developers/extend/capabilities/apps.mdx | 92 +++-- .../self-host/capabilities/setup.mdx | 28 +- .../capabilities/chart-settings.mdx | 266 +++++++------- .../dashboards/capabilities/dashboards.mdx | 24 +- .../dashboards/capabilities/widgets.mdx | 38 +- .../dashboards/how-tos/widget-faq.mdx | 72 ++-- .../l/de/user-guide/dashboards/overview.mdx | 6 +- .../send-emails-from-workflows.mdx | 26 +- .../developers/extend/capabilities/apps.mdx | 119 +++--- .../self-host/capabilities/setup.mdx | 28 +- .../capabilities/chart-settings.mdx | 268 +++++++------- .../dashboards/capabilities/dashboards.mdx | 24 +- .../dashboards/capabilities/widgets.mdx | 40 +-- .../dashboards/how-tos/widget-faq.mdx | 72 ++-- .../l/ro/user-guide/dashboards/overview.mdx | 6 +- .../send-emails-from-workflows.mdx | 26 +- .../best-practices-server.mdx | 4 +- .../backend-development/custom-objects.mdx | 6 +- .../backend-development/feature-flags.mdx | 12 +- .../folder-architecture-server.mdx | 14 +- .../backend-development/queue.mdx | 2 +- .../backend-development/server-commands.mdx | 6 +- .../backend-development/zapier.mdx | 6 +- .../capabilities/bug-and-requests.mdx | 56 +-- .../folder-architecture-front.mdx | 2 +- .../frontend-development/style-guide.mdx | 26 +- .../contribute/capabilities/local-setup.mdx | 4 +- .../l/ru/developers/contribute/contribute.mdx | 26 +- .../developers/extend/capabilities/apis.mdx | 122 +++---- .../developers/extend/capabilities/apps.mdx | 334 ++++++++--------- .../l/ru/developers/extend/extend.mdx | 24 +- .../l/ru/developers/introduction.mdx | 16 +- .../capabilities/cloud-providers.mdx | 2 +- .../self-host/capabilities/docker-compose.mdx | 42 +-- .../capabilities/troubleshooting.mdx | 18 +- .../l/ru/developers/self-host/self-host.mdx | 22 +- .../l/ru/twenty-ui/display/chip.mdx | 12 +- .../l/ru/twenty-ui/display/soon-pill.mdx | 2 +- .../l/ru/twenty-ui/input/buttons.mdx | 98 ++--- .../l/ru/twenty-ui/input/checkbox.mdx | 18 +- .../l/ru/twenty-ui/input/radio.mdx | 20 +- .../l/ru/twenty-ui/input/select.mdx | 6 +- .../l/ru/twenty-ui/introduction.mdx | 16 +- .../l/ru/twenty-ui/navigation/links.mdx | 6 +- .../l/ru/twenty-ui/navigation/menu-item.mdx | 46 +-- .../user-guide/ai/capabilities/ai-agents.mdx | 40 +-- .../user-guide/ai/capabilities/ai-chatbot.mdx | 48 +-- .../billing/how-tos/billing-faq.mdx | 40 +-- .../how-tos/i-dont-see-emails-on-records.mdx | 56 +-- .../capabilities/error-handling.mdx | 82 ++--- .../capabilities/uniqueness-constraints.mdx | 76 ++-- .../how-tos/import-data-via-api.mdx | 208 +++++------ .../data-model/capabilities/objects.mdx | 62 ++-- .../how-tos/create-custom-objects.mdx | 54 +-- .../data-model/how-tos/data-model-faq.mdx | 98 ++--- .../l/ru/user-guide/data-model/overview.mdx | 54 +-- .../getting-started/capabilities/glossary.mdx | 16 +- .../capabilities/implementation-services.mdx | 4 +- .../how-tos/configure-your-workspace.mdx | 12 +- .../how-tos/create-workspace.mdx | 2 +- .../how-tos/navigate-around-twenty.mdx | 40 +-- .../capabilities/permissions.mdx | 124 +++---- .../capabilities/sso-configuration.mdx | 142 ++++---- .../capabilities/domains-settings.mdx | 38 +- .../capabilities/member-management.mdx | 92 ++--- .../capabilities/filters-and-sorting.mdx | 100 +++--- .../capabilities/table-views.mdx | 72 ++-- .../create-a-kanban-view-for-projects.mdx | 86 ++--- .../workflows/capabilities/use-iterator.mdx | 166 ++++----- .../capabilities/workflow-credits.mdx | 44 +-- .../bring-typeform-submissions-in-twenty.mdx | 76 ++-- .../display-related-record-data.mdx | 176 ++++----- .../crm-automations/formula-fields.mdx | 120 +++---- .../best-practices-server.mdx | 4 +- .../folder-architecture-server.mdx | 68 ++-- .../backend-development/server-commands.mdx | 8 +- .../capabilities/bug-and-requests.mdx | 56 +-- .../best-practices-front.mdx | 16 +- .../folder-architecture-front.mdx | 4 +- .../frontend-development/style-guide.mdx | 43 ++- .../frontend-development/work-with-figma.mdx | 10 +- .../contribute/capabilities/local-setup.mdx | 10 +- .../l/tr/developers/contribute/contribute.mdx | 26 +- .../developers/extend/capabilities/apis.mdx | 124 +++---- .../developers/extend/capabilities/apps.mdx | 340 +++++++++--------- .../extend/capabilities/webhooks.mdx | 84 ++--- .../l/tr/developers/extend/extend.mdx | 24 +- .../l/tr/developers/introduction.mdx | 10 +- .../capabilities/cloud-providers.mdx | 14 +- .../self-host/capabilities/docker-compose.mdx | 48 +-- .../self-host/capabilities/setup.mdx | 96 ++--- .../capabilities/troubleshooting.mdx | 28 +- .../self-host/capabilities/upgrade-guide.mdx | 24 +- .../l/tr/developers/self-host/self-host.mdx | 22 +- packages/twenty-docs/l/tr/navigation.json | 74 ++-- .../l/tr/twenty-ui/display/app-tooltip.mdx | 4 +- .../l/tr/twenty-ui/display/chip.mdx | 10 +- .../l/tr/twenty-ui/display/icons.mdx | 8 +- .../l/tr/twenty-ui/display/soon-pill.mdx | 4 +- .../l/tr/twenty-ui/display/tag.mdx | 4 +- .../l/tr/twenty-ui/input/buttons.mdx | 66 ++-- .../l/tr/twenty-ui/input/checkbox.mdx | 4 +- .../l/tr/twenty-ui/input/color-scheme.mdx | 22 +- .../l/tr/twenty-ui/input/icon-picker.mdx | 8 +- .../l/tr/twenty-ui/input/select.mdx | 6 +- .../twenty-docs/l/tr/twenty-ui/input/text.mdx | 22 +- .../l/tr/twenty-ui/input/toggle.mdx | 6 +- .../l/tr/twenty-ui/navigation/breadcrumb.mdx | 4 +- .../l/tr/twenty-ui/navigation/links.mdx | 2 +- .../l/tr/twenty-ui/navigation/step-bar.mdx | 2 +- .../l/tr/twenty-ui/progress-bar.mdx | 16 +- .../user-guide/ai/capabilities/ai-agents.mdx | 40 +-- .../user-guide/ai/capabilities/ai-chatbot.mdx | 48 +-- .../billing/how-tos/billing-faq.mdx | 26 +- .../calendar-emails/capabilities/mailbox.mdx | 18 +- .../connect-several-mailboxes-per-user.mdx | 2 +- .../how-tos/i-dont-see-emails-on-records.mdx | 56 +-- .../user-guide/calendar-emails/overview.mdx | 6 +- .../capabilities/chart-settings.mdx | 270 +++++++------- .../dashboards/capabilities/dashboards.mdx | 24 +- .../dashboards/capabilities/widgets.mdx | 38 +- .../dashboards/how-tos/widget-faq.mdx | 72 ++-- .../l/tr/user-guide/dashboards/overview.mdx | 8 +- .../capabilities/error-handling.mdx | 84 ++--- .../capabilities/uniqueness-constraints.mdx | 78 ++-- .../how-tos/import-data-via-api.mdx | 208 +++++------ .../data-model/capabilities/objects.mdx | 68 ++-- .../how-tos/create-custom-objects.mdx | 58 +-- .../data-model/how-tos/data-model-faq.mdx | 98 ++--- .../l/tr/user-guide/data-model/overview.mdx | 60 ++-- .../getting-started/capabilities/glossary.mdx | 22 +- .../capabilities/implementation-services.mdx | 4 +- .../how-tos/configure-your-workspace.mdx | 18 +- .../how-tos/create-workspace.mdx | 4 +- .../how-tos/navigate-around-twenty.mdx | 36 +- .../capabilities/permissions.mdx | 126 +++---- .../capabilities/sso-configuration.mdx | 140 ++++---- .../capabilities/domains-settings.mdx | 38 +- .../capabilities/member-management.mdx | 82 ++--- .../capabilities/updates-settings.mdx | 40 +-- .../settings/how-tos/settings-faq.mdx | 14 +- .../capabilities/filters-and-sorting.mdx | 100 +++--- .../capabilities/table-views.mdx | 68 ++-- .../create-a-kanban-view-for-projects.mdx | 90 ++--- .../send-emails-from-workflows.mdx | 26 +- .../workflows/capabilities/use-iterator.mdx | 166 ++++----- .../capabilities/workflow-credits.mdx | 32 +- .../bring-typeform-submissions-in-twenty.mdx | 76 ++-- .../generate-pdf-from-twenty.mdx | 112 +++--- .../generate-quote-or-invoice-from-twenty.mdx | 2 +- .../display-number-of-emails-received.mdx | 72 ++-- .../display-related-record-data.mdx | 176 ++++----- .../crm-automations/formula-fields.mdx | 120 +++---- .../notify-teammates-of-note-to-review.mdx | 120 +++---- 171 files changed, 4889 insertions(+), 4791 deletions(-) diff --git a/packages/twenty-docs/docs.json b/packages/twenty-docs/docs.json index d20030106d..c5822db94d 100644 --- a/packages/twenty-docs/docs.json +++ b/packages/twenty-docs/docs.json @@ -5364,15 +5364,15 @@ "language": "tr", "tabs": [ { - "tab": "User Guide", + "tab": "Kullanıcı Rehberi", "groups": [ { - "group": "Discover Twenty", + "group": "Twenty'yi Keşfedin", "icon": "rocket", "pages": [ "l/tr/user-guide/introduction", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/getting-started/capabilities/what-is-twenty", "l/tr/user-guide/getting-started/capabilities/implementation-services", @@ -5380,7 +5380,7 @@ ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/getting-started/how-tos/create-workspace", "l/tr/user-guide/getting-started/how-tos/navigate-around-twenty", @@ -5395,7 +5395,7 @@ "pages": [ "l/tr/user-guide/data-model/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/data-model/capabilities/objects", "l/tr/user-guide/data-model/capabilities/fields", @@ -5403,7 +5403,7 @@ ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/data-model/how-tos/create-custom-objects", "l/tr/user-guide/data-model/how-tos/create-custom-fields", @@ -5415,12 +5415,12 @@ ] }, { - "group": "Data Migration", + "group": "Veri Geçişi", "icon": "cloud-arrow-up", "pages": [ "l/tr/user-guide/data-migration/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/data-migration/capabilities/file-formats", "l/tr/user-guide/data-migration/capabilities/field-mapping", @@ -5430,7 +5430,7 @@ ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/data-migration/how-tos/prepare-your-csv-files", "l/tr/user-guide/data-migration/how-tos/import-companies-via-csv", @@ -5447,19 +5447,19 @@ ] }, { - "group": "Calendar & Emails", + "group": "Takvim ve E-postalar", "icon": "envelope", "pages": [ "l/tr/user-guide/calendar-emails/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/calendar-emails/capabilities/mailbox", "l/tr/user-guide/calendar-emails/capabilities/calendar" ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user", "l/tr/user-guide/calendar-emails/how-tos/limit-emails-imported", @@ -5477,7 +5477,7 @@ "pages": [ "l/tr/user-guide/workflows/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/workflows/capabilities/workflow-triggers", "l/tr/user-guide/workflows/capabilities/workflow-actions", @@ -5491,10 +5491,10 @@ ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ { - "group": "CRM Automations", + "group": "CRM Otomasyonları", "pages": [ "l/tr/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due", "l/tr/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review", @@ -5506,7 +5506,7 @@ ] }, { - "group": "Connect to Other Tools", + "group": "Diğer Araçlara Bağlan", "pages": [ "l/tr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger", "l/tr/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty", @@ -5516,7 +5516,7 @@ ] }, { - "group": "Advanced Configurations", + "group": "Gelişmiş Yapılandırmalar", "pages": [ "l/tr/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions" ] @@ -5539,7 +5539,7 @@ "pages": [ "l/tr/user-guide/ai/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/ai/capabilities/ai-chatbot", "l/tr/user-guide/ai/capabilities/ai-agents", @@ -5547,7 +5547,7 @@ ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/ai/how-tos/ai-faq" ] @@ -5555,12 +5555,12 @@ ] }, { - "group": "Views & Pipelines", + "group": "Görünümler ve Boru Hatları", "icon": "table", "pages": [ "l/tr/user-guide/views-pipelines/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/views-pipelines/capabilities/table-views", "l/tr/user-guide/views-pipelines/capabilities/kanban-views", @@ -5571,7 +5571,7 @@ ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/tr/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -5590,7 +5590,7 @@ "pages": [ "l/tr/user-guide/dashboards/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/dashboards/capabilities/dashboards", "l/tr/user-guide/dashboards/capabilities/widgets", @@ -5598,7 +5598,7 @@ ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/dashboards/how-tos/dashboards-faq", "l/tr/user-guide/dashboards/how-tos/widget-faq" @@ -5607,19 +5607,19 @@ ] }, { - "group": "Permissions & Access", + "group": "İzinler ve Erişim", "icon": "lock", "pages": [ "l/tr/user-guide/permissions-access/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/permissions-access/capabilities/permissions", "l/tr/user-guide/permissions-access/capabilities/sso-configuration" ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/permissions-access/how-tos/permissions-faq" ] @@ -5632,14 +5632,14 @@ "pages": [ "l/tr/user-guide/billing/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/billing/capabilities/pricing-plans", "l/tr/user-guide/billing/capabilities/workflow-credits" ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/billing/how-tos/billing-faq" ] @@ -5652,7 +5652,7 @@ "pages": [ "l/tr/user-guide/settings/overview", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/user-guide/settings/capabilities/workspace-settings", "l/tr/user-guide/settings/capabilities/member-management", @@ -5663,7 +5663,7 @@ ] }, { - "group": "How-Tos", + "group": "Nasıl Yapılırlar", "pages": [ "l/tr/user-guide/settings/how-tos/settings-faq" ] @@ -5682,12 +5682,12 @@ ] }, { - "group": "Extend", + "group": "Genişlet", "icon": "plug", "pages": [ "l/tr/developers/extend/extend", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/developers/extend/capabilities/apis", "l/tr/developers/extend/capabilities/webhooks", @@ -5697,12 +5697,12 @@ ] }, { - "group": "Self-Host", + "group": "Kendi Kendine Barındırma", "icon": "desktop", "pages": [ "l/tr/developers/self-host/self-host", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/developers/self-host/capabilities/docker-compose", "l/tr/developers/self-host/capabilities/setup", @@ -5714,12 +5714,12 @@ ] }, { - "group": "Contribute", + "group": "Katkıda Bulunun", "icon": "github", "pages": [ "l/tr/developers/contribute/contribute", { - "group": "Capabilities", + "group": "Yetkinlikler", "pages": [ "l/tr/developers/contribute/capabilities/local-setup", "l/tr/developers/contribute/capabilities/bug-and-requests", diff --git a/packages/twenty-docs/l/ar/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/ar/developers/extend/capabilities/apps.mdx index 8b71555924..e7d7c444fd 100644 --- a/packages/twenty-docs/l/ar/developers/extend/capabilities/apps.mdx +++ b/packages/twenty-docs/l/ar/developers/extend/capabilities/apps.mdx @@ -35,6 +35,10 @@ description: أنشئ وأدِر تخصيصات Twenty على هيئة كود. npx create-twenty-app@latest my-twenty-app cd my-twenty-app +# If you don't use yarn@4 +corepack enable +yarn install + # Authenticate using your API key (you'll be prompted) yarn auth:login @@ -88,8 +92,6 @@ my-twenty-app/ .nvmrc .yarnrc.yml .yarn/ - releases/ - yarn-4.9.2.cjs install-state.gz eslint.config.mjs tsconfig.json @@ -167,29 +169,43 @@ src/app/ ستضيف الأوامر اللاحقة مزيدًا من الملفات والمجلدات: -* `yarn app:generate` will create a `generated/` folder (typed Twenty client + workspace types). -* `yarn app:create-entity` will add entity definition files under `src/app/` for your custom objects, functions, or roles. +* `yarn app:generate` سيُنشئ مجلدًا `generated/` (عميل Twenty مضبوط الأنواع + أنواع مساحة العمل). +* `yarn app:create-entity` سيضيف ملفات تعريف الكيانات تحت `src/app/` لكائناتك المخصصة أو الوظائف أو الأدوار. l ## المصادقة -The first time you run `yarn auth:login`, you'll be prompted for: +في المرة الأولى التي تشغّل فيها `yarn auth:login`، سيُطلب منك إدخال: * عنوان URL لواجهة برمجة التطبيقات (الافتراضي http://localhost:3000 أو ملف تعريف مساحة العمل الحالية لديك) * مفتاح واجهة برمجة التطبيقات -تُخزَّن بيانات اعتمادك لكل مستخدم في `~/.twenty/config.json`. يمكنك الاحتفاظ بملفات تعريف متعددة والتبديل باستخدام `--workspace `. +تُخزَّن بيانات اعتمادك لكل مستخدم في `~/.twenty/config.json`. You can maintain multiple profiles and switch between them. -الأمثلة: +### Managing workspaces ```bash filename="Terminal" # Login interactively (recommended) yarn auth:login -# Use a specific workspace profile +# Login to a specific workspace profile yarn auth:login --workspace my-custom-workspace + +# List all configured workspaces +yarn auth:list + +# Switch the default workspace (interactive) +yarn auth:switch + +# Switch to a specific workspace +yarn auth:switch production + +# Check current authentication status +yarn auth:status ``` +Once you've switched workspaces with `auth:switch`, all subsequent commands will use that workspace by default. You can still override it temporarily with `--workspace `. + ## استخدم موارد SDK (الأنواع والتكوين) يوفّر twenty-sdk كتلَ بناءٍ مضبوطة الأنواع ودوال مساعدة تستخدمها داخل تطبيقك. فيما يلي الأجزاء الأساسية التي ستتعامل معها غالبًا. @@ -286,7 +302,7 @@ export default defineObject({ * `universalIdentifier` يجب أن يكون فريدًا وثابتًا عبر عمليات النشر. * يتطلب كل حقل `name` و`type` و`label` ومعرّف `universalIdentifier` ثابتًا خاصًا به. * المصفوفة `fields` اختيارية — يمكنك تعريف كائنات بدون حقول مخصصة. -* You can scaffold new objects using `yarn app:create-entity`, which guides you through naming, fields, and relationships. +* يمكنك إنشاء كائنات جديدة باستخدام `yarn app:create-entity`، والذي يرشدك خلال التسمية والحقول والعلاقات. **يتم إنشاء الحقول الأساسية تلقائيًا.** عند تعريف كائن مخصص، يضيف Twenty تلقائيًا حقولًا قياسية مثل `name` و`createdAt` و`updatedAt` و`createdBy` و`position` و`deletedAt`. لا تحتاج إلى تعريف هذه في مصفوفة `fields` — أضف فقط حقولك المخصصة. @@ -514,21 +530,21 @@ export default defineFunction({ > مثال: `path: '/post-card/create',` -> الاستدعاء على `/s/post-card/create` * **cron**: يشغّل وظيفتك على جدول باستخدام تعبير CRON. -* **databaseEvent**: Runs on workspace object lifecycle events. When the event operation is `updated`, specific fields to listen to can be specified in the `updatedFields` array. If left undefined or empty, any update will trigger the function. +* **databaseEvent**: يعمل على أحداث دورة حياة كائنات مساحة العمل. عندما تكون عملية الحدث هي `updated`، يمكن تحديد الحقول المحددة المراد الاستماع إليها في مصفوفة `updatedFields`. إذا تُركت غير معرّفة أو فارغة، فسيؤدي أي تحديث إلى تشغيل الدالة. -> e.g. `person.updated` +> مثال: `person.updated` الملاحظات: * المصفوفة `triggers` اختيارية. يمكن استخدام الوظائف بدون مشغلات كوظائف مساعدة تُستدعى بواسطة وظائف أخرى. * يمكنك مزج أنواع متعددة من المشغلات في وظيفة واحدة. -### Route trigger payload +### حمولة مشغل المسار - **Breaking change (v1.16, January 2026):** The route trigger payload format has changed. Prior to v1.16, query parameters, path parameters, and body were sent directly as the payload. Starting with v1.16, they are nested inside a structured `RoutePayload` object. + **تغيير غير متوافق (v1.16، يناير 2026):** لقد تغير تنسيق حمولة مشغل المسار. قبل v1.16، كانت معلمات الاستعلام، ومعلمات المسار، وجسم الطلب تُرسل مباشرةً كحمولة. بدءًا من v1.16، أصبحت متداخلة داخل كائن منظَّم `RoutePayload`. - **Before v1.16:** + **قبل v1.16:** ```typescript const handler = async (params) => { @@ -536,7 +552,7 @@ export default defineFunction({ }; ``` - **After v1.16:** + **بعد v1.16:** ```typescript const handler = async (event: RoutePayload) => { @@ -546,10 +562,10 @@ export default defineFunction({ }; ``` - **To migrate existing functions:** Update your handler to destructure from `event.body`, `event.queryStringParameters`, or `event.pathParameters` instead of directly from the params object. + **لترحيل الدوال الحالية:** حدّث المعالج لديك لفكّ البنية من `event.body` أو `event.queryStringParameters` أو `event.pathParameters` بدلاً من القراءة مباشرةً من كائن params. -When a route trigger invokes your function, it receives a `RoutePayload` object that follows the AWS HTTP API v2 format. Import the type from `twenty-sdk`: +عندما يستدعي مشغّل المسار دالتك، فإنه يتلقى كائنًا من النوع `RoutePayload` يتبع تنسيق AWS HTTP API v2. استورد النوع من `twenty-sdk`: ```typescript import { defineFunction, type RoutePayload } from 'twenty-sdk'; @@ -565,21 +581,21 @@ const handler = async (event: RoutePayload) => { }; ``` -The `RoutePayload` type has the following structure: +يحتوي نوع `RoutePayload` على البنية التالية: -| Property | النوع | الوصف | +| الخاصية | النوع | الوصف | | ---------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------- | -| `headers` | `Record` | HTTP headers (only those listed in `forwardedRequestHeaders`) | -| `queryStringParameters` | `Record` | Query string parameters (multiple values joined with commas) | -| `pathParameters` | `Record` | Path parameters extracted from the route pattern (e.g., `/users/:id` → `{ id: '123' }`) | -| `المحتوى` | `object \| null` | Parsed request body (JSON) | -| `isBase64Encoded` | `قيمة منطقية` | Whether the body is base64 encoded | -| `requestContext.http.method` | `string` | HTTP method (GET, POST, PUT, PATCH, DELETE) | -| `requestContext.http.path` | `string` | Raw request path | +| `headers` | `Record` | رؤوس HTTP (فقط تلك المدرجة في `forwardedRequestHeaders`) | +| `queryStringParameters` | `Record` | معلمات سلسلة الاستعلام (تُضمّ القيم المتعددة باستخدام فواصل) | +| `pathParameters` | `Record` | معلمات المسار المستخرجة من نمط المسار (على سبيل المثال، `/users/:id` → `{ id: '123' }`) | +| `المحتوى` | `object \| null` | جسم الطلب المُحلَّل (JSON) | +| `isBase64Encoded` | `قيمة منطقية` | ما إذا كان جسم الطلب مُرمَّزًا بترميز base64 | +| `requestContext.http.method` | `string` | طريقة HTTP (GET, POST, PUT, PATCH, DELETE) | +| `requestContext.http.path` | `string` | المسار الخام للطلب | -### Forwarding HTTP headers +### تمرير رؤوس HTTP -By default, HTTP headers from incoming requests are **not** passed to your serverless function for security reasons. To access specific headers, explicitly list them in the `forwardedRequestHeaders` array: +افتراضيًا، لا يتم تمرير رؤوس HTTP من الطلبات الواردة إلى دالتك بدون خادم لأسباب أمنية. للوصول إلى رؤوس محددة، قم بإدراجها صراحةً في مصفوفة `forwardedRequestHeaders`: ```typescript export default defineFunction({ @@ -599,7 +615,7 @@ export default defineFunction({ }); ``` -In your handler, you can then access these headers: +في المعالج الخاص بك، يمكنك حينها الوصول إلى هذه الرؤوس: ```typescript const handler = async (event: RoutePayload) => { @@ -612,17 +628,17 @@ const handler = async (event: RoutePayload) => { ``` - Header names are normalized to lowercase. Access them using lowercase keys (for example, `event.headers['content-type']`). + تُحوَّل أسماء الرؤوس إلى أحرف صغيرة. يمكنك الوصول إليها باستخدام مفاتيح بأحرف صغيرة (على سبيل المثال، `event.headers['content-type']`). يمكنك إنشاء وظائف جديدة بطريقتين: -* **Scaffolded**: Run `yarn app:create-entity` and choose the option to add a new function. يُولّد هذا ملفًا مبدئيًا مع معالج وتكوين. +* **مُنشأ بالقالب**: شغّل `yarn app:create-entity` واختر خيار إضافة وظيفة جديدة. يُولّد هذا ملفًا مبدئيًا مع معالج وتكوين. * **يدوي**: أنشئ ملفًا جديدًا `*.function.ts` واستخدم `defineFunction()` مع اتباع النمط نفسه. ### عميل مُولَّد مضبوط الأنواع -Run yarn app:generate to create a local typed client in generated/ based on your workspace schema. استخدمه في وظائفك: +شغّل yarn app:generate لإنشاء عميل محلي مضبوط الأنواع في generated/ استنادًا إلى مخطط مساحة العمل لديك. استخدمه في وظائفك: ```typescript import Twenty from './generated'; @@ -631,7 +647,7 @@ const client = new Twenty(); const { me } = await client.query({ me: { id: true, displayName: true } }); ``` -The client is re-generated by `yarn app:generate`. Re-run after changing your objects and `yarn app:sync` or when onboarding to a new workspace. +يُعاد توليد العميل بواسطة `yarn app:generate`. أعِد تشغيله بعد تغيير كائناتك وتشغيل `yarn app:sync` أو عند الانضمام إلى مساحة عمل جديدة. #### بيانات الاعتماد في وقت التشغيل في الوظائف بلا خادم @@ -675,13 +691,13 @@ yarn add -D twenty-sdk } ``` -Now you can run the same commands via Yarn, e.g. `yarn app:dev`, `yarn app:sync`, etc. +يمكنك الآن تشغيل الأوامر نفسها عبر Yarn، مثل `yarn app:dev` و`yarn app:sync`، إلخ. ## استكشاف الأخطاء وإصلاحها -* Authentication errors: run `yarn auth:login` and ensure your API key has the required permissions. +* أخطاء المصادقة: شغّل `yarn auth:login` وتأكد من أن مفتاح واجهة برمجة التطبيقات لديك يمتلك الأذونات المطلوبة. * يتعذّر الاتصال بالخادم: تحقق من عنوان URL لواجهة البرمجة وأن خادم Twenty قابل للوصول. -* Types or client missing/outdated: run `yarn app:generate` and then `yarn app:dev`. -* Dev mode not syncing: ensure `yarn app:dev` is running and that changes are not ignored by your environment. +* الأنواع أو العميل مفقود/قديم: شغّل `yarn app:generate` ثم `yarn app:dev`. +* وضع التطوير لا يزامن: تأكد من أن `yarn app:dev` قيد التشغيل وأن التغييرات ليست متجاهلة من بيئتك. قناة المساعدة على Discord: https://discord.com/channels/1130383047699738754/1130386664812982322 diff --git a/packages/twenty-docs/l/ar/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/l/ar/developers/self-host/capabilities/setup.mdx index 2753a019a4..f1ecdaa664 100644 --- a/packages/twenty-docs/l/ar/developers/self-host/capabilities/setup.mdx +++ b/packages/twenty-docs/l/ar/developers/self-host/capabilities/setup.mdx @@ -292,31 +292,31 @@ yarn command:prod cron:workflow:automated-cron-trigger **وضع بيئي فقط:** إذا كنت قد ضبطت `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`، فأضف هذه المتغيرات إلى ملف `.env` الخاص بك بدلاً من ذلك. -## Serverless Functions +## وظائف بلا خادم -Twenty supports serverless functions for workflows and custom logic. The execution environment is configured via the `SERVERLESS_TYPE` environment variable. +تدعم Twenty وظائف بلا خادم لعمليات سير العمل والمنطق المخصص. يتم تكوين بيئة التنفيذ عبر متغير البيئة `SERVERLESS_TYPE`. - **Security Notice:** The local serverless driver (`SERVERLESS_TYPE=LOCAL`) runs code directly on the host in a Node.js process with no sandboxing. It should only be used for trusted code in development. For production deployments handling untrusted code, we highly recommend using `SERVERLESS_TYPE=LAMBDA` or `SERVERLESS_TYPE=DISABLED`. + **ملاحظة أمنية:** يقوم برنامج التشغيل المحلي لوظائف بلا خادم (`SERVERLESS_TYPE=LOCAL`) بتشغيل الشيفرة مباشرةً على المضيف ضمن عملية Node.js من دون عزل. يجب استخدامه فقط للشيفرة الموثوقة أثناء التطوير. بالنسبة لعمليات النشر الإنتاجية التي تتعامل مع شيفرة غير موثوق بها، نوصي بشدة باستخدام `SERVERLESS_TYPE=LAMBDA` أو `SERVERLESS_TYPE=DISABLED`. -### Available Drivers +### برامج التشغيل المتاحة -| Driver | Environment Variable | حالة الاستخدام | Security Level | -| -------- | -------------------------- | ------------------------------------- | ------------------------------- | -| Disabled | `SERVERLESS_TYPE=DISABLED` | Disable serverless functions entirely | N/A | -| Local | `SERVERLESS_TYPE=LOCAL` | Development and trusted environments | Low (no sandboxing) | -| Lambda | `SERVERLESS_TYPE=LAMBDA` | Production with untrusted code | High (hardware-level isolation) | +| برنامج التشغيل | متغير البيئة | حالة الاستخدام | مستوى الأمان | +| -------------- | -------------------------- | ------------------------------- | ----------------------------- | +| معطل | `SERVERLESS_TYPE=DISABLED` | تعطيل وظائف بلا خادم بالكامل | غير متاح | +| محلي | `SERVERLESS_TYPE=LOCAL` | بيئات التطوير والبيئات الموثوقة | منخفض (من دون عزل) | +| Lambda | `SERVERLESS_TYPE=LAMBDA` | الإنتاج مع شيفرة غير موثوق بها | مرتفع (عزل على مستوى الأجهزة) | -### Recommended Configuration +### التكوين الموصى به -**For development:** +**للتطوير:** ```bash SERVERLESS_TYPE=LOCAL # default ``` -**For production (AWS):** +**للإنتاج (AWS):** ```bash SERVERLESS_TYPE=LAMBDA @@ -326,12 +326,12 @@ SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key ``` -**To disable serverless functions:** +**لتعطيل وظائف بلا خادم:** ```bash SERVERLESS_TYPE=DISABLED ``` - When using `SERVERLESS_TYPE=DISABLED`, any attempt to execute a serverless function will return an error. This is useful if you want to run Twenty without serverless function capabilities. + عند استخدام `SERVERLESS_TYPE=DISABLED`، ستؤدي أي محاولة لتنفيذ وظيفة بلا خادم إلى إرجاع خطأ. يكون هذا مفيدًا إذا كنت ترغب في تشغيل Twenty من دون قدرات وظائف بلا خادم. diff --git a/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/chart-settings.mdx b/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/chart-settings.mdx index 9bb4401a5f..5e4dc1103f 100644 --- a/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/chart-settings.mdx +++ b/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/chart-settings.mdx @@ -1,275 +1,275 @@ --- -title: Chart Settings -description: Configure your charts to display data exactly how you need it. +title: إعدادات المخطط +description: اضبط مخططاتك لعرض البيانات بالطريقة التي تحتاجها تمامًا. --- import { ChartIcon } from '/snippets/chart-icon.mdx'; -## Accessing Chart Settings +## الوصول إلى إعدادات المخطط -1. Click the **Edit** button in the top-right corner of your dashboard +1. انقر زر **تحرير** في الزاوية العلوية اليمنى من لوحة المعلومات لديك -Edit mode +وضع التحرير -2. The dashboard enters edit mode -3. Click on any widget to select it -4. The settings panel opens on the right +2. تدخل لوحة المعلومات وضع التحرير +3. انقر على أي عنصر واجهة لاختياره +4. تُفتح لوحة الإعدادات على اليمين -Settings are organized into sections: +تُنظَّم الإعدادات في أقسام: -* **Data**: What data to pull and how to filter it -* **X axis**: How to group and sort categories (bar/line charts) -* **Y axis**: What to measure and how to display it (bar/line charts) -* **Style**: Colors, labels, and visual options +* **البيانات**: ما البيانات التي سيتم جلبها وكيفية تصفيتها +* **المحور X**: كيفية تجميع الفئات وفرزها (المخططات الشريطية/الخطية) +* **المحور Y**: ما الذي سيتم قياسه وكيفية عرضه (المخططات الشريطية/الخطية) +* **النمط**: الألوان، التسميات، والخيارات المرئية - Some settings only appear when other settings are configured. For example, **Date granularity** only appears when you select a date field. + تظهر بعض الإعدادات فقط عند تهيئة إعدادات أخرى. على سبيل المثال، يظهر خيار **دقة التاريخ** فقط عند تحديد حقل تاريخ. --- -## Data Settings +## إعدادات البيانات -### Source +### المصدر -Choose which object to pull data from. +اختر الكائن الذي تريد جلب البيانات منه. -1. Click **Source** -2. Select an object (Opportunities, People, Companies, etc.) +1. انقر **المصدر** +2. حدِّد كائنًا (الفرص، الأشخاص، الشركات، إلخ.) -All your standard and custom objects are available. Changing the source resets other settings since field options depend on the selected object. +جميع كائناتك القياسية والمخصصة متاحة. يؤدي تغيير المصدر إلى إعادة تعيين الإعدادات الأخرى لأن خيارات الحقول تعتمد على الكائن المحدد. المصدر -### Filter +### تصفية -Limit which records are included in the chart. +قيّد السجلات المضمّنة في المخطط. 1. انقر على **تصفية** -2. The filter builder opens -3. Click **+ Add filter** -4. Select a field, condition, and value -5. Add more filters as needed +2. يُفتح مُنشئ عوامل التصفية +3. انقر **+ إضافة عامل تصفية** +4. حدِّد حقلًا وشرطًا وقيمة +5. أضِف المزيد من عوامل التصفية حسب الحاجة -Filters work the same as in table views. Use them to focus on specific segments of your data. +تعمل عوامل التصفية بالطريقة نفسها كما في عروض الجداول. استخدمها للتركيز على شرائح محددة من بياناتك. -**Example**: Filter opportunities where Stage equals "Won" to show only closed deals. +**مثال**: صفِّ الفرص حيث المرحلة تساوي "Won" لإظهار الصفقات المغلقة فقط. تصفية - For date fields, try **Is relative** to create dynamic filters like "Past 7 days" or "This month" that automatically update. + بالنسبة لحقول التاريخ، جرّب **نسبي** لإنشاء عوامل تصفية ديناميكية مثل "آخر 7 أيام" أو "هذا الشهر" التي تتحدّث تلقائيًا. - Advanced filters are supported—add multiple filter rules and combine them with **And** or **Or** logic. + تُدعم عوامل التصفية المتقدمة—أضِف قواعد تصفية متعددة وادمجها بمنطق **و** أو **أو**. --- -## X Axis Settings +## إعدادات المحور X -These settings control the horizontal axis of bar and line charts—typically how your data is grouped into categories. +تتحكم هذه الإعدادات في المحور الأفقي للمخططات الشريطية والخطية—وعادةً في كيفية تجميع بياناتك ضمن فئات. -### Data on display +### البيانات المعروضة -Select the field to group your data by. This determines the categories shown on the X axis. +اختر الحقل لتجميع بياناتك بحسبه. هذا يحدد الفئات المعروضة على المحور X. -**Example**: Select "Stage" to see data grouped by pipeline stage, or "Created date" to see data over time. +**مثال**: اختر "Stage" لرؤية البيانات مُجمَّعة حسب مرحلة خط الأنابيب، أو "Created date" لرؤية البيانات عبر الزمن. البيانات المعروضة -### Date granularity +### دقة التاريخ -When grouping by a date field, choose the time period for grouping. +عند التجميع حسب حقل تاريخ، اختر الفترة الزمنية للتجميع. -| الخيار | Groups data by | Example output | -| ------------------- | -------------------- | --------------------------------------------- | -| **Day** | Each calendar day | Jan 1, Jan 2, Jan 3... | -| **Week** | Calendar weeks | Week 1, Week 2, Week 3... | -| **Month** | Calendar months | January, February, March... | -| **Quarter** | Fiscal quarters | Q1, Q2, Q3, Q4 | -| **Year** | Calendar years | 2023, 2024, 2025 | -| **Day of week** | Weekday (aggregated) | Monday, Tuesday... (all Mondays combined) | -| **Month of year** | Month (aggregated) | January, February... (all Januaries combined) | -| **Quarter of year** | Quarter (aggregated) | Q1, Q2, Q3, Q4 (all Q1s combined) | +| الخيار | يُجمِّع البيانات حسب | مثال على المخرجات | +| ------------------ | --------------------------- | -------------------------------------------------------- | +| **يوم** | كل يوم تقويمي | 1 يناير، 2 يناير، 3 يناير... | +| **أسبوع** | أسابيع التقويم | الأسبوع 1، الأسبوع 2، الأسبوع 3... | +| **شهر** | أشهر التقويم | يناير، فبراير، مارس... | +| **ربع** | أرباع السنة المالية | الربع 1، الربع 2، الربع 3، الربع 4 | +| **عام** | سنوات التقويم | 2023، 2024، 2025 | +| **يوم من الأسبوع** | يوم من أيام الأسبوع (مجمّع) | الاثنين، الثلاثاء... (جميع أيام الاثنين مجتمعة) | +| **شهر من السنة** | شهر (مجمّع) | يناير، فبراير... (جميع أشهر يناير مجتمعة) | +| **ربع من السنة** | ربع (مجمّع) | الربع 1، الربع 2، الربع 3، الربع 4 (جميع الربع 1 مجتمعة) | -The "of week/year" options aggregate across all time. Use **Day of week** to see which weekday typically gets the most deals. Use **Month** to see trends month by month. +تُجمِّع خيارات "من الأسبوع/من السنة" عبر كل الوقت. استخدم **يوم من الأسبوع** لمعرفة أي يوم عادةً يحقق أكبر عدد من الصفقات. استخدم **شهر** لرؤية الاتجاهات شهرًا بشهر. -### Sort by +### الفرز حسب -Control the order of categories on the X axis. +تحكّم بترتيب الفئات على المحور X. -* **Position** – Uses the order defined in your Select field settings -* **Alphabetical** – A to Z (or chronological for dates) -* **By value** – Ordered by the metric (highest or lowest first) -* **Manual** – Drag to set your own order +* **الموضع** – يستخدم الترتيب المحدد في إعدادات حقل الاختيار +* **أبجديًا** – من A إلى Z (أو ترتيبًا زمنيًا للتواريخ) +* **حسب القيمة** – يُرتَّب بحسب المقياس (الأعلى أو الأدنى أولًا) +* **يدوي** – اسحب لضبط ترتيبك الخاص الترتيب حسب -**Tip**: For pipeline stages, use **Position** to show stages in your sales process order (Lead → Qualified → Proposal → Won). +**نصيحة**: لمراحل خط الأنابيب، استخدم **الموضع** لعرض المراحل بترتيب عملية المبيعات لديك (Lead → Qualified → Proposal → Won). - The options shown depend on your field type. Select fields have all options; date and text fields show fewer. + تعتمد الخيارات المعروضة على نوع الحقل لديك. حقول الاختيار تتضمن جميع الخيارات؛ حقول التاريخ والنص تعرض خيارات أقل. - With **Manual** sorting, drag categories to create a custom order—perfect for highlighting specific segments or telling a story with your data. + مع الفرز **اليدوي**، اسحب الفئات لإنشاء ترتيب مخصص—مناسب تمامًا لإبراز شرائح محددة أو سرد قصة ببياناتك. -### Omit zero values +### تجاهل القيم الصفرية -Hide categories that have zero or no data. +أخفِ الفئات التي قيمتها صفر أو التي لا تحتوي بيانات. -* **On**: Categories with no records are hidden -* **Off**: All categories are shown, even if empty +* **تشغيل**: تُخفى الفئات التي لا تحتوي على سجلات +* **إيقاف**: تُعرض جميع الفئات حتى لو كانت فارغة -Use this to clean up charts with sparse data. +استخدم هذا لتنظيف المخططات ذات البيانات المتناثرة. --- -## Y Axis Settings +## إعدادات المحور Y -These settings control what you're measuring and how it's displayed. +تتحكم هذه الإعدادات في ما تقوم بقياسه وكيفية عرضه. -### Data on display +### البيانات المعروضة -Select the field and operation to calculate your metric. +اختر الحقل والعملية لحساب مقياسك. -* **Counts** – Count all, Count empty, Count not empty, Count unique values -* **Math** – Sum, Average, Min, Max (number fields) -* **Percentages** – Percent empty, Percent not empty +* **العدد** – عدّ الكل، عدّ الفارغ، عدّ غير الفارغ، عدّ القيم الفريدة +* **الرياضيات** – المجموع، المتوسط، الحد الأدنى، الحد الأقصى (حقول الأرقام) +* **النِّسَب المئوية** – نسبة الفارغ، نسبة غير الفارغ -Boolean fields add Count true/false. Aggregate charts with date fields show Earliest/Latest. +تضيف حقول القيم المنطقية عدّ true/false. تُظهر المخططات التجميعية مع حقول التاريخ الأقدم/الأحدث. -**Example**: Select "Amount" with Sum to see total deal value per category, or Count all to see number of deals. +**مثال**: اختر "Amount" مع المجموع لرؤية إجمالي قيمة الصفقة لكل فئة، أو عدّ الكل لرؤية عدد الصفقات. البيانات المعروضة - The options shown depend on your field and chart type. If you don't see an expected operation, check your field type. + تعتمد الخيارات المعروضة على نوع الحقل ونوع المخطط. إذا لم تر العملية المتوقعة، فتحقّق من نوع الحقل. ### النسبة -For Select, Multi-select, or Boolean fields, you can calculate the percentage of a specific value. +بالنسبة لحقول الاختيار، ومتعدد الاختيار، أو القيم المنطقية، يمكنك حساب نسبة قيمة محددة. -1. Select a Select, Multi-select, or Boolean field -2. Enable **Ratio** -3. Choose the option to measure +1. اختر حقل اختيار، أو متعدد الاختيار، أو حقلًا منطقيًا +2. فعِّل **النسبة** +3. اختر الخيار المراد قياسه -**Example**: Show "Won" deals as a percentage of all opportunities. If you have 10 Won out of 50 total, the chart shows 20%. +**مثال**: اعرض الصفقات "Won" كنسبة مئوية من جميع الفرص. إذا كان لديك 10 "Won" من أصل 50 إجمالًا، فسيعرض المخطط 20٪. -### Group by +### التجميع حسب -Add a second dimension to create multiple series (multiple bars or lines). +أضِف بُعدًا ثانيًا لإنشاء عدة سلاسل (عدة أشرطة أو خطوط). -1. Set your X axis field first -2. Click **Group by** -3. Select a second field +1. عيّن حقل المحور X أولًا +2. انقر **التجميع حسب** +3. اختر حقلًا ثانيًا -**Example**: Group deals by Stage (X axis) AND by Owner (Group by) to see each person's pipeline breakdown side by side. +**مثال**: جمِّع الصفقات حسب المرحلة (المحور X) وأيضًا حسب المالك (التجميع حسب) لرؤية تفصيل خط الأنابيب لكل شخص جنبًا إلى جنب. التجميع حسب -When Group by is set, you'll see multiple colors in your chart and a legend appears. +عند تعيين التجميع حسب، سترى ألوانًا متعددة في مخططك وستظهر وسيلة إيضاح. -### Date granularity +### دقة التاريخ -When Group by is a date field, choose the time period (same options as X axis). +عندما يكون التجميع حسب حقل تاريخ، اختر الفترة الزمنية (نفس خيارات المحور X). -### Sort by +### الفرز حسب -When **Group by** is set, control the order of grouped series (e.g., which owner's bar appears first within each category). +عند تفعيل **التجميع حسب**، تحكّم بترتيب السلاسل المجمّعة (مثلًا، أي شريط للمالك يظهر أولًا ضمن كل فئة). -Same options as X axis sorting—Position, Alphabetical, and Manual—except **value-based sorting is not available** for secondary grouping. +نفس خيارات فرز المحور X—الموضع، أبجديًا، ويدوي—باستثناء أن **الفرز حسب القيمة غير متاح** للتجميع الثانوي. -### Cumulative +### تراكمي -Show running totals instead of individual values. +اعرض المجاميع التراكمية بدلًا من القيم الفردية. -* **Off**: Each bar/point shows its own value -* **On**: Each bar/point shows the sum of all previous values plus its own +* **إيقاف**: يُظهر كل شريط/نقطة قيمته الخاصة +* **تشغيل**: يُظهر كل شريط/نقطة مجموع جميع القيم السابقة مضافًا إليها قيمته -**Example**: January = 10, February = 15 +**مثال**: يناير = 10، فبراير = 15 -* Cumulative off: Shows 10 and 15 -* Cumulative on: Shows 10 and 25 (10 + 15) +* التراكمي متوقف: يُظهر 10 و15 +* التراكمي مفعّل: يُظهر 10 و25 (10 + 15) -Use cumulative to track progress toward a goal over time. +استخدم التراكمي لتتبُّع التقدم نحو هدف عبر الزمن. تراكمي -### Min range / Max range +### المدى الأدنى / المدى الأقصى -Set fixed minimum and maximum values for the Y axis. +عيّن قيمًا دنيا وعظمى ثابتة للمحور Y. -* Leave blank for automatic scaling -* Enter a number to fix the boundary +* اتركه فارغًا للتحجيم التلقائي +* أدخل رقمًا لتثبيت الحد -**When to use:** +**متى يُستخدم:** -* Set Min to 0 for accurate visual comparisons -* Set both for consistent scales across multiple charts -* Focus on a specific value range by setting both +* عيّن الحد الأدنى إلى 0 للحصول على مقارنات مرئية دقيقة +* عيّن كليهما للحصول على مقاييس متسقة عبر عدة مخططات +* ركّز على نطاق قيم محدد بتعيين كليهما --- -## Style Settings +## إعدادات النمط -### Colors +### الألوان -Set the color scheme for your chart. Choose from a variety of color palettes. +عيّن نظام الألوان لمخططك. اختر من مجموعة متنوعة من لوحات الألوان. - When grouping by a Select field, the chart automatically uses the colors defined for each option in your field settings. + عند التجميع حسب حقل اختيار، يستخدم المخطط تلقائيًا الألوان المحددة لكل خيار في إعدادات الحقل لديك. -### Axis name +### اسم المحور -Choose which axis labels to show: **None**, **X axis**, **Y axis**, or **Both** (bar and line charts only). +اختر تسميات المحاور المراد عرضها: **لا شيء**، **المحور X**، **المحور Y**، أو **كلاهما** (للمخططات الشريطية والخطية فقط). -### Stacked bars / Stacked lines +### أشرطة مكدّسة / خطوط مكدّسة -When Group by is set, choose how multiple series are displayed. +عند تعيين التجميع حسب، اختر كيفية عرض السلاسل المتعددة. -* **Off (Grouped)**: Series appear side by side. Use when comparing exact values between groups. -* **On (Stacked)**: Series stack on top of each other. Use when showing composition—how parts make up a whole. +* **إيقاف (مجمّعة)**: تظهر السلاسل جنبًا إلى جنب. استخدم عند مقارنة القيم الدقيقة بين المجموعات. +* **تشغيل (مكدّسة)**: تتكدس السلاسل فوق بعضها. استخدم عند إظهار التركيب—كيف تتكوّن الأجزاء لتشكّل الكل. -**Example**: Deals by stage, grouped by owner +**مثال**: صفقات حسب المرحلة، مُجمّعة حسب المالك -* Grouped: See each owner's exact numbers side by side -* Stacked: See total deals per stage, with each owner's contribution stacked +* مجمّعة: شاهد الأرقام الدقيقة لكل مالك جنبًا إلى جنب +* مكدّسة: شاهد إجمالي الصفقات لكل مرحلة، مع مساهمة كل مالك مكدّسة -### Data labels +### تسميات البيانات -Show values directly on chart elements (bars, points, slices). +اعرض القيم مباشرة على عناصر المخطط (الأشرطة، النقاط، الشرائح). -* **On**: Values appear on the chart -* **Off**: No values shown (cleaner look) +* **تشغيل**: تظهر القيم على المخطط +* **إيقاف**: لا تُعرض قيم (مظهر أنظف) -### Legend +### وسيلة الإيضاح -Show or hide the legend (only appears when Group by is set). +إظهار أو إخفاء وسيلة الإيضاح (تظهر فقط عند تعيين التجميع حسب). -* **On**: Legend shows what each color represents -* **Off**: No legend displayed +* **تشغيل**: تعرض وسيلة الإيضاح ما يمثله كل لون +* **إيقاف**: لا تُعرض وسيلة إيضاح - **Hover** over a legend item to highlight that group. **Click** to temporarily hide it from the chart. + **مرّر المؤشر** فوق عنصر في وسيلة الإيضاح لإبراز تلك المجموعة. **انقر** لإخفائه مؤقتًا من المخطط. --- -## Chart-Specific Notes +## ملاحظات خاصة بالمخطط ### مخططات دائرية -* **Each slice represents** – Define how slices are grouped -* **Hide empty category** – Remove zero-value slices -* **Show value in center** – Display the aggregate value (sum, average, count, etc.) +* **تمثل كل شريحة** – حدِّد كيفية تجميع الشرائح +* **إخفاء الفئة الفارغة** – إزالة الشرائح ذات القيمة الصفرية +* **إظهار القيمة في الوسط** – عرض القيمة المجمّعة (المجموع، المتوسط، العدّ، إلخ.) -### Aggregate charts +### مخططات التجميع -* **Prefix** – Add text before the number (e.g., `$`) -* **Suffix** – Add text after the number (e.g., `%`) +* **بادئة** – أضِف نصًا قبل الرقم (مثلًا، "$") +* **لاحقة** – أضِف نصًا بعد الرقم (مثلًا، "%") diff --git a/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/dashboards.mdx b/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/dashboards.mdx index ce728c201f..3f9bf6dd41 100644 --- a/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/dashboards.mdx +++ b/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/dashboards.mdx @@ -12,7 +12,7 @@ description: أنشئ ونظّم لوحات المعلومات باستخدام 1. انتقل إلى **لوحات المعلومات** في شريط التنقل 2. انقر **+ سجل جديد** -Create a new dashboard +إنشاء لوحة تحكم جديدة 3. امنح لوحة المعلومات اسمًا 4. ابدأ بإضافة علامات تبويب وعناصر واجهة مستخدم @@ -23,27 +23,27 @@ description: أنشئ ونظّم لوحات المعلومات باستخدام ### إنشاء علامات تبويب -1. In edit mode, click **+** in the tab bar, side panel will open on the right +1. في وضع التحرير، انقر على **+** في شريط علامات التبويب، ستفتح اللوحة الجانبية على اليمين 2. قم بتسمية علامة التبويب (مثل: "نظرة عامة على خط المبيعات"، "أداء الفريق") 3. أضف عناصر واجهة مستخدم إلى علامة التبويب -### Reordering Tabs +### إعادة ترتيب علامات التبويب -1. In edit mode, click and hold on the tab you want to move -2. Drag and drop to the new position -3. You can also click on the tab and use the command menu to move the tab to left or right +1. في وضع التحرير، انقر مع الاستمرار على علامة التبويب التي تريد نقلها +2. اسحب وأفلت إلى الموضع الجديد +3. يمكنك أيضًا النقر على علامة التبويب واستخدام قائمة الأوامر لنقل علامة التبويب إلى اليسار أو اليمين -### Deleting Tabs +### حذف علامات التبويب -1. In edit mode, click on the tab you want to delete -2. Click the **Delete** button in the command menu +1. في وضع التحرير، انقر على علامة التبويب التي تريد حذفها +2. انقر على زر **حذف** في قائمة الأوامر ### تكرار علامات التبويب 1. انقر على علامة التبويب التي تريد تكرارها 2. انقر على زر **تكرار** في اللوحة الجانبية -Dashboard tab +علامة تبويب لوحة التحكم ## تخطيط لوحة المعلومات @@ -55,11 +55,11 @@ description: أنشئ ونظّم لوحات المعلومات باستخدام ### تكرار لوحة معلومات -1. Select the dashboard you want to duplicate +1. حدِّد لوحة التحكم التي تريد تكرارها 2. افتح شريط الأوامر باستخدام **Cmd + K** (أو **Ctrl + K** على Windows) 3. اختر **تكرار لوحة المعلومات** -Duplicate a dashboard +تكرار لوحة التحكم ### أفضل الممارسات diff --git a/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/widgets.mdx b/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/widgets.mdx index 49b4bc6165..7fe1620360 100644 --- a/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/widgets.mdx +++ b/packages/twenty-docs/l/ar/user-guide/dashboards/capabilities/widgets.mdx @@ -9,12 +9,12 @@ import { ChartIcon } from '/snippets/chart-icon.mdx'; يوفّر Twenty أنواعًا متعددة من الأدوات لتصوُّر بيانات إدارة علاقات العملاء (CRM). -### Bar Charts +### مخططات الأعمدة اعرض البيانات كأعمدة أفقية أو عمودية. - Bar chart + مخطط أعمدة **الأفضل لـ:** @@ -30,15 +30,15 @@ import { ChartIcon } from '/snippets/chart-icon.mdx'; * جهات الاتصال المضافة شهريًا - **Display limits**: Bar charts can show a maximum of 100 bars, and 50 groups per bar when using Group By. إذا ظهرت لك رسالة التحذير "بيانات غير معروضة: الحد الأقصى X عمودًا لكل مخطط"، فأضِف عوامل تصفية لتضييق نطاق بياناتك أو غيّر أسلوب التجميع (على سبيل المثال، اجعل التجميع حسب الأسبوع بدلًا من الأيام). + **حدود العرض**: يمكن لمخططات الأعمدة عرض حد أقصى يبلغ 100 عمود، و50 مجموعة لكل عمود عند استخدام "Group By". إذا ظهرت لك رسالة التحذير "بيانات غير معروضة: الحد الأقصى X عمودًا لكل مخطط"، فأضِف عوامل تصفية لتضييق نطاق بياناتك أو غيّر أسلوب التجميع (على سبيل المثال، اجعل التجميع حسب الأسبوع بدلًا من الأيام). -### Pie Charts +### مخططات دائرية اعرض نسب الأجزاء من الكل. - Pie chart + مخطط دائري **الأفضل لـ:** @@ -53,12 +53,12 @@ import { ChartIcon } from '/snippets/chart-icon.mdx'; * تفصيل جهات الاتصال حسب الصناعة * تركيب مسار المبيعات حسب المالك -### Line Charts +### مخططات خطية اعرض الاتجاهات مع مرور الوقت. - Line chart + مخطط خطي **الأفضل لـ:** @@ -73,12 +73,12 @@ import { ChartIcon } from '/snippets/chart-icon.mdx'; * نمو الإيرادات على مدى الأرباع السنوية * مستويات النشاط مع مرور الوقت -### Aggregate Charts +### مخططات تجميعية اعرض القيم الأساسية المفردة بشكل بارز. - Aggregate chart + مخطط تجميعي **الأفضل لـ:** @@ -118,25 +118,25 @@ import { ChartIcon } from '/snippets/chart-icon.mdx'; * مقاييس من أداة الاتصال الهاتفي لديك * محتوى مباشر من أداة تسلسل المبيعات لديك -### Rich Text +### نص منسق -Add formatted text and content directly to your dashboard. +أضف نصًا منسقًا ومحتوى مباشرةً إلى لوحة المعلومات الخاصة بك. - Rich text + نص منسق **الأفضل لـ:** -* Adding context or instructions -* Dashboard descriptions -* Notes and annotations +* إضافة سياق أو إرشادات +* أوصاف لوحة المعلومات +* الملاحظات والتعليقات التوضيحية -**Features:** +**الميزات:** -* Rich text formatting (bold, italic, lists, etc.) -* Image and file uploads -* Markdown-style editing +* تنسيق النص المنسق (عريض، مائل، قوائم، إلخ.) +* رفع الصور والملفات +* تحرير بأسلوب Markdown **قريبًا**: مخططات القياس والجداول غير متاحة بعد ولكنها على خريطة الطريق لدينا. diff --git a/packages/twenty-docs/l/ar/user-guide/dashboards/how-tos/widget-faq.mdx b/packages/twenty-docs/l/ar/user-guide/dashboards/how-tos/widget-faq.mdx index 4fb14c19dc..d693c81d0e 100644 --- a/packages/twenty-docs/l/ar/user-guide/dashboards/how-tos/widget-faq.mdx +++ b/packages/twenty-docs/l/ar/user-guide/dashboards/how-tos/widget-faq.mdx @@ -1,67 +1,67 @@ --- -title: Widget FAQ -description: Common questions and error messages explained. +title: الأسئلة الشائعة حول الأداة +description: شرح الأسئلة الشائعة ورسائل الخطأ. --- - - Three options: + + ثلاثة خيارات: - * **Percent empty/not empty**: Under Data on display, select Percent empty or Percent not empty - * **Ratio**: For Select or Checkbox fields, enable Ratio to show a specific option as a percentage of all records - * **Suffix**: For aggregate charts, add `%` as a Suffix in Style settings + * **نسبة القيم الفارغة/غير الفارغة**: ضمن بيانات العرض، اختر نسبة القيم الفارغة أو نسبة القيم غير الفارغة + * **النسبة**: لحقول الاختيار أو خانات الاختيار، فعّل خيار النسبة لعرض خيار معيّن كنسبة مئوية من جميع السجلات + * **اللاحقة**: بالنسبة للمخططات التجميعية، أضف `%` كلاحقة في إعدادات النمط - - When using **Group by**, you can display series two ways: + + عند استخدام **التجميع حسب**، يمكنك عرض السلاسل بطريقتين: - * **Grouped**: Bars side by side—best for comparing exact values - * **Stacked**: Bars on top of each other—best for showing composition + * **مجمعة**: أعمدة جنبًا إلى جنب—الأفضل للمقارنة بين القيم الدقيقة + * **مكدسة**: أعمدة فوق بعضها—الأفضل لإظهار التركيب - Toggle **Stacked** in Style settings to switch. + بدّل خيار **مكدسة** في إعدادات النمط. - - Available operations depend on **field type**: + + تعتمد العمليات المتاحة على **نوع الحقل**: - * **Number fields**: Sum, Average, Min, Max - * **Date fields**: Earliest, Latest (aggregate charts only) - * **Checkbox fields**: Count true, Count false + * **حقول الأرقام**: المجموع، المتوسط، الحد الأدنى، الحد الأقصى + * **حقول التاريخ**: الأقدم، الأحدث (للمخططات التجميعية فقط) + * **حقول خانات الاختيار**: عدّ 'صحيح'، عدّ 'خطأ' - If you don't see an option, check that you've selected a compatible field type. + إذا لم ترَ خيارًا، فتحقق من أنك اخترت نوع حقل متوافقًا. - - Many settings only appear when prerequisites are met: + + تظهر العديد من الإعدادات فقط عند استيفاء المتطلبات المسبقة: - * **Date granularity**: Select a date field first - * **Group by, Legend, Stacked**: Set Source first - * **Legend, Stacked toggles**: Set Group by first + * **دقة التاريخ**: حدد حقل تاريخ أولاً + * **التجميع حسب، وسيلة الإيضاح، مكدسة**: عيّن المصدر أولاً + * **أزرار تبديل وسيلة الإيضاح ومكدسة**: عيّن التجميع حسب أولاً - If a setting is missing, configure its prerequisite first. + إذا كان إعداد مفقودًا، فقم بإعداد المتطلب المسبق له أولاً. - - The chart found no records matching your configuration. + + لم يعثر المخطط على سجلات مطابقة لإعداداتك. - **To fix:** Remove or adjust filters, verify you selected the correct Source object, or check that records exist for your date range. + **للحل:** أزل أو اضبط عوامل التصفية، وتحقق من أنك اخترت كائن المصدر الصحيح، أو تحقق من وجود سجلات لنطاق التاريخ الخاص بك. - - A required setting is missing or incompatible. + + يوجد إعداد مطلوب مفقود أو غير متوافق. - **To fix:** Ensure Source is set, Data on display is configured, and any required grouping fields are selected. + **للحل:** تأكد من تعيين المصدر، وتكوين بيانات العرض، وتحديد أي حقول تجميع مطلوبة. - - Your data exceeds display limits (100 bars, 100 data points, or 100 slices). + + تتجاوز بياناتك حدود العرض (100 عمود، 100 نقطة بيانات، أو 100 شريحة). - **To fix:** Add filters to narrow your data, or change date granularity from Day to Week or Month. + **للحل:** أضف عوامل تصفية لتضييق نطاق بياناتك، أو غيّر دقة التاريخ من يوم إلى أسبوع أو شهر. - - The selected field has no values for the records in your filter, or the field type doesn't match the expected data. + + لا يحتوي الحقل المحدد على قيم للسجلات ضمن عامل التصفية لديك، أو أن نوع الحقل لا يطابق البيانات المتوقعة. - **To fix:** Try a different field, or check that records have values for the selected field. + **للحل:** جرّب حقلًا آخر، أو تحقق من أن السجلات تحتوي على قيم للحقل المحدد. diff --git a/packages/twenty-docs/l/ar/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ar/user-guide/dashboards/overview.mdx index 23e6ed2099..b7404c26c0 100644 --- a/packages/twenty-docs/l/ar/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/dashboards/overview.mdx @@ -40,9 +40,9 @@ image: /images/user-guide/reporting/pie-chart.png * مخططات الأعمدة * مخططات دائرية * مخططات خطية -* Aggregate charts +* مخططات التجميع * iFrames -* Rich text +* نص منسق **القيود الحالية**: @@ -81,5 +81,5 @@ image: /images/user-guide/reporting/pie-chart.png ## الخطوات التالية * [الأدوات والتصورات](/l/ar/user-guide/dashboards/capabilities/widgets) -* [Chart settings reference](/l/ar/user-guide/dashboards/capabilities/chart-settings) +* [مرجع إعدادات المخطط](/l/ar/user-guide/dashboards/capabilities/chart-settings) * [الأسئلة الشائعة حول لوحات المعلومات](/l/ar/user-guide/dashboards/how-tos/dashboards-faq) diff --git a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 49a86ed1c8..1470410463 100644 --- a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -116,27 +116,27 @@ image: /images/user-guide/workflows/workflow.png * الموضوع: متابعة لمحادثتنا * المحتوى: الإشارة إلى تفاصيل الاجتماع من المشغّل -## Email Attachments +## مرفقات البريد الإلكتروني -You can attach files to emails sent from workflows. The attachment is a static file that you upload when configuring the workflow. +يمكنك إرفاق ملفات برسائل البريد الإلكتروني المرسلة من سير العمل. المرفق ملف ثابت تقوم برفعه عند تهيئة سير العمل. -### How to Add an Attachment +### كيفية إضافة مرفق -1. In the **Send Email** action, click on the **Attachments** button -2. Click to upload a file from your computer -3. The file will be attached to all emails sent by this action +1. في إجراء **إرسال بريد إلكتروني**، انقر على زر **المرفقات** +2. انقر لرفع ملف من جهازك +3. سيتم إرفاق الملف بجميع رسائل البريد الإلكتروني التي يرسلها هذا الإجراء ### الاستخدامات الشائعة -| حالة الاستخدام | Example File | -| ------------------------ | ----------------------------- | -| **Welcome emails** | Company brochure (PDF) | -| **Onboarding sequences** | Getting started guide | -| **Sales follow-ups** | Product catalog or price list | -| **Event confirmations** | Event details or agenda | +| حالة الاستخدام | ملف نموذجي | +| --------------------------------------- | -------------------------------- | +| **رسائل الترحيب عبر البريد الإلكتروني** | كتيب الشركة (PDF) | +| **تسلسلات الانضمام** | دليل البدء | +| **متابعات المبيعات** | كتالوج المنتجات أو قائمة الأسعار | +| **تأكيدات الفعاليات** | تفاصيل الفعالية أو جدول الأعمال | - Attachments are static—the same file is sent to all recipients. For dynamic documents (like personalized quotes), generate and attach files using a [Serverless Function](/l/ar/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty). + المرفقات ثابتة—يتم إرسال الملف نفسه إلى جميع المستلمين. بالنسبة للمستندات الديناميكية (مثل عروض الأسعار المخصصة)، أنشئ الملفات وأرفقها باستخدام [وظيفة بدون خادم](/l/ar/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty). ## أفضل الممارسات diff --git a/packages/twenty-docs/l/cs/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/cs/developers/extend/capabilities/apps.mdx index adeefa95a5..a05081bc33 100644 --- a/packages/twenty-docs/l/cs/developers/extend/capabilities/apps.mdx +++ b/packages/twenty-docs/l/cs/developers/extend/capabilities/apps.mdx @@ -35,6 +35,10 @@ Vytvořte novou aplikaci pomocí oficiálního scaffolderu, poté se ověřte a npx create-twenty-app@latest my-twenty-app cd my-twenty-app +# If you don't use yarn@4 +corepack enable +yarn install + # Authenticate using your API key (you'll be prompted) yarn auth:login @@ -88,8 +92,6 @@ my-twenty-app/ .nvmrc .yarnrc.yml .yarn/ - releases/ - yarn-4.9.2.cjs install-state.gz eslint.config.mjs tsconfig.json @@ -167,29 +169,43 @@ V kostce: Pozdější příkazy přidají další soubory a složky: -* `yarn app:generate` will create a `generated/` folder (typed Twenty client + workspace types). -* `yarn app:create-entity` will add entity definition files under `src/app/` for your custom objects, functions, or roles. +* `yarn app:generate` vytvoří složku `generated/` (typovaný klient Twenty + typy pracovního prostoru). +* `yarn app:create-entity` přidá soubory s definicemi entit do `src/app/` pro vaše vlastní objekty, funkce nebo role. l ## Ověření -The first time you run `yarn auth:login`, you'll be prompted for: +Při prvním spuštění `yarn auth:login` budete vyzváni k zadání: * URL API (výchozí je http://localhost:3000 nebo váš aktuální profil pracovního prostoru) * Klíč API -Vaše přihlašovací údaje se ukládají pro jednotlivé uživatele do `~/.twenty/config.json`. Můžete spravovat více profilů a přepínat pomocí `--workspace `. +Vaše přihlašovací údaje se ukládají pro jednotlivé uživatele do `~/.twenty/config.json`. Můžete spravovat více profilů a přepínat mezi nimi. -Příklady: +### Správa pracovních prostorů ```bash filename="Terminal" # Login interactively (recommended) yarn auth:login -# Use a specific workspace profile +# Login to a specific workspace profile yarn auth:login --workspace my-custom-workspace + +# List all configured workspaces +yarn auth:list + +# Switch the default workspace (interactive) +yarn auth:switch + +# Switch to a specific workspace +yarn auth:switch production + +# Check current authentication status +yarn auth:status ``` +Jakmile přepnete pracovní prostor pomocí `auth:switch`, všechny následující příkazy budou tento pracovní prostor používat jako výchozí. Můžete jej stále dočasně přepsat pomocí `--workspace `. + ## Používejte zdroje SDK (typy a konfiguraci) twenty-sdk poskytuje typované stavební bloky a pomocné funkce, které používáte ve své aplikaci. Níže jsou klíčové části, se kterými budete nejčastěji pracovat. @@ -286,7 +302,7 @@ Hlavní body: * Hodnota `universalIdentifier` musí být jedinečná a stabilní napříč nasazeními. * Každé pole vyžaduje `name`, `type`, `label` a svůj vlastní stabilní `universalIdentifier`. * Pole `fields` je volitelné — objekty můžete definovat i bez vlastních polí. -* You can scaffold new objects using `yarn app:create-entity`, which guides you through naming, fields, and relationships. +* Nové objekty můžete vygenerovat pomocí `yarn app:create-entity`, který vás provede pojmenováním, poli a vztahy. **Základní pole jsou vytvořena automaticky.** Když definujete vlastní objekt, Twenty automaticky přidá standardní pole jako `name`, `createdAt`, `updatedAt`, `createdBy`, `position` a `deletedAt`. Nemusíte je definovat v poli `fields` — přidejte pouze svá vlastní pole. @@ -514,21 +530,21 @@ Běžné typy spouštěčů: > např. `path: '/post-card/create',` -> volání na `/s/post-card/create` * **cron**: Spouští vaši funkci podle plánu pomocí výrazu CRON. -* **databaseEvent**: Runs on workspace object lifecycle events. When the event operation is `updated`, specific fields to listen to can be specified in the `updatedFields` array. If left undefined or empty, any update will trigger the function. +* **databaseEvent**: Spouští se při událostech životního cyklu objektů v pracovním prostoru. Když je operace události `updated`, lze konkrétní sledovaná pole určit v poli `updatedFields`. Pokud zůstane nedefinované nebo prázdné, spustí funkci jakákoli aktualizace. -> e.g. `person.updated` +> např. `person.updated` Poznámky: * Pole `triggers` je volitelné. Funkce bez spouštěčů lze použít jako pomocné funkce volané jinými funkcemi. * V jedné funkci můžete kombinovat více typů spouštěčů. -### Route trigger payload +### Payload spouštěče trasy - **Breaking change (v1.16, January 2026):** The route trigger payload format has changed. Prior to v1.16, query parameters, path parameters, and body were sent directly as the payload. Starting with v1.16, they are nested inside a structured `RoutePayload` object. + **Zpětně nekompatibilní změna (v1.16, leden 2026):** Formát payloadu spouštěče trasy se změnil. Před verzí v1.16 byly parametry dotazu, parametry cesty a tělo odesílány přímo jako payload. Od verze v1.16 jsou zanořeny uvnitř strukturovaného objektu `RoutePayload`. - **Before v1.16:** + **Před v1.16:** ```typescript const handler = async (params) => { @@ -536,7 +552,7 @@ Poznámky: }; ``` - **After v1.16:** + **Po v1.16:** ```typescript const handler = async (event: RoutePayload) => { @@ -546,10 +562,10 @@ Poznámky: }; ``` - **To migrate existing functions:** Update your handler to destructure from `event.body`, `event.queryStringParameters`, or `event.pathParameters` instead of directly from the params object. + **Jak migrovat existující funkce:** Aktualizujte svůj handler tak, aby destrukturoval z `event.body`, `event.queryStringParameters` nebo `event.pathParameters` místo přímo z objektu params. -When a route trigger invokes your function, it receives a `RoutePayload` object that follows the AWS HTTP API v2 format. Import the type from `twenty-sdk`: +Když spouštěč trasy vyvolá vaši funkci, ta obdrží objekt `RoutePayload`, který odpovídá formátu AWS HTTP API v2. Importujte typ z `twenty-sdk`: ```typescript import { defineFunction, type RoutePayload } from 'twenty-sdk'; @@ -565,21 +581,21 @@ const handler = async (event: RoutePayload) => { }; ``` -The `RoutePayload` type has the following structure: +Typ `RoutePayload` má následující strukturu: -| Property | Typ | Popis | -| ---------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------- | -| `headers` | `Record` | HTTP headers (only those listed in `forwardedRequestHeaders`) | -| `queryStringParameters` | `Record` | Query string parameters (multiple values joined with commas) | -| `pathParameters` | `Record` | Path parameters extracted from the route pattern (e.g., `/users/:id` → `{ id: '123' }`) | -| `text zprávy` | `object \| null` | Parsed request body (JSON) | -| `isBase64Encoded` | `booleovská hodnota` | Whether the body is base64 encoded | -| `requestContext.http.method` | `string` | HTTP method (GET, POST, PUT, PATCH, DELETE) | -| `requestContext.http.path` | `string` | Raw request path | +| Vlastnost | Typ | Popis | +| ---------------------------- | ------------------------------------- | --------------------------------------------------------------------------------- | +| `headers` | `Record` | Záhlaví HTTP (pouze ta uvedená v `forwardedRequestHeaders`) | +| `queryStringParameters` | `Record` | Parametry query stringu (více hodnot spojených čárkami) | +| `pathParameters` | `Record` | Parametry cesty extrahované ze vzoru trasy (např. `/users/:id` → `{ id: '123' }`) | +| `text zprávy` | `object \| null` | Parsované tělo požadavku (JSON) | +| `isBase64Encoded` | `booleovská hodnota` | Zda je tělo kódováno base64 | +| `requestContext.http.method` | `string` | Metoda HTTP (GET, POST, PUT, PATCH, DELETE) | +| `requestContext.http.path` | `string` | Nezpracovaná cesta požadavku | -### Forwarding HTTP headers +### Přeposílání záhlaví HTTP -By default, HTTP headers from incoming requests are **not** passed to your serverless function for security reasons. To access specific headers, explicitly list them in the `forwardedRequestHeaders` array: +Ve výchozím nastavení se záhlaví HTTP z příchozích požadavků z bezpečnostních důvodů do vaší serverless funkce **ne** předávají. Chcete-li zpřístupnit konkrétní záhlaví, výslovně je uveďte v poli `forwardedRequestHeaders`: ```typescript export default defineFunction({ @@ -599,7 +615,7 @@ export default defineFunction({ }); ``` -In your handler, you can then access these headers: +Ve vašem handleru k nim poté můžete přistupovat: ```typescript const handler = async (event: RoutePayload) => { @@ -612,17 +628,17 @@ const handler = async (event: RoutePayload) => { ``` - Header names are normalized to lowercase. Access them using lowercase keys (for example, `event.headers['content-type']`). + Názvy záhlaví jsou normalizovány na malá písmena. Přistupujte k nim pomocí klíčů s malými písmeny (například `event.headers['content-type']`). Nové funkce můžete vytvářet dvěma způsoby: -* **Scaffolded**: Run `yarn app:create-entity` and choose the option to add a new function. Tím se vygeneruje startovací soubor s obslužnou funkcí a konfigurací. +* **Vygenerované**: Spusťte `yarn app:create-entity` a zvolte možnost přidat novou funkci. Tím se vygeneruje startovací soubor s obslužnou funkcí a konfigurací. * **Ruční**: Vytvořte nový soubor `*.function.ts` a použijte `defineFunction()` podle stejného vzoru. ### Generovaný typovaný klient -Run yarn app:generate to create a local typed client in generated/ based on your workspace schema. Použijte jej ve svých funkcích: +Spusťte yarn app:generate a vytvořte lokálního typovaného klienta v generated/ na základě schématu vašeho pracovního prostoru. Použijte jej ve svých funkcích: ```typescript import Twenty from './generated'; @@ -631,7 +647,7 @@ const client = new Twenty(); const { me } = await client.query({ me: { id: true, displayName: true } }); ``` -The client is re-generated by `yarn app:generate`. Re-run after changing your objects and `yarn app:sync` or when onboarding to a new workspace. +Klient je znovu generován příkazem `yarn app:generate`. Spusťte jej znovu po změně objektů a po `yarn app:sync`, případně při připojení k novému pracovnímu prostoru. #### Běhové přihlašovací údaje v serverless funkcích @@ -675,13 +691,13 @@ Poté přidejte skripty jako tyto: } ``` -Now you can run the same commands via Yarn, e.g. `yarn app:dev`, `yarn app:sync`, etc. +Nyní můžete spouštět stejné příkazy přes Yarn, např. `yarn app:dev`, `yarn app:sync` atd. ## Řešení potíží -* Authentication errors: run `yarn auth:login` and ensure your API key has the required permissions. +* Chyby ověření: spusťte `yarn auth:login` a ujistěte se, že váš klíč API má požadovaná oprávnění. * Nelze se připojit k serveru: ověřte URL API a že je server Twenty dosažitelný. -* Types or client missing/outdated: run `yarn app:generate` and then `yarn app:dev`. -* Dev mode not syncing: ensure `yarn app:dev` is running and that changes are not ignored by your environment. +* Typy nebo klient chybí/jsou zastaralé: spusťte `yarn app:generate` a poté `yarn app:dev`. +* Režim vývoje nesynchronizuje: ujistěte se, že běží `yarn app:dev` a že vaše prostředí změny neignoruje. Kanál podpory na Discordu: https://discord.com/channels/1130383047699738754/1130386664812982322 diff --git a/packages/twenty-docs/l/cs/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/l/cs/developers/self-host/capabilities/setup.mdx index 284af240d6..55df7aba96 100644 --- a/packages/twenty-docs/l/cs/developers/self-host/capabilities/setup.mdx +++ b/packages/twenty-docs/l/cs/developers/self-host/capabilities/setup.mdx @@ -292,31 +292,31 @@ yarn command:prod cron:workflow:automated-cron-trigger **Režim pouze s prostředím:** Pokud nastavíte `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, přidejte tyto proměnné do souboru `.env` -## Serverless Functions +## Serverless funkce -Twenty supports serverless functions for workflows and custom logic. The execution environment is configured via the `SERVERLESS_TYPE` environment variable. +Twenty podporuje serverless funkce pro pracovní postupy a vlastní logiku. Běhové prostředí se konfiguruje pomocí proměnné prostředí `SERVERLESS_TYPE`. - **Security Notice:** The local serverless driver (`SERVERLESS_TYPE=LOCAL`) runs code directly on the host in a Node.js process with no sandboxing. It should only be used for trusted code in development. For production deployments handling untrusted code, we highly recommend using `SERVERLESS_TYPE=LAMBDA` or `SERVERLESS_TYPE=DISABLED`. + **Upozornění na zabezpečení:** Místní serverless ovladač (`SERVERLESS_TYPE=LOCAL`) spouští kód přímo na hostiteli v procesu Node.js bez sandboxu. Měl by být používán pouze pro důvěryhodný kód při vývoji. Pro produkční nasazení, která pracují s nedůvěryhodným kódem, důrazně doporučujeme použít `SERVERLESS_TYPE=LAMBDA` nebo `SERVERLESS_TYPE=DISABLED`. -### Available Drivers +### Dostupné ovladače -| Driver | Environment Variable | Případ použití | Security Level | -| -------- | -------------------------- | ------------------------------------- | ------------------------------- | -| Disabled | `SERVERLESS_TYPE=DISABLED` | Disable serverless functions entirely | N/A | -| Local | `SERVERLESS_TYPE=LOCAL` | Development and trusted environments | Low (no sandboxing) | -| Lambda | `SERVERLESS_TYPE=LAMBDA` | Production with untrusted code | High (hardware-level isolation) | +| Ovladač | Proměnná prostředí | Případ použití | Úroveň zabezpečení | +| --------- | -------------------------- | ------------------------------------------ | ----------------------------------- | +| Neaktivní | `SERVERLESS_TYPE=DISABLED` | Úplně zakázat serverless funkce | N/A | +| Lokální | `SERVERLESS_TYPE=LOCAL` | Vývojová a důvěryhodná prostředí | Nízká (bez sandboxu) | +| Lambda | `SERVERLESS_TYPE=LAMBDA` | Produkční prostředí s nedůvěryhodným kódem | Vysoká (izolace na úrovni hardwaru) | -### Recommended Configuration +### Doporučená konfigurace -**For development:** +**Pro vývoj:** ```bash SERVERLESS_TYPE=LOCAL # default ``` -**For production (AWS):** +**Pro produkci (AWS):** ```bash SERVERLESS_TYPE=LAMBDA @@ -326,12 +326,12 @@ SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key ``` -**To disable serverless functions:** +**Pro zakázání serverless funkcí:** ```bash SERVERLESS_TYPE=DISABLED ``` - When using `SERVERLESS_TYPE=DISABLED`, any attempt to execute a serverless function will return an error. This is useful if you want to run Twenty without serverless function capabilities. + Při použití `SERVERLESS_TYPE=DISABLED` skončí každý pokus o spuštění serverless funkce chybou. To je užitečné, pokud chcete provozovat Twenty bez podpory serverless funkcí. diff --git a/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/chart-settings.mdx b/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/chart-settings.mdx index 5105e66b25..4cd8444cce 100644 --- a/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/chart-settings.mdx +++ b/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/chart-settings.mdx @@ -1,275 +1,275 @@ --- -title: Chart Settings -description: Configure your charts to display data exactly how you need it. +title: Nastavení grafu +description: Nakonfigurujte své grafy tak, aby zobrazovaly data přesně podle vašich potřeb. --- import { ChartIcon } from '/snippets/chart-icon.mdx'; -## Accessing Chart Settings +## Přístup k nastavení grafu -1. Click the **Edit** button in the top-right corner of your dashboard +1. Klikněte na tlačítko **Upravit** v pravém horním rohu svého řídicího panelu -Edit mode +Režim úprav -2. The dashboard enters edit mode -3. Click on any widget to select it -4. The settings panel opens on the right +2. Řídicí panel přejde do režimu úprav +3. Klikněte na libovolný widget, abyste jej vybrali. +4. Vpravo se otevře panel nastavení -Settings are organized into sections: +Nastavení jsou uspořádána do sekcí: -* **Data**: What data to pull and how to filter it -* **X axis**: How to group and sort categories (bar/line charts) -* **Y axis**: What to measure and how to display it (bar/line charts) -* **Style**: Colors, labels, and visual options +* **Data**: Jaká data načíst a jak je filtrovat +* **Osa X**: Jak seskupovat a řadit kategorie (sloupcové/čárové grafy) +* **Osa Y**: Co měřit a jak to zobrazit (sloupcové/čárové grafy) +* **Styl**: Barvy, popisky a vizuální možnosti - Some settings only appear when other settings are configured. For example, **Date granularity** only appears when you select a date field. + Některá nastavení se zobrazí pouze tehdy, když jsou nakonfigurována jiná. Například **Granularita data** se zobrazí pouze tehdy, když vyberete datumové pole. --- -## Data Settings +## Nastavení dat -### Source +### Zdroj -Choose which object to pull data from. +Vyberte objekt, ze kterého chcete načítat data. -1. Click **Source** -2. Select an object (Opportunities, People, Companies, etc.) +1. Klikněte na **Zdroj** +2. Vyberte objekt (Příležitosti, Kontakty, Společnosti apod.) -All your standard and custom objects are available. Changing the source resets other settings since field options depend on the selected object. +K dispozici jsou všechny vaše standardní a vlastní objekty. Změna zdroje resetuje ostatní nastavení, protože možnosti polí závisí na vybraném objektu. Zdroj -### Filter +### Filtr -Limit which records are included in the chart. +Omezte, které záznamy jsou zahrnuty do grafu. 1. Klikněte na **Filtr** -2. The filter builder opens -3. Click **+ Add filter** -4. Select a field, condition, and value -5. Add more filters as needed +2. Otevře se nástroj pro tvorbu filtrů +3. Klikněte na **+ Přidat filtr** +4. Vyberte pole, podmínku a hodnotu +5. Podle potřeby přidejte další filtry -Filters work the same as in table views. Use them to focus on specific segments of your data. +Filtry fungují stejně jako v tabulkových zobrazeních. Použijte je k zaměření na konkrétní segmenty dat. -**Example**: Filter opportunities where Stage equals "Won" to show only closed deals. +**Příklad**: Filtrovat příležitosti, kde se pole Stage rovná "Won", abyste zobrazili pouze uzavřené obchody. Filtr - For date fields, try **Is relative** to create dynamic filters like "Past 7 days" or "This month" that automatically update. + U datumových polí zkuste **Je relativní** k vytvoření dynamických filtrů, jako jsou "Posledních 7 dní" nebo "Tento měsíc", které se automaticky aktualizují. - Advanced filters are supported—add multiple filter rules and combine them with **And** or **Or** logic. + Jsou podporovány pokročilé filtry—přidejte více pravidel filtru a kombinujte je pomocí logiky **A** nebo **Nebo**. --- -## X Axis Settings +## Nastavení osy X -These settings control the horizontal axis of bar and line charts—typically how your data is grouped into categories. +Tato nastavení řídí vodorovnou osu sloupcových a čárových grafů—obvykle způsob, jakým jsou data seskupena do kategorií. -### Data on display +### Zobrazená data -Select the field to group your data by. This determines the categories shown on the X axis. +Vyberte pole, podle kterého chcete data seskupit. To určuje kategorie zobrazené na ose X. -**Example**: Select "Stage" to see data grouped by pipeline stage, or "Created date" to see data over time. +**Příklad**: Vyberte "Stage" pro zobrazení dat seskupených podle fáze v pipeline, nebo "Created date" pro zobrazení dat v čase. Zobrazená data -### Date granularity +### Granularita data -When grouping by a date field, choose the time period for grouping. +Při seskupování podle datumového pole zvolte časové období pro seskupení. -| Možnost | Groups data by | Example output | -| ------------------- | -------------------- | --------------------------------------------- | -| **Day** | Each calendar day | Jan 1, Jan 2, Jan 3... | -| **Week** | Calendar weeks | Week 1, Week 2, Week 3... | -| **Month** | Calendar months | January, February, March... | -| **Quarter** | Fiscal quarters | Q1, Q2, Q3, Q4 | -| **Year** | Calendar years | 2023, 2024, 2025 | -| **Day of week** | Weekday (aggregated) | Monday, Tuesday... (all Mondays combined) | -| **Month of year** | Month (aggregated) | January, February... (all Januaries combined) | -| **Quarter of year** | Quarter (aggregated) | Q1, Q2, Q3, Q4 (all Q1s combined) | +| Možnost | Seskupuje data podle | Ukázkový výstup | +| ------------------ | ------------------------ | --------------------------------------------- | +| **Den** | Každý kalendářní den | 1. ledna, 2. ledna, 3. ledna... | +| **Týden** | Kalendářní týdny | Týden 1, Týden 2, Týden 3... | +| **Měsíc** | Kalendářní měsíce | leden, únor, březen... | +| **Čtvrtletí** | Fiskální čtvrtletí | Q1, Q2, Q3, Q4 | +| **Rok** | Kalendářní roky | 2023, 2024, 2025 | +| **Den v týdnu** | Den v týdnu (agregováno) | Pondělí, úterý... (všechna pondělí dohromady) | +| **Měsíc v roce** | Měsíc (agregováno) | Leden, únor... (všechny ledny dohromady) | +| **Čtvrtletí roku** | Čtvrtletí (agregováno) | Q1, Q2, Q3, Q4 (všechny Q1 dohromady) | -The "of week/year" options aggregate across all time. Use **Day of week** to see which weekday typically gets the most deals. Use **Month** to see trends month by month. +Možnosti "v týdnu/roku" agregují napříč celým časovým obdobím. Použijte **Den v týdnu**, abyste zjistili, který den v týdnu obvykle přináší nejvíce obchodů. Použijte **Měsíc** k zobrazení trendů měsíc po měsíci. -### Sort by +### Řadit podle -Control the order of categories on the X axis. +Ovládejte pořadí kategorií na ose X. -* **Position** – Uses the order defined in your Select field settings -* **Alphabetical** – A to Z (or chronological for dates) -* **By value** – Ordered by the metric (highest or lowest first) -* **Manual** – Drag to set your own order +* **Pozice** – Použije pořadí definované v nastavení pole typu Select +* **Abecedně** – A až Z (nebo chronologicky u dat) +* **Podle hodnoty** – Seřazeno podle metriky (nejvyšší nebo nejnižší nejdříve) +* **Ručně** – Přetažením nastavte vlastní pořadí Seřadit podle -**Tip**: For pipeline stages, use **Position** to show stages in your sales process order (Lead → Qualified → Proposal → Won). +**Tip**: U fází pipeline použijte **Pozice** k zobrazení fází v pořadí vašeho prodejního procesu (Lead → Qualified → Proposal → Won). - The options shown depend on your field type. Select fields have all options; date and text fields show fewer. + Zobrazené možnosti závisí na typu pole. Pole typu Select mají všechny možnosti; datumová a textová pole jich zobrazují méně. - With **Manual** sorting, drag categories to create a custom order—perfect for highlighting specific segments or telling a story with your data. + Při řazení **Ručně** přetáhněte kategorie a vytvořte vlastní pořadí—ideální pro zvýraznění konkrétních segmentů nebo vyprávění příběhu pomocí dat. -### Omit zero values +### Vynechat nulové hodnoty -Hide categories that have zero or no data. +Skryjte kategorie, které mají nulová data nebo žádná data. -* **On**: Categories with no records are hidden -* **Off**: All categories are shown, even if empty +* **Zapnuto**: Kategorie bez záznamů jsou skryty +* **Vypnuto**: Zobrazeny jsou všechny kategorie, i prázdné -Use this to clean up charts with sparse data. +Použijte to k vyčištění grafů s řídkými daty. --- -## Y Axis Settings +## Nastavení osy Y -These settings control what you're measuring and how it's displayed. +Tato nastavení určují, co měříte a jak se to zobrazuje. -### Data on display +### Zobrazená data -Select the field and operation to calculate your metric. +Vyberte pole a operaci pro výpočet své metriky. -* **Counts** – Count all, Count empty, Count not empty, Count unique values -* **Math** – Sum, Average, Min, Max (number fields) -* **Percentages** – Percent empty, Percent not empty +* **Počty** – Počet všech, Počet prázdných, Počet neprázdných, Počet jedinečných hodnot +* **Matematika** – Součet, Průměr, Min, Max (číselná pole) +* **Procenta** – Procento prázdných, Procento neprázdných -Boolean fields add Count true/false. Aggregate charts with date fields show Earliest/Latest. +Booleanová pole přidávají počet true/false. Agregační grafy s datumovými poli zobrazují Nejdřívější/Nejpozdější. -**Example**: Select "Amount" with Sum to see total deal value per category, or Count all to see number of deals. +**Příklad**: Vyberte "Amount" se součtem (Sum) pro zobrazení celkové hodnoty obchodů podle kategorie, nebo Počet všech (Count all) pro zobrazení počtu obchodů. Zobrazená data - The options shown depend on your field and chart type. If you don't see an expected operation, check your field type. + Zobrazené možnosti závisí na vašem poli a typu grafu. Pokud nevidíte očekávanou operaci, zkontrolujte typ pole. ### Poměr -For Select, Multi-select, or Boolean fields, you can calculate the percentage of a specific value. +Pro pole typu Select, Multi-select nebo Boolean můžete spočítat procento konkrétní hodnoty. -1. Select a Select, Multi-select, or Boolean field -2. Enable **Ratio** -3. Choose the option to measure +1. Vyberte pole typu Select, Multi-select nebo Boolean +2. Povolte **Poměr** +3. Zvolte možnost, kterou chcete měřit -**Example**: Show "Won" deals as a percentage of all opportunities. If you have 10 Won out of 50 total, the chart shows 20%. +**Příklad**: Zobrazte obchody "Won" jako procento všech příležitostí. Pokud máte 10 "Won" z celkových 50, graf zobrazí 20 %. -### Group by +### Seskupit podle -Add a second dimension to create multiple series (multiple bars or lines). +Přidejte druhou dimenzi pro vytvoření více řad (více sloupců nebo čar). -1. Set your X axis field first -2. Click **Group by** -3. Select a second field +1. Nejprve nastavte pole osy X +2. Klikněte na **Seskupit podle** +3. Vyberte druhé pole -**Example**: Group deals by Stage (X axis) AND by Owner (Group by) to see each person's pipeline breakdown side by side. +**Příklad**: Seskupte obchody podle Stage (osa X) A podle Owner (Seskupit podle), abyste vedle sebe viděli rozpad pipeline podle jednotlivých osob. -Group by +Seskupit podle -When Group by is set, you'll see multiple colors in your chart and a legend appears. +Když je nastaveno Seskupit podle, uvidíte v grafu více barev a zobrazí se legenda. -### Date granularity +### Granularita data -When Group by is a date field, choose the time period (same options as X axis). +Když je Seskupit podle nastaveno na datumové pole, zvolte časové období (stejné možnosti jako u osy X). -### Sort by +### Řadit podle -When **Group by** is set, control the order of grouped series (e.g., which owner's bar appears first within each category). +Když je nastaveno **Seskupit podle**, určete pořadí seskupených řad (např. který sloupec vlastníka se v rámci každé kategorie zobrazí jako první). -Same options as X axis sorting—Position, Alphabetical, and Manual—except **value-based sorting is not available** for secondary grouping. +Stejné možnosti jako u řazení osy X—Pozice, Abecedně a Ručně—s výjimkou toho, že **řazení podle hodnoty není** pro sekundární seskupení k dispozici. -### Cumulative +### Kumulativní -Show running totals instead of individual values. +Zobrazit průběžné součty místo jednotlivých hodnot. -* **Off**: Each bar/point shows its own value -* **On**: Each bar/point shows the sum of all previous values plus its own +* **Vypnuto**: Každý sloupec/bod zobrazuje svou vlastní hodnotu +* **Zapnuto**: Každý sloupec/bod zobrazuje součet všech předchozích hodnot plus svou vlastní -**Example**: January = 10, February = 15 +**Příklad**: leden = 10, únor = 15 -* Cumulative off: Shows 10 and 15 -* Cumulative on: Shows 10 and 25 (10 + 15) +* Kumulativní vypnuto: Zobrazuje 10 a 15 +* Kumulativní zapnuto: Zobrazuje 10 a 25 (10 + 15) -Use cumulative to track progress toward a goal over time. +Použijte kumulativní zobrazení ke sledování postupu k cíli v čase. Kumulativní -### Min range / Max range +### Min. rozsah / Max. rozsah -Set fixed minimum and maximum values for the Y axis. +Nastavte pevné minimální a maximální hodnoty osy Y. -* Leave blank for automatic scaling -* Enter a number to fix the boundary +* Ponechte prázdné pro automatické škálování +* Zadejte číslo pro pevné nastavení hranice -**When to use:** +**Kdy použít:** -* Set Min to 0 for accurate visual comparisons -* Set both for consistent scales across multiple charts -* Focus on a specific value range by setting both +* Nastavte Min na 0 pro přesná vizuální srovnání +* Nastavte obojí pro konzistentní měřítko napříč několika grafy +* Zaměřte se na konkrétní rozsah hodnot nastavením obou --- -## Style Settings +## Nastavení stylu -### Colors +### Barvy -Set the color scheme for your chart. Choose from a variety of color palettes. +Nastavte pro svůj graf barevné schéma. Vyberte si z řady barevných palet. - When grouping by a Select field, the chart automatically uses the colors defined for each option in your field settings. + Při seskupení podle pole typu Select graf automaticky použije barvy definované pro každou možnost v nastavení vašeho pole. -### Axis name +### Název osy -Choose which axis labels to show: **None**, **X axis**, **Y axis**, or **Both** (bar and line charts only). +Zvolte, které popisky os chcete zobrazit: **Žádné**, **Osa X**, **Osa Y** nebo **Obě** (pouze pro sloupcové a čárové grafy). -### Stacked bars / Stacked lines +### Skládané sloupce / Skládané čáry -When Group by is set, choose how multiple series are displayed. +Když je nastaveno Seskupit podle, zvolte, jak budou více řad zobrazeny. -* **Off (Grouped)**: Series appear side by side. Use when comparing exact values between groups. -* **On (Stacked)**: Series stack on top of each other. Use when showing composition—how parts make up a whole. +* **Vypnuto (Seskupené)**: Řady se zobrazí vedle sebe. Použijte při porovnávání přesných hodnot mezi skupinami. +* **Zapnuto (Skládané)**: Řady se skládají na sebe. Použijte při zobrazení složení—jak části tvoří celek. -**Example**: Deals by stage, grouped by owner +**Příklad**: Obchody podle fáze, seskupené podle vlastníka -* Grouped: See each owner's exact numbers side by side -* Stacked: See total deals per stage, with each owner's contribution stacked +* Seskupené: Uvidíte přesná čísla jednotlivých vlastníků vedle sebe +* Skládané: Uvidíte celkový počet obchodů na fázi, s příspěvkem každého vlastníka naskládaným -### Data labels +### Popisky dat -Show values directly on chart elements (bars, points, slices). +Zobrazit hodnoty přímo na prvcích grafu (sloupce, body, výseče). -* **On**: Values appear on the chart -* **Off**: No values shown (cleaner look) +* **Zapnuto**: Hodnoty se zobrazí v grafu +* **Vypnuto**: Nezobrazují se žádné hodnoty (čistší vzhled) -### Legend +### Legenda -Show or hide the legend (only appears when Group by is set). +Zobrazit nebo skrýt legendu (objeví se pouze při nastavení Seskupit podle). -* **On**: Legend shows what each color represents -* **Off**: No legend displayed +* **Zapnuto**: Legenda zobrazuje, co jednotlivé barvy představují +* **Vypnuto**: Legenda se nezobrazuje - **Hover** over a legend item to highlight that group. **Click** to temporarily hide it from the chart. + **Najetím myší** na položku legendy zvýrazníte danou skupinu. **Kliknutím** ji dočasně skryjete z grafu. --- -## Chart-Specific Notes +## Poznámky specifické pro grafy ### Koláčové grafy -* **Each slice represents** – Define how slices are grouped -* **Hide empty category** – Remove zero-value slices -* **Show value in center** – Display the aggregate value (sum, average, count, etc.) +* **Každý výsek představuje** – Definujte, jak jsou výseče seskupeny +* **Skrýt prázdnou kategorii** – Odebrat výseče s nulovou hodnotou +* **Zobrazit hodnotu uprostřed** – Zobrazit agregační hodnotu (součet, průměr, počet atd.) -### Aggregate charts +### Agregační grafy -* **Prefix** – Add text before the number (e.g., `$`) -* **Suffix** – Add text after the number (e.g., `%`) +* **Prefix** – Přidat text před číslo (např. `$`) +* **Suffix** – Přidat text za číslo (např. `%`) diff --git a/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/dashboards.mdx b/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/dashboards.mdx index 7d85854247..5aac8d46b2 100644 --- a/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/dashboards.mdx +++ b/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/dashboards.mdx @@ -12,7 +12,7 @@ description: Vytvářejte a organizujte řídicí panely pomocí karet pro vizua 1. Přejděte v navigaci do **Dashboards** 2. Klikněte na **+ New Record** -Create a new dashboard +Vytvořit nový řídicí panel 3. Pojmenujte svůj řídicí panel 4. Začněte přidávat karty a widgety @@ -23,27 +23,27 @@ Karty vám pomáhají uspořádat váš řídicí panel do logických sekcí. ### Vytváření karet -1. In edit mode, click **+** in the tab bar, side panel will open on the right +1. V režimu úprav klikněte na **+** na liště karet, na pravé straně se otevře boční panel 2. Pojmenujte svou kartu (např. "Přehled pipeline", "Výkonnost týmu") 3. Přidejte do karty widgety -### Reordering Tabs +### Změna pořadí karet -1. In edit mode, click and hold on the tab you want to move -2. Drag and drop to the new position -3. You can also click on the tab and use the command menu to move the tab to left or right +1. V režimu úprav klikněte a podržte kartu, kterou chcete přesunout +2. Přetáhněte a pusťte na nové místo +3. Můžete také kliknout na kartu a použít nabídku příkazů k přesunutí karty doleva nebo doprava -### Deleting Tabs +### Mazání karet -1. In edit mode, click on the tab you want to delete -2. Click the **Delete** button in the command menu +1. V režimu úprav klikněte na kartu, kterou chcete smazat +2. Klikněte na tlačítko **Smazat** v nabídce příkazů ### Duplikování karet 1. Klikněte na kartu, kterou chcete duplikovat 2. Klikněte na tlačítko **Duplicate** v postranním panelu -Dashboard tab +Karta panelu ## Rozvržení řídicího panelu @@ -55,11 +55,11 @@ Karty vám pomáhají uspořádat váš řídicí panel do logických sekcí. ### Duplikování řídicího panelu -1. Select the dashboard you want to duplicate +1. Vyberte panel, který chcete duplikovat 2. Otevřete příkazovou lištu pomocí **Cmd + K** (nebo **Ctrl + K** ve Windows) 3. Vyberte **Duplicate dashboard** -Duplicate a dashboard +Duplikovat panel ### Osvědčené postupy diff --git a/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/widgets.mdx b/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/widgets.mdx index c339aa2692..ff8645d8c9 100644 --- a/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/widgets.mdx +++ b/packages/twenty-docs/l/cs/user-guide/dashboards/capabilities/widgets.mdx @@ -9,12 +9,12 @@ import { ChartIcon } from '/snippets/chart-icon.mdx'; Twenty nabízí různé typy widgetů pro vizualizaci vašich CRM dat. -### Bar Charts +### Sloupcové grafy Zobrazují data jako vodorovné nebo svislé sloupce. - Bar chart + Sloupcový graf **Vhodné pro:** @@ -30,15 +30,15 @@ Zobrazují data jako vodorovné nebo svislé sloupce. * Počet kontaktů přidaných za měsíc - **Display limits**: Bar charts can show a maximum of 100 bars, and 50 groups per bar when using Group By. Pokud uvidíte upozornění "Nezobrazená data: max X sloupců na graf", přidejte filtry, abyste zúžili svá data, nebo změňte seskupení (např. seskupujte podle týdnů místo dnů). + **Limity zobrazení**: Sloupcové grafy mohou zobrazit maximálně 100 sloupců a při použití Group By 50 skupin na sloupec. Pokud uvidíte upozornění "Nezobrazená data: max X sloupců na graf", přidejte filtry, abyste zúžili svá data, nebo změňte seskupení (např. seskupujte podle týdnů místo dnů). -### Pie Charts +### Koláčové grafy Zobrazují podíly z celku. - Pie chart + Koláčový graf **Vhodné pro:** @@ -53,12 +53,12 @@ Zobrazují podíly z celku. * Rozdělení kontaktů podle odvětví * Složení pipeline podle vlastníka -### Line Charts +### Liniové grafy Zobrazují trendy v čase. - Line chart + Liniový graf **Vhodné pro:** @@ -73,12 +73,12 @@ Zobrazují trendy v čase. * Růst tržeb mezi čtvrtletími * Úroveň aktivity v čase -### Aggregate Charts +### Agregační grafy Výrazně zobrazují jednotlivé klíčové hodnoty. - Aggregate chart + Agregační graf **Vhodné pro:** @@ -118,25 +118,25 @@ Vkládejte externí nástroje a obsah přímo do svého řídicího panelu. * Metriky z vašeho dialeru * Živý obsah z vašeho nástroje pro prodejní sekvence -### Rich Text +### Formátovaný text -Add formatted text and content directly to your dashboard. +Přidejte formátovaný text a obsah přímo do svého řídicího panelu. - Rich text + Formátovaný text **Vhodné pro:** -* Adding context or instructions -* Dashboard descriptions -* Notes and annotations +* Přidání kontextu nebo pokynů +* Popisy řídicích panelů +* Poznámky a anotace -**Features:** +**Funkce:** -* Rich text formatting (bold, italic, lists, etc.) -* Image and file uploads -* Markdown-style editing +* Formátování textu (tučné písmo, kurzíva, seznamy apod.) +* Nahrávání obrázků a souborů +* Úpravy ve stylu Markdownu **Již brzy**: Měřicí grafy (gauge) a tabulky zatím nejsou k dispozici, ale máme je v plánu. diff --git a/packages/twenty-docs/l/cs/user-guide/dashboards/how-tos/widget-faq.mdx b/packages/twenty-docs/l/cs/user-guide/dashboards/how-tos/widget-faq.mdx index 4fb14c19dc..b72e5745d1 100644 --- a/packages/twenty-docs/l/cs/user-guide/dashboards/how-tos/widget-faq.mdx +++ b/packages/twenty-docs/l/cs/user-guide/dashboards/how-tos/widget-faq.mdx @@ -1,67 +1,67 @@ --- -title: Widget FAQ -description: Common questions and error messages explained. +title: FAQ k widgetu +description: Vysvětlení častých otázek a chybových hlášení. --- - - Three options: + + Tři možnosti: - * **Percent empty/not empty**: Under Data on display, select Percent empty or Percent not empty - * **Ratio**: For Select or Checkbox fields, enable Ratio to show a specific option as a percentage of all records - * **Suffix**: For aggregate charts, add `%` as a Suffix in Style settings + * **Procento prázdných/neprázdných**: V části Data k zobrazení vyberte Procento prázdných nebo Procento neprázdných + * **Poměr**: U polí typu Výběr nebo Zaškrtávací políčko zapněte Poměr, aby se konkrétní možnost zobrazila jako procento ze všech záznamů + * **Přípona**: U souhrnných grafů přidejte `%` jako příponu v nastavení stylu - - When using **Group by**, you can display series two ways: + + Při použití **Seskupit podle** můžete řady zobrazit dvěma způsoby: - * **Grouped**: Bars side by side—best for comparing exact values - * **Stacked**: Bars on top of each other—best for showing composition + * **Seskupené**: Sloupce vedle sebe—nejlepší pro porovnání přesných hodnot + * **Skládané**: Sloupce na sobě—nejlepší pro zobrazení složení - Toggle **Stacked** in Style settings to switch. + Přepněte přepínač **Skládané** v nastavení stylu. - - Available operations depend on **field type**: + + Dostupné operace závisejí na **typu pole**: - * **Number fields**: Sum, Average, Min, Max - * **Date fields**: Earliest, Latest (aggregate charts only) - * **Checkbox fields**: Count true, Count false + * **Číselná pole**: Součet, Průměr, Minimum, Maximum + * **Datumová pole**: Nejstarší, Nejnovější (pouze souhrnné grafy) + * **Zaškrtávací pole**: Počet true, Počet false - If you don't see an option, check that you've selected a compatible field type. + Pokud nevidíte danou možnost, zkontrolujte, že jste vybrali kompatibilní typ pole. - - Many settings only appear when prerequisites are met: + + Mnoho nastavení se zobrazí pouze po splnění podmínek: - * **Date granularity**: Select a date field first - * **Group by, Legend, Stacked**: Set Source first - * **Legend, Stacked toggles**: Set Group by first + * **Podrobnost data**: Nejprve vyberte datumové pole + * **Seskupit podle, Legenda, Skládané**: Nejprve nastavte Zdroj + * **Přepínače Legenda a Skládané**: Nejprve nastavte Seskupit podle - If a setting is missing, configure its prerequisite first. + Pokud nějaké nastavení chybí, nejprve nakonfigurujte jeho předpoklad. - - The chart found no records matching your configuration. + + Graf nenašel žádné záznamy odpovídající vašemu nastavení. - **To fix:** Remove or adjust filters, verify you selected the correct Source object, or check that records exist for your date range. + **Jak to opravit:** Odeberte nebo upravte filtry, ověřte, že je v části Zdroj nastaven správný objekt, nebo zkontrolujte, že pro zvolené časové období existují záznamy. - - A required setting is missing or incompatible. + + Chybí povinné nastavení nebo je nekompatibilní. - **To fix:** Ensure Source is set, Data on display is configured, and any required grouping fields are selected. + **Jak to opravit:** Ujistěte se, že je nastaven Zdroj, nakonfigurována Data k zobrazení a vybrána všechna požadovaná seskupovací pole. - - Your data exceeds display limits (100 bars, 100 data points, or 100 slices). + + Vaše data přesahují limity zobrazení (100 sloupců, 100 datových bodů nebo 100 výsečí). - **To fix:** Add filters to narrow your data, or change date granularity from Day to Week or Month. + **Jak to opravit:** Přidejte filtry pro zúžení dat nebo změňte podrobnost data z Dne na Týden či Měsíc. - - The selected field has no values for the records in your filter, or the field type doesn't match the expected data. + + Vybrané pole nemá u záznamů ve vašem filtru žádné hodnoty, nebo typ pole neodpovídá očekávanému typu dat. - **To fix:** Try a different field, or check that records have values for the selected field. + **Jak to opravit:** Zkuste jiné pole nebo ověřte, že záznamy mají pro vybrané pole hodnoty. diff --git a/packages/twenty-docs/l/cs/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/cs/user-guide/dashboards/overview.mdx index a9117e6e0d..25a827d56d 100644 --- a/packages/twenty-docs/l/cs/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/dashboards/overview.mdx @@ -40,9 +40,9 @@ Widgety jsou jednotlivé vizualizace, které zobrazují konkrétní data. Mezi t * Sloupcové grafy * Koláčové grafy * Liniové grafy -* Aggregate charts +* Agregační grafy * iFramy -* Rich text +* Formátovaný text **Aktuální omezení**: @@ -81,5 +81,5 @@ Widgety jsou jednotlivé vizualizace, které zobrazují konkrétní data. Mezi t ## Další kroky * [Widgety a vizualizace](/l/cs/user-guide/dashboards/capabilities/widgets) -* [Chart settings reference](/l/cs/user-guide/dashboards/capabilities/chart-settings) +* [Referenční příručka nastavení grafů](/l/cs/user-guide/dashboards/capabilities/chart-settings) * [Nejčastější dotazy k řídicím panelům](/l/cs/user-guide/dashboards/how-tos/dashboards-faq) diff --git a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 7c9f11d373..0ff4ef688a 100644 --- a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -116,27 +116,27 @@ Tým * Předmět: Navazuji na náš rozhovor * Text zprávy: Odkaz na podrobnosti schůzky ze spouštěče -## Email Attachments +## E-mailové přílohy -You can attach files to emails sent from workflows. The attachment is a static file that you upload when configuring the workflow. +K e-mailům odesílaným z pracovních postupů můžete přikládat soubory. Příloha je statický soubor, který nahrajete při konfiguraci pracovního postupu. -### How to Add an Attachment +### Jak přidat přílohu -1. In the **Send Email** action, click on the **Attachments** button -2. Click to upload a file from your computer -3. The file will be attached to all emails sent by this action +1. V akci **Odeslat e-mail** klikněte na tlačítko **Přílohy** +2. Klikněte a nahrajte soubor ze svého počítače +3. Soubor bude přiložen ke všem e-mailům odesílaným touto akcí ### Běžné scénáře použití -| Případ použití | Example File | -| ------------------------ | ----------------------------- | -| **Welcome emails** | Company brochure (PDF) | -| **Onboarding sequences** | Getting started guide | -| **Sales follow-ups** | Product catalog or price list | -| **Event confirmations** | Event details or agenda | +| Případ použití | Ukázkový soubor | +| -------------------------- | ----------------------------------- | +| **Uvítací e-maily** | Firemní brožura (PDF) | +| **Úvodní sekvence** | Průvodce Začínáme | +| **Návazné akce u prodeje** | Katalog produktů nebo ceník | +| **Potvrzení událostí** | Podrobnosti o události nebo program | - Attachments are static—the same file is sent to all recipients. For dynamic documents (like personalized quotes), generate and attach files using a [Serverless Function](/l/cs/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty). + Přílohy jsou statické—všem příjemcům se posílá stejný soubor. U dynamických dokumentů (například personalizovaných nabídek) soubory vygenerujte a přiložte pomocí [Serverless funkce](/l/cs/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty). ## Osvědčené postupy diff --git a/packages/twenty-docs/l/de/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/de/developers/extend/capabilities/apps.mdx index 5788359885..a4c0ae118a 100644 --- a/packages/twenty-docs/l/de/developers/extend/capabilities/apps.mdx +++ b/packages/twenty-docs/l/de/developers/extend/capabilities/apps.mdx @@ -35,6 +35,10 @@ Erstellen Sie mit dem offiziellen Scaffolder eine neue App, authentifizieren Sie npx create-twenty-app@latest my-twenty-app cd my-twenty-app +# If you don't use yarn@4 +corepack enable +yarn install + # Authenticate using your API key (you'll be prompted) yarn auth:login @@ -88,8 +92,6 @@ my-twenty-app/ .nvmrc .yarnrc.yml .yarn/ - releases/ - yarn-4.9.2.cjs install-state.gz eslint.config.mjs tsconfig.json @@ -167,29 +169,43 @@ Auf hoher Ebene: Spätere Befehle fügen weitere Dateien und Ordner hinzu: -* `yarn app:generate` will create a `generated/` folder (typed Twenty client + workspace types). -* `yarn app:create-entity` will add entity definition files under `src/app/` for your custom objects, functions, or roles. +* `yarn app:generate` erstellt einen `generated/`-Ordner (typisierter Twenty-Client + Workspace-Typen). +* `yarn app:create-entity` fügt unter `src/app/` Entitätsdefinitionsdateien für Ihre benutzerdefinierten Objekte, Funktionen oder Rollen hinzu. l ## Authentifizierung -The first time you run `yarn auth:login`, you'll be prompted for: +Wenn Sie `yarn auth:login` zum ersten Mal ausführen, werden Sie nach Folgendem gefragt: * API-URL (standardmäßig http://localhost:3000 oder Ihr aktuelles Workspace-Profil) * API-Schlüssel -Ihre Anmeldedaten werden pro Benutzer in `~/.twenty/config.json` gespeichert. Sie können mehrere Profile verwalten und mit `--workspace ` wechseln. +Ihre Anmeldedaten werden pro Benutzer in `~/.twenty/config.json` gespeichert. Sie können mehrere Profile verwalten und zwischen ihnen wechseln. -Beispiele: +### Arbeitsbereiche verwalten ```bash filename="Terminal" # Login interactively (recommended) yarn auth:login -# Use a specific workspace profile +# Login to a specific workspace profile yarn auth:login --workspace my-custom-workspace + +# List all configured workspaces +yarn auth:list + +# Switch the default workspace (interactive) +yarn auth:switch + +# Switch to a specific workspace +yarn auth:switch production + +# Check current authentication status +yarn auth:status ``` +Sobald Sie mit `auth:switch` den Arbeitsbereich gewechselt haben, verwenden alle nachfolgenden Befehle standardmäßig diesen Arbeitsbereich. Sie können es weiterhin vorübergehend mit `--workspace ` überschreiben. + ## SDK-Ressourcen verwenden (Typen & Konfiguration) Das twenty-sdk stellt typisierte Bausteine und Hilfsfunktionen bereit, die Sie in Ihrer App verwenden. Im Folgenden finden Sie die wichtigsten Bausteine, mit denen Sie am häufigsten arbeiten. @@ -286,7 +302,7 @@ Hauptpunkte: * Der `universalIdentifier` muss eindeutig und über Deployments hinweg stabil sein. * Jedes Feld benötigt `name`, `type`, `label` und einen eigenen stabilen `universalIdentifier`. * Das Array `fields` ist optional — Sie können Objekte ohne benutzerdefinierte Felder definieren. -* You can scaffold new objects using `yarn app:create-entity`, which guides you through naming, fields, and relationships. +* Sie können mit `yarn app:create-entity` neue Objekte erzeugen; der Assistent führt Sie durch Benennung, Felder und Beziehungen. **Basisfelder werden automatisch erstellt.** Wenn Sie ein benutzerdefiniertes Objekt definieren, fügt Twenty automatisch Standardfelder wie `name`, `createdAt`, `updatedAt`, `createdBy`, `position` und `deletedAt` hinzu. Sie müssen diese nicht in Ihrem `fields`-Array definieren — fügen Sie nur Ihre benutzerdefinierten Felder hinzu. @@ -514,21 +530,21 @@ Häufige Trigger-Typen: > z. B. `path: '/post-card/create',` -> Aufruf unter `/s/post-card/create` * **cron**: Führt Ihre Funktion nach Zeitplan mithilfe eines CRON-Ausdrucks aus. -* **databaseEvent**: Runs on workspace object lifecycle events. When the event operation is `updated`, specific fields to listen to can be specified in the `updatedFields` array. If left undefined or empty, any update will trigger the function. +* **databaseEvent**: Wird bei Lebenszyklusereignissen von Workspace-Objekten ausgeführt. Wenn die Ereignisoperation `updated` ist, können bestimmte zu überwachende Felder im Array `updatedFields` angegeben werden. Wenn das Array undefiniert oder leer ist, löst jede Aktualisierung die Funktion aus. -> e.g. `person.updated` +> z. B. `person.updated` Notizen: * Das Array `triggers` ist optional. Funktionen ohne Trigger können als von anderen Funktionen aufgerufene Utility-Funktionen verwendet werden. * Sie können mehrere Trigger-Typen in einer Funktion kombinieren. -### Route trigger payload +### Routen-Trigger-Payload - **Breaking change (v1.16, January 2026):** The route trigger payload format has changed. Prior to v1.16, query parameters, path parameters, and body were sent directly as the payload. Starting with v1.16, they are nested inside a structured `RoutePayload` object. + **Breaking Change (v1.16, Januar 2026):** Das Format der Routen-Trigger-Payload hat sich geändert. Vor v1.16 wurden Query-Parameter, Pfadparameter und der Body direkt als Payload gesendet. Ab v1.16 sind sie innerhalb eines strukturierten `RoutePayload`-Objekts verschachtelt. - **Before v1.16:** + **Vor v1.16:** ```typescript const handler = async (params) => { @@ -536,7 +552,7 @@ Notizen: }; ``` - **After v1.16:** + **Nach v1.16:** ```typescript const handler = async (event: RoutePayload) => { @@ -546,10 +562,10 @@ Notizen: }; ``` - **To migrate existing functions:** Update your handler to destructure from `event.body`, `event.queryStringParameters`, or `event.pathParameters` instead of directly from the params object. + **So migrieren Sie bestehende Funktionen:** Aktualisieren Sie Ihren Handler, sodass er nicht mehr direkt aus dem params-Objekt destrukturiert, sondern aus `event.body`, `event.queryStringParameters` oder `event.pathParameters`. -When a route trigger invokes your function, it receives a `RoutePayload` object that follows the AWS HTTP API v2 format. Import the type from `twenty-sdk`: +Wenn ein Routen-Trigger Ihre Funktion aufruft, erhält sie ein `RoutePayload`-Objekt, das dem AWS-HTTP-API-v2-Format entspricht. Importieren Sie den Typ aus `twenty-sdk`: ```typescript import { defineFunction, type RoutePayload } from 'twenty-sdk'; @@ -565,21 +581,21 @@ const handler = async (event: RoutePayload) => { }; ``` -The `RoutePayload` type has the following structure: +Der Typ `RoutePayload` hat die folgende Struktur: -| Property | Typ | Beschreibung | -| ---------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------- | -| `headers` | `Record` | HTTP headers (only those listed in `forwardedRequestHeaders`) | -| `queryStringParameters` | `Record` | Query string parameters (multiple values joined with commas) | -| `pathParameters` | `Record` | Path parameters extracted from the route pattern (e.g., `/users/:id` → `{ id: '123' }`) | -| `inhalt` | `object \| null` | Parsed request body (JSON) | -| `isBase64Encoded` | `boolesch` | Whether the body is base64 encoded | -| `requestContext.http.method` | `string` | HTTP method (GET, POST, PUT, PATCH, DELETE) | -| `requestContext.http.path` | `string` | Raw request path | +| Eigenschaft | Typ | Beschreibung | +| ---------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------- | +| `headers` | `Record` | HTTP-Header (nur die in `forwardedRequestHeaders` aufgelisteten) | +| `queryStringParameters` | `Record` | Query-String-Parameter (mehrere Werte mit Kommas verbunden) | +| `pathParameters` | `Record` | Aus dem Routenmuster extrahierte Pfadparameter (z. B. `/users/:id` → `{ id: '123' }`) | +| `inhalt` | `object \| null` | Geparster Request-Body (JSON) | +| `isBase64Encoded` | `boolesch` | Gibt an, ob der Body Base64-codiert ist | +| `requestContext.http.method` | `string` | HTTP-Methode (GET, POST, PUT, PATCH, DELETE) | +| `requestContext.http.path` | `string` | Rohpfad der Anfrage | -### Forwarding HTTP headers +### Weiterleiten von HTTP-Headern -By default, HTTP headers from incoming requests are **not** passed to your serverless function for security reasons. To access specific headers, explicitly list them in the `forwardedRequestHeaders` array: +Standardmäßig werden HTTP-Header von eingehenden Anfragen aus Sicherheitsgründen nicht an Ihre serverlose Funktion weitergegeben. Um auf bestimmte Header zuzugreifen, listen Sie diese explizit im Array `forwardedRequestHeaders` auf: ```typescript export default defineFunction({ @@ -599,7 +615,7 @@ export default defineFunction({ }); ``` -In your handler, you can then access these headers: +In Ihrem Handler können Sie anschließend auf diese Header zugreifen: ```typescript const handler = async (event: RoutePayload) => { @@ -612,17 +628,17 @@ const handler = async (event: RoutePayload) => { ``` - Header names are normalized to lowercase. Access them using lowercase keys (for example, `event.headers['content-type']`). + Header-Namen werden in Kleinbuchstaben normalisiert. Greifen Sie mit Schlüsseln in Kleinbuchstaben darauf zu (zum Beispiel `event.headers['content-type']`). Sie können neue Funktionen auf zwei Arten erstellen: -* **Scaffolded**: Run `yarn app:create-entity` and choose the option to add a new function. Dadurch wird eine Starterdatei mit Handler und Konfiguration erzeugt. +* **Generiert**: Führen Sie `yarn app:create-entity` aus und wählen Sie die Option zum Hinzufügen einer neuen Funktion. Dadurch wird eine Starterdatei mit Handler und Konfiguration erzeugt. * **Manuell**: Erstellen Sie eine neue `*.function.ts`-Datei und verwenden Sie `defineFunction()` nach demselben Muster. ### Generierter typisierter Client -Run yarn app:generate to create a local typed client in generated/ based on your workspace schema. Verwenden Sie ihn in Ihren Funktionen: +Führen Sie yarn app:generate aus, um einen lokalen typisierten Client in generated/ basierend auf Ihrem Workspace-Schema zu erstellen. Verwenden Sie ihn in Ihren Funktionen: ```typescript import Twenty from './generated'; @@ -631,7 +647,7 @@ const client = new Twenty(); const { me } = await client.query({ me: { id: true, displayName: true } }); ``` -The client is re-generated by `yarn app:generate`. Re-run after changing your objects and `yarn app:sync` or when onboarding to a new workspace. +Der Client wird durch `yarn app:generate` erneut generiert. Führen Sie ihn nach Änderungen an Ihren Objekten und nach `yarn app:sync` bzw. beim Onboarding in einen neuen Workspace erneut aus. #### Laufzeit-Anmeldedaten in serverlosen Funktionen @@ -675,13 +691,13 @@ Fügen Sie dann Skripte wie diese hinzu: } ``` -Now you can run the same commands via Yarn, e.g. `yarn app:dev`, `yarn app:sync`, etc. +Jetzt können Sie dieselben Befehle über Yarn ausführen, z. B. `yarn app:dev`, `yarn app:sync` usw. ## Fehlerbehebung -* Authentication errors: run `yarn auth:login` and ensure your API key has the required permissions. +* Authentifizierungsfehler: Führen Sie `yarn auth:login` aus und stellen Sie sicher, dass Ihr API-Schlüssel die erforderlichen Berechtigungen hat. * Verbindung zum Server nicht möglich: Überprüfen Sie die API-URL und dass der Twenty-Server erreichbar ist. -* Types or client missing/outdated: run `yarn app:generate` and then `yarn app:dev`. -* Dev mode not syncing: ensure `yarn app:dev` is running and that changes are not ignored by your environment. +* Typen oder Client fehlen/veraltet: Führen Sie `yarn app:generate` und anschließend `yarn app:dev` aus. +* Dev-Modus synchronisiert nicht: Stellen Sie sicher, dass `yarn app:dev` läuft und dass Änderungen von Ihrer Umgebung nicht ignoriert werden. Discord-Hilfekanal: https://discord.com/channels/1130383047699738754/1130386664812982322 diff --git a/packages/twenty-docs/l/de/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/l/de/developers/self-host/capabilities/setup.mdx index 43c7ea3d8e..5be86d5303 100644 --- a/packages/twenty-docs/l/de/developers/self-host/capabilities/setup.mdx +++ b/packages/twenty-docs/l/de/developers/self-host/capabilities/setup.mdx @@ -292,31 +292,31 @@ yarn command:prod cron:workflow:automated-cron-trigger **Nur-Umgebungsmodus:** Wenn Sie `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` setzen, fügen Sie diese Variablen stattdessen Ihrer `.env`-Datei hinzu. -## Serverless Functions +## Serverlose Funktionen -Twenty supports serverless functions for workflows and custom logic. The execution environment is configured via the `SERVERLESS_TYPE` environment variable. +Twenty unterstützt serverlose Funktionen für Workflows und benutzerdefinierte Logik. Die Ausführungsumgebung wird über die Umgebungsvariable `SERVERLESS_TYPE` konfiguriert. - **Security Notice:** The local serverless driver (`SERVERLESS_TYPE=LOCAL`) runs code directly on the host in a Node.js process with no sandboxing. It should only be used for trusted code in development. For production deployments handling untrusted code, we highly recommend using `SERVERLESS_TYPE=LAMBDA` or `SERVERLESS_TYPE=DISABLED`. + **Sicherheitshinweis:** Der lokale serverlose Treiber (`SERVERLESS_TYPE=LOCAL`) führt Code ohne Sandbox direkt auf dem Host in einem Node.js-Prozess aus. Er sollte nur für vertrauenswürdigen Code in der Entwicklung verwendet werden. Für Produktivbereitstellungen, die nicht vertrauenswürdigen Code verarbeiten, empfehlen wir nachdrücklich, `SERVERLESS_TYPE=LAMBDA` oder `SERVERLESS_TYPE=DISABLED` zu verwenden. -### Available Drivers +### Verfügbare Treiber -| Driver | Environment Variable | Anwendungsfall | Security Level | -| -------- | -------------------------- | ------------------------------------- | ------------------------------- | -| Disabled | `SERVERLESS_TYPE=DISABLED` | Disable serverless functions entirely | N/A | -| Local | `SERVERLESS_TYPE=LOCAL` | Development and trusted environments | Low (no sandboxing) | -| Lambda | `SERVERLESS_TYPE=LAMBDA` | Production with untrusted code | High (hardware-level isolation) | +| Treiber | Umgebungsvariable | Anwendungsfall | Sicherheitsstufe | +| ----------- | -------------------------- | -------------------------------------------------- | ---------------------------------- | +| Deaktiviert | `SERVERLESS_TYPE=DISABLED` | Serverlose Funktionen vollständig deaktivieren | N/A | +| Lokal | `SERVERLESS_TYPE=LOCAL` | Entwicklung und vertrauenswürdige Umgebungen | Niedrig (keine Sandbox) | +| Lambda | `SERVERLESS_TYPE=LAMBDA` | Produktivbetrieb mit nicht vertrauenswürdigem Code | Hoch (Isolation auf Hardwareebene) | -### Recommended Configuration +### Empfohlene Konfiguration -**For development:** +**Für die Entwicklung:** ```bash SERVERLESS_TYPE=LOCAL # default ``` -**For production (AWS):** +**Für den Produktivbetrieb (AWS):** ```bash SERVERLESS_TYPE=LAMBDA @@ -326,12 +326,12 @@ SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key ``` -**To disable serverless functions:** +**Zum Deaktivieren serverloser Funktionen:** ```bash SERVERLESS_TYPE=DISABLED ``` - When using `SERVERLESS_TYPE=DISABLED`, any attempt to execute a serverless function will return an error. This is useful if you want to run Twenty without serverless function capabilities. + Bei Verwendung von `SERVERLESS_TYPE=DISABLED` führt jeder Versuch, eine serverlose Funktion auszuführen, zu einem Fehler. Dies ist nützlich, wenn Sie Twenty ohne Unterstützung für serverlose Funktionen betreiben möchten. diff --git a/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/chart-settings.mdx b/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/chart-settings.mdx index 971a7b740a..98d28fe206 100644 --- a/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/chart-settings.mdx +++ b/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/chart-settings.mdx @@ -1,275 +1,275 @@ --- -title: Chart Settings -description: Configure your charts to display data exactly how you need it. +title: Diagramm-Einstellungen +description: Konfigurieren Sie Ihre Diagramme so, dass Daten genau so angezeigt werden, wie Sie sie benötigen. --- import { ChartIcon } from '/snippets/chart-icon.mdx'; -## Accessing Chart Settings +## Diagramm-Einstellungen aufrufen -1. Click the **Edit** button in the top-right corner of your dashboard +1. Klicken Sie auf die Schaltfläche **Bearbeiten** in der oberen rechten Ecke Ihres Dashboards -Edit mode +Bearbeitungsmodus -2. The dashboard enters edit mode -3. Click on any widget to select it -4. The settings panel opens on the right +2. Das Dashboard wechselt in den Bearbeitungsmodus +3. Klicken Sie auf ein beliebiges Widget, um es auszuwählen +4. Der Einstellungsbereich öffnet sich rechts -Settings are organized into sections: +Die Einstellungen sind in Abschnitte gegliedert: -* **Data**: What data to pull and how to filter it -* **X axis**: How to group and sort categories (bar/line charts) -* **Y axis**: What to measure and how to display it (bar/line charts) -* **Style**: Colors, labels, and visual options +* **Daten**: Welche Daten abgerufen werden und wie sie gefiltert werden +* **X-Achse**: Wie Kategorien gruppiert und sortiert werden (Balken-/Liniendiagramme) +* **Y-Achse**: Was gemessen wird und wie es angezeigt wird (Balken-/Liniendiagramme) +* **Stil**: Farben, Beschriftungen und visuelle Optionen - Some settings only appear when other settings are configured. For example, **Date granularity** only appears when you select a date field. + Einige Einstellungen erscheinen nur, wenn andere Einstellungen konfiguriert sind. Beispielsweise wird **Datumsgranularität** nur angezeigt, wenn Sie ein Datumsfeld auswählen. --- -## Data Settings +## Daten-Einstellungen -### Source +### Quelle -Choose which object to pull data from. +Wählen Sie, aus welchem Objekt Daten abgerufen werden sollen. -1. Click **Source** -2. Select an object (Opportunities, People, Companies, etc.) +1. Klicken Sie auf **Quelle** +2. Wählen Sie ein Objekt (Chancen, Personen, Unternehmen usw.) -All your standard and custom objects are available. Changing the source resets other settings since field options depend on the selected object. +Alle Ihre Standard- und benutzerdefinierten Objekte sind verfügbar. Das Ändern der Quelle setzt andere Einstellungen zurück, da Feldoptionen vom ausgewählten Objekt abhängen. Quelle ### Filter -Limit which records are included in the chart. +Begrenzen Sie, welche Datensätze in das Diagramm einbezogen werden. 1. Klicken Sie auf **Filter** -2. The filter builder opens -3. Click **+ Add filter** -4. Select a field, condition, and value -5. Add more filters as needed +2. Der Filter-Editor wird geöffnet +3. Klicken Sie auf **+ Filter hinzufügen** +4. Wählen Sie ein Feld, eine Bedingung und einen Wert +5. Fügen Sie bei Bedarf weitere Filter hinzu -Filters work the same as in table views. Use them to focus on specific segments of your data. +Filter funktionieren genauso wie in Tabellenansichten. Verwenden Sie sie, um sich auf bestimmte Segmente Ihrer Daten zu konzentrieren. -**Example**: Filter opportunities where Stage equals "Won" to show only closed deals. +**Beispiel**: Filtern Sie Chancen, bei denen Phase "Gewonnen" ist, um nur abgeschlossene Deals anzuzeigen. Filter - For date fields, try **Is relative** to create dynamic filters like "Past 7 days" or "This month" that automatically update. + Für Datumsfelder verwenden Sie **Ist relativ**, um dynamische Filter wie "Letzte 7 Tage" oder "Dieser Monat" zu erstellen, die automatisch aktualisiert werden. - Advanced filters are supported—add multiple filter rules and combine them with **And** or **Or** logic. + Erweiterte Filter werden unterstützt — fügen Sie mehrere Filterregeln hinzu und kombinieren Sie sie mit **Und**- oder **Oder**-Logik. --- -## X Axis Settings +## Einstellungen der X-Achse -These settings control the horizontal axis of bar and line charts—typically how your data is grouped into categories. +Diese Einstellungen steuern die horizontale Achse von Balken- und Liniendiagrammen — typischerweise, wie Ihre Daten in Kategorien gruppiert werden. -### Data on display +### Angezeigte Daten -Select the field to group your data by. This determines the categories shown on the X axis. +Wählen Sie das Feld aus, nach dem Ihre Daten gruppiert werden sollen. Dies bestimmt die auf der X-Achse angezeigten Kategorien. -**Example**: Select "Stage" to see data grouped by pipeline stage, or "Created date" to see data over time. +**Beispiel**: Wählen Sie "Phase", um Daten nach Pipeline-Phase zu gruppieren, oder "Erstellungsdatum", um Daten über die Zeit zu sehen. Angezeigte Daten -### Date granularity +### Datumsgranularität -When grouping by a date field, choose the time period for grouping. +Beim Gruppieren nach einem Datumsfeld wählen Sie den Zeitraum für die Gruppierung. -| Option | Groups data by | Example output | -| ------------------- | -------------------- | --------------------------------------------- | -| **Day** | Each calendar day | Jan 1, Jan 2, Jan 3... | -| **Week** | Calendar weeks | Week 1, Week 2, Week 3... | -| **Month** | Calendar months | January, February, March... | -| **Quarter** | Fiscal quarters | Q1, Q2, Q3, Q4 | -| **Year** | Calendar years | 2023, 2024, 2025 | -| **Day of week** | Weekday (aggregated) | Monday, Tuesday... (all Mondays combined) | -| **Month of year** | Month (aggregated) | January, February... (all Januaries combined) | -| **Quarter of year** | Quarter (aggregated) | Q1, Q2, Q3, Q4 (all Q1s combined) | +| Option | Gruppiert Daten nach | Beispielausgabe | +| ---------------------- | ---------------------- | --------------------------------------------------- | +| **Tag** | Jeder Kalendertag | 1. Jan., 2. Jan., 3. Jan. ... | +| **Woche** | Kalenderwochen | Woche 1, Woche 2, Woche 3 ... | +| **Monat** | Kalendermonate | Januar, Februar, März ... | +| **Quartal** | Geschäftsquartale | Q1, Q2, Q3, Q4 | +| **Jahr** | Kalenderjahre | 2023, 2024, 2025 | +| **Wochentag** | Wochentag (aggregiert) | Montag, Dienstag ... (alle Montage zusammengefasst) | +| **Monat des Jahres** | Monat (aggregiert) | Januar, Februar ... (alle Januare zusammengefasst) | +| **Quartal des Jahres** | Quartal (aggregiert) | Q1, Q2, Q3, Q4 (alle Q1 zusammengefasst) | -The "of week/year" options aggregate across all time. Use **Day of week** to see which weekday typically gets the most deals. Use **Month** to see trends month by month. +Die "der Woche/des Jahres"-Optionen aggregieren über die gesamte Zeit. Verwenden Sie **Wochentag**, um zu sehen, welcher Wochentag typischerweise die meisten Deals bringt. Verwenden Sie **Monat**, um Trends Monat für Monat zu sehen. -### Sort by +### Sortieren nach -Control the order of categories on the X axis. +Steuern Sie die Reihenfolge der Kategorien auf der X-Achse. -* **Position** – Uses the order defined in your Select field settings -* **Alphabetical** – A to Z (or chronological for dates) -* **By value** – Ordered by the metric (highest or lowest first) -* **Manual** – Drag to set your own order +* **Position** – Verwendet die in den Einstellungen Ihres Auswahlfelds definierte Reihenfolge +* **Alphabetisch** – A bis Z (oder chronologisch bei Daten) +* **Nach Wert** – Nach der Kennzahl sortiert (höchste oder niedrigste zuerst) +* **Manuell** – Ziehen Sie, um Ihre eigene Reihenfolge festzulegen Sortieren nach -**Tip**: For pipeline stages, use **Position** to show stages in your sales process order (Lead → Qualified → Proposal → Won). +**Tipp**: Für Pipeline-Phasen verwenden Sie **Position**, um Phasen in der Reihenfolge Ihres Verkaufsprozesses anzuzeigen (Lead → Qualifiziert → Angebot → Gewonnen). - The options shown depend on your field type. Select fields have all options; date and text fields show fewer. + Die angezeigten Optionen hängen von Ihrem Feldtyp ab. Auswahlfelder haben alle Optionen; Datums- und Textfelder zeigen weniger. - With **Manual** sorting, drag categories to create a custom order—perfect for highlighting specific segments or telling a story with your data. + Mit der Sortieroption **Manuell** können Sie Kategorien ziehen, um eine benutzerdefinierte Reihenfolge zu erstellen — ideal, um bestimmte Segmente hervorzuheben oder mit Ihren Daten eine Geschichte zu erzählen. -### Omit zero values +### Nullwerte auslassen -Hide categories that have zero or no data. +Kategorien mit Nullwerten oder ohne Daten ausblenden. -* **On**: Categories with no records are hidden -* **Off**: All categories are shown, even if empty +* **Ein**: Kategorien ohne Einträge werden ausgeblendet +* **Aus**: Alle Kategorien werden angezeigt, auch wenn sie leer sind -Use this to clean up charts with sparse data. +Verwenden Sie dies, um Diagramme mit spärlichen Daten aufzuräumen. --- -## Y Axis Settings +## Einstellungen der Y-Achse -These settings control what you're measuring and how it's displayed. +Diese Einstellungen steuern, was Sie messen und wie es angezeigt wird. -### Data on display +### Angezeigte Daten -Select the field and operation to calculate your metric. +Wählen Sie das Feld und die Operation zur Berechnung Ihrer Kennzahl. -* **Counts** – Count all, Count empty, Count not empty, Count unique values -* **Math** – Sum, Average, Min, Max (number fields) -* **Percentages** – Percent empty, Percent not empty +* **Zählungen** – Alle zählen, Leere zählen, Nicht-Leere zählen, Eindeutige Werte zählen +* **Mathematik** – Summe, Durchschnitt, Min, Max (Zahlenfelder) +* **Prozentsätze** – Prozent leer, Prozent nicht leer -Boolean fields add Count true/false. Aggregate charts with date fields show Earliest/Latest. +Boolesche Felder fügen „Wahr/Falsch zählen“ hinzu. Aggregierte Diagramme mit Datumsfeldern zeigen Frühestes/Spätestes. -**Example**: Select "Amount" with Sum to see total deal value per category, or Count all to see number of deals. +**Beispiel**: Wählen Sie „Betrag“ mit Summe, um den gesamten Deal-Wert pro Kategorie zu sehen, oder Alle zählen, um die Anzahl der Deals zu sehen. Angezeigte Daten - The options shown depend on your field and chart type. If you don't see an expected operation, check your field type. + Die angezeigten Optionen hängen von Ihrem Feld- und Diagrammtyp ab. Wenn eine erwartete Operation nicht angezeigt wird, überprüfen Sie Ihren Feldtyp. ### Verhältnis -For Select, Multi-select, or Boolean fields, you can calculate the percentage of a specific value. +Für Auswahl-, Mehrfachauswahl- oder Boolesche Felder können Sie den Prozentsatz eines bestimmten Werts berechnen. -1. Select a Select, Multi-select, or Boolean field -2. Enable **Ratio** -3. Choose the option to measure +1. Wählen Sie ein Auswahl-, Mehrfachauswahl- oder Boolesches Feld aus +2. Aktivieren Sie **Verhältnis** +3. Wählen Sie die zu messende Option -**Example**: Show "Won" deals as a percentage of all opportunities. If you have 10 Won out of 50 total, the chart shows 20%. +**Beispiel**: Zeigen Sie "Gewonnene" Deals als Prozentsatz aller Chancen. Wenn Sie 10 „Gewonnen“-Deals von insgesamt 50 haben, zeigt das Diagramm 20 %. -### Group by +### Gruppieren nach -Add a second dimension to create multiple series (multiple bars or lines). +Fügen Sie eine zweite Dimension hinzu, um mehrere Reihen zu erstellen (mehrere Balken oder Linien). -1. Set your X axis field first -2. Click **Group by** -3. Select a second field +1. Legen Sie zuerst Ihr X-Achsen-Feld fest +2. Klicken Sie auf **Gruppieren nach** +3. Wählen Sie ein zweites Feld aus -**Example**: Group deals by Stage (X axis) AND by Owner (Group by) to see each person's pipeline breakdown side by side. +**Beispiel**: Gruppieren Sie Deals nach Phase (X-Achse) UND nach Inhaber (Gruppieren nach), um die Pipeline-Aufschlüsselung jeder Person nebeneinander zu sehen. Gruppieren nach -When Group by is set, you'll see multiple colors in your chart and a legend appears. +Wenn Gruppieren nach eingestellt ist, sehen Sie mehrere Farben in Ihrem Diagramm und eine Legende erscheint. -### Date granularity +### Datumsgranularität -When Group by is a date field, choose the time period (same options as X axis). +Wenn Gruppieren nach ein Datumsfeld ist, wählen Sie den Zeitraum (gleiche Optionen wie bei der X-Achse). -### Sort by +### Sortieren nach -When **Group by** is set, control the order of grouped series (e.g., which owner's bar appears first within each category). +Wenn Gruppieren nach eingestellt ist, steuern Sie die Reihenfolge der gruppierten Reihen (z. B. welcher Balken des Inhabers innerhalb jeder Kategorie zuerst erscheint). -Same options as X axis sorting—Position, Alphabetical, and Manual—except **value-based sorting is not available** for secondary grouping. +Gleiche Optionen wie bei der Sortierung der X-Achse — Position, Alphabetisch und Manuell — außer dass wertbasierte Sortierung für die sekundäre Gruppierung nicht verfügbar ist. -### Cumulative +### Kumulativ -Show running totals instead of individual values. +Laufende Summen statt einzelner Werte anzeigen. -* **Off**: Each bar/point shows its own value -* **On**: Each bar/point shows the sum of all previous values plus its own +* **Aus**: Jeder Balken/Punkt zeigt seinen eigenen Wert +* **Ein**: Jeder Balken/Punkt zeigt die Summe aller vorherigen Werte plus seinen eigenen -**Example**: January = 10, February = 15 +**Beispiel**: Januar = 10, Februar = 15 -* Cumulative off: Shows 10 and 15 -* Cumulative on: Shows 10 and 25 (10 + 15) +* Kumulativ aus: Zeigt 10 und 15 +* Kumulativ ein: Zeigt 10 und 25 (10 + 15) -Use cumulative to track progress toward a goal over time. +Verwenden Sie „Kumulativ“, um den Fortschritt zu einem Ziel im Zeitverlauf zu verfolgen. Kumulativ -### Min range / Max range +### Min-Bereich / Max-Bereich -Set fixed minimum and maximum values for the Y axis. +Legen Sie feste Mindest- und Höchstwerte für die Y-Achse fest. -* Leave blank for automatic scaling -* Enter a number to fix the boundary +* Leer lassen für automatische Skalierung +* Geben Sie eine Zahl ein, um die Grenze festzulegen -**When to use:** +**Wann verwenden:** -* Set Min to 0 for accurate visual comparisons -* Set both for consistent scales across multiple charts -* Focus on a specific value range by setting both +* Setzen Sie Min auf 0 für genaue visuelle Vergleiche +* Setzen Sie beides für konsistente Skalen über mehrere Diagramme hinweg +* Fokussieren Sie einen bestimmten Wertebereich, indem Sie beide festlegen --- -## Style Settings +## Stil-Einstellungen -### Colors +### Farben -Set the color scheme for your chart. Choose from a variety of color palettes. +Legen Sie das Farbschema für Ihr Diagramm fest. Wählen Sie aus einer Vielzahl von Farbpaletten. - When grouping by a Select field, the chart automatically uses the colors defined for each option in your field settings. + Beim Gruppieren nach einem Auswahlfeld verwendet das Diagramm automatisch die in Ihren Feldeinstellungen für jede Option definierten Farben. -### Axis name +### Achsenname -Choose which axis labels to show: **None**, **X axis**, **Y axis**, or **Both** (bar and line charts only). +Wählen Sie, welche Achsenbeschriftungen angezeigt werden sollen: **Keine**, **X-Achse**, **Y-Achse** oder **Beide** (nur Balken- und Liniendiagramme). -### Stacked bars / Stacked lines +### Gestapelte Balken / Gestapelte Linien -When Group by is set, choose how multiple series are displayed. +Wenn Gruppieren nach eingestellt ist, wählen Sie, wie mehrere Reihen angezeigt werden. -* **Off (Grouped)**: Series appear side by side. Use when comparing exact values between groups. -* **On (Stacked)**: Series stack on top of each other. Use when showing composition—how parts make up a whole. +* **Aus (Gruppiert)**: Reihen erscheinen nebeneinander. Verwenden Sie dies, wenn exakte Werte zwischen Gruppen verglichen werden. +* **Ein (Gestapelt)**: Reihen werden übereinander gestapelt. Verwenden Sie dies, wenn Sie die Zusammensetzung zeigen — wie Teile ein Ganzes bilden. -**Example**: Deals by stage, grouped by owner +**Beispiel**: Deals nach Phase, gruppiert nach Inhaber -* Grouped: See each owner's exact numbers side by side -* Stacked: See total deals per stage, with each owner's contribution stacked +* Gruppiert: Sehen Sie die exakten Zahlen jedes Inhabers nebeneinander +* Gestapelt: Sehen Sie die Gesamtzahl der Deals pro Phase, mit dem gestapelten Beitrag jedes Inhabers -### Data labels +### Datenbeschriftungen -Show values directly on chart elements (bars, points, slices). +Werte direkt auf Diagrammelementen (Balken, Punkte, Segmente) anzeigen. -* **On**: Values appear on the chart -* **Off**: No values shown (cleaner look) +* **Ein**: Werte erscheinen im Diagramm +* **Aus**: Keine Werte angezeigt (aufgeräumtere Darstellung) -### Legend +### Legende -Show or hide the legend (only appears when Group by is set). +Legende anzeigen oder ausblenden (erscheint nur, wenn Gruppieren nach eingestellt ist). -* **On**: Legend shows what each color represents -* **Off**: No legend displayed +* **Ein**: Die Legende zeigt, was jede Farbe darstellt +* **Aus**: Keine Legende angezeigt - **Hover** over a legend item to highlight that group. **Click** to temporarily hide it from the chart. + **Bewegen Sie den Mauszeiger** über ein Legendenelement, um diese Gruppe hervorzuheben. **Klicken** Sie, um es vorübergehend aus dem Diagramm auszublenden. --- -## Chart-Specific Notes +## Diagrammspezifische Hinweise ### Tortendiagramme -* **Each slice represents** – Define how slices are grouped -* **Hide empty category** – Remove zero-value slices -* **Show value in center** – Display the aggregate value (sum, average, count, etc.) +* **Jedes Segment steht für** – Legen Sie fest, wie Segmente gruppiert werden +* **Leere Kategorie ausblenden** – Nullwert-Segmente entfernen +* **Wert in der Mitte anzeigen** – Den aggregierten Wert anzeigen (Summe, Durchschnitt, Anzahl usw.) -### Aggregate charts +### Aggregierte Diagramme -* **Prefix** – Add text before the number (e.g., `$`) -* **Suffix** – Add text after the number (e.g., `%`) +* **Präfix** – Text vor der Zahl hinzufügen (z. B. `$`) +* **Suffix** – Text nach der Zahl hinzufügen (z. B. `%`) diff --git a/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/dashboards.mdx b/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/dashboards.mdx index 00957dc19b..33dfc5101d 100644 --- a/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/dashboards.mdx +++ b/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/dashboards.mdx @@ -12,7 +12,7 @@ Dashboards in Twenty sind hierarchisch organisiert: **Dashboards → Registerkar 1. Gehen Sie in der Navigation zu **Dashboards** 2. Klicken Sie auf **+ Neuer Datensatz** -Create a new dashboard +Neues Dashboard erstellen 3. Geben Sie Ihrem Dashboard einen Namen 4. Fügen Sie Registerkarten und Widgets hinzu @@ -23,27 +23,27 @@ Registerkarten helfen Ihnen, Ihr Dashboard in logische Abschnitte zu gliedern. ### Registerkarten erstellen -1. In edit mode, click **+** in the tab bar, side panel will open on the right +1. Im Bearbeitungsmodus klicken Sie in der Registerkartenleiste auf **+**; der Seitenbereich öffnet sich rechts 2. Benennen Sie Ihre Registerkarte (z. B. "Pipeline-Übersicht", "Teamleistung") 3. Fügen Sie der Registerkarte Widgets hinzu -### Reordering Tabs +### Registerkarten neu anordnen -1. In edit mode, click and hold on the tab you want to move -2. Drag and drop to the new position -3. You can also click on the tab and use the command menu to move the tab to left or right +1. Im Bearbeitungsmodus klicken Sie auf die Registerkarte, die Sie verschieben möchten, und halten Sie die Maustaste gedrückt +2. Per Drag-and-Drop an die neue Position verschieben +3. Sie können auch auf die Registerkarte klicken und das Befehlsmenü verwenden, um die Registerkarte nach links oder rechts zu verschieben -### Deleting Tabs +### Registerkarten löschen -1. In edit mode, click on the tab you want to delete -2. Click the **Delete** button in the command menu +1. Im Bearbeitungsmodus klicken Sie auf die Registerkarte, die Sie löschen möchten +2. Klicken Sie im Befehlsmenü auf die Schaltfläche **Löschen** ### Registerkarten duplizieren 1. Klicken Sie auf die Registerkarte, die Sie duplizieren möchten 2. Klicken Sie in der Seitenleiste auf die Schaltfläche **Duplizieren** -Dashboard tab +Dashboard-Registerkarte ## Dashboard-Layout @@ -55,11 +55,11 @@ Registerkarten helfen Ihnen, Ihr Dashboard in logische Abschnitte zu gliedern. ### Ein Dashboard duplizieren -1. Select the dashboard you want to duplicate +1. Wählen Sie das Dashboard aus, das Sie duplizieren möchten 2. Öffnen Sie die Befehlsleiste mit **Cmd + K** (oder **Ctrl + K** unter Windows) 3. Wählen Sie **Dashboard duplizieren** -Duplicate a dashboard +Dashboard duplizieren ### Beste Praktiken diff --git a/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/widgets.mdx b/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/widgets.mdx index c8862d3793..795fd9667e 100644 --- a/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/widgets.mdx +++ b/packages/twenty-docs/l/de/user-guide/dashboards/capabilities/widgets.mdx @@ -9,12 +9,12 @@ import { ChartIcon } from '/snippets/chart-icon.mdx'; Twenty bietet verschiedene Widget-Typen, um Ihre CRM-Daten zu visualisieren. -### Bar Charts +### Balkendiagramme Stellen Sie Daten als horizontale oder vertikale Balken dar. - Bar chart + Balkendiagramm **Am besten geeignet für:** @@ -30,15 +30,15 @@ Stellen Sie Daten als horizontale oder vertikale Balken dar. * Hinzugefügte Kontakte pro Monat - **Display limits**: Bar charts can show a maximum of 100 bars, and 50 groups per bar when using Group By. Wenn Sie die Warnung "Nicht angezeigte Daten: max. X Balken pro Diagramm" sehen, fügen Sie Filter hinzu, um Ihre Daten einzugrenzen, oder ändern Sie die Gruppierung (z. B. nach Woche statt nach Tagen). + **Anzeigegrenzen**: Balkendiagramme können maximal 100 Balken anzeigen sowie bei Verwendung von Group By 50 Gruppen pro Balken. Wenn Sie die Warnung "Nicht angezeigte Daten: max. X Balken pro Diagramm" sehen, fügen Sie Filter hinzu, um Ihre Daten einzugrenzen, oder ändern Sie die Gruppierung (z. B. nach Woche statt nach Tagen). -### Pie Charts +### Tortendiagramme Zeigen Sie Anteile eines Ganzen. - Pie chart + Tortendiagramm **Am besten geeignet für:** @@ -53,12 +53,12 @@ Zeigen Sie Anteile eines Ganzen. * Kontaktaufschlüsselung nach Branche * Pipeline-Zusammensetzung nach Eigentümer -### Line Charts +### Liniendiagramme Stellen Sie Trends im Zeitverlauf dar. - Line chart + Liniendiagramm **Am besten geeignet für:** @@ -73,12 +73,12 @@ Stellen Sie Trends im Zeitverlauf dar. * Umsatzwachstum über Quartale * Aktivitätsniveau im Zeitverlauf -### Aggregate Charts +### Aggregierte Diagramme Zeigen Sie einzelne Kennzahlen prominent an. - Aggregate chart + Aggregiertes Diagramm **Am besten geeignet für:** @@ -118,25 +118,25 @@ Betten Sie externe Tools und Inhalte direkt in Ihr Dashboard ein. * Kennzahlen aus Ihrem Dialer * Live-Inhalte aus Ihrem Tool für Sales-Sequenzen -### Rich Text +### Rich-Text -Add formatted text and content directly to your dashboard. +Fügen Sie formatierten Text und Inhalte direkt zu Ihrem Dashboard hinzu. - Rich text + Rich-Text **Am besten geeignet für:** -* Adding context or instructions -* Dashboard descriptions -* Notes and annotations +* Kontext oder Anweisungen hinzufügen +* Dashboard-Beschreibungen +* Notizen und Anmerkungen -**Features:** +**Funktionen:** -* Rich text formatting (bold, italic, lists, etc.) -* Image and file uploads -* Markdown-style editing +* Rich-Text-Formatierung (fett, kursiv, Listen usw.) +* Bild- und Dateiuploads +* Bearbeitung im Markdown-Stil **Bald verfügbar**: Tachometerdiagramme und Tabellen sind noch nicht verfügbar, stehen aber auf unserer Roadmap. diff --git a/packages/twenty-docs/l/de/user-guide/dashboards/how-tos/widget-faq.mdx b/packages/twenty-docs/l/de/user-guide/dashboards/how-tos/widget-faq.mdx index 4fb14c19dc..21a10f5146 100644 --- a/packages/twenty-docs/l/de/user-guide/dashboards/how-tos/widget-faq.mdx +++ b/packages/twenty-docs/l/de/user-guide/dashboards/how-tos/widget-faq.mdx @@ -1,67 +1,67 @@ --- -title: Widget FAQ -description: Common questions and error messages explained. +title: Widget-FAQ +description: Häufige Fragen und Fehlermeldungen erklärt. --- - - Three options: + + Drei Optionen: - * **Percent empty/not empty**: Under Data on display, select Percent empty or Percent not empty - * **Ratio**: For Select or Checkbox fields, enable Ratio to show a specific option as a percentage of all records - * **Suffix**: For aggregate charts, add `%` as a Suffix in Style settings + * **Prozent leer/nicht leer**: Unter Angezeigte Daten wählen Sie Prozent leer oder Prozent nicht leer aus + * **Verhältnis**: Für Auswahl- oder Kontrollkästchenfelder aktivieren Sie Verhältnis, um eine bestimmte Option als Prozentsatz aller Datensätze anzuzeigen + * **Suffix**: Für aggregierte Diagramme fügen Sie in den Stileinstellungen `%` als Suffix hinzu - - When using **Group by**, you can display series two ways: + + Bei Verwendung von **Gruppieren nach** können Sie Reihen auf zwei Arten anzeigen: - * **Grouped**: Bars side by side—best for comparing exact values - * **Stacked**: Bars on top of each other—best for showing composition + * **Gruppiert**: Balken nebeneinander—am besten zum Vergleichen exakter Werte + * **Gestapelt**: Balken übereinander—am besten, um die Zusammensetzung zu zeigen - Toggle **Stacked** in Style settings to switch. + Schalten Sie **Gestapelt** in den Stileinstellungen um, um zu wechseln. - - Available operations depend on **field type**: + + Verfügbare Operationen hängen vom **Feldtyp** ab: - * **Number fields**: Sum, Average, Min, Max - * **Date fields**: Earliest, Latest (aggregate charts only) - * **Checkbox fields**: Count true, Count false + * **Zahlenfelder**: Summe, Durchschnitt, Minimum, Maximum + * **Datumsfelder**: Frühestes, Spätestes (nur bei aggregierten Diagrammen) + * **Kontrollkästchenfelder**: Anzahl wahr, Anzahl falsch - If you don't see an option, check that you've selected a compatible field type. + Wenn Sie eine Option nicht sehen, prüfen Sie, ob Sie einen kompatiblen Feldtyp ausgewählt haben. - - Many settings only appear when prerequisites are met: + + Viele Einstellungen werden erst angezeigt, wenn Voraussetzungen erfüllt sind: - * **Date granularity**: Select a date field first - * **Group by, Legend, Stacked**: Set Source first - * **Legend, Stacked toggles**: Set Group by first + * **Datumsgranularität**: Wählen Sie zuerst ein Datumsfeld aus + * **Gruppieren nach, Legende, Gestapelt**: Legen Sie zuerst die Quelle fest + * **Schalter für Legende und Gestapelt**: Legen Sie zuerst Gruppieren nach fest - If a setting is missing, configure its prerequisite first. + Wenn eine Einstellung fehlt, konfigurieren Sie zuerst die zugehörige Voraussetzung. - - The chart found no records matching your configuration. + + Das Diagramm hat keine Datensätze gefunden, die Ihrer Konfiguration entsprechen. - **To fix:** Remove or adjust filters, verify you selected the correct Source object, or check that records exist for your date range. + **So beheben Sie das Problem:** Entfernen oder passen Sie Filter an, vergewissern Sie sich, dass Sie das richtige Quellobjekt ausgewählt haben, oder prüfen Sie, ob für Ihren Datumsbereich Datensätze vorhanden sind. - - A required setting is missing or incompatible. + + Eine erforderliche Einstellung fehlt oder ist nicht kompatibel. - **To fix:** Ensure Source is set, Data on display is configured, and any required grouping fields are selected. + **So beheben Sie das Problem:** Stellen Sie sicher, dass die Quelle festgelegt ist, Angezeigte Daten konfiguriert sind und alle erforderlichen Gruppierungsfelder ausgewählt sind. - - Your data exceeds display limits (100 bars, 100 data points, or 100 slices). + + Ihre Daten überschreiten die Anzeigebegrenzungen (100 Balken, 100 Datenpunkte oder 100 Segmente). - **To fix:** Add filters to narrow your data, or change date granularity from Day to Week or Month. + **So beheben Sie das Problem:** Fügen Sie Filter hinzu, um Ihre Daten einzugrenzen, oder ändern Sie die Datumsgranularität von Tag auf Woche oder Monat. - - The selected field has no values for the records in your filter, or the field type doesn't match the expected data. + + Das ausgewählte Feld hat für die Datensätze in Ihrem Filter keine Werte, oder der Feldtyp entspricht nicht den erwarteten Daten. - **To fix:** Try a different field, or check that records have values for the selected field. + **So beheben Sie das Problem:** Probieren Sie ein anderes Feld aus, oder prüfen Sie, ob Datensätze Werte für das ausgewählte Feld haben. diff --git a/packages/twenty-docs/l/de/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/de/user-guide/dashboards/overview.mdx index 607ec4855e..2b47d4fe03 100644 --- a/packages/twenty-docs/l/de/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/dashboards/overview.mdx @@ -40,9 +40,9 @@ Widgets sind einzelne Visualisierungen, die spezifische Daten anzeigen. Zu den T * Balkendiagramme * Tortendiagramme * Liniendiagramme -* Aggregate charts +* Aggregierte Diagramme * iFrames -* Rich text +* Rich-Text **Aktuelle Einschränkungen**: @@ -81,5 +81,5 @@ Widgets sind einzelne Visualisierungen, die spezifische Daten anzeigen. Zu den T ## Nächste Schritte * [Widgets und Visualisierungen](/l/de/user-guide/dashboards/capabilities/widgets) -* [Chart settings reference](/l/de/user-guide/dashboards/capabilities/chart-settings) +* [Referenz zu den Diagrammeinstellungen](/l/de/user-guide/dashboards/capabilities/chart-settings) * [FAQ zu Dashboards](/l/de/user-guide/dashboards/how-tos/dashboards-faq) diff --git a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 2b60ae2b6e..aba1bd4ff6 100644 --- a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -116,27 +116,27 @@ Das Team * Betreff: Rückmeldung zu unserem Gespräch * Text: Verweisen Sie auf Besprechungsdetails aus dem Auslöser -## Email Attachments +## E-Mail-Anhänge -You can attach files to emails sent from workflows. The attachment is a static file that you upload when configuring the workflow. +Sie können Dateien an E-Mails anhängen, die von Workflows gesendet werden. Der Anhang ist eine statische Datei, die Sie beim Konfigurieren des Workflows hochladen. -### How to Add an Attachment +### So fügen Sie einen Anhang hinzu -1. In the **Send Email** action, click on the **Attachments** button -2. Click to upload a file from your computer -3. The file will be attached to all emails sent by this action +1. Klicken Sie in der Aktion **E-Mail senden** auf die Schaltfläche **Anhänge** +2. Klicken Sie, um eine Datei von Ihrem Computer hochzuladen +3. Die Datei wird allen E-Mails, die durch diese Aktion gesendet werden, angehängt ### Häufige Anwendungsfälle -| Anwendungsfall | Example File | -| ------------------------ | ----------------------------- | -| **Welcome emails** | Company brochure (PDF) | -| **Onboarding sequences** | Getting started guide | -| **Sales follow-ups** | Product catalog or price list | -| **Event confirmations** | Event details or agenda | +| Anwendungsfall | Beispieldatei | +| ------------------------------- | --------------------------------- | +| **Willkommens-E-Mails** | Unternehmensbroschüre (PDF) | +| **Onboarding-Sequenzen** | Leitfaden für die ersten Schritte | +| **Vertriebs-Nachverfolgungen** | Produktkatalog oder Preisliste | +| **Veranstaltungsbestätigungen** | Veranstaltungsdetails oder Agenda | - Attachments are static—the same file is sent to all recipients. For dynamic documents (like personalized quotes), generate and attach files using a [Serverless Function](/l/de/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty). + Anhänge sind statisch—dieselbe Datei wird an alle Empfänger gesendet. Für dynamische Dokumente (z. B. personalisierte Angebote) erstellen und hängen Sie Dateien mithilfe einer [Serverless-Funktion](/l/de/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty) an. ## Beste Praktiken diff --git a/packages/twenty-docs/l/ro/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/ro/developers/extend/capabilities/apps.mdx index c41809bba3..39ee560025 100644 --- a/packages/twenty-docs/l/ro/developers/extend/capabilities/apps.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/capabilities/apps.mdx @@ -35,33 +35,40 @@ Creați o aplicație nouă folosind generatorul oficial, apoi autentificați-vă npx create-twenty-app@latest my-twenty-app cd my-twenty-app +# If you don't use yarn@4 +corepack enable +yarn install + # Authenticate using your API key (you'll be prompted) -yarn auth +yarn auth:login # Start dev mode: automatically syncs local changes to your workspace -yarn dev +yarn app:dev ``` De aici puteți: ```bash filename="Terminal" # Add a new entity to your application (guided) -yarn create-entity +yarn app:create-entity # Generate a typed Twenty client and workspace entity types -yarn generate +yarn app:generate # Run a one‑time sync (instead of watch mode) -yarn sync +yarn app:sync # Watch your application's functions logs -yarn logs +yarn function:logs + +# Execute a function by name +yarn function:execute -n my-function -p '{"name": "test"}' # Uninstall the application from the current workspace -yarn uninstall +yarn app:uninstall # Display commands' help -yarn help +yarn app:help},{ ``` Consultați și: paginile de referință CLI pentru [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) și [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk). @@ -85,8 +92,6 @@ my-twenty-app/ .nvmrc .yarnrc.yml .yarn/ - releases/ - yarn-4.9.2.cjs install-state.gz eslint.config.mjs tsconfig.json @@ -164,28 +169,43 @@ Pe scurt: Comenzile ulterioare vor adăuga mai multe fișiere și foldere: -* `yarn generate` va crea un folder `generated/` (client Twenty tipizat + tipuri pentru spațiul de lucru). -* `yarn create-entity` va adăuga fișiere de definire a entităților în `src/app/` pentru obiectele, funcțiile sau rolurile personalizate. +* `yarn app:generate` va crea un folder `generated/` (client Twenty tipizat + tipuri pentru spațiul de lucru). +* `yarn app:create-entity` va adăuga fișiere de definire a entităților în `src/app/` pentru obiectele, funcțiile sau rolurile personalizate. + l ## Autentificare -Prima dată când rulați `yarn auth`, vi se vor solicita: +Prima dată când rulați `yarn auth:login`, vi se vor solicita: * URL-ul API (implicit http://localhost:3000 sau profilul spațiului de lucru curent) * Cheie API -Acreditările dvs. sunt stocate per utilizator în `~/.twenty/config.json`. Puteți menține mai multe profiluri și comuta folosind `--workspace `. +Acreditările dvs. sunt stocate per utilizator în `~/.twenty/config.json`. Puteți menține mai multe profiluri și comuta între ele. -Exemple: +### Gestionarea spațiilor de lucru ```bash filename="Terminal" # Login interactively (recommended) -yarn auth +yarn auth:login -# Use a specific workspace profile -yarn auth --workspace my-custom-workspace +# Login to a specific workspace profile +yarn auth:login --workspace my-custom-workspace + +# List all configured workspaces +yarn auth:list + +# Switch the default workspace (interactive) +yarn auth:switch + +# Switch to a specific workspace +yarn auth:switch production + +# Check current authentication status +yarn auth:status ``` +După ce ați schimbat spațiul de lucru cu `auth:switch`, toate comenzile ulterioare vor folosi implicit acel spațiu de lucru. Îl puteți totuși suprascrie temporar cu `--workspace `. + ## Utilizați resursele SDK (tipuri și configurare) Biblioteca twenty-sdk oferă blocuri de bază tipizate și funcții ajutătoare pe care le utilizați în aplicația dvs. Mai jos sunt elementele cheie cu care veți interacționa cel mai des. @@ -282,7 +302,7 @@ Puncte cheie: * `universalIdentifier` trebuie să fie unic și stabil între implementări. * Fiecare câmp necesită un `name`, un `type`, un `label` și propriul `universalIdentifier` stabil. * Matricea `fields` este opțională — puteți defini obiecte fără câmpuri personalizate. -* Puteți genera obiecte noi folosind `yarn create-entity`, care vă ghidează prin denumire, câmpuri și relații. +* Puteți genera obiecte noi folosind `yarn app:create-entity`, care vă ghidează prin denumire, câmpuri și relații. **Câmpurile de bază sunt create automat.** Când definiți un obiect personalizat, Twenty adaugă automat câmpuri standard precum `name`, `createdAt`, `updatedAt`, `createdBy`, `position` și `deletedAt`. Nu trebuie să le definiți în tabloul `fields` — adăugați doar câmpurile personalizate proprii. @@ -496,7 +516,8 @@ export default defineFunction({ { universalIdentifier: '203f1df3-4a82-4d06-a001-b8cf22a31156', type: 'databaseEvent', - eventName: 'person.created', + eventName: 'person.updated', + updatedFields: ['name'], }, ], }); @@ -509,21 +530,21 @@ Tipuri comune de declanșatoare: > de ex. `path: '/post-card/create',` -> apel pe `/s/post-card/create` * **cron**: Rulează funcția pe un program folosind o expresie CRON. -* **databaseEvent**: Rulează la evenimentele ciclului de viață ale obiectelor din spațiul de lucru +* **databaseEvent**: Rulează la evenimentele ciclului de viață ale obiectelor din spațiul de lucru. Când operațiunea evenimentului este `updated`, câmpurile specifice de urmărit pot fi specificate în array-ul `updatedFields`. Dacă este lăsat nedefinit sau gol, orice actualizare va declanșa funcția. -> de ex. `person.created` +> de ex. `person.updated` Notițe: * Matricea `triggers` este opțională. Funcțiile fără declanșatoare pot fi folosite ca funcții utilitare apelate de alte funcții. * Puteți combina mai multe tipuri de declanșatoare într-o singură funcție. -### Route trigger payload +### Payload-ul declanșatorului de rută - **Breaking change (v1.16, January 2026):** The route trigger payload format has changed. Prior to v1.16, query parameters, path parameters, and body were sent directly as the payload. Starting with v1.16, they are nested inside a structured `RoutePayload` object. + **Modificare incompatibilă (v1.16, ianuarie 2026):** Formatul payload-ului declanșatorului de rută s-a schimbat. Înainte de v1.16, parametrii de interogare (query), parametrii de cale și corpul erau trimiși direct ca payload. Începând cu v1.16, acestea sunt incluse într-un obiect structurat `RoutePayload`. - **Before v1.16:** + **Înainte de v1.16:** ```typescript const handler = async (params) => { @@ -531,7 +552,7 @@ Notițe: }; ``` - **After v1.16:** + **După v1.16:** ```typescript const handler = async (event: RoutePayload) => { @@ -541,10 +562,10 @@ Notițe: }; ``` - **To migrate existing functions:** Update your handler to destructure from `event.body`, `event.queryStringParameters`, or `event.pathParameters` instead of directly from the params object. + **Pentru a migra funcțiile existente:** Actualizează handler-ul pentru a extrage câmpurile din `event.body`, `event.queryStringParameters` sau `event.pathParameters` în loc să le iei direct din obiectul params. -When a route trigger invokes your function, it receives a `RoutePayload` object that follows the AWS HTTP API v2 format. Import the type from `twenty-sdk`: +Când un declanșator de rută îți apelează funcția, aceasta primește un obiect `RoutePayload` care urmează formatul AWS HTTP API v2. Importă tipul din `twenty-sdk`: ```typescript import { defineFunction, type RoutePayload } from 'twenty-sdk'; @@ -560,21 +581,21 @@ const handler = async (event: RoutePayload) => { }; ``` -The `RoutePayload` type has the following structure: +Tipul `RoutePayload` are următoarea structură: -| Property | Tip | Descriere | -| ---------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------- | -| `headers` | `Record` | HTTP headers (only those listed in `forwardedRequestHeaders`) | -| `queryStringParameters` | `Record` | Query string parameters (multiple values joined with commas) | -| `pathParameters` | `Record` | Path parameters extracted from the route pattern (e.g., `/users/:id` → `{ id: '123' }`) | -| `corp` | `object \| null` | Parsed request body (JSON) | -| `isBase64Encoded` | `boolean` | Whether the body is base64 encoded | -| `requestContext.http.method` | `string` | HTTP method (GET, POST, PUT, PATCH, DELETE) | -| `requestContext.http.path` | `string` | Raw request path | +| Proprietate | Tip | Descriere | +| ---------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------ | +| `headers` | `Record` | Anteturi HTTP (doar cele listate în `forwardedRequestHeaders`) | +| `queryStringParameters` | `Record` | Parametri query string (valorile multiple unite cu virgule) | +| `pathParameters` | `Record` | Parametri de cale extrași din modelul rutei (de ex., `/users/:id` → `{ id: '123' }`) | +| `corp` | `object \| null` | Corpul cererii analizat (JSON) | +| `isBase64Encoded` | `boolean` | Indică dacă corpul este codificat în base64 | +| `requestContext.http.method` | `string` | Metoda HTTP (GET, POST, PUT, PATCH, DELETE) | +| `requestContext.http.path` | `string` | Calea brută a cererii | -### Forwarding HTTP headers +### Transmiterea anteturilor HTTP -By default, HTTP headers from incoming requests are **not** passed to your serverless function for security reasons. To access specific headers, explicitly list them in the `forwardedRequestHeaders` array: +În mod implicit, anteturile HTTP din cererile de intrare **nu** sunt transmise funcției tale serverless din motive de securitate. Pentru a accesa anumite anteturi, listează-le explicit în array-ul `forwardedRequestHeaders`: ```typescript export default defineFunction({ @@ -594,7 +615,7 @@ export default defineFunction({ }); ``` -In your handler, you can then access these headers: +În handler, poți apoi accesa aceste anteturi: ```typescript const handler = async (event: RoutePayload) => { @@ -607,17 +628,17 @@ const handler = async (event: RoutePayload) => { ``` - Header names are normalized to lowercase. Access them using lowercase keys (for example, `event.headers['content-type']`). + Numele anteturilor sunt normalizate la litere mici. Accesează-le folosind chei cu litere mici (de exemplu, `event.headers['content-type']`). Puteți crea funcții noi în două moduri: -* **Generat**: Rulați `yarn create-entity` și alegeți opțiunea de a adăuga o funcție nouă. Aceasta generează un fișier inițial cu un handler și o configurație. +* **Generat**: Rulați `yarn app:create-entity` și alegeți opțiunea de a adăuga o funcție nouă. Aceasta generează un fișier inițial cu un handler și o configurație. * **Manual**: Creați un fișier nou `*.function.ts` și folosiți `defineFunction()`, urmând același model. ### Client tipizat generat -Rulați yarn generate pentru a crea un client tipizat local în generated/, pe baza schemei spațiului de lucru. Folosiți-l în funcțiile dvs.: +Rulați yarn app:generate pentru a crea un client tipizat local în generated/, pe baza schemei spațiului de lucru. Folosiți-l în funcțiile dvs.: ```typescript import Twenty from './generated'; @@ -626,7 +647,7 @@ const client = new Twenty(); const { me } = await client.query({ me: { id: true, displayName: true } }); ``` -Clientul este regenerat de `yarn generate`. Rulați din nou după ce vă modificați obiectele și rulați `yarn sync` sau când vă integrați într-un spațiu de lucru nou. +Clientul este regenerat de `yarn app:generate`. Rulați din nou după ce vă modificați obiectele și rulați `yarn app:sync` sau când vă integrați într-un spațiu de lucru nou. #### Acreditări la runtime în funcțiile serverless @@ -670,13 +691,13 @@ Apoi adăugați scripturi ca acestea: } ``` -Acum puteți rula aceleași comenzi prin Yarn, de ex. `yarn dev`, `yarn sync`, etc. +Acum puteți rula aceleași comenzi prin Yarn, de ex. `yarn app:dev`, `yarn app:sync`, etc. ## Depanare -* Erori de autentificare: rulați `yarn auth` și asigurați-vă că cheia API are permisiunile necesare. +* Erori de autentificare: rulați `yarn auth:login` și asigurați-vă că cheia API are permisiunile necesare. * Nu se poate conecta la server: verificați URL-ul API și că serverul Twenty este accesibil. -* Tipuri sau client lipsă/învechite: rulați `yarn generate` și apoi `yarn dev`. -* Modul dev nu sincronizează: asigurați-vă că `yarn dev` rulează și că modificările nu sunt ignorate de mediul dvs. +* Tipuri sau client lipsă/învechite: rulați `yarn app:generate` și apoi `yarn app:dev`. +* Modul dev nu sincronizează: asigurați-vă că `yarn app:dev` rulează și că modificările nu sunt ignorate de mediul dvs. Canal de ajutor pe Discord: https://discord.com/channels/1130383047699738754/1130386664812982322 diff --git a/packages/twenty-docs/l/ro/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/l/ro/developers/self-host/capabilities/setup.mdx index b2fa3a3005..4f2de5887a 100644 --- a/packages/twenty-docs/l/ro/developers/self-host/capabilities/setup.mdx +++ b/packages/twenty-docs/l/ro/developers/self-host/capabilities/setup.mdx @@ -292,31 +292,31 @@ yarn command:prod cron:workflow:automated-cron-trigger **Mod doar pentru mediu:** Dacă setați `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, adăugați aceste variabile în fișierul dvs. `.env` în schimb. -## Serverless Functions +## Funcții serverless -Twenty supports serverless functions for workflows and custom logic. The execution environment is configured via the `SERVERLESS_TYPE` environment variable. +Twenty acceptă funcții serverless pentru fluxuri de lucru și logică personalizată. Mediul de execuție este configurat prin variabila de mediu `SERVERLESS_TYPE`. - **Security Notice:** The local serverless driver (`SERVERLESS_TYPE=LOCAL`) runs code directly on the host in a Node.js process with no sandboxing. It should only be used for trusted code in development. For production deployments handling untrusted code, we highly recommend using `SERVERLESS_TYPE=LAMBDA` or `SERVERLESS_TYPE=DISABLED`. + **Atenționare de securitate:** Driverul serverless local (`SERVERLESS_TYPE=LOCAL`) rulează codul direct pe gazdă într-un proces Node.js, fără sandboxing. Ar trebui utilizat doar pentru cod de încredere, în dezvoltare. Pentru implementări de producție care gestionează cod neverificat, recomandăm cu tărie utilizarea `SERVERLESS_TYPE=LAMBDA` sau `SERVERLESS_TYPE=DISABLED`. -### Available Drivers +### Drivere disponibile -| Driver | Environment Variable | Caz de utilizare | Security Level | -| -------- | -------------------------- | ------------------------------------- | ------------------------------- | -| Disabled | `SERVERLESS_TYPE=DISABLED` | Disable serverless functions entirely | N/A | -| Local | `SERVERLESS_TYPE=LOCAL` | Development and trusted environments | Low (no sandboxing) | -| Lambda | `SERVERLESS_TYPE=LAMBDA` | Production with untrusted code | High (hardware-level isolation) | +| Driver | Variabilă de mediu | Caz de utilizare | Nivel de securitate | +| ---------- | -------------------------- | ----------------------------------------- | -------------------------------------- | +| Dezactivat | `SERVERLESS_TYPE=DISABLED` | Dezactivează complet funcțiile serverless | N/A | +| Local | `SERVERLESS_TYPE=LOCAL` | Dezvoltare și medii de încredere | Scăzut (fără sandboxing) | +| Lambda | `SERVERLESS_TYPE=LAMBDA` | Producție cu cod neverificat | Ridicat (izolare la nivel de hardware) | -### Recommended Configuration +### Configurație recomandată -**For development:** +**Pentru dezvoltare:** ```bash SERVERLESS_TYPE=LOCAL # default ``` -**For production (AWS):** +**Pentru producție (AWS):** ```bash SERVERLESS_TYPE=LAMBDA @@ -326,12 +326,12 @@ SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key ``` -**To disable serverless functions:** +**Pentru a dezactiva funcțiile serverless:** ```bash SERVERLESS_TYPE=DISABLED ``` - When using `SERVERLESS_TYPE=DISABLED`, any attempt to execute a serverless function will return an error. This is useful if you want to run Twenty without serverless function capabilities. + Când se utilizează `SERVERLESS_TYPE=DISABLED`, orice încercare de a executa o funcție serverless va returna o eroare. Acest lucru este util dacă doriți să rulați Twenty fără capabilități de funcții serverless. diff --git a/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/chart-settings.mdx b/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/chart-settings.mdx index 2087cc0089..ddaf7a30cc 100644 --- a/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/chart-settings.mdx +++ b/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/chart-settings.mdx @@ -1,275 +1,275 @@ --- -title: Chart Settings -description: Configure your charts to display data exactly how you need it. +title: Setări pentru diagrame +description: Configurați diagramele pentru a afișa datele exact așa cum aveți nevoie. --- import { ChartIcon } from '/snippets/chart-icon.mdx'; -## Accessing Chart Settings +## Accesarea setărilor pentru diagrame -1. Click the **Edit** button in the top-right corner of your dashboard +1. Faceți clic pe butonul **Editare** din colțul din dreapta sus al tabloului de bord -Edit mode +Mod editare -2. The dashboard enters edit mode -3. Click on any widget to select it -4. The settings panel opens on the right +2. Tabloul de bord intră în modul de editare +3. Faceți clic pe orice widget pentru a-l selecta +4. Panoul de setări se deschide în dreapta -Settings are organized into sections: +Setările sunt organizate în secțiuni: -* **Data**: What data to pull and how to filter it -* **X axis**: How to group and sort categories (bar/line charts) -* **Y axis**: What to measure and how to display it (bar/line charts) -* **Style**: Colors, labels, and visual options +* **Date**: Ce date să preluați și cum să le filtrați +* **Axa X**: Cum să grupați și să sortați categoriile (diagrame cu bare/linii) +* **Axa Y**: Ce să măsurați și cum să o afișați (diagrame cu bare/linii) +* **Stil**: Culori, etichete și opțiuni vizuale - Some settings only appear when other settings are configured. For example, **Date granularity** only appears when you select a date field. + Unele setări apar doar când sunt configurate alte setări. De exemplu, **Granularitate dată** apare doar când selectați un câmp de tip dată. --- -## Data Settings +## Setări date -### Source +### Sursă -Choose which object to pull data from. +Alegeți din ce obiect să preluați date. -1. Click **Source** -2. Select an object (Opportunities, People, Companies, etc.) +1. Faceți clic pe **Sursă** +2. Selectați un obiect (Oportunități, Persoane, Companii etc.) -All your standard and custom objects are available. Changing the source resets other settings since field options depend on the selected object. +Toate obiectele standard și personalizate sunt disponibile. Schimbarea sursei resetează alte setări, deoarece opțiunile câmpului depind de obiectul selectat. Sursă -### Filter +### Filtru -Limit which records are included in the chart. +Limitați ce înregistrări sunt incluse în diagramă. 1. Faceți clic pe **Filtru** -2. The filter builder opens -3. Click **+ Add filter** -4. Select a field, condition, and value -5. Add more filters as needed +2. Se deschide constructorul de filtre +3. Faceți clic pe **+ Adaugă filtru** +4. Selectați un câmp, o condiție și o valoare +5. Adăugați mai multe filtre după necesități -Filters work the same as in table views. Use them to focus on specific segments of your data. +Filtrele funcționează la fel ca în vizualizările de tabel. Folosiți-le pentru a vă concentra pe segmente specifice ale datelor. -**Example**: Filter opportunities where Stage equals "Won" to show only closed deals. +**Exemplu**: Filtrați oportunitățile unde Etapa este egală cu "Câștigat" pentru a afișa doar tranzacțiile închise. Filtru - For date fields, try **Is relative** to create dynamic filters like "Past 7 days" or "This month" that automatically update. + Pentru câmpurile de tip dată, încercați **Este relativ** pentru a crea filtre dinamice precum "Ultimele 7 zile" sau "Luna aceasta" care se actualizează automat. - Advanced filters are supported—add multiple filter rules and combine them with **And** or **Or** logic. + Filtrele avansate sunt acceptate—adăugați mai multe reguli de filtrare și combinați-le cu logica **Și** sau **Sau**. --- -## X Axis Settings +## Setări axa X -These settings control the horizontal axis of bar and line charts—typically how your data is grouped into categories. +Aceste setări controlează axa orizontală a diagramelor cu bare și linii—de obicei modul în care datele sunt grupate în categorii. -### Data on display +### Date afișate -Select the field to group your data by. This determines the categories shown on the X axis. +Selectați câmpul după care să grupați datele. Aceasta determină categoriile afișate pe axa X. -**Example**: Select "Stage" to see data grouped by pipeline stage, or "Created date" to see data over time. +**Exemplu**: Selectați "Etapă" pentru a vedea datele grupate după etapa din pipeline, sau "Data creării" pentru a vedea datele în timp. Date afișate -### Date granularity +### Granularitate dată -When grouping by a date field, choose the time period for grouping. +Când grupați după un câmp de tip dată, alegeți perioada de timp pentru grupare. -| Opțiune | Groups data by | Example output | -| ------------------- | -------------------- | --------------------------------------------- | -| **Day** | Each calendar day | Jan 1, Jan 2, Jan 3... | -| **Week** | Calendar weeks | Week 1, Week 2, Week 3... | -| **Month** | Calendar months | January, February, March... | -| **Quarter** | Fiscal quarters | Q1, Q2, Q3, Q4 | -| **Year** | Calendar years | 2023, 2024, 2025 | -| **Day of week** | Weekday (aggregated) | Monday, Tuesday... (all Mondays combined) | -| **Month of year** | Month (aggregated) | January, February... (all Januaries combined) | -| **Quarter of year** | Quarter (aggregated) | Q1, Q2, Q3, Q4 (all Q1s combined) | +| Opțiune | Grupează datele după | Exemplu de rezultat | +| --------------------- | ------------------------- | -------------------------------------------------------- | +| **Zi** | Fiecare zi calendaristică | 1 ian., 2 ian., 3 ian... | +| **Săptămână** | Săptămâni calendaristice | Săptămâna 1, Săptămâna 2, Săptămâna 3... | +| **Lună** | Luni calendaristice | Ianuarie, Februarie, Martie... | +| **Trimestru** | Trimestre fiscale | T1, T2, T3, T4 | +| **An** | Ani calendaristici | 2023, 2024, 2025 | +| **Ziua săptămânii** | Zi a săptămânii (agregat) | Luni, Marți... (toate zilele de luni combinate) | +| **Luna anului** | Lună (agregat) | Ianuarie, Februarie... (toate lunile ianuarie combinate) | +| **Trimestrul anului** | Trimestru (agregat) | T1, T2, T3, T4 (toate T1 combinate) | -The "of week/year" options aggregate across all time. Use **Day of week** to see which weekday typically gets the most deals. Use **Month** to see trends month by month. +Opțiunile "din săptămână/an" agregă pe întreaga perioadă de timp. Folosiți **Ziua săptămânii** pentru a vedea în ce zi din săptămână se obțin de obicei cele mai multe tranzacții. Folosiți **Lună** pentru a vedea tendințele lună de lună. -### Sort by +### Sortează după -Control the order of categories on the X axis. +Controlați ordinea categoriilor pe axa X. -* **Position** – Uses the order defined in your Select field settings -* **Alphabetical** – A to Z (or chronological for dates) -* **By value** – Ordered by the metric (highest or lowest first) -* **Manual** – Drag to set your own order +* **Poziție** – Folosește ordinea definită în setările câmpului Select +* **Alfabetic** – de la A la Z (sau cronologic pentru date) +* **După valoare** – Ordonat după metrică (mai întâi cele mai mari sau cele mai mici) +* **Manual** – Trageți pentru a stabili propria ordine Sortează după -**Tip**: For pipeline stages, use **Position** to show stages in your sales process order (Lead → Qualified → Proposal → Won). +**Sfat**: Pentru etapele din pipeline, utilizați **Poziție** pentru a afișa etapele în ordinea procesului de vânzări (Potențial → Calificat → Ofertă → Câștigat). - The options shown depend on your field type. Select fields have all options; date and text fields show fewer. + Opțiunile afișate depind de tipul câmpului. Câmpurile de tip Select au toate opțiunile; câmpurile de tip dată și text afișează mai puține. - With **Manual** sorting, drag categories to create a custom order—perfect for highlighting specific segments or telling a story with your data. + Cu sortarea **Manual**, trageți categoriile pentru a crea o ordine personalizată—perfect pentru a evidenția segmente specifice sau pentru a spune o poveste cu datele dvs. -### Omit zero values +### Omite valorile zero -Hide categories that have zero or no data. +Ascundeți categoriile care au valoare zero sau nu au date. -* **On**: Categories with no records are hidden -* **Off**: All categories are shown, even if empty +* **Activat**: Categoriile fără înregistrări sunt ascunse +* **Dezactivat**: Toate categoriile sunt afișate, chiar dacă sunt goale -Use this to clean up charts with sparse data. +Folosiți această opțiune pentru a curăța diagramele cu date rare. --- -## Y Axis Settings +## Setări axa Y -These settings control what you're measuring and how it's displayed. +Aceste setări controlează ce măsurați și cum este afișat. -### Data on display +### Date afișate -Select the field and operation to calculate your metric. +Selectați câmpul și operația pentru a calcula metrica. -* **Counts** – Count all, Count empty, Count not empty, Count unique values -* **Math** – Sum, Average, Min, Max (number fields) -* **Percentages** – Percent empty, Percent not empty +* **Numărări** – Numără toate, Numără gol, Numără ne-gol, Numără valori unice +* **Matematică** – Sumă, Medie, Minim, Maxim (câmpuri numerice) +* **Procente** – Procent gol, Procent ne-gol -Boolean fields add Count true/false. Aggregate charts with date fields show Earliest/Latest. +Câmpurile booleene adaugă Numără adevărat/fals. Diagramele agregate cu câmpuri de tip dată afișează Cel mai timpuriu/Cel mai târziu. -**Example**: Select "Amount" with Sum to see total deal value per category, or Count all to see number of deals. +**Exemplu**: Selectați "Sumă" cu operația Sumă pentru a vedea valoarea totală a tranzacțiilor pe categorie, sau Numără toate pentru a vedea numărul de tranzacții. Date afișate - The options shown depend on your field and chart type. If you don't see an expected operation, check your field type. + Opțiunile afișate depind de câmpul și tipul de diagramă. Dacă nu vedeți o operație așteptată, verificați tipul câmpului. ### Raport -For Select, Multi-select, or Boolean fields, you can calculate the percentage of a specific value. +Pentru câmpuri de tip Select, Multi-select sau Boolean, puteți calcula procentul unei valori specifice. -1. Select a Select, Multi-select, or Boolean field -2. Enable **Ratio** -3. Choose the option to measure +1. Selectați un câmp de tip Select, Multi-select sau Boolean +2. Activați **Raport** +3. Alegeți opțiunea de măsurat -**Example**: Show "Won" deals as a percentage of all opportunities. If you have 10 Won out of 50 total, the chart shows 20%. +**Exemplu**: Afișați tranzacțiile "Câștigat" ca procent din toate oportunitățile. Dacă aveți 10 Câștigate dintr-un total de 50, diagrama afișează 20%. -### Group by +### Grupează după -Add a second dimension to create multiple series (multiple bars or lines). +Adăugați o a doua dimensiune pentru a crea mai multe serii (mai multe bare sau linii). -1. Set your X axis field first -2. Click **Group by** -3. Select a second field +1. Stabiliți mai întâi câmpul pentru axa X +2. Faceți clic pe **Grupează după** +3. Selectați un al doilea câmp -**Example**: Group deals by Stage (X axis) AND by Owner (Group by) to see each person's pipeline breakdown side by side. +**Exemplu**: Grupați tranzacțiile după Etapă (axa X) ȘI după Proprietar (Grupează după) pentru a vedea alăturat distribuția pipeline-ului fiecărei persoane. Grupare după -When Group by is set, you'll see multiple colors in your chart and a legend appears. +Când Grupează după este setat, veți vedea mai multe culori în diagramă și apare o legendă. -### Date granularity +### Granularitate dată -When Group by is a date field, choose the time period (same options as X axis). +Când Grupează după este un câmp de tip dată, alegeți perioada de timp (aceleași opțiuni ca pentru axa X). -### Sort by +### Sortează după -When **Group by** is set, control the order of grouped series (e.g., which owner's bar appears first within each category). +Când **Grupează după** este setat, controlați ordinea seriilor grupate (de ex., bara cărui proprietar apare prima în fiecare categorie). -Same options as X axis sorting—Position, Alphabetical, and Manual—except **value-based sorting is not available** for secondary grouping. +Aceleași opțiuni ca sortarea pe axa X—Poziție, Alfabetic și Manual—cu excepția faptului că **sortarea bazată pe valori nu este disponibilă** pentru gruparea secundară. -### Cumulative +### Cumulativ -Show running totals instead of individual values. +Afișați totaluri cumulative în locul valorilor individuale. -* **Off**: Each bar/point shows its own value -* **On**: Each bar/point shows the sum of all previous values plus its own +* **Dezactivat**: Fiecare bară/punct își afișează propria valoare +* **Activ**: Fiecare bară/punct afișează suma tuturor valorilor anterioare plus propria valoare -**Example**: January = 10, February = 15 +**Exemplu**: Ianuarie = 10, Februarie = 15 -* Cumulative off: Shows 10 and 15 -* Cumulative on: Shows 10 and 25 (10 + 15) +* Cumulativ dezactivat: Afișează 10 și 15 +* Cumulativ activ: Afișează 10 și 25 (10 + 15) -Use cumulative to track progress toward a goal over time. +Folosiți opțiunea Cumulativ pentru a urmări progresul către un obiectiv în timp. Cumulativ -### Min range / Max range +### Interval minim / Interval maxim -Set fixed minimum and maximum values for the Y axis. +Stabiliți valori minime și maxime fixe pentru axa Y. -* Leave blank for automatic scaling -* Enter a number to fix the boundary +* Lăsați necompletat pentru scalare automată +* Introduceți un număr pentru a fixa limita -**When to use:** +**Când se folosește:** -* Set Min to 0 for accurate visual comparisons -* Set both for consistent scales across multiple charts -* Focus on a specific value range by setting both +* Setați Min la 0 pentru comparații vizuale corecte +* Setați ambele pentru scări consistente între mai multe diagrame +* Concentrați-vă pe un interval de valori specific setând ambele --- -## Style Settings +## Setări de stil -### Colors +### Culori -Set the color scheme for your chart. Choose from a variety of color palettes. +Setați schema de culori pentru diagrama dvs. Alegeți dintr-o varietate de palete de culori. - When grouping by a Select field, the chart automatically uses the colors defined for each option in your field settings. + Când grupați după un câmp de tip Select, diagrama folosește automat culorile definite pentru fiecare opțiune în setările câmpului. -### Axis name +### Numele axei -Choose which axis labels to show: **None**, **X axis**, **Y axis**, or **Both** (bar and line charts only). +Alegeți ce etichete de axă să afișați: **Niciuna**, **Axa X**, **Axa Y**, sau **Ambele** (numai pentru diagrame cu bare și linii). -### Stacked bars / Stacked lines +### Bare stivuite / Linii stivuite -When Group by is set, choose how multiple series are displayed. +Când Grupează după este setat, alegeți cum sunt afișate mai multe serii. -* **Off (Grouped)**: Series appear side by side. Use when comparing exact values between groups. -* **On (Stacked)**: Series stack on top of each other. Use when showing composition—how parts make up a whole. +* **Dezactivat (Grupate)**: Seriile apar una lângă alta. Folosiți când comparați valori exacte între grupuri. +* **Activ (Stivuite)**: Seriile se stivuiesc una peste alta. Folosiți când arătați compoziția—cum părțile formează un întreg. -**Example**: Deals by stage, grouped by owner +**Exemplu**: Tranzacții după etapă, grupate după proprietar -* Grouped: See each owner's exact numbers side by side -* Stacked: See total deals per stage, with each owner's contribution stacked +* Grupate: Vedeți numerele exacte ale fiecărui proprietar una lângă alta +* Stivuite: Vedeți totalul tranzacțiilor pe etapă, cu contribuția fiecărui proprietar stivuită -### Data labels +### Etichete de date -Show values directly on chart elements (bars, points, slices). +Afișați valorile direct pe elementele diagramei (bare, puncte, segmente). -* **On**: Values appear on the chart -* **Off**: No values shown (cleaner look) +* **Activ**: Valorile apar pe diagramă +* **Dezactivat**: Nu se afișează valori (aspect mai curat) -### Legend +### Legendă -Show or hide the legend (only appears when Group by is set). +Afișați sau ascundeți legenda (apare doar când Grupează după este setat). -* **On**: Legend shows what each color represents -* **Off**: No legend displayed +* **Activ**: Legenda arată ce reprezintă fiecare culoare +* **Dezactivat**: Nu se afișează legendă - **Hover** over a legend item to highlight that group. **Click** to temporarily hide it from the chart. + **Treceți cursorul** peste un element al legendei pentru a evidenția acel grup. Faceți clic pentru a ascunde temporar acel grup din diagramă. --- -## Chart-Specific Notes +## Note specifice diagramelor ### Grafice circulare -* **Each slice represents** – Define how slices are grouped -* **Hide empty category** – Remove zero-value slices -* **Show value in center** – Display the aggregate value (sum, average, count, etc.) +* **Fiecare segment reprezintă** – Definiți cum sunt grupate segmentele +* **Ascunde categoria goală** – Elimină segmentele cu valoare zero +* **Afișează valoarea în centru** – Afișează valoarea agregată (sumă, medie, număr etc.) -### Aggregate charts +### Diagrame agregate -* **Prefix** – Add text before the number (e.g., `$`) -* **Suffix** – Add text after the number (e.g., `%`) +* **Prefix** – Adăugați text înaintea numărului (de ex., `$`) +* **Sufix** – Adăugați text după număr (de ex., `%`) diff --git a/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/dashboards.mdx b/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/dashboards.mdx index 866e70c175..21e0bdd0e7 100644 --- a/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/dashboards.mdx +++ b/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/dashboards.mdx @@ -12,7 +12,7 @@ Tablourile de bord din Twenty sunt organizate într-o ierarhie: **Tablouri de bo 1. Accesați **Tablouri de bord** în navigare 2. Faceți clic pe **+ Înregistrare nouă** -Create a new dashboard +Creați un tablou de bord nou 3. Dați un nume tabloului de bord 4. Începeți să adăugați file și widgeturi @@ -23,27 +23,27 @@ Filele vă ajută să organizați tabloul de bord în secțiuni logice. ### Crearea filelor -1. In edit mode, click **+** in the tab bar, side panel will open on the right +1. În modul de editare, faceți clic pe **+** în bara de file, iar panoul lateral se va deschide în dreapta 2. Denumiți fila (de ex., "Prezentare generală a pipeline-ului", "Performanța echipei") 3. Adăugați widgeturi în filă -### Reordering Tabs +### Reordonarea filelor -1. In edit mode, click and hold on the tab you want to move -2. Drag and drop to the new position -3. You can also click on the tab and use the command menu to move the tab to left or right +1. În modul de editare, faceți clic și mențineți apăsat pe fila pe care doriți să o mutați +2. Trageți și plasați în noua poziție +3. Puteți, de asemenea, să faceți clic pe filă și să utilizați meniul de comenzi pentru a muta fila la stânga sau la dreapta -### Deleting Tabs +### Ștergerea filelor -1. In edit mode, click on the tab you want to delete -2. Click the **Delete** button in the command menu +1. În modul de editare, faceți clic pe fila pe care doriți să o ștergeți +2. Faceți clic pe butonul **Ștergere** din meniul de comenzi ### Duplicarea filelor 1. Faceți clic pe fila pe care doriți să o duplicați 2. Faceți clic pe butonul **Duplicare** din panoul lateral -Dashboard tab +Filă de tablou de bord ## Aspectul tabloului de bord @@ -55,11 +55,11 @@ Filele vă ajută să organizați tabloul de bord în secțiuni logice. ### Duplicarea unui tablou de bord -1. Select the dashboard you want to duplicate +1. Selectați tabloul de bord pe care doriți să îl duplicați 2. Deschideți bara de comenzi cu **Cmd + K** (sau **Ctrl + K** pe Windows) 3. Selectați **Duplicare tablou de bord** -Duplicate a dashboard +Duplicați un tablou de bord ### Cele mai bune practici diff --git a/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/widgets.mdx b/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/widgets.mdx index a04c9166d5..62f2561f4e 100644 --- a/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/widgets.mdx +++ b/packages/twenty-docs/l/ro/user-guide/dashboards/capabilities/widgets.mdx @@ -9,12 +9,12 @@ import { ChartIcon } from '/snippets/chart-icon.mdx'; Twenty oferă diverse tipuri de widgeturi pentru a vă vizualiza datele CRM. -### Bar Charts +### Grafice cu bare Afișează datele sub formă de bare orizontale sau verticale. - Bar chart + Grafic cu bare **Cel mai potrivit pentru:** @@ -30,15 +30,15 @@ Afișează datele sub formă de bare orizontale sau verticale. * Contacte adăugate pe lună - **Display limits**: Bar charts can show a maximum of 100 bars, and 50 groups per bar when using Group By. Dacă vedeți avertismentul "Date neafișate: max X bare pe grafic", adăugați filtre pentru a restrânge datele sau schimbați gruparea (de ex., grupați pe săptămână în loc de zile). + **Limite de afișare**: Graficele cu bare pot afișa maximum 100 de bare și 50 de grupuri pentru fiecare bară când se utilizează Group By. Dacă vedeți avertismentul "Date neafișate: max X bare pe grafic", adăugați filtre pentru a restrânge datele sau schimbați gruparea (de ex., grupați pe săptămână în loc de zile). -### Pie Charts +### Grafice circulare Afișează proporțiile dintr-un întreg. - Pie chart + Grafic circular **Cel mai potrivit pentru:** @@ -53,12 +53,12 @@ Afișează proporțiile dintr-un întreg. * Defalcarea contactelor după industrie * Compoziția pipeline-ului după proprietar -### Line Charts +### Grafice liniare Afișează tendințele în timp. - Line chart + Grafic liniar **Cel mai potrivit pentru:** @@ -73,12 +73,12 @@ Afișează tendințele în timp. * Creșterea veniturilor pe trimestre * Nivelurile de activitate în timp -### Aggregate Charts +### Diagrame agregate Afișează proeminent valori cheie unice. - Aggregate chart + Diagramă agregată **Cel mai potrivit pentru:** @@ -98,7 +98,7 @@ Afișează proeminent valori cheie unice. * **Ratio**: Pentru câmpurile Select, calculați rapoarte între valori. Accesați **Data on display** → selectați câmpul → activați opțiunea **Ratio**. * **Prefix și Sufix**: Adăugați text personalizat înainte sau după număr (de ex., prefix "$" sau sufix "%") pentru o lizibilitate mai bună. -### iFrames +### iFrame-uri Încorporați instrumente externe și conținut extern direct în tabloul de bord. @@ -118,25 +118,25 @@ Afișează proeminent valori cheie unice. * Indicatori din dialer * Conținut în timp real din instrumentul de secvențe de vânzări -### Rich Text +### Text îmbogățit -Add formatted text and content directly to your dashboard. +Adăugați text formatat și conținut direct în tabloul de bord. - Rich text + Text îmbogățit **Cel mai potrivit pentru:** -* Adding context or instructions -* Dashboard descriptions -* Notes and annotations +* Adăugarea de context sau instrucțiuni +* Descrieri ale tabloului de bord +* Note și adnotări -**Features:** +**Funcționalități:** -* Rich text formatting (bold, italic, lists, etc.) -* Image and file uploads -* Markdown-style editing +* Formatare de tip text îmbogățit (aldin, cursiv, liste etc.) +* Încărcarea imaginilor și fișierelor +* Editare în stil Markdown **În curând**: Graficele tip indicator (gauge) și tabelele nu sunt încă disponibile, dar se află pe foaia noastră de parcurs. diff --git a/packages/twenty-docs/l/ro/user-guide/dashboards/how-tos/widget-faq.mdx b/packages/twenty-docs/l/ro/user-guide/dashboards/how-tos/widget-faq.mdx index 4fb14c19dc..a3f5e54561 100644 --- a/packages/twenty-docs/l/ro/user-guide/dashboards/how-tos/widget-faq.mdx +++ b/packages/twenty-docs/l/ro/user-guide/dashboards/how-tos/widget-faq.mdx @@ -1,67 +1,67 @@ --- -title: Widget FAQ -description: Common questions and error messages explained. +title: Întrebări frecvente despre widget +description: Întrebări comune și mesaje de eroare explicate. --- - - Three options: + + Trei opțiuni: - * **Percent empty/not empty**: Under Data on display, select Percent empty or Percent not empty - * **Ratio**: For Select or Checkbox fields, enable Ratio to show a specific option as a percentage of all records - * **Suffix**: For aggregate charts, add `%` as a Suffix in Style settings + * **Procent gol/completat**: În Date afișate, selectează Procent gol sau Procent completat + * **Raport**: Pentru câmpurile Select sau Checkbox, activează Raport pentru a afișa o opțiune specifică drept procent din toate înregistrările + * **Sufix**: Pentru diagrame agregate, adaugă `%` ca Sufix în Setările de stil - - When using **Group by**, you can display series two ways: + + Când folosești **Grupează după**, poți afișa seriile în două moduri: - * **Grouped**: Bars side by side—best for comparing exact values - * **Stacked**: Bars on top of each other—best for showing composition + * **Grupate**: Bare alăturate—cel mai bine pentru compararea valorilor exacte + * **Stivuite**: Bare una peste alta—cel mai bine pentru a arăta compoziția - Toggle **Stacked** in Style settings to switch. + Comută opțiunea **Stivuite** în Setările de stil. - - Available operations depend on **field type**: + + Operațiunile disponibile depind de **tipul câmpului**: - * **Number fields**: Sum, Average, Min, Max - * **Date fields**: Earliest, Latest (aggregate charts only) - * **Checkbox fields**: Count true, Count false + * **Câmpuri numerice**: Sumă, Medie, Minim, Maxim + * **Câmpuri de tip dată**: Cel mai devreme, Cel mai târziu (doar pentru diagrame agregate) + * **Câmpuri Checkbox**: Număr valori adevărate, Număr valori false - If you don't see an option, check that you've selected a compatible field type. + Dacă nu vezi o opțiune, verifică dacă ai selectat un tip de câmp compatibil. - - Many settings only appear when prerequisites are met: + + Multe setări apar doar când sunt îndeplinite cerințele prealabile: - * **Date granularity**: Select a date field first - * **Group by, Legend, Stacked**: Set Source first - * **Legend, Stacked toggles**: Set Group by first + * **Granularitatea datei**: Selectează mai întâi un câmp de tip dată + * **Grupează după, Legendă, Stivuite**: Setează Sursa mai întâi + * **Comutatoarele Legendă și Stivuite**: Setează mai întâi Grupează după - If a setting is missing, configure its prerequisite first. + Dacă lipsește o setare, configurează mai întâi cerința ei prealabilă. - - The chart found no records matching your configuration. + + Diagrama nu a găsit înregistrări care să corespundă configurației tale. - **To fix:** Remove or adjust filters, verify you selected the correct Source object, or check that records exist for your date range. + **Pentru remediere:** Elimină sau ajustează filtrele, verifică dacă ai selectat obiectul Sursă corect sau verifică dacă există înregistrări pentru intervalul tău de date. - - A required setting is missing or incompatible. + + O setare obligatorie lipsește sau este incompatibilă. - **To fix:** Ensure Source is set, Data on display is configured, and any required grouping fields are selected. + **Pentru remediere:** Asigură-te că Sursa este setată, Datele afișate sunt configurate și orice câmpuri de grupare necesare sunt selectate. - - Your data exceeds display limits (100 bars, 100 data points, or 100 slices). + + Datele tale depășesc limitele de afișare (100 de bare, 100 de puncte de date sau 100 de felii). - **To fix:** Add filters to narrow your data, or change date granularity from Day to Week or Month. + **Pentru remediere:** Adaugă filtre pentru a restrânge datele sau schimbă granularitatea datei din Zi în Săptămână sau Lună. - - The selected field has no values for the records in your filter, or the field type doesn't match the expected data. + + Câmpul selectat nu are valori pentru înregistrările din filtrul tău sau tipul câmpului nu se potrivește cu datele așteptate. - **To fix:** Try a different field, or check that records have values for the selected field. + **Pentru remediere:** Încearcă un alt câmp sau verifică dacă înregistrările au valori pentru câmpul selectat. diff --git a/packages/twenty-docs/l/ro/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ro/user-guide/dashboards/overview.mdx index da648e6b2b..5b5bd36b16 100644 --- a/packages/twenty-docs/l/ro/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/dashboards/overview.mdx @@ -40,9 +40,9 @@ Widgeturile sunt vizualizări individuale care afișează date specifice. Tipuri * Grafice cu bare * Grafice circulare * Grafice liniare -* Aggregate charts +* Diagrame agregate * iFrames -* Rich text +* Text îmbogățit **Limitări actuale**: @@ -81,5 +81,5 @@ Widgeturile sunt vizualizări individuale care afișează date specifice. Tipuri ## Pașii următori * [Widgeturi și vizualizări](/l/ro/user-guide/dashboards/capabilities/widgets) -* [Chart settings reference](/l/ro/user-guide/dashboards/capabilities/chart-settings) +* [Referință pentru setările graficului](/l/ro/user-guide/dashboards/capabilities/chart-settings) * [Întrebări frecvente despre tablourile de bord](/l/ro/user-guide/dashboards/how-tos/dashboards-faq) diff --git a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index d53d4a67e5..60c851d887 100644 --- a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -116,27 +116,27 @@ Echipa * Subiect: Revenire la discuția noastră * Conținut: Faceți referire la detaliile întâlnirii din declanșator -## Email Attachments +## Atașamente pentru e-mailuri -You can attach files to emails sent from workflows. The attachment is a static file that you upload when configuring the workflow. +Puteți atașa fișiere la e-mailurile trimise din fluxuri de lucru. Atașamentul este un fișier static pe care îl încărcați atunci când configurați fluxul de lucru. -### How to Add an Attachment +### Cum să adăugați un atașament -1. In the **Send Email** action, click on the **Attachments** button -2. Click to upload a file from your computer -3. The file will be attached to all emails sent by this action +1. În acțiunea **Trimite e-mail**, faceți clic pe butonul **Atașamente** +2. Faceți clic pentru a încărca un fișier de pe computerul dvs. +3. Fișierul va fi atașat tuturor e-mailurilor trimise de această acțiune ### Cazuri de Utilizare Comune -| Caz de utilizare | Example File | -| ------------------------ | ----------------------------- | -| **Welcome emails** | Company brochure (PDF) | -| **Onboarding sequences** | Getting started guide | -| **Sales follow-ups** | Product catalog or price list | -| **Event confirmations** | Event details or agenda | +| Caz de utilizare | Exemplu de fișier | +| ------------------------------------- | --------------------------------------- | +| **E-mailuri de bun venit** | Broșura companiei (PDF) | +| **Secvențe de introducere** | Ghid de inițiere | +| **Mesaje de urmărire pentru vânzări** | Catalog de produse sau listă de prețuri | +| **Confirmări pentru evenimente** | Detalii despre eveniment sau agendă | - Attachments are static—the same file is sent to all recipients. For dynamic documents (like personalized quotes), generate and attach files using a [Serverless Function](/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty). + Atașamentele sunt statice — același fișier este trimis tuturor destinatarilor. Pentru documente dinamice (cum ar fi ofertele personalizate), generați și atașați fișiere folosind o [Funcție serverless](/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty). ## Cele mai bune practici diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/best-practices-server.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/best-practices-server.mdx index eb019b9cbc..a9576b0233 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/best-practices-server.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/best-practices-server.mdx @@ -7,9 +7,9 @@ title: Лучшие практики ## Следуйте модульному подходу Бэкенд следует модульному подходу, который является основным принципом при работе с NestJS. Убедитесь, что вы разбиваете код на повторно используемые модули, чтобы поддерживать чистую и хорошо организованную кодовую базу. -Каждый модуль должен инкапсулировать конкретную функциональность и иметь чётко определённую область ответственности. This modular approach enables clear separation of concerns and removes unnecessary complexities. +Каждый модуль должен инкапсулировать конкретную функциональность и иметь чётко определённую область ответственности. Этот модульный подход обеспечивает четкое разделение областей ответственности и устраняет лишние сложности. -## Expose services to use in modules +## Предоставляйте сервисы для использования в модулях Всегда создавайте сервисы с одной чёткой областью ответственности, что повышает читаемость и облегчает сопровождение кода. Называйте сервисы понятно и единообразно. diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/custom-objects.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/custom-objects.mdx index b5eeda41f5..74a2324eec 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/custom-objects.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/custom-objects.mdx @@ -2,11 +2,11 @@ title: Пользовательские объекты --- -Объекты - это структуры, которые позволяют хранить данные (записи, атрибуты и значения), специфичные для организации. Twenty provides both standard and custom objects. +Объекты - это структуры, которые позволяют хранить данные (записи, атрибуты и значения), специфичные для организации. В Twenty предусмотрены как стандартные, так и пользовательские объекты. -Стандартные объекты - это встроенные объекты с набором атрибутов, доступных для всех пользователей. Examples of standard objects in Twenty include Company and Person. Стандартные объекты имеют стандартные поля, которые также доступны всем пользователям Twenty, например, Company.displayName. +Стандартные объекты - это встроенные объекты с набором атрибутов, доступных для всех пользователей. В Twenty к стандартным объектам относятся Company и Person. Стандартные объекты имеют стандартные поля, которые также доступны всем пользователям Twenty, например, Company.displayName. -Пользовательские объекты - это объекты, которые вы можете создать для хранения уникальной информации для вашей организации. They are not built-in; members of your workspace can create and customize custom objects to hold information that standard objects aren't suitable for. +Пользовательские объекты - это объекты, которые вы можете создать для хранения уникальной информации для вашей организации. Они не являются встроенными; участники вашего рабочего пространства могут создавать и настраивать пользовательские объекты для хранения информации, для которой стандартные объекты не подходят. ## Схема высокого уровня diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/feature-flags.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/feature-flags.mdx index 7655d42f04..9ef7dde0a1 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/feature-flags.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/feature-flags.mdx @@ -1,10 +1,10 @@ --- -title: Feature Flags +title: Флаги функций --- -Feature flags are used to hide experimental features. Для Twenty они устанавливаются на уровне рабочей области, а не на уровне пользователя. +Флаги функций используются для скрытия экспериментальных функций. Для Twenty они устанавливаются на уровне рабочей области, а не на уровне пользователя. -## Adding a new feature flag +## Добавление нового флага функции В `FeatureFlagKey.ts` добавьте флаг функции: @@ -23,7 +23,7 @@ enum FeatureFlagKeys { } ``` -To apply a feature flag on a **backend** feature use: +Чтобы применить флаг функции к **бэкенд**-функции, используйте: ```ts @Gate({ @@ -31,13 +31,13 @@ To apply a feature flag on a **backend** feature use: }) ``` -To apply a feature flag on a **frontend** feature use: +Чтобы применить флаг функции к **фронтенд**-функции, используйте: ```ts const isFeatureNameEnabled = useIsFeatureEnabled('IS_FEATURENAME_ENABLED'); ``` -## Configure feature flags for the deployment +## Настройте флаги функций для развертывания Измените соответствующую запись в таблице `core.featureFlag`: diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx index fda2dfa443..a5185c9517 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx @@ -1,6 +1,6 @@ --- title: Архитектура папок -info: A detailed look into our server folder architecture +info: Подробное рассмотрение нашей архитектуры папок сервера --- Структура серверной директории следующая: @@ -21,7 +21,7 @@ server └───utils ``` -## Ability +## Правила доступа Определяет разрешения и включает обработчики для каждого объекта. @@ -33,13 +33,13 @@ server ## Фильтры -Includes exception filters to handle exceptions that might occur in GraphQL endpoints. +Включает фильтры исключений для обработки исключений, которые могут возникать в конечных точках GraphQL. -## Guards +## Гарды Смотрите [защиты](https://docs.nestjs.com/guards) для более подробной информации. -## Health +## Работоспособность Включает общедоступный REST API (healthz), который возвращает JSON, чтобы подтвердить, что база данных работает должным образом. @@ -85,9 +85,9 @@ workspace Корень каталога рабочей области включает `workspace.factory.ts`, файл, содержащий функцию `createGraphQLSchema`. Эта функция генерирует схему, специфичную для рабочей области, используя метаданные для адаптации схемы для индивидуальных рабочих областей. Разделением построения схемы и резолвера, мы используем функцию `makeExecutableSchema`, которая объединяет эти отдельные элементы. -This strategy is not just about organization, but also helps with optimization, such as caching generated type definitions to enhance performance and scalability. +Эта стратегия касается не только организации, но и помогает в оптимизации, например в кэшировании сгенерированных определений типов для повышения производительности и масштабируемости. -### Workspace Schema builder +### Конструктор схем рабочей области Генерирует GraphQL схему и включает: diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/queue.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/queue.mdx index 7eb3882c79..2c857803e0 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/queue.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/queue.mdx @@ -12,7 +12,7 @@ title: Очередь сообщений 1. Добавьте имя очереди для вашей новой очереди в перечисление `MESSAGE_QUEUES`. 2. Предоставьте фабричную реализацию очереди с именем очереди в качестве токена зависимости. 3. Инжектируйте созданную вами очередь в необходимый модуль/сервис с именем очереди в качестве токена зависимости. -4. Add worker class with token based injection just like producer. +4. Добавьте класс worker с внедрением зависимостей на основе токена, как у producer. ### Пример использования diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/server-commands.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/server-commands.mdx index 641fc79914..9136b7a834 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/server-commands.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/server-commands.mdx @@ -5,12 +5,12 @@ title: Команды бекэнда ## Полезные команды Эти команды следует выполнять из папки packages/twenty-server. -From any other folder you can run `npx nx {command} twenty-server` (or `npx nx run twenty-server:{command}`). +Из любой другой папки можно запускать `npx nx {command} twenty-server` (или `npx nx run twenty-server:{command}`). ### Первоначальная настройка ``` -npx nx database:reset twenty-server # setup the database with dev seeds +npx nx database:reset twenty-server # настроить базу данных с начальными данными для разработки ``` ### Запуск сервера @@ -36,7 +36,7 @@ npx nx run twenty-server:test:integration # запуск интеграцион ### Сброс базы данных -If you want to reset and seed the database, you can run the following command: +Если вы хотите сбросить и заполнить базу данных начальными данными, выполните следующую команду: ```bash npx nx run twenty-server:database:reset diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/zapier.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/zapier.mdx index a7df2dafc3..0a3984da29 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/zapier.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/backend-development/zapier.mdx @@ -6,7 +6,7 @@ title: Приложение Zapier ## О Zapier -Zapier — это инструмент, который позволяет автоматизировать рабочие процессы, соединяя приложения, которые ваша команда использует каждый день. The fundamental concept of Zapier is automation workflows, called Zaps, and include triggers and actions. +Zapier — это инструмент, который позволяет автоматизировать рабочие процессы, соединяя приложения, которые ваша команда использует каждый день. Основная концепция Zapier — это рабочие процессы автоматизации, называемые Zaps, которые включают триггеры и действия. Вы можете узнать больше о том, как работает Zapier [здесь](https://zapier.com/how-it-works). @@ -28,7 +28,7 @@ yarn zapier login ``` -### Step 3: Set environment variables +### Шаг 3: Настройка переменных окружения В каталоге `packages/twenty-zapier` выполните: @@ -43,7 +43,7 @@ cp .env.example .env ## Разработка - Make sure to run `yarn build` before any `zapier` command. + Перед выполнением любой команды `zapier` обязательно запустите `yarn build`. ### Тест diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/bug-and-requests.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/bug-and-requests.mdx index 22c5c3e80e..b0c5993bbc 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/bug-and-requests.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/bug-and-requests.mdx @@ -1,6 +1,6 @@ --- -title: Bugs, Requests & Pull Requests -info: Report issues, request features, and contribute code +title: Ошибки, запросы и PR +info: Сообщайте о проблемах, предлагайте новые функции и вносите вклад в код --- ## Сообщение об ошибках @@ -13,66 +13,66 @@ info: Report issues, request features, and contribute code Если вы не уверены, что это ошибка, и вам кажется, что это ближе к запросу на новую функцию, то вам, вероятно, стоит [начать обсуждение вместо этого](https://github.com/twentyhq/twenty/discussions/new). -## Submit a Pull Request +## Отправьте PR -Contributing code to Twenty starts with a pull request (PR). +Вклад в код Twenty начинается с PR. ### Перед началом -1. Check [existing issues](https://github.com/twentyhq/twenty/issues) for related work -2. For new features, open an issue first to discuss -3. Review our [Code of Conduct](https://github.com/twentyhq/twenty/blob/main/CODE_OF_CONDUCT.md) +1. Проверьте [существующие обращения](https://github.com/twentyhq/twenty/issues) на предмет связанной работы +2. Для новых функций сначала откройте обращение для обсуждения +3. Ознакомьтесь с нашим [Кодексом поведения](https://github.com/twentyhq/twenty/blob/main/CODE_OF_CONDUCT.md) -### Fork and Clone +### Сделайте форк и клонируйте -1. Fork the repository on GitHub -2. Clone your fork: +1. Сделайте форк репозитория на GitHub +2. Клонируйте свой форк: ```bash git clone https://github.com/YOUR_USERNAME/twenty.git cd twenty ``` -3. Add upstream remote: +3. Добавьте удалённый репозиторий upstream: ```bash git remote add upstream https://github.com/twentyhq/twenty.git ``` -### Create a Branch +### Создайте ветку ```bash git checkout -b feature/your-feature-name ``` -Use descriptive branch names: +Используйте понятные названия веток: * `feature/add-export-button` * `fix/login-redirect-issue` * `docs/update-api-guide` -### Make Your Changes +### Внесите изменения -1. Write clean, well-documented code -2. Follow existing code style -3. Add tests for new functionality -4. Update documentation if needed +1. Пишите чистый, хорошо документированный код +2. Соблюдайте существующий стиль кода +3. Добавьте тесты для новой функциональности +4. Обновите документацию при необходимости -### Submit Your PR +### Отправьте свой PR -1. Push your branch: +1. Отправьте свою ветку: ```bash git push origin feature/your-feature-name ``` -2. Open a PR on GitHub -3. Fill in the PR template -4. Link related issues +2. Откройте PR на GitHub +3. Заполните шаблон PR +4. Привяжите связанные обращения -### PR Checklist +### Чек-лист PR -* [ ] Code follows project style guidelines -* [ ] Tests pass locally -* [ ] Documentation is updated -* [ ] PR description explains the changes +* [ ] Код соответствует руководству по стилю проекта +* [ ] Тесты проходят локально +* [ ] Документация обновлена +* [ ] Описание PR объясняет изменения diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx index f6e53f3586..f43b17f171 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx @@ -3,7 +3,7 @@ title: Архитектура папок info: Подробное рассмотрение нашей архитектуры папок --- -In this guide, you will explore the details of the project directory structure and how it contributes to the organization and maintainability of Twenty. +В этом руководстве вы изучите детали структуры каталога проекта и то, как она способствует организации и сопровождаемости Twenty. Следуя этому соглашению об архитектуре папок, легче находить файлы, связанные с конкретными функциями, и обеспечивать масштабируемость и поддерживаемость приложения. diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/frontend-development/style-guide.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/frontend-development/style-guide.mdx index bcae568c0a..60e37a40e6 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/frontend-development/style-guide.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/frontend-development/style-guide.mdx @@ -10,7 +10,7 @@ title: Руководство по стилю Всегда держите в голове, что код читают чаще, чем пишут, особенно в проекте с открытым исходным кодом, где к нему может присоединиться кто угодно. -There are a lot of rules that are not defined here, but that are automatically checked by linters. +Существует много правил, которые здесь не описаны, но автоматически проверяются линтерами. ## React @@ -67,10 +67,10 @@ const EmailField: React.FC<{ ``` ```tsx -/* ✅ - Good, a separate type (OwnProps) is explicitly defined for the - * component's props - * - This method doesn't automatically include the children prop. If - * you want to include it, you have to specify it in OwnProps. +/* ✅ - Хорошо, отдельно определяется тип (OwnProps) для + * пропсов компонента + * - Этот метод не включает автоматически проп children. Если + * вы хотите его включить, вам нужно указать его в OwnProps. */ type EmailFieldProps = { value: string; @@ -83,7 +83,7 @@ const EmailField = ({ value }: EmailFieldProps) => ( #### Нет разворачивания пропсов одиночной переменной в JSX-элементах. -Avoid using single variable prop spreading in JSX elements, like `{...props}`. Подобная практика часто приводит к менее читаемому и сложному в поддержке коду, так как непонятно, какие пропсы принимает компонент. +Избегайте спреда пропсов из одной переменной в JSX-элементах, например `{...props}`. Подобная практика часто приводит к менее читаемому и сложному в поддержке коду, так как непонятно, какие пропсы принимает компонент. ```tsx /* ❌ - Bad, spreads a single variable prop into the underlying component @@ -94,8 +94,8 @@ const MyComponent = (props: OwnProps) => { ``` ```tsx -/* ✅ - Good, Explicitly lists all props - * - Enhances readability and maintainability +/* ✅ - Хорошо, явно указывает все пропы + * - Увеличивает читаемость и поддерживаемость */ const MyComponent = ({ prop1, prop2, prop3 }: MyComponentProps) => { return ; @@ -123,10 +123,10 @@ const value = process.env.MY_VALUE ?? 'default'; ### Используйте опциональную цепочку `?.` ```tsx -// ❌ Bad +// ❌ Плохо onClick && onClick(); -// ✅ Good +// ✅ Хорошо onClick?.(); ``` @@ -279,12 +279,12 @@ import { Meta, StoryObj } from '@storybook/react'; * **Читаемость**: Избегающий импорт типов улучшает читаемость кода, делая ясным, когда вы импортируете значения или типы. Это снижает двусмысленность и облегчает понимание назначения импортируемых символов. -* **Maintainability**: It enhances codebase maintainability because developers can identify and locate type-only imports when reviewing or modifying code. +* **Поддерживаемость**: Это повышает поддерживаемость кодовой базы, поскольку разработчики могут идентифицировать и находить импорты только типов при просмотре или изменении кода. ### Правило ESLint -An ESLint rule, `@typescript-eslint/consistent-type-imports`, enforces the no-type import standard. Это правило создаст ошибки или предупреждения для всех нарушений импорта типов. +Правило ESLint `@typescript-eslint/consistent-type-imports` обеспечивает соблюдение стандарта импортов без ключевого слова type. Это правило создаст ошибки или предупреждения для всех нарушений импорта типов. -Обратите внимание, что это правило касается редких крайних случаев, когда случаются непреднамеренные импорты типов. TypeScript itself discourages this practice, as mentioned in the [TypeScript 3.8 release notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html). В большинстве случаев вам не нужно использовать импорты только типов. +Обратите внимание, что это правило касается редких крайних случаев, когда случаются непреднамеренные импорты типов. Сам TypeScript не рекомендует эту практику, как указано в [примечаниях к выпуску TypeScript 3.8](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html). В большинстве случаев вам не нужно использовать импорты только типов. Чтобы гарантировать соответствие вашего кода этому правилу, убедитесь, что вы запускаете ESLint как часть вашего рабочего процесса разработки. diff --git a/packages/twenty-docs/l/ru/developers/contribute/capabilities/local-setup.mdx b/packages/twenty-docs/l/ru/developers/contribute/capabilities/local-setup.mdx index 3d119ee80a..ac38cf867e 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/capabilities/local-setup.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/capabilities/local-setup.mdx @@ -250,7 +250,7 @@ Twenty требует кэша Redis для обеспечения наилуч ## Шаг 5: Настройка переменных окружения -Используйте переменные окружения или файлы `.env` для настройки вашего проекта. More info [here](/l/ru/developers/self-host/capabilities/setup) +Используйте переменные окружения или файлы `.env` для настройки вашего проекта. Подробнее [здесь](/l/ru/developers/self-host/capabilities/setup) Скопируйте `.env.example` файлы в `/front` и `/server`: @@ -260,7 +260,7 @@ cp ./packages/twenty-server/.env.example ./packages/twenty-server/.env ``` - **Multi-Workspace Mode:** By default, Twenty runs in single-workspace mode where only one workspace can be created. To enable multi-workspace support (useful for testing subdomain-based features), set `IS_MULTIWORKSPACE_ENABLED=true` in your server `.env` file. See [Multi-Workspace Mode](/l/ru/developers/self-host/capabilities/setup#multi-workspace-mode) for details. + **Режим нескольких рабочих пространств:** По умолчанию Twenty работает в режиме одного рабочего пространства, где можно создать только одно рабочее пространство. Чтобы включить поддержку нескольких рабочих пространств (полезно для тестирования функций, основанных на поддоменах), установите `IS_MULTIWORKSPACE_ENABLED=true` в файле `.env` вашего сервера. См. [Режим нескольких рабочих пространств](/l/ru/developers/self-host/capabilities/setup#multi-workspace-mode) для подробностей. ## Шаг 6: Установка зависимостей diff --git a/packages/twenty-docs/l/ru/developers/contribute/contribute.mdx b/packages/twenty-docs/l/ru/developers/contribute/contribute.mdx index 71a5767583..5a08a2772d 100644 --- a/packages/twenty-docs/l/ru/developers/contribute/contribute.mdx +++ b/packages/twenty-docs/l/ru/developers/contribute/contribute.mdx @@ -1,6 +1,6 @@ --- -title: Contribute -description: Contribute to Twenty's open-source development. +title: Внести вклад +description: Внесите вклад в разработку Twenty с открытым исходным кодом. --- @@ -9,24 +9,24 @@ description: Contribute to Twenty's open-source development. ## Обзор -Twenty is open-source and welcomes contributions from the community. Whether you're fixing bugs, adding features, or improving documentation, your contributions help make Twenty better for everyone. +Twenty — проект с открытым исходным кодом, который приветствует вклад сообщества. Независимо от того, исправляете ли вы ошибки, добавляете функции или улучшаете документацию, ваш вклад помогает сделать Twenty лучше для всех. -## Ways to Contribute +## Способы внести вклад -* **Report bugs**: Help identify and document issues -* **Submit features**: Propose and implement new functionality -* **Improve documentation**: Make our docs clearer and more helpful -* **Frontend development**: Work on the React-based UI -* **Backend development**: Contribute to the NestJS server +* **Сообщайте об ошибках**: помогайте выявлять и документировать проблемы +* **Предлагайте функции**: предлагайте и реализуйте новую функциональность +* **Улучшайте документацию**: сделайте нашу документацию понятнее и полезнее +* **Фронтенд-разработка**: работайте над интерфейсом на базе React +* **Бэкенд-разработка**: вносите вклад в сервер NestJS -## Getting Started +## Начало работы - - Report issues or request features + + Сообщайте о проблемах или запрашивайте новые функции - Contribute to the UI + Внесите вклад в пользовательский интерфейс diff --git a/packages/twenty-docs/l/ru/developers/extend/capabilities/apis.mdx b/packages/twenty-docs/l/ru/developers/extend/capabilities/apis.mdx index b6b755cadf..34f0c400fe 100644 --- a/packages/twenty-docs/l/ru/developers/extend/capabilities/apis.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/capabilities/apis.mdx @@ -1,147 +1,147 @@ --- title: API -description: Query and modify your CRM data programmatically using REST or GraphQL. +description: Запрашивайте и изменяйте данные CRM программно с помощью REST или GraphQL. --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; Twenty разработан для удобства разработчиков и предлагает мощные API, которые адаптируются к вашей пользовательской модели данных. Мы предоставляем четыре различных типа API, чтобы удовлетворить различные интеграционные потребности. -## Developer-First Approach +## Подход, ориентированный на разработчиков -Twenty generates APIs specifically for your data model: +Twenty генерирует API специально для вашей модели данных: * **Длинные ID не требуются**: используйте названия объектов и полей прямо в конечных точках. -* **Standard and custom objects treated equally**: Your custom objects get the same API treatment as built-in ones +* **Стандартные и пользовательские объекты обрабатываются одинаково**: ваши пользовательские объекты получают такой же доступ к API, как и встроенные. * **Выделенные конечные точки**: каждый объект и поле получают свою собственную конечную точку API. * **Пользовательская документация**: генерируется специально для модели данных вашего рабочего пространства. - Your personalized API documentation is available under **Settings → API & Webhooks** after creating an API key. Since Twenty generates APIs that match your custom data model, the documentation is unique to your workspace. + Персонализированная документация по вашему API доступна в разделе **Настройки → API и вебхуки** после создания ключа API. Поскольку Twenty генерирует API, соответствующие вашей пользовательской модели данных, документация уникальна для вашего рабочего пространства. -## The Two API Types +## Два типа API ### Основной API Доступен на `/rest/` или `/graphql/` -Work with your actual **records** (the data): +Работайте с реальными **записями** (данными): -* Create, read, update, delete People, Companies, Opportunities, etc. -* Query and filter data +* Создавайте, читайте, обновляйте и удаляйте People, Companies, Opportunities и т. д. +* Запрашивайте и фильтруйте данные * Управление отношениями записей. ### API метаданных Доступен на `/rest/metadata/` или `/metadata/` -Manage your **workspace and data model**: +Управляйте своим **рабочим пространством и моделью данных**: * Создание, изменение или удаление объектов и полей. * Настройка параметров рабочего пространства. -* Define relationships between objects +* Определяйте связи между объектами -## REST vs GraphQL +## REST против GraphQL -Both Core and Metadata APIs are available in REST and GraphQL formats: +И Core, и Metadata API доступны в форматах REST и GraphQL: -| Формат | Available Operations | -| ----------- | ---------------------------------------------------------- | -| **REST** | CRUD, batch operations, upserts | -| **GraphQL** | Same + **batch upserts**, relationship queries in one call | +| Формат | Доступные операции | +| ----------- | ------------------------------------------------------------------------ | +| **REST** | CRUD, пакетные операции, upsert-операции | +| **GraphQL** | То же самое + **пакетные upsert-операции**, запросы связей за один вызов | -Choose based on your needs — both formats access the same data. +Выбирайте по своим потребностям — оба формата обращаются к одним и тем же данным. ## Конечные точки API -| Environment | Base URL | -| --------------- | ------------------------- | -| **Cloud** | `https://api.twenty.com/` | -| **Self-Hosted** | `https://{your-domain}/` | +| Среда | Базовый URL | +| --------------------------- | ------------------------- | +| **Облако** | `https://api.twenty.com/` | +| **Самостоятельный хостинг** | `https://{your-domain}/` | ## Аутентификация -Every API request requires an API key in the header: +Каждый запрос к API требует ключ API в заголовке: ``` Authorization: Bearer YOUR_API_KEY ``` -### Create an API Key +### Создать ключ API 1. Перейдите в **Настройки → API и Вебхуки** -2. Click **+ Create key** +2. Нажмите **+ Создать ключ** 3. Настроить: - * **Name**: Descriptive name for the key - * **Expiration Date**: When the key expires + * **Имя**: описательное название для ключа + * **Дата истечения**: когда истекает срок действия ключа 4. Нажмите **Сохранить** -5. **Copy immediately** — the key is only shown once +5. **Скопируйте сразу** — ключ показывается только один раз - + - Your API key grants access to sensitive data. Don't share it with untrusted services. If compromised, disable it immediately and generate a new one. + Ваш ключ API предоставляет доступ к конфиденциальным данным. Не делитесь им с ненадежными сервисами. Если он скомпрометирован, немедленно отключите его и создайте новый. -### Assign a Role to an API Key +### Назначить роль ключу API -For better security, assign a specific role to limit access: +Для повышения безопасности назначьте конкретную роль, чтобы ограничить доступ: 1. Перейдите в **Настройки → Роли** -2. Click on the role to assign +2. Нажмите на роль, которую хотите назначить 3. Откройте вкладку **Назначение** -4. Under **API Keys**, click **+ Assign to API key** -5. Select the API key +4. В разделе **Ключи API** нажмите **+ Назначить ключу API** +5. Выберите ключ API -The key will inherit that role's permissions. See [Permissions](/l/ru/user-guide/permissions-access/capabilities/permissions) for details. +Ключ унаследует разрешения этой роли. См. [Разрешения](/l/ru/user-guide/permissions-access/capabilities/permissions) для подробностей. ### Управление API-ключами -**Regenerate**: Settings → APIs & Webhooks → Click key → **Regenerate** +**Сгенерировать заново**: Настройки → API и вебхуки → Нажмите ключ → **Сгенерировать заново** -**Delete**: Settings → APIs & Webhooks → Click key → **Delete** +**Удалить**: Настройки → API и вебхуки → Нажмите ключ → **Удалить** -## API Playground +## Песочница API -Test your APIs directly in the browser with our built-in playground — available for both **REST** and **GraphQL**. +Тестируйте свои API прямо в браузере с нашей встроенной песочницей — доступной как для **REST**, так и для **GraphQL**. -### Access the Playground +### Доступ к песочнице 1. Перейдите в **Настройки → API и Вебхуки** -2. Create an API key (required) -3. Click on **REST API** or **GraphQL API** to open the playground +2. Создайте ключ API (обязательно) +3. Нажмите на **REST API** или **GraphQL API**, чтобы открыть песочницу -### What You Get +### Что вы получаете -* **Interactive documentation**: Generated for your specific data model -* **Live testing**: Execute real API calls against your workspace -* **Schema explorer**: Browse available objects, fields, and relationships -* **Request builder**: Construct queries with autocomplete +* **Интерактивная документация**: генерируется для вашей конкретной модели данных +* **Тестирование в реальном времени**: выполняйте реальные вызовы API к вашему рабочему пространству +* **Обозреватель схемы**: просматривайте доступные объекты, поля и связи +* **Конструктор запросов**: создавайте запросы с автодополнением -The playground reflects your custom objects and fields, so documentation is always accurate for your workspace. +Песочница отражает ваши пользовательские объекты и поля, поэтому документация всегда точна для вашего рабочего пространства. ## Пакетные операции -Both REST and GraphQL support batch operations: +И REST, и GraphQL поддерживают пакетные операции: * **Размер пакета**: до 60 записей на запрос. -* **Operations**: Create, update, delete multiple records +* **Операции**: создание, обновление, удаление нескольких записей -**GraphQL-only features:** +**Функции только для GraphQL:** -* **Batch Upsert**: Create or update in one call -* Use plural object names (e.g., `CreateCompanies` instead of `CreateCompany`) +* **Пакетный upsert**: создание или обновление за один вызов +* Используйте имена объектов во множественном числе (например, `CreateCompanies` вместо `CreateCompany`) -## Rate Limits +## Лимиты скорости -API requests are throttled to ensure platform stability: +Запросы к API ограничиваются для обеспечения стабильности платформы: -| Лимит | Значение | -| -------------- | -------------------- | -| **Requests** | 100 calls per minute | -| **Batch size** | 60 records per call | +| Лимит | Значение | +| ----------------- | ------------------------- | +| **Запросы** | 100 запросов в минуту | +| **Размер пакета** | 60 записей за один запрос | - Use batch operations to maximize throughput — process up to 60 records in a single API call instead of making individual requests. + Используйте пакетные операции, чтобы максимизировать пропускную способность — обрабатывайте до 60 записей за один запрос API вместо выполнения отдельных запросов. diff --git a/packages/twenty-docs/l/ru/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/ru/developers/extend/capabilities/apps.mdx index 6cfd0c86ea..32d1f997d0 100644 --- a/packages/twenty-docs/l/ru/developers/extend/capabilities/apps.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/capabilities/apps.mdx @@ -1,34 +1,34 @@ --- -title: Twenty Apps -description: Build and manage Twenty customizations as code. +title: Приложения Twenty +description: Создавайте и управляйте настройками Twenty в виде кода. --- - Apps are currently in alpha testing. The feature is functional but still evolving. + Приложения сейчас проходят альфа-тестирование. Функциональность работает, но продолжает развиваться. -## What Are Apps? +## Что такое приложения? -Apps let you build and manage Twenty customizations **as code**. Instead of configuring everything through the UI, you define your data model and serverless functions in code — making it faster to build, maintain, and roll out to multiple workspaces. +Приложения позволяют создавать и управлять настройками Twenty **в виде кода**. Вместо настройки всего через интерфейс вы определяете модель данных и бессерверные функции в коде — так быстрее создавать, поддерживать и развёртывать в нескольких рабочих пространствах. -**What you can do today:** +**Что вы можете делать уже сегодня:** -* Define custom objects and fields as code (managed data model) -* Build serverless functions with custom triggers -* Deploy the same app across multiple workspaces +* Определяйте пользовательские объекты и поля в виде кода (управляемая модель данных) +* Создавайте бессерверные функции с пользовательскими триггерами +* Развёртывайте одно и то же приложение в нескольких рабочих пространствах -**Coming soon:** +**Скоро:** -* Custom UI layouts and components +* Пользовательские макеты и компоненты интерфейса ## Требования -* Node.js 24+ and Yarn 4 -* A Twenty workspace and an API key (create one at https://app.twenty.com/settings/api-webhooks) +* Node.js 24+ и Yarn 4 +* Рабочее пространство Twenty и ключ API (создайте его на https://app.twenty.com/settings/api-webhooks) -## Getting Started +## Начало работы -Create a new app using the official scaffolder, then authenticate and start developing: +Создайте новое приложение с помощью официального генератора, затем выполните аутентификацию и начните разработку: ```bash filename="Terminal" # Scaffold a new app @@ -67,18 +67,18 @@ yarn app:uninstall yarn app:help ``` -See also: the CLI reference pages for [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) and [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk). +Смотрите также: страницы справки CLI для [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) и [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk). -## Project structure (scaffolded) +## Структура проекта (сгенерированного) -When you run `npx create-twenty-app@latest my-twenty-app`, the scaffolder: +Когда вы запускаете `npx create-twenty-app@latest my-twenty-app`, генератор: -* Copies a minimal base application into `my-twenty-app/` -* Adds a local `twenty-sdk` dependency and Yarn 4 configuration -* Creates config files and scripts wired to the `twenty` CLI -* Generates a default application config and a default function role +* Копирует минимальное базовое приложение в `my-twenty-app/` +* Добавляет локальную зависимость `twenty-sdk` и конфигурацию Yarn 4 +* Создаёт файлы конфигурации и скрипты, подключённые к CLI `twenty` +* Генерирует конфигурацию приложения по умолчанию и роль функции по умолчанию -A freshly scaffolded app looks like this: +Свежесгенерированное приложение выглядит так: ```text filename="my-twenty-app/" my-twenty-app/ @@ -102,21 +102,21 @@ my-twenty-app/ utils/ # Optional - handler implementations & utilities ``` -### Convention-over-configuration +### Соглашения важнее конфигурации -Applications use a **convention-over-configuration** approach where entities are detected by their file suffix. This allows flexible organization within the `src/app/` folder: +Приложения используют подход **соглашения важнее конфигурации**, при котором сущности определяются по суффиксу файла. Это позволяет гибко организовать структуру в папке `src/app/`: -| File suffix | Entity type | -| --------------- | ------------------------------- | -| `*.object.ts` | Custom object definitions | -| `*.function.ts` | Serverless function definitions | -| `*.role.ts` | Role definitions | +| Суффикс файла | Тип сущности | +| --------------- | ------------------------------------- | +| `*.object.ts` | Определения пользовательских объектов | +| `*.function.ts` | Определения бессерверных функций | +| `*.role.ts` | Определения ролей | -### Supported folder organizations +### Поддерживаемые способы организации папок -You can organize your entities in any of these patterns: +Вы можете организовать свои сущности по любому из этих шаблонов: -**Traditional (by type):** +**Традиционный (по типам):** ```text src/app/ @@ -129,7 +129,7 @@ src/app/ └── admin.role.ts ``` -**Feature-based:** +**По функциональности:** ```text src/app/ @@ -140,7 +140,7 @@ src/app/ └── postCardAdmin.role.ts ``` -**Flat:** +**Плоский:** ```text src/app/ @@ -150,66 +150,80 @@ src/app/ └── admin.role.ts ``` -At a high level: +В общих чертах: -* **package.json**: Declares the app name, version, engines (Node 24+, Yarn 4), and adds `twenty-sdk` plus scripts like `dev`, `sync`, `generate`, `create-entity`, `logs`, `uninstall`, and `auth` that delegate to the local `twenty` CLI. -* **.gitignore**: Ignores common artifacts such as `node_modules`, `.yarn`, `generated/` (typed client), `dist/`, `build/`, coverage folders, log files, and `.env*` files. -* **yarn.lock**, **.yarnrc.yml**, **.yarn/**: Lock and configure the Yarn 4 toolchain used by the project. -* **.nvmrc**: Pins the Node.js version expected by the project. -* **eslint.config.mjs** and **tsconfig.json**: Provide linting and TypeScript configuration for your app's TypeScript sources. -* **README.md**: A short README in the app root with basic instructions. -* **src/app/**: The main place where you define your application-as-code: - * `application.config.ts`: Global configuration for your app (metadata and runtime wiring). See "Application config" below. - * `*.role.ts`: Role definitions used by your serverless functions. See "Default function role" below. - * `*.object.ts`: Custom object definitions. - * `*.function.ts`: Serverless function definitions. -* **src/utils/**: Optional folder for handler implementations and utilities. +* **package.json**: Объявляет имя приложения, версию, движки (Node 24+, Yarn 4) и добавляет `twenty-sdk`, а также скрипты вроде `dev`, `sync`, `generate`, `create-entity`, `logs`, `uninstall` и `auth`, которые делегируют выполнение локальному CLI `twenty`. +* **.gitignore**: Игнорирует распространённые артефакты, такие как `node_modules`, `.yarn`, `generated/` (типизированный клиент), `dist/`, `build/`, каталоги coverage, файлы журналов и файлы `.env*`. +* **yarn.lock**, **.yarnrc.yml**, **.yarn/**: Фиксируют и настраивают используемый в проекте инструментарий Yarn 4. +* **.nvmrc**: Фиксирует версию Node.js, ожидаемую проектом. +* **eslint.config.mjs** и **tsconfig.json**: Обеспечивают линтинг и конфигурацию TypeScript для исходников вашего приложения на TypeScript. +* **README.md**: Короткий README в корне приложения с базовыми инструкциями. +* **src/app/**: Основное место, где вы определяете приложение как код: + * `application.config.ts`: Глобальная конфигурация вашего приложения (метаданные и параметры выполнения). См. раздел «Конфигурация приложения» ниже. + * `*.role.ts`: Определения ролей, используемых вашими бессерверными функциями. См. раздел «Роль функции по умолчанию» ниже. + * `*.object.ts`: Определения пользовательских объектов. + * `*.function.ts`: Определения бессерверных функций. +* **src/utils/**: Необязательная папка для реализаций обработчиков и утилит. -Later commands will add more files and folders: +Позднее команды добавят больше файлов и папок: -* `yarn app:generate` will create a `generated/` folder (typed Twenty client + workspace types). -* `yarn app:create-entity` will add entity definition files under `src/app/` for your custom objects, functions, or roles. +* `yarn app:generate` создаст папку `generated/` (типизированный клиент Twenty + типы рабочего пространства). +* `yarn app:create-entity` добавит файлы определений сущностей в `src/app/` для ваших пользовательских объектов, функций или ролей. l ## Аутентификация -The first time you run `yarn auth:login`, you'll be prompted for: +При первом запуске `yarn auth:login` вам будет предложено указать: -* API URL (defaults to http://localhost:3000 or your current workspace profile) -* API key +* URL API (по умолчанию http://localhost:3000 или текущий профиль рабочего пространства) +* Ключ API -Your credentials are stored per-user in `~/.twenty/config.json`. You can maintain multiple profiles and switch using `--workspace `. +Ваши учётные данные хранятся для каждого пользователя в `~/.twenty/config.json`. You can maintain multiple profiles and switch between them. -Примеры: +### Managing workspaces ```bash filename="Terminal" # Login interactively (recommended) yarn auth:login -# Use a specific workspace profile +# Login to a specific workspace profile yarn auth:login --workspace my-custom-workspace + +# List all configured workspaces +yarn auth:list + +# Switch the default workspace (interactive) +yarn auth:switch + +# Switch to a specific workspace +yarn auth:switch production + +# Check current authentication status +yarn auth:status ``` -## Use the SDK resources (types & config) +Once you've switched workspaces with `auth:switch`, all subsequent commands will use that workspace by default. You can still override it temporarily with `--workspace `. -The twenty-sdk provides typed building blocks and helper functions you use inside your app. Below are the key pieces you'll touch most often. +## Используйте ресурсы SDK (типы и конфигурация) -### Helper functions +Пакет twenty-sdk предоставляет типизированные строительные блоки и вспомогательные функции, которые вы используете внутри своего приложения. Ниже — ключевые части, с которыми вы будете работать чаще всего. -The SDK provides four helper functions with built-in validation for defining your app entities: +### Вспомогательные функции -| Function | Назначение | -| ------------------ | -------------------------------------------- | -| `defineApp()` | Configure application metadata | -| `defineObject()` | Define custom objects with fields | -| `defineFunction()` | Define serverless functions with handlers | -| `defineRole()` | Configure role permissions and object access | +SDK предоставляет четыре вспомогательных функции с встроенной валидацией для определения сущностей вашего приложения: -These functions validate your configuration at runtime and provide better IDE autocompletion and type safety. +| Функция | Назначение | +| ------------------ | ----------------------------------------------- | +| `defineApp()` | Настраивает метаданные приложения | +| `defineObject()` | Определяет пользовательские объекты с полями | +| `defineFunction()` | Определяет бессерверные функции с обработчиками | +| `defineRole()` | Настраивает права роли и доступ к объектам | -### Defining objects +Эти функции проверяют вашу конфигурацию во время выполнения и обеспечивают лучшую автодополняемость в IDE и безопасность типов. -Custom objects describe both schema and behavior for records in your workspace. Use `defineObject()` to define objects with built-in validation: +### Определение объектов + +Пользовательские объекты описывают как схему, так и поведение записей в вашем рабочем пространстве. Используйте `defineObject()` для определения объектов со встроенной валидацией: ```typescript // src/app/postCard.object.ts @@ -280,20 +294,20 @@ export default defineObject({ }); ``` -Key points: +Основные моменты: -* Use `defineObject()` for built-in validation and better IDE support. -* The `universalIdentifier` must be unique and stable across deployments. -* Each field requires a `name`, `type`, `label`, and its own stable `universalIdentifier`. -* The `fields` array is optional — you can define objects without custom fields. -* You can scaffold new objects using `yarn app:create-entity`, which guides you through naming, fields, and relationships. +* Используйте `defineObject()` для встроенной валидации и лучшей поддержки в IDE. +* `universalIdentifier` должен быть уникальным и стабильным между развёртываниями. +* Каждому полю требуются `name`, `type`, `label` и собственный стабильный `universalIdentifier`. +* Массив `fields` необязателен — вы можете определять объекты без пользовательских полей. +* Вы можете сгенерировать новые объекты с помощью `yarn app:create-entity`, который проведёт вас через выбор именования, полей и связей. - **Base fields are created automatically.** When you define a custom object, Twenty automatically adds standard fields such as `name`, `createdAt`, `updatedAt`, `createdBy`, `position`, and `deletedAt`. You don't need to define these in your `fields` array — only add your custom fields. + **Базовые поля создаются автоматически.** Когда вы определяете пользовательский объект, Twenty автоматически добавляет стандартные поля, такие как `name`, `createdAt`, `updatedAt`, `createdBy`, `position` и `deletedAt`. Вам не нужно определять их в массиве `fields` — добавляйте только свои пользовательские поля. - - You can also define objects using TypeScript decorators. This approach uses class-based syntax with `@Object`, `@Field`, and `@Relation` decorators: + + Вы также можете определять объекты с помощью декораторов TypeScript. Этот подход использует классовый синтаксис с декораторами `@Object`, `@Field` и `@Relation`: ```typescript import { @@ -340,18 +354,18 @@ Key points: } ``` - Note: The decorator approach requires `experimentalDecorators` in your TypeScript config. + Примечание: подход с декораторами требует `experimentalDecorators` в конфигурации TypeScript. -### Application config (application.config.ts) +### Конфигурация приложения (application.config.ts) -Every app has a single `application.config.ts` file that describes: +У каждого приложения есть единственный файл `application.config.ts`, который описывает: -* **Who the app is**: identifiers, display name, and description. -* **How its functions run**: which role they use for permissions. -* **(Optional) variables**: key–value pairs exposed to your functions as environment variables. +* **Что это за приложение**: идентификаторы, отображаемое имя и описание. +* **Как запускаются его функции**: какую роль они используют для прав доступа. +* **(Необязательно) переменные**: пары ключ-значение, предоставляемые вашим функциям как переменные окружения. -Use `defineApp()` to define your application configuration: +Используйте `defineApp()` для определения конфигурации вашего приложения: ```typescript // src/app/application.config.ts @@ -375,23 +389,23 @@ export default defineApp({ }); ``` -Notes: +Заметки: -* `universalIdentifier` fields are deterministic IDs you own; generate them once and keep them stable across syncs. -* `applicationVariables` become environment variables for your functions (for example, `DEFAULT_RECIPIENT_NAME` is available as `process.env.DEFAULT_RECIPIENT_NAME`). -* `functionRoleUniversalIdentifier` must match the role you define in your `*.role.ts` file (see below). +* `universalIdentifier` — это детерминированные идентификаторы, которыми вы управляете; сгенерируйте их один раз и сохраняйте стабильными между синхронизациями. +* `applicationVariables` становятся переменными окружения для ваших функций (например, `DEFAULT_RECIPIENT_NAME` доступна как `process.env.DEFAULT_RECIPIENT_NAME`). +* `functionRoleUniversalIdentifier` должен соответствовать роли, которую вы определяете в файле `*.role.ts` (см. ниже). -#### Roles and permissions +#### Роли и разрешения -Applications can define roles that encapsulate permissions on your workspace's objects and actions. The field `functionRoleUniversalIdentifier` in `application.config.ts` designates the default role used by your app's serverless functions. +Приложения могут определять роли, инкапсулирующие права на объекты и действия в вашем рабочем пространстве. Поле `functionRoleUniversalIdentifier` в `application.config.ts` обозначает роль по умолчанию, используемую бессерверными функциями вашего приложения. -* The runtime API key injected as `TWENTY_API_KEY` is derived from this default function role. -* The typed client will be restricted to the permissions granted to that role. -* Follow least‑privilege: create a dedicated role with only the permissions your functions need, then reference its universal identifier. +* Ключ API во время выполнения, подставляемый как `TWENTY_API_KEY`, получается из этой роли функции по умолчанию. +* Типизированный клиент будет ограничен правами, предоставленными этой ролью. +* Следуйте принципу наименьших привилегий: создайте отдельную роль только с теми правами, которые нужны вашим функциям, и укажите её универсальный идентификатор. -##### Default function role (\*.role.ts) +##### Роль функции по умолчанию (\*.role.ts) -When you scaffold a new app, the CLI also creates a default role file. Use `defineRole()` to define roles with built-in validation: +Когда вы генерируете новое приложение, CLI также создаёт файл роли по умолчанию. Используйте `defineRole()` для определения ролей со встроенной валидацией: ```typescript // src/app/default-function.role.ts @@ -433,21 +447,21 @@ export default defineRole({ }); ``` -The `universalIdentifier` of this role is then referenced in `application.config.ts` as `functionRoleUniversalIdentifier`. In other words: +`universalIdentifier` этой роли затем указывается в `application.config.ts` как `functionRoleUniversalIdentifier`. Иными словами: -* **\*.role.ts** defines what the default function role can do. -* **application.config.ts** points to that role so your functions inherit its permissions. +* **\*.role.ts** определяет, что может делать роль функции по умолчанию. +* **application.config.ts** указывает на эту роль, чтобы ваши функции наследовали её права. -Notes: +Заметки: -* Start from the scaffolded role, then progressively restrict it following least‑privilege. -* Replace the `objectPermissions` and `fieldPermissions` with the objects/fields your functions need. -* `permissionFlags` control access to platform-level capabilities. Keep them minimal; add only what you need. -* See a working example in the Hello World app: [`packages/twenty-apps/hello-world/src/roles/function-role.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/hello-world/src/roles/function-role.ts). +* Начните со сгенерированной роли, затем постепенно ограничивайте её, следуя принципу наименьших привилегий. +* Замените `objectPermissions` и `fieldPermissions` на объекты/поля, которые нужны вашим функциям. +* `permissionFlags` управляют доступом к возможностям на уровне платформы. Держите их минимальными; добавляйте только то, что нужно. +* См. рабочий пример в приложении Hello World: [`packages/twenty-apps/hello-world/src/roles/function-role.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/hello-world/src/roles/function-role.ts). -### Serverless function config and entrypoint +### Конфигурация бессерверной функции и точка входа -Each function file uses `defineFunction()` to export a configuration with a handler and optional triggers. Use the `*.function.ts` file suffix for automatic detection. +Каждый файл функции использует `defineFunction()` для экспорта конфигурации с обработчиком и необязательными триггерами. Используйте суффикс файла `*.function.ts` для автоматического обнаружения. ```typescript // src/app/createPostCard.function.ts @@ -507,28 +521,28 @@ export default defineFunction({ }); ``` -Common trigger types: +Распространённые типы триггеров: -* **route**: Exposes your function on an HTTP path and method **under the `/s/` endpoint**: +* **route**: Публикует вашу функцию по HTTP-пути и методу **под конечной точкой `/s/`**: -> e.g. `path: '/post-card/create',` -> call on `/s/post-card/create` +> например, `path: '/post-card/create',` -> вызов по адресу `/s/post-card/create` -* **cron**: Runs your function on a schedule using a CRON expression. -* **databaseEvent**: Runs on workspace object lifecycle events. When the event operation is `updated`, specific fields to listen to can be specified in the `updatedFields` array. If left undefined or empty, any update will trigger the function. +* **cron**: Запускает вашу функцию по расписанию с использованием выражения CRON. +* **databaseEvent**: Запускается при событиях жизненного цикла объектов рабочего пространства. Когда операция события — `updated`, можно указать конкретные поля для отслеживания в массиве `updatedFields`. Если оставить не заданным или пустым, любое обновление будет вызывать функцию. -> e.g. `person.updated` +> например, `person.updated` -Notes: +Заметки: -* The `triggers` array is optional. Functions without triggers can be used as utility functions called by other functions. -* You can mix multiple trigger types in a single function. +* Массив `triggers` необязателен. Функции без триггеров можно использовать как вспомогательные, вызываемые другими функциями. +* Вы можете сочетать несколько типов триггеров в одной функции. -### Route trigger payload +### Полезная нагрузка триггера маршрута - **Breaking change (v1.16, January 2026):** The route trigger payload format has changed. Prior to v1.16, query parameters, path parameters, and body were sent directly as the payload. Starting with v1.16, they are nested inside a structured `RoutePayload` object. + **Нарушающее совместимость изменение (v1.16, январь 2026):** Формат полезной нагрузки триггера маршрута изменился. До v1.16 параметры запроса, параметры пути и тело передавались напрямую в качестве полезной нагрузки. Начиная с v1.16 они вложены в структурированный объект `RoutePayload`. - **Before v1.16:** + **До v1.16:** ```typescript const handler = async (params) => { @@ -536,7 +550,7 @@ Notes: }; ``` - **After v1.16:** + **После v1.16:** ```typescript const handler = async (event: RoutePayload) => { @@ -546,10 +560,10 @@ Notes: }; ``` - **To migrate existing functions:** Update your handler to destructure from `event.body`, `event.queryStringParameters`, or `event.pathParameters` instead of directly from the params object. + **Чтобы мигрировать существующие функции:** Обновите обработчик, чтобы деструктурировать из `event.body`, `event.queryStringParameters` или `event.pathParameters` вместо прямого доступа к объекту params. -When a route trigger invokes your function, it receives a `RoutePayload` object that follows the AWS HTTP API v2 format. Import the type from `twenty-sdk`: +Когда триггер маршрута вызывает вашу функцию, она получает объект `RoutePayload`, соответствующий формату AWS HTTP API v2. Импортируйте тип из `twenty-sdk`: ```typescript import { defineFunction, type RoutePayload } from 'twenty-sdk'; @@ -565,21 +579,21 @@ const handler = async (event: RoutePayload) => { }; ``` -The `RoutePayload` type has the following structure: +Тип `RoutePayload` имеет следующую структуру: -| Property | Тип | Описание | -| ---------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------- | -| `headers` | `Record` | HTTP headers (only those listed in `forwardedRequestHeaders`) | -| `queryStringParameters` | `Record` | Query string parameters (multiple values joined with commas) | -| `pathParameters` | `Record` | Path parameters extracted from the route pattern (e.g., `/users/:id` → `{ id: '123' }`) | -| `текст` | `object \| null` | Parsed request body (JSON) | -| `isBase64Encoded` | `логический тип` | Whether the body is base64 encoded | -| `requestContext.http.method` | `строка` | HTTP method (GET, POST, PUT, PATCH, DELETE) | -| `requestContext.http.path` | `строка` | Raw request path | +| Свойство | Тип | Описание | +| ---------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------ | +| `headers` | `Record` | HTTP-заголовки (только перечисленные в `forwardedRequestHeaders`) | +| `queryStringParameters` | `Record` | Параметры строки запроса (несколько значений объединяются запятыми) | +| `pathParameters` | `Record` | Параметры пути, извлечённые из шаблона маршрута (например, `/users/:id` → `{ id: '123' }`) | +| `текст` | `object \| null` | Разобранное тело запроса (JSON) | +| `isBase64Encoded` | `логический тип` | Является ли тело закодированным в base64 | +| `requestContext.http.method` | `строка` | Метод HTTP (GET, POST, PUT, PATCH, DELETE) | +| `requestContext.http.path` | `строка` | Необработанный путь запроса | -### Forwarding HTTP headers +### Проброс HTTP-заголовков -By default, HTTP headers from incoming requests are **not** passed to your serverless function for security reasons. To access specific headers, explicitly list them in the `forwardedRequestHeaders` array: +По умолчанию HTTP-заголовки из входящих запросов **не** передаются в вашу бессерверную функцию по соображениям безопасности. Чтобы получить доступ к определённым заголовкам, явно перечислите их в массиве `forwardedRequestHeaders`: ```typescript export default defineFunction({ @@ -599,7 +613,7 @@ export default defineFunction({ }); ``` -In your handler, you can then access these headers: +В обработчике вы сможете получить доступ к этим заголовкам: ```typescript const handler = async (event: RoutePayload) => { @@ -612,17 +626,17 @@ const handler = async (event: RoutePayload) => { ``` - Header names are normalized to lowercase. Access them using lowercase keys (for example, `event.headers['content-type']`). + Имена заголовков приводятся к нижнему регистру. Обращайтесь к ним, используя ключи в нижнем регистре (например, `event.headers['content-type']`). -You can create new functions in two ways: +Вы можете создать новые функции двумя способами: -* **Scaffolded**: Run `yarn app:create-entity` and choose the option to add a new function. This generates a starter file with a handler and config. -* **Manual**: Create a new `*.function.ts` file and use `defineFunction()`, following the same pattern. +* **Сгенерировано**: Запустите `yarn app:create-entity` и выберите опцию добавления новой функции. Это создаёт стартовый файл с обработчиком и конфигурацией. +* **Вручную**: Создайте новый файл `*.function.ts` и используйте `defineFunction()`, следуя тому же шаблону. -### Generated typed client +### Сгенерированный типизированный клиент -Run yarn app:generate to create a local typed client in generated/ based on your workspace schema. Use it in your functions: +Запустите yarn app:generate, чтобы создать локальный типизированный клиент в generated/ на основе схемы вашего рабочего пространства. Используйте его в своих функциях: ```typescript import Twenty from './generated'; @@ -631,34 +645,34 @@ const client = new Twenty(); const { me } = await client.query({ me: { id: true, displayName: true } }); ``` -The client is re-generated by `yarn app:generate`. Re-run after changing your objects and `yarn app:sync` or when onboarding to a new workspace. +Клиент повторно генерируется командой `yarn app:generate`. Запускайте повторно после изменения ваших объектов и `yarn app:sync` или при подключении к новому рабочему пространству. -#### Runtime credentials in serverless functions +#### Учётные данные времени выполнения в бессерверных функциях -When your function runs on Twenty, the platform injects credentials as environment variables before your code executes: +Когда ваша функция запускается на Twenty, платформа подставляет учётные данные как переменные окружения перед выполнением вашего кода: -* `TWENTY_API_URL`: Base URL of the Twenty API your app targets. -* `TWENTY_API_KEY`: Short‑lived key scoped to your application's default function role. +* `TWENTY_API_URL`: Базовый URL API Twenty, на который нацелено ваше приложение. +* `TWENTY_API_KEY`: Краткоживущий ключ, ограниченный ролью функции по умолчанию вашего приложения. Заметки: -* You do not need to pass URL or API key to the generated client. It reads `TWENTY_API_URL` and `TWENTY_API_KEY` from process.env at runtime. -* The API key's permissions are determined by the role referenced in your `application.config.ts` via `functionRoleUniversalIdentifier`. This is the default role used by serverless functions of your application. -* Applications can define roles to follow least‑privilege. Grant only the permissions your functions need, then point `functionRoleUniversalIdentifier` to that role's universal identifier. +* Вам не нужно передавать URL или ключ API сгенерированному клиенту. Он читает `TWENTY_API_URL` и `TWENTY_API_KEY` из process.env во время выполнения. +* Права ключа API определяются ролью, на которую ссылается ваш `application.config.ts` через `functionRoleUniversalIdentifier`. Это роль по умолчанию, используемая бессерверными функциями вашего приложения. +* Приложения могут определять роли, чтобы следовать принципу наименьших привилегий. Выдавайте только те права, которые нужны вашим функциям, затем укажите в `functionRoleUniversalIdentifier` универсальный идентификатор этой роли. -### Hello World example +### Пример Hello World -Explore a minimal, end-to-end example that demonstrates objects, functions, and multiple triggers [here](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world): +Посмотрите минимальный сквозной пример, демонстрирующий объекты, функции и несколько триггеров, [здесь](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world): -## Manual setup (without the scaffolder) +## Ручная настройка (без генератора) -While we recommend using `create-twenty-app` for the best getting-started experience, you can also set up a project manually. Do not install the CLI globally. Instead, add `twenty-sdk` as a local dependency and wire scripts in your package.json: +Хотя мы рекомендуем использовать `create-twenty-app` для наилучшего старта, вы также можете настроить проект вручную. Не устанавливайте CLI глобально. Вместо этого добавьте `twenty-sdk` как локальную зависимость и настройте скрипты в вашем package.json: ```bash filename="Terminal" yarn add -D twenty-sdk ``` -Then add scripts like these: +Затем добавьте скрипты, подобные этим: ```json filename="package.json" { @@ -675,13 +689,13 @@ Then add scripts like these: } ``` -Now you can run the same commands via Yarn, e.g. `yarn app:dev`, `yarn app:sync`, etc. +Теперь вы можете запускать те же команды через Yarn, например, `yarn app:dev`, `yarn app:sync` и т. д. ## Устранение неполадок -* Authentication errors: run `yarn auth:login` and ensure your API key has the required permissions. -* Cannot connect to server: verify the API URL and that the Twenty server is reachable. -* Types or client missing/outdated: run `yarn app:generate` and then `yarn app:dev`. -* Dev mode not syncing: ensure `yarn app:dev` is running and that changes are not ignored by your environment. +* Ошибки аутентификации: выполните `yarn auth:login` и убедитесь, что у вашего ключа API есть необходимые права. +* Не удаётся подключиться к серверу: проверьте URL API и доступность сервера Twenty. +* Отсутствующие/устаревшие типы или клиент: выполните `yarn app:generate`, затем `yarn app:dev`. +* Режим разработки не синхронизируется: убедитесь, что запущен `yarn app:dev`, и что ваша среда не игнорирует изменения. -Discord Help Channel: https://discord.com/channels/1130383047699738754/1130386664812982322 +Канал помощи в Discord: https://discord.com/channels/1130383047699738754/1130386664812982322 diff --git a/packages/twenty-docs/l/ru/developers/extend/extend.mdx b/packages/twenty-docs/l/ru/developers/extend/extend.mdx index 5b91b5a4fb..6a8b466f18 100644 --- a/packages/twenty-docs/l/ru/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/extend.mdx @@ -1,6 +1,6 @@ --- -title: Extend -description: Extend Twenty's functionality with APIs, webhooks, and custom apps. +title: Расширяйте +description: Расширяйте возможности Twenty с помощью API, вебхуков и пользовательских приложений. --- @@ -9,26 +9,26 @@ description: Extend Twenty's functionality with APIs, webhooks, and custom apps. ## Обзор -Twenty is designed to be extensible. Use our APIs, webhooks, and app framework to integrate with your existing tools and build custom functionality. +Twenty разработан с учетом расширяемости. Используйте наши API, вебхуки и фреймворк приложений, чтобы интегрироваться с вашими существующими инструментами и создавать пользовательскую функциональность. -## What You Can Do +## Что вы можете сделать -* **APIs**: Query and modify your CRM data programmatically using REST or GraphQL -* **Webhooks**: Receive real-time notifications when events occur in Twenty -* **Apps**: Build custom applications that extend Twenty's capabilities - Coming soon! +* **APIs**: Запрашивайте и изменяйте данные CRM программно с помощью REST или GraphQL +* **Вебхуки**: Получайте уведомления в реальном времени при возникновении событий в Twenty +* **Приложения**: Создавайте пользовательские приложения, которые расширяют возможности Twenty - Скоро! -## Getting Started +## Начало работы - Connect to Twenty programmatically + Подключайтесь к Twenty программно - Get notified of events in real-time + Получайте уведомления о событиях в реальном времени - - Build customizations as code (Alpha) + + Создавайте настройки как код (Alpha) diff --git a/packages/twenty-docs/l/ru/developers/introduction.mdx b/packages/twenty-docs/l/ru/developers/introduction.mdx index 3902e2340e..95ef917862 100644 --- a/packages/twenty-docs/l/ru/developers/introduction.mdx +++ b/packages/twenty-docs/l/ru/developers/introduction.mdx @@ -1,23 +1,23 @@ --- -title: Getting Started -description: Welcome to Twenty Developer Documentation, your resources for extending, self-hosting, and contributing to Twenty. +title: Начало работы +description: Добро пожаловать в документацию для разработчиков Twenty — ваш ресурс для расширения, самостоятельного развертывания и внесения вклада в Twenty. --- import { CardTitle } from "/snippets/card-title.mdx" - Extend - Build integrations with APIs, webhooks, and custom apps. + Расширяйте + Создавайте интеграции с API, вебхуками и пользовательскими приложениями. - Self-Host - Deploy and manage Twenty on your own infrastructure. + Развертывайте у себя + Развертывайте и управляйте Twenty в собственной инфраструктуре. - Contribute - Join our open-source community and contribute to Twenty. + Вносите вклад + Присоединяйтесь к нашему сообществу с открытым исходным кодом и вносите вклад в Twenty. diff --git a/packages/twenty-docs/l/ru/developers/self-host/capabilities/cloud-providers.mdx b/packages/twenty-docs/l/ru/developers/self-host/capabilities/cloud-providers.mdx index 8b07ae53f8..6a18b00430 100644 --- a/packages/twenty-docs/l/ru/developers/self-host/capabilities/cloud-providers.mdx +++ b/packages/twenty-docs/l/ru/developers/self-host/capabilities/cloud-providers.mdx @@ -42,4 +42,4 @@ title: Другие методы ## Другое -Please feel free to Open a PR to add more Cloud Provider options. +Пожалуйста, не стесняйтесь открыть PR, чтобы добавить больше вариантов облачных провайдеров. diff --git a/packages/twenty-docs/l/ru/developers/self-host/capabilities/docker-compose.mdx b/packages/twenty-docs/l/ru/developers/self-host/capabilities/docker-compose.mdx index f6955d32ae..a7c62e18e3 100644 --- a/packages/twenty-docs/l/ru/developers/self-host/capabilities/docker-compose.mdx +++ b/packages/twenty-docs/l/ru/developers/self-host/capabilities/docker-compose.mdx @@ -1,9 +1,9 @@ --- -title: 1-Click w/ Docker Compose +title: В один клик с Docker Compose --- - Docker containers are for production hosting or self-hosting, for the contribution please check the [Local Setup](/l/ru/developers/contribute/capabilities/local-setup). + Контейнеры Docker предназначены для продакшен-размещения или самостоятельного хостинга; для участия в разработке ознакомьтесь с разделом [Локальная установка](/l/ru/developers/contribute/capabilities/local-setup). ## Обзор @@ -12,7 +12,7 @@ title: 1-Click w/ Docker Compose **Важно:** изменяйте только те настройки, которые явно упоминаются в этом руководстве. Изменение других конфигураций может привести к проблемам. -See docs [Setup Environment Variables](/l/ru/developers/self-host/capabilities/setup) for advanced configuration. Все переменные окружения должны быть задекларированы в файле docker-compose.yml на уровне сервера и / или рабочего потока в зависимости от переменной. +См. документацию [Настройка переменных окружения](/l/ru/developers/self-host/capabilities/setup) для расширенной конфигурации. Все переменные окружения должны быть задекларированы в файле docker-compose.yml на уровне сервера и / или рабочего потока в зависимости от переменной. ## Системные требования @@ -96,7 +96,7 @@ docker compose up -d Если вы размещаете twentyCRM на своем компьютере, откройте ваш браузер и перейдите на [http://localhost:3000](http://localhost:3000). -If you host it on a server, check that the server is running and that everything is ok with +Если вы размещаете это на сервере, убедитесь, что сервер запущен и что все в порядке с ```bash curl http://localhost:3000 @@ -191,62 +191,62 @@ SSL (HTTPS) требуется для правильной работы неко * **Последовательность:** - The `SERVER_URL` must match how users access your application in their browsers. + Значение `SERVER_URL` должно соответствовать тому, как пользователи обращаются к вашему приложению в своих браузерах. #### Сохранение данных -* **Data Volumes:** +* **Тома данных:** Конфигурация Docker Compose использует тома для сохранения данных базы данных и хранилища сервера. -* **Stateless Environments:** +* **Среды без состояния:** Если развёртывание осуществляется в бесстатном окружении (например, некоторых облачных сервисах), настройте внешнее хранилище для сохранения данных. -## Backup and Restore +## Резервное копирование и восстановление -Regular backups protect your CRM data from loss. +Регулярные резервные копии защищают данные вашей CRM от потери. -### Create a Database Backup +### Создание резервной копии базы данных ```bash docker exec twenty-postgres pg_dump -U postgres twenty > backup_$(date +%Y%m%d).sql ``` -### Automate Daily Backups +### Автоматизируйте ежедневное резервное копирование -Add to your crontab (`crontab -e`): +Добавьте в свой crontab (`crontab -e`): ```bash 0 2 * * * docker exec twenty-postgres pg_dump -U postgres twenty > /backups/twenty_$(date +\%Y\%m\%d).sql ``` -### Restore from Backup +### Восстановление из резервной копии -1. Stop the application: +1. Остановите приложение: ```bash docker compose stop twenty-server twenty-front ``` -2. Restore the database: +2. Восстановите базу данных: ```bash docker exec -i twenty-postgres psql -U postgres twenty < backup_20240115.sql ``` -3. Restart services: +3. Перезапустите службы: ```bash docker compose up -d ``` -### Backup Best Practices +### Лучшие практики резервного копирования -* **Test restores regularly** — verify backups actually work -* **Store backups off-site** — use cloud storage (S3, GCS, etc.) -* **Encrypt sensitive data** — protect backups with encryption -* **Retain multiple copies** — keep daily, weekly, and monthly backups +* **Регулярно проверяйте восстановление** — убедитесь, что резервные копии действительно работают +* **Храните резервные копии вне площадки** — используйте облачное хранилище (S3, GCS и т. д.) +* **Шифруйте конфиденциальные данные** — защищайте резервные копии с помощью шифрования +* **Храните несколько копий** — сохраняйте ежедневные, еженедельные и ежемесячные резервные копии ## Устранение неполадок diff --git a/packages/twenty-docs/l/ru/developers/self-host/capabilities/troubleshooting.mdx b/packages/twenty-docs/l/ru/developers/self-host/capabilities/troubleshooting.mdx index 55bf978f90..81e2dedac5 100644 --- a/packages/twenty-docs/l/ru/developers/self-host/capabilities/troubleshooting.mdx +++ b/packages/twenty-docs/l/ru/developers/self-host/capabilities/troubleshooting.mdx @@ -68,11 +68,11 @@ git config --global core.autocrlf false В `packages/twenty-front/.env` раскомментируйте `VITE_DISABLE_TYPESCRIPT_CHECKER=true` и `VITE_DISABLE_ESLINT_CHECKER=true`, чтобы отключить фоновые проверки, таким образом уменьшая количество необходимой оперативной памяти. -**If it does not work:** -Run only the services you need, instead of `npx nx start`. Например, если вы работаете на сервере, запускайте только `npx nx worker twenty-server` +**Если это не работает:** +Запускайте только те сервисы, которые вам нужны, вместо `npx nx start`. Например, если вы работаете на сервере, запускайте только `npx nx worker twenty-server` -**If it does not work:** -If you tried to run only `npx nx run twenty-server:start` on WSL and it's failing with the below memory error: +**Если это не работает:** +Если вы пытались запустить только `npx nx run twenty-server:start` в WSL и это завершается приведённой ниже ошибкой памяти: `FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory` @@ -83,11 +83,11 @@ If you tried to run only `npx nx run twenty-server:start` on WSL and it's failin Флаг --max-old-space-size=8192 устанавливает верхний предел 8 ГБ для heap Node.js; использование этого значения зависит от потребностей приложения. Источник: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048 -**If it does not work:** -Investigate which processes are taking you most of your machine RAM. В Twenty мы заметили, что некоторые расширения VScode потребляют много оперативной памяти, поэтому мы временно их отключаем. +**Если это не работает:** +Исследуйте, какие процессы занимают большую часть оперативной памяти вашей машины. В Twenty мы заметили, что некоторые расширения VScode потребляют много оперативной памяти, поэтому мы временно их отключаем. -**If it does not work:** -Restart your machine helps to clean up ghost processes. +**Если это не работает:** +Перезагрузка вашей машины помогает очистить зависшие процессы. #### При запуске `npx nx start` в логах появляются странные [0] и [1] @@ -170,7 +170,7 @@ plugins: [ Выполните `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';` в контейнере базы данных, чтобы получить доступ к административной панели. -### 1-click Docker compose +### Docker Compose в один клик #### Не удается войти в систему diff --git a/packages/twenty-docs/l/ru/developers/self-host/self-host.mdx b/packages/twenty-docs/l/ru/developers/self-host/self-host.mdx index fce994c9de..62d04a5e04 100644 --- a/packages/twenty-docs/l/ru/developers/self-host/self-host.mdx +++ b/packages/twenty-docs/l/ru/developers/self-host/self-host.mdx @@ -1,6 +1,6 @@ --- -title: Self-Host -description: Deploy and manage Twenty on your own infrastructure. +title: Самостоятельный хостинг +description: Развертывайте и управляйте Twenty в собственной инфраструктуре. --- @@ -9,22 +9,22 @@ description: Deploy and manage Twenty on your own infrastructure. ## Обзор -Twenty can be self-hosted on your own infrastructure, giving you full control over your data and deployment. +Twenty можно развернуть в собственной инфраструктуре, что дает вам полный контроль над данными и процессом развертывания. -## Why Self-Host? +## Почему самостоятельный хостинг? -* **Data ownership**: Keep all CRM data on your own servers -* **Compliance**: Meet regulatory requirements for data residency -* **Customization**: Full access to modify and extend the platform +* **Владение данными**: Храните все данные CRM на собственных серверах +* **Соответствие требованиям**: Соблюдайте регуляторные требования к локализации данных +* **Настройка**: Полный доступ для изменения и расширения платформы -## Getting Started +## Начало работы - Quick setup with Docker + Быстрая настройка с Docker - - Deploy on AWS, GCP, or Azure + + Разверните на AWS, GCP или Azure diff --git a/packages/twenty-docs/l/ru/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/ru/twenty-ui/display/chip.mdx index 30cc7194e3..663328a1f5 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/display/chip.mdx @@ -18,7 +18,7 @@ image: /images/user-guide/github/github-header.png return ( { return ( { return ( { { | linkToEntity | строка | Ссылка на объект | | entityId | строка | Уникальный идентификатор для объекта | | имя | строка | Имя объекта | - | pictureUrl | строка | s picture", | + | pictureUrl | строка | изображение", | | avatarType | Тип аватара | Тип аватара, который вы хотите отобразить. Есть два варианта: `округлый` и `квадратный` | | вариант | `EntityChipVariant` enum | Вариант элемента чипа, который вы хотите отобразить. Есть два варианта: `обычный` и `прозрачный` | | LeftIcon | ИконкаКомпонент | React-компонент, представляющий иконку. Отображается на левой стороне чипа | diff --git a/packages/twenty-docs/l/ru/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/ru/twenty-ui/display/soon-pill.mdx index b103b9431f..90f6078e03 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/display/soon-pill.mdx @@ -1,5 +1,5 @@ --- -title: Soon Pill +title: Плашка «Скоро» image: /images/user-guide/kanban-views/kanban.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/buttons.mdx index e58e625156..3191caf870 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/buttons.mdx @@ -38,20 +38,20 @@ image: /images/user-guide/views/filter.png - | Свойства | Тип | Описание | - | ------------ | --------------------- | -------------------------------------------------------------------------------------------------------------------- | - | className | строка | Дополнительное имя класса для дополнительной стилизации | - | Иконка | `React.ComponentType` | Необязательный компонент иконки, отображаемый на кнопке | - | заголовок | строка | Текстовое содержимое кнопки | - | полнаяШирина | логическое | Определяет, должна ли кнопка занимать всю ширину контейнера | - | вариант | строка | Визуальный стиль кнопки. Включает опции `primary`, `secondary` и `tertiary` | - | размер | строка | Размер кнопки. Есть два варианта: `small` и `medium` | - | позиция | строка | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` | - | акцент | строка | Акцентный цвет кнопки. Включает опции: `default`, `blue`, и `danger` | - | скоро | булево | Указывает, отмечена ли кнопка как «скоро» (например, для предстоящих функций) | - | отключено | булево | Определяет, отключена кнопка или нет | - | фокус | булево | Определяет, имеет ли кнопка фокус | - | onClick | функция | Функция обратного вызова, которая срабатывает при нажатии пользователем на кнопку | + | Свойства | Тип | Описание | + | ------------ | --------------------- | ------------------------------------------------------------------------------------------------------------ | + | className | строка | Дополнительное имя класса для дополнительной стилизации | + | Иконка | `React.ComponentType` | Необязательный компонент иконки, отображаемый на кнопке | + | заголовок | строка | Текстовое содержимое кнопки | + | полнаяШирина | логическое | Определяет, должна ли кнопка занимать всю ширину контейнера | + | вариант | строка | Визуальный стиль кнопки. Включает опции `primary`, `secondary` и `tertiary` | + | размер | строка | Размер кнопки. Есть два варианта: `small` и `medium` | + | позиция | строка | Положение кнопки по отношению к соседним элементам. Опции включают: `standalone`, `left`, `right` и `middle` | + | акцент | строка | Акцентный цвет кнопки. Включает опции: `default`, `blue`, и `danger` | + | скоро | булево | Указывает, отмечена ли кнопка как «скоро» (например, для предстоящих функций) | + | отключено | булево | Определяет, отключена кнопка или нет | + | фокус | булево | Определяет, имеет ли кнопка фокус | + | onClick | функция | Функция обратного вызова, которая срабатывает при нажатии пользователем на кнопку | @@ -116,13 +116,13 @@ image: /images/user-guide/views/filter.png - | Свойства | Тип | Описание | - | --------- | --------- | ------------------------------------------------------------------------------------------------------------- | - | вариант | строка | The visual style variant of the buttons within the group. Включает опции `primary`, `secondary`, и `tertiary` | - | размер | строка | Размер кнопок в группе. Has two options: `medium` and `small` | - | акцент | строка | Акцентный цвет кнопок в группе. Включает опции `default`, `blue` и `danger` | - | className | строка | Дополнительное имя класса для дополнительной стилизации | - | children | ReactNode | Массив элементов React, представляющих отдельные кнопки в группе | + | Свойства | Тип | Описание | + | --------- | --------- | -------------------------------------------------------------------------------------------------- | + | вариант | строка | Визуальный вариант оформления кнопок в группе. Включает опции `primary`, `secondary`, и `tertiary` | + | размер | строка | Размер кнопок в группе. Имеет два варианта: `medium` и `small` | + | акцент | строка | Акцентный цвет кнопок в группе. Включает опции `default`, `blue` и `danger` | + | className | строка | Дополнительное имя класса для дополнительной стилизации | + | children | ReactNode | Массив элементов React, представляющих отдельные кнопки в группе | @@ -153,17 +153,17 @@ image: /images/user-guide/views/filter.png - | Свойства | Тип | Описание | - | ------------------ | --------------------- | ---------------------------------------------------------------------------------------------------------------- | - | className | строка | Необязательное имя для дополнительной стилизации | - | Иконка | `React.ComponentType` | Необязательный компонент иконки, отображаемый на кнопке | - | заголовок | строка | Текстовое содержимое кнопки | - | размер | строка | Размер кнопки. Есть два варианта: `small` и `medium` | - | позиция | строка | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `middle`, `right` | - | применить тень | булево | Определяет, применять ли тень к кнопке | - | применить размытие | булево | Определяет, применять ли размытие к кнопке | - | отключено | булево | Определяет, отключена ли кнопка | - | фокус | булево | Указывает, имеет ли кнопка фокус | + | Свойства | Тип | Описание | + | ------------------ | --------------------- | ----------------------------------------------------------------------------------------------------------- | + | className | строка | Необязательное имя для дополнительной стилизации | + | Иконка | `React.ComponentType` | Необязательный компонент иконки, отображаемый на кнопке | + | заголовок | строка | Текстовое содержимое кнопки | + | размер | строка | Размер кнопки. Есть два варианта: `small` и `medium` | + | позиция | строка | Положение кнопки по отношению к соседним элементам. Опции включают: `standalone`, `left`, `middle`, `right` | + | применить тень | булево | Определяет, применять ли тень к кнопке | + | применить размытие | булево | Определяет, применять ли размытие к кнопке | + | отключено | булево | Определяет, отключена ли кнопка | + | фокус | булево | Указывает, имеет ли кнопка фокус | @@ -242,18 +242,18 @@ image: /images/user-guide/views/filter.png - | Свойства | Тип | Описание | - | ------------------ | --------------------- | -------------------------------------------------------------------------------------------------------------------- | - | className | строка | Необязательное имя для дополнительной стилизации | - | Иконка | `React.ComponentType` | Необязательный компонент иконки, отображаемый на кнопке | - | размер | строка | Размер кнопки. Есть два варианта: `small` и `medium` | - | позиция | строка | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` | - | применить тень | булево | Определяет, применять ли тень к кнопке | - | применить размытие | булево | Определяет, применять ли размытие к кнопке | - | отключено | булево | Определяет, отключена ли кнопка | - | фокус | булево | Указывает, имеет ли кнопка фокус | - | onClick | функция | Функция обратного вызова, которая срабатывает при нажатии пользователем на кнопку | - | активен | булево | Определяет, находится ли кнопка в активном состоянии | + | Свойства | Тип | Описание | + | ------------------ | --------------------- | ------------------------------------------------------------------------------------------------------------ | + | className | строка | Необязательное имя для дополнительной стилизации | + | Иконка | `React.ComponentType` | Необязательный компонент иконки, отображаемый на кнопке | + | размер | строка | Размер кнопки. Есть два варианта: `small` и `medium` | + | позиция | строка | Положение кнопки по отношению к соседним элементам. Опции включают: `standalone`, `left`, `right` и `middle` | + | применить тень | булево | Определяет, применять ли тень к кнопке | + | применить размытие | булево | Определяет, применять ли размытие к кнопке | + | отключено | булево | Определяет, отключена ли кнопка | + | фокус | булево | Указывает, имеет ли кнопка фокус | + | onClick | функция | Функция обратного вызова, которая срабатывает при нажатии пользователем на кнопку | + | активен | булево | Определяет, находится ли кнопка в активном состоянии | @@ -299,7 +299,7 @@ image: /images/user-guide/views/filter.png -## Light Button +## Легкая кнопка @@ -327,7 +327,7 @@ image: /images/user-guide/views/filter.png | className | строка | Необязательное имя для дополнительной стилизации | | иконка | `React.ReactNode` | Иконка, которую вы хотите отобразить на кнопке | | заголовок | строка | Текстовое содержимое кнопки | - | акцент | строка | Акцентный цвет кнопки. Options include: `secondary` and `tertiary` | + | акцент | строка | Акцентный цвет кнопки. Опции включают: `secondary` и `tertiary` | | активный | булево | Определяет, находится ли кнопка в активном состоянии | | отключено | булево | Определяет, отключена ли кнопка | | фокус | булево | Указывает, имеет ли кнопка фокус | @@ -335,7 +335,7 @@ image: /images/user-guide/views/filter.png -## Light Icon Button +## Легкая кнопка с иконкой @@ -370,7 +370,7 @@ image: /images/user-guide/views/filter.png | Иконка | `React.ComponentType` | Необязательный компонент иконки, отображаемый на кнопке | | заголовок | строка | Текстовое содержимое кнопки | | размер | строка | Размер кнопки. Есть два варианта: `small` и `medium` | - | акцент | строка | Акцентный цвет кнопки. Options include: `secondary` and `tertiary` | + | акцент | строка | Акцентный цвет кнопки. Опции включают: `secondary` и `tertiary` | | активный | булево | Определяет, находится ли кнопка в активном состоянии | | отключено | булево | Определяет, отключена ли кнопка | | фокус | булево | Указывает, имеет ли кнопка фокус | @@ -405,7 +405,7 @@ image: /images/user-guide/views/filter.png | -------------------- | -------------------------------- | ----------------------------------------------------------------------------- | | заголовок | строка | Текстовое содержимое кнопки | | полнаяШирина | булево | Определяет, должна ли кнопка занимать всю ширину контейнера | - | вариант | строка | Визуальный стиль кнопки. Options include `primary` and `secondary` | + | вариант | строка | Визуальный стиль кнопки. Опции включают `primary` и `secondary` | | скоро | булево | Указывает, отмечена ли кнопка как «скоро» (например, для предстоящих функций) | | Иконка | `React.ComponentType` | Необязательный компонент иконки, отображаемый на кнопке | | React `button` props | `React.ComponentProps<'button'>` | Все стандартные свойства кнопки HTML поддерживаются | diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/checkbox.mdx index ede9c1f18c..6addff9b70 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/checkbox.mdx @@ -31,14 +31,14 @@ image: /images/user-guide/tasks/tasks_header.png - | Свойства | Тип | Описание | - | --------------- | ------- | -------------------------------------------------------------------------------------------- | - | checked | булево | Указывает, отмечен ли флажок | - | indeterminate | булево | Указывает, находится ли флажок в неопределенном состоянии (ни отмечен, ни снят) | - | onChange | функция | Функция обратного вызова, которую вы хотите вызвать при изменении состояния флажка | - | onCheckedChange | функция | Функция обратного вызова, которую вы хотите вызвать при изменении состояния `отмечено` | - | вариант | строка | The visual style variant of the box. Варианты включают: `primary`, `secondary`, и `tertiary` | - | размер | строка | Размер флажка. Has two options: `small` and `large` | - | форма | строка | Форма флажка. Имеет два варианта: `квадратная` и `округлая` | + | Свойства | Тип | Описание | + | --------------- | ------- | -------------------------------------------------------------------------------------- | + | отмечено | булево | Указывает, отмечен ли флажок | + | неопределенное | булево | Указывает, находится ли флажок в неопределенном состоянии (ни отмечен, ни снят) | + | onChange | функция | Функция обратного вызова, которую вы хотите вызвать при изменении состояния флажка | + | onCheckedChange | функция | Функция обратного вызова, которую вы хотите вызвать при изменении состояния `отмечено` | + | вариант | строка | Визуальный стиль флажка. Варианты включают: `primary`, `secondary`, и `tertiary` | + | размер | строка | Размер флажка. Есть два варианта: `small` и `large` | + | форма | строка | Форма флажка. Имеет два варианта: `квадратная` и `округлая` | diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/radio.mdx index c90d4f46aa..3e6a129284 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/radio.mdx @@ -46,12 +46,12 @@ image: /images/user-guide/create-workspace/workspace-cover.png | --------------- | -------------------- | --------------------------------------------------------------------------------------- | | стиль | Свойства `React.CSS` | Дополнительные встроенные стили для компонента. | | className | строка | Необязательный CSS-класс для дополнительного стилирования | - | checked | boolean | Indicates whether the radio button is checked | + | отмечено | boolean | Указывает, отмечена ли радиокнопка | | значение | строка | Метка или текст, связанные с радио-кнопкой. | | onChange | функция | Функция вызывается при изменении выбранной радио-кнопки. | - | onCheckedChange | функция | The function called when the `checked` state of the radio button changes | - | размер | строка | Размер радио-кнопки. Options include: `large` and `small` | - | отключено | boolean | If `true`, the radio button is disabled and not clickable | + | onCheckedChange | функция | Функция, вызываемая при изменении состояния `checked` радиокнопки | + | размер | строка | Размер радио-кнопки. Доступные варианты: `large` и `small` | + | отключено | boolean | Если `true`, радиокнопка отключена и недоступна для нажатия | | позицияМетки | строка | Положение текста метки относительно радио-кнопки. Имеет два варианта: `left` и `right`. | @@ -87,11 +87,11 @@ image: /images/user-guide/create-workspace/workspace-cover.png - | Свойства | Тип | Описание | - | ------------- | ----------------- | ---------------------------------------------------------------------------------- | - | значение | строка | Значение в настоящее время выбранной радио-кнопки. | - | onChange | функция | Функция обратного вызова, вызываемая при изменении радио-кнопки. | - | onValueChange | функция | Функция обратного вызова, вызываемая при изменении выбранного значения в группе. | - | children | `React.ReactNode` | Allows you to pass React components (such as Radio) as children to the Radio Group | + | Свойства | Тип | Описание | + | ------------- | ----------------- | ----------------------------------------------------------------------------------------------------- | + | значение | строка | Значение в настоящее время выбранной радио-кнопки. | + | onChange | функция | Функция обратного вызова, вызываемая при изменении радио-кнопки. | + | onValueChange | функция | Функция обратного вызова, вызываемая при изменении выбранного значения в группе. | + | children | `React.ReactNode` | Позволяет передавать компоненты React (например, Radio) в качестве дочерних элементов для Radio Group | diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/select.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/select.mdx index 115319fd9d..a2cf1c4e2c 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/select.mdx @@ -24,10 +24,10 @@ image: /images/user-guide/what-is-twenty/20.png diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/text.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/text.mdx index a7ce81e98e..cab1110723 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/text.mdx @@ -19,29 +19,29 @@ Kullanıcıların metin girmelerine ve düzenlemelerine izin verir. export const MyComponent = () => { const handleChange = (text) => { - console.log("Input changed:", text); + console.log("Girdi değişti:", text); }; const handleKeyDown = (event) => { - console.log("Key pressed:", event.key); + console.log("Basılan tuş:", event.key); }; return ( ); }; - + },{ ``` @@ -75,13 +75,13 @@ Metni içeriğe göre otomatik olarak ayarlayan metin giriş bileşeni. return ( console.log("onValidate function fired")} + onValidate={() => console.log("onValidate fonksiyonu tetiklendi")} minRows={1} - placeholder="Write a comment" - onFocus={() => console.log("onFocus function fired")} + placeholder="Bir yorum yazın" + onFocus={() => console.log("onFocus fonksiyonu tetiklendi")} variant="icon" buttonTitle - value="Task: " + value="Görev: " /> ); @@ -116,8 +116,8 @@ Metni içeriğe göre otomatik olarak ayarlayan metin giriş bileşeni.